From 511ff253a68657780583769f5453fcc76134ccf1 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Fri, 12 Jul 2024 00:09:26 +0530 Subject: [PATCH 001/104] added layout editor vite project with base EC files --- packages/layout_editor/.eslintrc.cjs | 23 +++ packages/layout_editor/.gitignore | 24 +++ packages/layout_editor/README.md | 1 + packages/layout_editor/index.html | 13 ++ packages/layout_editor/package.json | 32 +++ packages/layout_editor/public/vite.svg | 1 + packages/layout_editor/src/App.jsx | 8 + packages/layout_editor/src/lib/textFormat.js | 7 + packages/layout_editor/src/main.jsx | 9 + packages/layout_editor/src/main.tsx | 9 + .../layout_editor/src/theme/DefaultTheme.js | 120 +++++++++++ .../src/views/ChatHeader/ChatHeader.jsx | 193 ++++++++++++++++++ .../src/views/ChatHeader/ChatHeader.styles.js | 56 +++++ .../src/views/ChatInput/ChatInput.jsx | 67 ++++++ .../src/views/ChatInput/ChatInput.styles.js | 73 +++++++ .../ChatInput/ChatInputFormattingToolbar.jsx | 59 ++++++ .../src/views/ChatLayout/ChatLayout.jsx | 22 ++ .../src/views/ChatLayout/ChatLayout.styles.js | 18 ++ .../src/views/Chatbody/ChatBody.jsx | 22 ++ .../src/views/Chatbody/ChatBody.styles.js | 18 ++ .../layout_editor/src/views/GlobalStyles.jsx | 48 +++++ .../layout_editor/src/views/LayoutEditor.jsx | 23 +++ .../src/views/LayoutEditor.style.js | 16 ++ .../src/views/MessageList/MessageList.jsx | 22 ++ packages/layout_editor/src/vite-env.d.ts | 1 + packages/layout_editor/tests/example.spec.ts | 18 ++ packages/layout_editor/tsconfig.json | 26 +++ packages/layout_editor/tsconfig.node.json | 11 + packages/layout_editor/vite.config.ts | 10 + 29 files changed, 950 insertions(+) create mode 100644 packages/layout_editor/.eslintrc.cjs create mode 100644 packages/layout_editor/.gitignore create mode 100644 packages/layout_editor/README.md create mode 100644 packages/layout_editor/index.html create mode 100644 packages/layout_editor/package.json create mode 100644 packages/layout_editor/public/vite.svg create mode 100644 packages/layout_editor/src/App.jsx create mode 100644 packages/layout_editor/src/lib/textFormat.js create mode 100644 packages/layout_editor/src/main.jsx create mode 100644 packages/layout_editor/src/main.tsx create mode 100644 packages/layout_editor/src/theme/DefaultTheme.js create mode 100644 packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx create mode 100644 packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js create mode 100644 packages/layout_editor/src/views/ChatInput/ChatInput.jsx create mode 100644 packages/layout_editor/src/views/ChatInput/ChatInput.styles.js create mode 100644 packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx create mode 100644 packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx create mode 100644 packages/layout_editor/src/views/ChatLayout/ChatLayout.styles.js create mode 100644 packages/layout_editor/src/views/Chatbody/ChatBody.jsx create mode 100644 packages/layout_editor/src/views/Chatbody/ChatBody.styles.js create mode 100644 packages/layout_editor/src/views/GlobalStyles.jsx create mode 100644 packages/layout_editor/src/views/LayoutEditor.jsx create mode 100644 packages/layout_editor/src/views/LayoutEditor.style.js create mode 100644 packages/layout_editor/src/views/MessageList/MessageList.jsx create mode 100644 packages/layout_editor/src/vite-env.d.ts create mode 100644 packages/layout_editor/tests/example.spec.ts create mode 100644 packages/layout_editor/tsconfig.json create mode 100644 packages/layout_editor/tsconfig.node.json create mode 100644 packages/layout_editor/vite.config.ts diff --git a/packages/layout_editor/.eslintrc.cjs b/packages/layout_editor/.eslintrc.cjs new file mode 100644 index 000000000..7c50310c9 --- /dev/null +++ b/packages/layout_editor/.eslintrc.cjs @@ -0,0 +1,23 @@ +module.exports = { + root: true, + env: { browser: true, es2020: true }, + extends: [ + "eslint:recommended", + "plugin:react/jsx-runtime", + "plugin:react-hooks/recommended", + "plugin:react/recommended", + ], + ignorePatterns: ["dist", ".eslintrc.cjs"], + parserOptions: { ecmaVersion: "latest", sourceType: "module" }, + settings: { react: { version: "18.2" } }, + plugins: ["react-refresh"], + rules: { + "react/jsx-no-target-blank": "off", + "react-refresh/only-export-components": [ + "warn", + { allowConstantExport: true }, + ], + "react/prop-types": "off", + "react/no-unknown-property": ["error", { ignore: ["css"] }], + }, +}; diff --git a/packages/layout_editor/.gitignore b/packages/layout_editor/.gitignore new file mode 100644 index 000000000..a547bf36d --- /dev/null +++ b/packages/layout_editor/.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/packages/layout_editor/README.md b/packages/layout_editor/README.md new file mode 100644 index 000000000..181d94ad9 --- /dev/null +++ b/packages/layout_editor/README.md @@ -0,0 +1 @@ +# E2E EmbeddedChat setup diff --git a/packages/layout_editor/index.html b/packages/layout_editor/index.html new file mode 100644 index 000000000..e4b78eae1 --- /dev/null +++ b/packages/layout_editor/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + TS + + +
+ + + diff --git a/packages/layout_editor/package.json b/packages/layout_editor/package.json new file mode 100644 index 000000000..bc9b512ff --- /dev/null +++ b/packages/layout_editor/package.json @@ -0,0 +1,32 @@ +{ + "name": "layout_editor", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview", + "test": "playwright test", + "format": "prettier --write 'src/' ", + "format:check": "prettier --check 'src/' " + }, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/node": "^20.11.19", + "@types/react": "^18.2.55", + "@types/react-dom": "^18.2.19", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", + "@vitejs/plugin-react": "^4.2.1", + "eslint": "^8.56.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.5", + "typescript": "^5.2.2", + "vite": "^5.1.0" + } +} diff --git a/packages/layout_editor/public/vite.svg b/packages/layout_editor/public/vite.svg new file mode 100644 index 000000000..e7b8dfb1b --- /dev/null +++ b/packages/layout_editor/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/layout_editor/src/App.jsx b/packages/layout_editor/src/App.jsx new file mode 100644 index 000000000..33a8002f1 --- /dev/null +++ b/packages/layout_editor/src/App.jsx @@ -0,0 +1,8 @@ +import React from "react"; +import LayoutEditor from "./views/LayoutEditor"; + +const App = () => { + return ; +}; + +export default App; diff --git a/packages/layout_editor/src/lib/textFormat.js b/packages/layout_editor/src/lib/textFormat.js new file mode 100644 index 000000000..10ceb7f33 --- /dev/null +++ b/packages/layout_editor/src/lib/textFormat.js @@ -0,0 +1,7 @@ +export const formatter = [ + { name: 'bold', pattern: '*{{text}}*' }, + { name: 'italic', pattern: '_{{text}}_' }, + { name: 'strike', pattern: '~{{text}}~' }, + { name: 'code', pattern: '`{{text}}`' }, + { name: 'multiline', pattern: '```\n{{text}}\n``` ' }, +]; diff --git a/packages/layout_editor/src/main.jsx b/packages/layout_editor/src/main.jsx new file mode 100644 index 000000000..569fdf2fd --- /dev/null +++ b/packages/layout_editor/src/main.jsx @@ -0,0 +1,9 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import App from "./App.jsx"; + +ReactDOM.createRoot(document.getElementById("root")).render( + + + +); diff --git a/packages/layout_editor/src/main.tsx b/packages/layout_editor/src/main.tsx new file mode 100644 index 000000000..577372105 --- /dev/null +++ b/packages/layout_editor/src/main.tsx @@ -0,0 +1,9 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import App from "./App.jsx"; + +ReactDOM.createRoot(document.getElementById("root")!).render( + + + +); diff --git a/packages/layout_editor/src/theme/DefaultTheme.js b/packages/layout_editor/src/theme/DefaultTheme.js new file mode 100644 index 000000000..bcf1ac888 --- /dev/null +++ b/packages/layout_editor/src/theme/DefaultTheme.js @@ -0,0 +1,120 @@ +const DefaultTheme = { + schemes: { + radius: '0.2rem', + common: { + black: 'hsl(0, 100%, 0%)', + white: 'hsl(0, 100%, 100%)', + }, + light: { + background: 'hsl(0, 0%, 100%)', + foreground: 'hsl(240, 10%, 3.9%)', + card: 'hsl(0, 0%, 100%)', + cardForeground: 'hsl(240, 10%, 3.9%)', + popover: 'hsl(0, 0%, 100%)', + popoverForeground: 'hsl(240, 10%, 3.9%)', + primary: 'hsl(240, 5.9%, 10%)', + primaryForeground: 'hsl(0, 0%, 98%)', + secondary: 'hsl(240, 4.8%, 95.9%)', + secondaryForeground: 'hsl(240, 5.9%, 10%)', + muted: 'hsl(240, 4.8%, 95.9%)', + mutedForeground: 'hsl(240, 3.8%, 46.1%)', + accent: 'hsl(240, 4.8%, 95.9%)', + accentForeground: 'hsl(240, 5.9%, 10%)', + destructive: 'hsl(0, 84.2%, 60.2%)', + destructiveForeground: 'hsl(0, 0%, 98%)', + border: 'hsl(240, 5.9%, 90%)', + input: 'hsl(240, 5.9%, 90%)', + ring: 'hsl(240, 5.9%, 10%)', + warning: 'hsl(38, 92%, 50%)', + warningForeground: 'hsl(48, 96%, 89%)', + success: 'hsl(91, 60.4%, 81.2%)', + successForeground: 'hsl(90, 61.1%, 14.1%)', + info: 'hsl(214, 76.4%, 50.2%)', + infoForeground: 'hsl(214.3, 77.8%, 92.9%)', + }, + dark: { + background: 'hsl(240, 10%, 3.9%)', + foreground: 'hsl(0, 0%, 98%)', + card: 'hsl(240, 10%, 3.9%)', + cardForeground: 'hsl(0, 0%, 98%)', + popover: 'hsl(240, 10%, 3.9%)', + popoverForeground: 'hsl(0, 0%, 98%)', + primary: 'hsl(0, 0%, 98%)', + primaryForeground: 'hsl(240, 5.9%, 10%)', + secondary: 'hsl(240, 3.7%, 15.9%)', + secondaryForeground: 'hsl(0, 0%, 98%)', + muted: 'hsl(240, 3.7%, 15.9%)', + mutedForeground: 'hsl(240, 5%, 64.9%)', + accent: 'hsl(240, 3.7%, 15.9%)', + accentForeground: 'hsl(0, 0%, 98%)', + destructive: 'hsl(0, 62.8%, 30.6%)', + destructiveForeground: 'hsl(0, 0%, 98%)', + border: 'hsl(240, 3.7%, 15.9%)', + input: 'hsl(240, 3.7%, 15.9%)', + ring: 'hsl(240, 4.9%, 83.9%)', + warning: 'hsl(48, 96%, 89%)', + warningForeground: 'hsl(38, 92%, 50%)', + success: 'hsl(90, 61.1%, 14.1%)', + successForeground: 'hsl(90, 60%, 90.2%)', + info: 'hsl(214.3, 77.8%, 92.9%)', + infoForeground: 'hsl(214.4, 75.8%, 19.4%)', + }, + }, + + breakpoints: { + xs: 0, + sm: 600, + md: 900, + lg: 1200, + xl: 1536, + }, + components: {}, + + typography: { + default: { + fontFamily: "'Times New Roman', serif", + fontSize: 16, + fontWeightRegular: 400, + }, + h1: { + fontSize: '2rem', + fontWeight: 800, + }, + h2: { + fontSize: '1.5rem', + fontWeight: 800, + }, + h3: { + fontSize: '1.3rem', + fontWeight: 400, + }, + h4: { + fontSize: '1rem', + fontWeight: 400, + }, + h5: { + fontSize: '0.83rem', + fontWeight: 400, + }, + h6: { + fontSize: '0.67rem', + fontWeight: 500, + }, + }, + shadows: [ + 'none', + 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', + 'rgba(100, 100, 111, 0.2) 0px 7px 29px 0px', + ], + zIndex: { + divider: 1000, + body: 1100, + general: 1200, + menu: 1300, + tooltip: 1400, + modal: 1500, + toastbar: 1600, + }, +}; + +export default DefaultTheme; diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx new file mode 100644 index 000000000..c60f20614 --- /dev/null +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx @@ -0,0 +1,193 @@ +import React from "react"; +import { + Heading, + Tooltip, + Box, + Icon, + ActionButton, + Menu, +} from "@embeddedchat/ui-elements"; +import useChatHeaderStyles from "./ChatHeader.styles"; + +const ChatHeader = ({ + optionConfig = { + chatOptions: [ + "minmax", + "thread", + "mentions", + "starred", + "pinned", + "files", + "close", + "members", + "search", + "rInfo", + "logout", + ], + + threshold: 7, + }, +}) => { + const { chatOptions, threshold } = optionConfig; + + const styles = useChatHeaderStyles(); + const menuMap = { + minmax: ( + + {}} + ghost + display="inline" + square + size="medium" + > + + + + ), + + close: ( + + {}} + ghost + display="inline" + square + size="medium" + > + + + + ), + thread: ( + + {}}> + + + + ), + + mentions: ( + + {}}> + + + + ), + + starred: ( + + {}}> + + + + ), + + pinned: ( + + {}}> + + + + ), + + members: ( + + {}}> + + + + ), + + files: ( + + {}}> + + + + ), + + search: ( + + {}}> + + + + ), + + rInfo: ( + + {}}> + + + + ), + + logout: ( + + {}}> + + + + ), + }; + + const menuOptions = chatOptions + .slice(threshold) + .map((key) => { + const tool = menuMap[key]; + + if (!tool) { + return null; + } + + const { onClick } = tool.props.children.props; + const { name: icon } = tool.props.children.props.children.props; + const { text } = tool.props; + + if (onClick && icon && text) { + return { + id: key, + action: onClick, + label: text, + icon, + }; + } + + return null; + }) + .filter((option) => option !== null); + + return ( + + + + + + + general + + +

+ Channel description +

+
+
+ + {chatOptions.slice(0, threshold).map((key) => menuMap[key])} + {menuOptions.length > 0 && } + + + + ); +}; + +export default ChatHeader; diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js b/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js new file mode 100644 index 000000000..0e5b04c98 --- /dev/null +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js @@ -0,0 +1,56 @@ +import { css } from '@emotion/react'; +import { darken, useTheme } from '@embeddedchat/ui-elements'; + +const rowCentreAlign = css` + display: flex; + flex-direction: row; + align-items: center; +`; + +const useChatHeaderStyles = () => { + const { theme, mode, colors } = useTheme(); + const clearSpacing = css` + margin: 0; + padding: 0; + `; + + const chatHeaderChild = css` + ${rowCentreAlign} + padding: 0 0.75rem; + justify-content: space-between; + width: 100%; + `; + + const chatHeaderParent = css` + background-color: ${mode === 'light' + ? darken(colors.background, 0.03) + : colors.secondary}; + width: 100%; + z-index: ${theme.zIndex.general}; + display: flex; + flex-direction: column; + padding: 0.75rem; + box-shadow: ${theme.shadows[1]}; + `; + + const channelDescription = css` + ${rowCentreAlign} + gap: 0.5rem; + `; + + const chatHeaderIconRow = css` + ${rowCentreAlign} + position:relative; + gap: 0.5rem; + `; + + return { + clearSpacing, + chatHeaderChild, + chatHeaderParent, + channelDescription, + chatHeaderIconRow, + }; +}; + +export default useChatHeaderStyles; diff --git a/packages/layout_editor/src/views/ChatInput/ChatInput.jsx b/packages/layout_editor/src/views/ChatInput/ChatInput.jsx new file mode 100644 index 000000000..24532162b --- /dev/null +++ b/packages/layout_editor/src/views/ChatInput/ChatInput.jsx @@ -0,0 +1,67 @@ +import React, { useRef } from "react"; +import { css } from "@emotion/react"; +import { Box, Input, ActionButton } from "@embeddedchat/ui-elements"; +import { useChatInputStyles } from "./ChatInput.styles"; +import ChatInputFormattingToolbar from "./ChatInputFormattingToolbar"; + +const ChatInput = () => { + const styles = useChatInputStyles(); + + const inputRef = useRef(null); + const messageRef = useRef(null); + const chatInputContainer = useRef(null); + + const handleBlur = () => { + if (chatInputContainer.current) { + chatInputContainer.current.classList.remove("focused"); + } + }; + + const handleFocus = () => { + if (chatInputContainer.current) { + chatInputContainer.current.classList.add("focused"); + } + }; + + return ( + + + + + + + {}} + type="primary" + icon="send" + /> + + + + + + ); +}; + +export default ChatInput; diff --git a/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js b/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js new file mode 100644 index 000000000..f9be35ba0 --- /dev/null +++ b/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js @@ -0,0 +1,73 @@ +import { css } from "@emotion/react"; +import { darken, useTheme } from "@embeddedchat/ui-elements"; + +export const useChatInputStyles = () => { + const { theme, colors } = useTheme(); + + const inputWithFormattingBox = css` + border: 1px solid ${colors.border}; + border-radius: ${theme.schemes.radius}; + margin: 0.5rem 2rem 1rem 2rem; + &.focused { + border: ${`1.5px solid ${colors.ring}`}; + } + `; + + const inputBox = css` + display: flex; + align-items: center; + flex-direction: row; + padding: 0.5rem; + `; + + const textInput = css` + flex: 1; + word-wrap: break-word; + white-space: pre-wrap; + overflow: auto; + overflow-x: hidden; + resize: none; + border: none; + outline: none; + font-size: 14px; + + &:focus { + border: none; + outline: none; + } + + &:disabled { + cursor: not-allowed; + } + + &::placeholder { + padding-left: 5px; + } + `; + + return { + inputWithFormattingBox, + inputBox, + textInput, + }; +}; + +export const useChatInputFormattingToolbarStyles = () => { + const { theme, mode, colors } = useTheme(); + + const chatFormat = css` + bottom: 0; + padding: 0.2rem; + align-items: center; + background-color: ${mode === "light" + ? darken(colors.background, 0.03) + : colors.secondary}; + display: flex; + position: relative; + flex-direction: row; + gap: 0.375rem; + border-radius: 0 0 ${theme.schemes.radius} ${theme.schemes.radius}; + `; + + return { chatFormat }; +}; diff --git a/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx b/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx new file mode 100644 index 000000000..26dc55083 --- /dev/null +++ b/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx @@ -0,0 +1,59 @@ +import React from "react"; +import { Box, Icon, ActionButton, Tooltip } from "@embeddedchat/ui-elements"; +import { formatter } from "../../lib/textFormat"; +import { useChatInputFormattingToolbarStyles } from "./ChatInput.styles"; + +const ChatInputFormattingToolbar = ({ + toolConfig = ["emoji", "formatter", "audio", "video", "file"], +}) => { + const styles = useChatInputFormattingToolbarStyles(); + const toolOptions = toolConfig; + + const chatToolMap = { + emoji: ( + + + + + + + + ), + audio: ( + + + + + + ), + video: ( + + + + + + ), + file: ( + + + + + + ), + formatter: formatter.map((item) => ( + + + + + + )), + }; + + return ( + + {toolOptions.map((key) => chatToolMap[key])} + + ); +}; + +export default ChatInputFormattingToolbar; diff --git a/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx b/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx new file mode 100644 index 000000000..6e37d26e5 --- /dev/null +++ b/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx @@ -0,0 +1,22 @@ +import React from 'react'; +import { Box } from '@embeddedchat/ui-elements'; +import ChatBody from '../Chatbody/ChatBody'; +import ChatInput from '../ChatInput/ChatInput'; +import styles from './ChatLayout.styles'; + +const ChatLayout = () => ( + + + + +
+ + + + {/* {showMembers && } + )} */} + + +); + +export default ChatLayout; diff --git a/packages/layout_editor/src/views/ChatLayout/ChatLayout.styles.js b/packages/layout_editor/src/views/ChatLayout/ChatLayout.styles.js new file mode 100644 index 000000000..12a45957b --- /dev/null +++ b/packages/layout_editor/src/views/ChatLayout/ChatLayout.styles.js @@ -0,0 +1,18 @@ +import { css } from '@emotion/react'; + +const styles = { + layout: css` + flex-basis: 100%; + display: flex; + overflow: hidden; + `, + + chatMain: css` + display: flex; + flex-direction: column; + flex-grow: 1; + position: relative; + `, +}; + +export default styles; diff --git a/packages/layout_editor/src/views/Chatbody/ChatBody.jsx b/packages/layout_editor/src/views/Chatbody/ChatBody.jsx new file mode 100644 index 000000000..ccc8790f0 --- /dev/null +++ b/packages/layout_editor/src/views/Chatbody/ChatBody.jsx @@ -0,0 +1,22 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { Box } from '@embeddedchat/ui-elements'; +import { useChatbodyStyles } from './ChatBody.styles'; +import MessageList from '../MessageList/MessageList'; + +const ChatBody = () => { + const styles = useChatbodyStyles(); + + return ( + + + + ); +}; + +export default ChatBody; + +ChatBody.propTypes = { + anonymousMode: PropTypes.bool, + showRoles: PropTypes.bool, +}; diff --git a/packages/layout_editor/src/views/Chatbody/ChatBody.styles.js b/packages/layout_editor/src/views/Chatbody/ChatBody.styles.js new file mode 100644 index 000000000..5ada0d0ca --- /dev/null +++ b/packages/layout_editor/src/views/Chatbody/ChatBody.styles.js @@ -0,0 +1,18 @@ +import { css } from '@emotion/react'; + +export const useChatbodyStyles = () => { + const chatbodyContainer = css` + flex: 1; + word-break: break-all; + overflow: auto; + overflow-x: hidden; + display: flex; + flex-direction: column-reverse; + max-height: 600px; + position: relative; + padding-top: 70px; + margin-top: 0.25rem; + `; + + return { chatbodyContainer }; +}; diff --git a/packages/layout_editor/src/views/GlobalStyles.jsx b/packages/layout_editor/src/views/GlobalStyles.jsx new file mode 100644 index 000000000..d17c40143 --- /dev/null +++ b/packages/layout_editor/src/views/GlobalStyles.jsx @@ -0,0 +1,48 @@ +import React from 'react'; +import { css, Global } from '@emotion/react'; +import { useTheme, alpha } from '@embeddedchat/ui-elements'; + +const useStyles = (colors, theme) => css` + .ec-embedded-chat * { + box-sizing: border-box; + margin: 0; + padding: 0; + } + + .ec-embedded-chat body { + font-family: ${theme.typography.default.fontFamily}; + font-size: ${theme.typography.default.fontSize}px; + font-weight: ${theme.typography.default.fontWeightRegular}; + } + + .ec-embedded-chat a { + color: ${colors.foreground}; + } + + .ec-embedded-chat ::-webkit-scrollbar { + width: 4px; + height: 7.7px; + } + + .ec-embedded-chat ::-webkit-scrollbar-thumb { + background: ${alpha(colors.primary, 0.5)}; + border-radius: 4px; + } + + .ec-embedded-chat ::-webkit-scrollbar-thumb:hover { + background: ${colors.primary}; + } + + .ec-embedded-chat ::-webkit-scrollbar-button { + display: none; + } +`; + +const GlobalStyles = () => { + const { theme, colors } = useTheme(); + const styles = useStyles(colors, theme); + + return ; +}; + +export default GlobalStyles; diff --git a/packages/layout_editor/src/views/LayoutEditor.jsx b/packages/layout_editor/src/views/LayoutEditor.jsx new file mode 100644 index 000000000..0807a3293 --- /dev/null +++ b/packages/layout_editor/src/views/LayoutEditor.jsx @@ -0,0 +1,23 @@ +import React from "react"; +import DefaultTheme from "../theme/DefaultTheme"; +import { Box, ThemeProvider } from "@embeddedchat/ui-elements"; +import { styles } from "./LayoutEditor.style"; +import ChatLayout from "./ChatLayout/ChatLayout"; +import ChatHeader from "./ChatHeader/ChatHeader"; +import GlobalStyles from "./GlobalStyles"; + +const LayoutEditor = () => ( + + + + + +
+ + +); + +export default LayoutEditor; diff --git a/packages/layout_editor/src/views/LayoutEditor.style.js b/packages/layout_editor/src/views/LayoutEditor.style.js new file mode 100644 index 000000000..7a03f61ca --- /dev/null +++ b/packages/layout_editor/src/views/LayoutEditor.style.js @@ -0,0 +1,16 @@ +import { css } from '@emotion/react'; + +export const styles = { + embeddedchat: (theme, dark) => css` + width: 100%; + height: 95vh; + position: relative; + background: ${theme.schemes[dark ? 'dark' : 'light'].background}; + color: ${theme.schemes[dark ? 'dark' : 'light'].foreground}; + display: flex; + flex-direction: column; + border: ${`1.5px solid ${theme.schemes[dark ? 'dark' : 'light'].border}`}; + border-radius: ${theme.schemes.radius}; + overflow: hidden; + `, +}; diff --git a/packages/layout_editor/src/views/MessageList/MessageList.jsx b/packages/layout_editor/src/views/MessageList/MessageList.jsx new file mode 100644 index 000000000..26248259d --- /dev/null +++ b/packages/layout_editor/src/views/MessageList/MessageList.jsx @@ -0,0 +1,22 @@ +import React from "react"; +import PropTypes from "prop-types"; +import { css } from "@emotion/react"; +import { Box, Icon } from "@embeddedchat/ui-elements"; + +const MessageList = () => ( + + + Ready to chat? Login now to join the fun + +); + +MessageList.propTypes = { + messages: PropTypes.arrayOf(PropTypes.shape), +}; + +export default MessageList; diff --git a/packages/layout_editor/src/vite-env.d.ts b/packages/layout_editor/src/vite-env.d.ts new file mode 100644 index 000000000..11f02fe2a --- /dev/null +++ b/packages/layout_editor/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/packages/layout_editor/tests/example.spec.ts b/packages/layout_editor/tests/example.spec.ts new file mode 100644 index 000000000..e309eeb4e --- /dev/null +++ b/packages/layout_editor/tests/example.spec.ts @@ -0,0 +1,18 @@ +import { test, expect } from '@playwright/test'; + +test('EmbeddedChat should render', async ({ page }) => { + await page.goto('/'); + await expect(page.locator('.ec-embedded-chat')).toBeVisible(); +}); + +test('EmbeddedChat has a title', async ({ page }) => { + await page.goto('/'); + await expect(page.locator('.ec-chat-header--channelName')).toHaveText('Login to chat'); +}); + +test('EmbeddedChat has messages', async ({ page }) => { + await page.goto('/'); + + await page.waitForSelector('.ec-message'); + expect(await page.locator('.ec-message').count()).toBeGreaterThan(0); +}); diff --git a/packages/layout_editor/tsconfig.json b/packages/layout_editor/tsconfig.json new file mode 100644 index 000000000..1ae247aeb --- /dev/null +++ b/packages/layout_editor/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + "allowJs": 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/packages/layout_editor/tsconfig.node.json b/packages/layout_editor/tsconfig.node.json new file mode 100644 index 000000000..97ede7ee6 --- /dev/null +++ b/packages/layout_editor/tsconfig.node.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "strict": true + }, + "include": ["vite.config.ts"] +} diff --git a/packages/layout_editor/vite.config.ts b/packages/layout_editor/vite.config.ts new file mode 100644 index 000000000..028287cd5 --- /dev/null +++ b/packages/layout_editor/vite.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], + define: { + 'process.env': {} + } +}) From bed4f5512becd0923be3185afa2471fdbb238275 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Fri, 12 Jul 2024 17:12:47 +0530 Subject: [PATCH 002/104] setup basic drag drop --- packages/layout_editor/package.json | 2 + .../src/views/ChatHeader/ChatHeader.jsx | 191 +++++------------- .../ChatHeader/SortableHeaderOptions.jsx | 123 +++++++++++ 3 files changed, 176 insertions(+), 140 deletions(-) create mode 100644 packages/layout_editor/src/views/ChatHeader/SortableHeaderOptions.jsx diff --git a/packages/layout_editor/package.json b/packages/layout_editor/package.json index bc9b512ff..c7b1c506f 100644 --- a/packages/layout_editor/package.json +++ b/packages/layout_editor/package.json @@ -13,6 +13,8 @@ "format:check": "prettier --check 'src/' " }, "dependencies": { + "@dnd-kit/core": "^6.1.0", + "@dnd-kit/sortable": "^8.0.0", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx index c60f20614..e620e59d0 100644 --- a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx @@ -1,17 +1,25 @@ -import React from "react"; -import { - Heading, - Tooltip, - Box, - Icon, - ActionButton, - Menu, -} from "@embeddedchat/ui-elements"; +import React, { useState } from "react"; +import { Heading, Box, Icon } from "@embeddedchat/ui-elements"; import useChatHeaderStyles from "./ChatHeader.styles"; +import SortableHeaderOptions from "./SortableHeaderOptions"; +import { + DndContext, + closestCenter, + KeyboardSensor, + PointerSensor, + useSensor, + useSensors, +} from "@dnd-kit/core"; +import { + SortableContext, + sortableKeyboardCoordinates, + horizontalListSortingStrategy, + arrayMove, +} from "@dnd-kit/sortable"; const ChatHeader = ({ optionConfig = { - chatOptions: [ + menuOptions: [ "minmax", "thread", "mentions", @@ -24,140 +32,31 @@ const ChatHeader = ({ "rInfo", "logout", ], - - threshold: 7, }, }) => { - const { chatOptions, threshold } = optionConfig; - - const styles = useChatHeaderStyles(); - const menuMap = { - minmax: ( - - {}} - ghost - display="inline" - square - size="medium" - > - - - - ), - - close: ( - - {}} - ghost - display="inline" - square - size="medium" - > - - - - ), - thread: ( - - {}}> - - - - ), - - mentions: ( - - {}}> - - - - ), - - starred: ( - - {}}> - - - - ), - - pinned: ( - - {}}> - - - - ), + const [menuOptions, setMenuOptions] = useState(optionConfig.menuOptions); - members: ( - - {}}> - - - - ), - - files: ( - - {}}> - - - - ), + const sensors = useSensors( + useSensor(PointerSensor), + useSensor(KeyboardSensor, { + coordinateGetter: sortableKeyboardCoordinates, + }) + ); - search: ( - - {}}> - - - - ), + const handleDragEnd = (event) => { + const { active, over } = event; - rInfo: ( - - {}}> - - - - ), + if (active.id !== over.id) { + setMenuOptions((items) => { + const oldIndex = items.indexOf(active.id); + const newIndex = items.indexOf(over.id); - logout: ( - - {}}> - - - - ), + return arrayMove(items, oldIndex, newIndex); + }); + } }; - const menuOptions = chatOptions - .slice(threshold) - .map((key) => { - const tool = menuMap[key]; - - if (!tool) { - return null; - } - - const { onClick } = tool.props.children.props; - const { name: icon } = tool.props.children.props.children.props; - const { text } = tool.props; - - if (onClick && icon && text) { - return { - id: key, - action: onClick, - label: text, - icon, - }; - } - - return null; - }) - .filter((option) => option !== null); + const styles = useChatHeaderStyles(); return ( @@ -181,10 +80,22 @@ const ChatHeader = ({

- - {chatOptions.slice(0, threshold).map((key) => menuMap[key])} - {menuOptions.length > 0 && } - + + + + {menuOptions.map((key) => ( + + ))} + + + ); diff --git a/packages/layout_editor/src/views/ChatHeader/SortableHeaderOptions.jsx b/packages/layout_editor/src/views/ChatHeader/SortableHeaderOptions.jsx new file mode 100644 index 000000000..d3a35effc --- /dev/null +++ b/packages/layout_editor/src/views/ChatHeader/SortableHeaderOptions.jsx @@ -0,0 +1,123 @@ +import React from "react"; +import { useSortable } from "@dnd-kit/sortable"; +import { Box, Tooltip, ActionButton, Icon } from "@embeddedchat/ui-elements"; +import { CSS } from "@dnd-kit/utilities"; + +const SortableHeaderOptions = (props) => { + const menuMap = { + minmax: ( + + {}} + ghost + display="inline" + square + size="medium" + > + + + + ), + + close: ( + + {}} + ghost + display="inline" + square + size="medium" + > + + + + ), + thread: ( + + {}}> + + + + ), + + mentions: ( + + {}}> + + + + ), + + starred: ( + + {}}> + + + + ), + + pinned: ( + + {}}> + + + + ), + + members: ( + + {}}> + + + + ), + + files: ( + + {}}> + + + + ), + + search: ( + + {}}> + + + + ), + + rInfo: ( + + {}}> + + + + ), + + logout: ( + + {}}> + + + + ), + }; + const { attributes, listeners, setNodeRef, transform, transition } = + useSortable({ id: props.id }); + + const style = { + transform: CSS.Transform.toString(transform), + transition, + }; + + return ( + + {menuMap[props.id]} + + ); +}; + +export default SortableHeaderOptions; From 6153ba1e9e454c83fc93a23cf2900a8dd7bffad7 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Fri, 12 Jul 2024 23:27:28 +0530 Subject: [PATCH 003/104] added sortable menu --- .../src/components/SortableMenu/Menu.jsx | 47 +++++ .../components/SortableMenu/Menu.styles.js | 59 +++++++ .../src/components/SortableMenu/MenuItem.jsx | 36 ++++ .../src/components/SortableMenu/index.js | 1 + .../src/views/ChatHeader/ChatHeader.jsx | 164 ++++++++++++++++-- .../src/views/ChatHeader/ChatHeader.styles.js | 89 +++++----- .../src/views/ChatHeader/HeaderOptions.jsx | 22 +++ .../ChatHeader/SortableHeaderOptions.jsx | 123 ------------- 8 files changed, 359 insertions(+), 182 deletions(-) create mode 100644 packages/layout_editor/src/components/SortableMenu/Menu.jsx create mode 100644 packages/layout_editor/src/components/SortableMenu/Menu.styles.js create mode 100644 packages/layout_editor/src/components/SortableMenu/MenuItem.jsx create mode 100644 packages/layout_editor/src/components/SortableMenu/index.js create mode 100644 packages/layout_editor/src/views/ChatHeader/HeaderOptions.jsx delete mode 100644 packages/layout_editor/src/views/ChatHeader/SortableHeaderOptions.jsx diff --git a/packages/layout_editor/src/components/SortableMenu/Menu.jsx b/packages/layout_editor/src/components/SortableMenu/Menu.jsx new file mode 100644 index 000000000..41ac15518 --- /dev/null +++ b/packages/layout_editor/src/components/SortableMenu/Menu.jsx @@ -0,0 +1,47 @@ +import React from "react"; +import { css } from "@emotion/react"; +import { + Box, + ActionButton, + Tooltip, + useTheme, +} from "@embeddedchat/ui-elements"; +import MenuItem from "./MenuItem"; +import { getMenuStyles } from "./Menu.styles"; +import { + SortableContext, + verticalListSortingStrategy, +} from "@dnd-kit/sortable"; + +const Menu = ({ + options = [], + tooltip = { isToolTip: true, position: "bottom", text: "Options" }, + size = "medium", +}) => { + const theme = useTheme(); + const styles = getMenuStyles(theme); + + return ( + + + + + + + {options.map((option, idx) => ( + + ))} + + + + ); +}; + +export default Menu; diff --git a/packages/layout_editor/src/components/SortableMenu/Menu.styles.js b/packages/layout_editor/src/components/SortableMenu/Menu.styles.js new file mode 100644 index 000000000..275476956 --- /dev/null +++ b/packages/layout_editor/src/components/SortableMenu/Menu.styles.js @@ -0,0 +1,59 @@ +import { css } from "@emotion/react"; +import { lighten, darken } from "@embeddedchat/ui-elements"; + +export const getMenuStyles = (customTheme) => { + const { theme, colors } = customTheme; + + const styles = { + wrapper: css` + position: relative; + `, + + container: css` + position: absolute; + top: 100%; + right: 0; + display: flex; + flex-direction: column; + width: fit-content; + height: fit-content; + z-index: ${theme.zIndex.menu}; + border-radius: 0.2em; + padding: 0.5rem 0; + box-shadow: ${theme.shadows[1]}; + background-color: ${colors.background}; + `, + }; + + return styles; +}; + +export const getMenuItemStyles = (customTheme) => { + const { mode, colors } = customTheme; + + const styles = { + item: css` + font-size: 14px; + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-start; + padding: 0.25em 0.75em; + white-space: nowrap; + gap: 0.2rem; + color: ${colors.foreground}; + &:hover { + background-color: ${mode === "light" + ? darken(colors.background, 0.05) + : lighten(colors.background, 2)}; + cursor: pointer; + } + `, + disabled: css` + cursor: not-allowed !important; + color: ${colors.mutedForeground}; + `, + }; + + return styles; +}; diff --git a/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx b/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx new file mode 100644 index 000000000..3c90be787 --- /dev/null +++ b/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx @@ -0,0 +1,36 @@ +import React from "react"; +import { Box, Icon, useTheme } from "@embeddedchat/ui-elements"; + +import { getMenuItemStyles } from "./Menu.styles"; +import { useSortable } from "@dnd-kit/sortable"; +import { CSS } from "@dnd-kit/utilities"; + + +const MenuItem = ({ id, icon, label, action, disabled }) => { + const theme = useTheme(); + const styles = getMenuItemStyles(theme); + + const { attributes, listeners, setNodeRef, transform, transition } = + useSortable({ id }); + + const style = { + transform: CSS.Transform.toString(transform), + transition, + }; + + return ( + + + {label} + + ); +}; + +export default MenuItem; diff --git a/packages/layout_editor/src/components/SortableMenu/index.js b/packages/layout_editor/src/components/SortableMenu/index.js new file mode 100644 index 000000000..a2620aa05 --- /dev/null +++ b/packages/layout_editor/src/components/SortableMenu/index.js @@ -0,0 +1 @@ +export { default as Menu } from "./Menu"; diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx index e620e59d0..228cde7b9 100644 --- a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx @@ -1,7 +1,15 @@ import React, { useState } from "react"; -import { Heading, Box, Icon } from "@embeddedchat/ui-elements"; -import useChatHeaderStyles from "./ChatHeader.styles"; -import SortableHeaderOptions from "./SortableHeaderOptions"; +import { + Heading, + Box, + Icon, + ActionButton, + Tooltip, + useTheme, +} from "@embeddedchat/ui-elements"; +import { getChatHeaderStyles } from "./ChatHeader.styles"; +import HeaderOptions from "./HeaderOptions"; +import { Menu } from "../../components/SortableMenu"; import { DndContext, closestCenter, @@ -19,22 +27,155 @@ import { const ChatHeader = ({ optionConfig = { - menuOptions: [ + toolOptions: [ "minmax", "thread", "mentions", "starred", "pinned", "files", - "close", "members", "search", "rInfo", "logout", + "close", ], + + threshold: 4, }, }) => { - const [menuOptions, setMenuOptions] = useState(optionConfig.menuOptions); + const theme = useTheme(); + const styles = getChatHeaderStyles(theme); + const [toolOptions, setToolOptions] = useState(optionConfig.toolOptions); + const [threshold] = useState(optionConfig.threshold); + + const menuMap = { + minmax: ( + + {}} + ghost + display="inline" + square + size="medium" + > + + + + ), + + close: ( + + {}} + ghost + display="inline" + square + size="medium" + > + + + + ), + thread: ( + + {}}> + + + + ), + + mentions: ( + + {}}> + + + + ), + + starred: ( + + {}}> + + + + ), + + pinned: ( + + {}}> + + + + ), + + members: ( + + {}}> + + + + ), + + files: ( + + {}}> + + + + ), + + search: ( + + {}}> + + + + ), + + rInfo: ( + + {}}> + + + + ), + + logout: ( + + {}}> + + + + ), + }; + + const menuOptions = toolOptions + .slice(threshold) + .map((key) => { + const tool = menuMap[key]; + + if (!tool) { + return null; + } + + const { onClick } = tool.props.children.props; + const { name: icon } = tool.props.children.props.children.props; + const { text } = tool.props; + + if (onClick && icon && text) { + return { + id: key, + action: onClick, + label: text, + icon, + }; + } + + return null; + }) + .filter((option) => option !== null); const sensors = useSensors( useSensor(PointerSensor), @@ -47,7 +188,7 @@ const ChatHeader = ({ const { active, over } = event; if (active.id !== over.id) { - setMenuOptions((items) => { + setToolOptions((items) => { const oldIndex = items.indexOf(active.id); const newIndex = items.indexOf(over.id); @@ -56,8 +197,6 @@ const ChatHeader = ({ } }; - const styles = useChatHeaderStyles(); - return ( @@ -86,13 +225,14 @@ const ChatHeader = ({ onDragEnd={handleDragEnd} > - {menuOptions.map((key) => ( - + {toolOptions.slice(0, threshold).map((key) => ( + ))} + {menuOptions.length > 0 && } diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js b/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js index 0e5b04c98..ffb6860c7 100644 --- a/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js @@ -1,5 +1,5 @@ -import { css } from '@emotion/react'; -import { darken, useTheme } from '@embeddedchat/ui-elements'; +import { css } from "@emotion/react"; +import { darken } from "@embeddedchat/ui-elements"; const rowCentreAlign = css` display: flex; @@ -7,50 +7,45 @@ const rowCentreAlign = css` align-items: center; `; -const useChatHeaderStyles = () => { - const { theme, mode, colors } = useTheme(); - const clearSpacing = css` - margin: 0; - padding: 0; - `; - - const chatHeaderChild = css` - ${rowCentreAlign} - padding: 0 0.75rem; - justify-content: space-between; - width: 100%; - `; - - const chatHeaderParent = css` - background-color: ${mode === 'light' - ? darken(colors.background, 0.03) - : colors.secondary}; - width: 100%; - z-index: ${theme.zIndex.general}; - display: flex; - flex-direction: column; - padding: 0.75rem; - box-shadow: ${theme.shadows[1]}; - `; - - const channelDescription = css` - ${rowCentreAlign} - gap: 0.5rem; - `; - - const chatHeaderIconRow = css` - ${rowCentreAlign} - position:relative; - gap: 0.5rem; - `; - - return { - clearSpacing, - chatHeaderChild, - chatHeaderParent, - channelDescription, - chatHeaderIconRow, +export const getChatHeaderStyles = (customTheme) => { + const { theme, mode, colors } = customTheme; + + const styles = { + clearSpacing: css` + margin: 0; + padding: 0; + `, + + chatHeaderChild: css` + ${rowCentreAlign} + padding: 0 0.75rem; + justify-content: space-between; + width: 100%; + `, + + chatHeaderParent: css` + background-color: ${mode === "light" + ? darken(colors.background, 0.03) + : colors.secondary}; + width: 100%; + z-index: ${theme.zIndex.general}; + display: flex; + flex-direction: column; + padding: 0.75rem; + box-shadow: ${theme.shadows[1]}; + `, + + channelDescription: css` + ${rowCentreAlign} + gap: 0.5rem; + `, + + chatHeaderIconRow: css` + ${rowCentreAlign} + position:relative; + gap: 0.5rem; + `, }; -}; -export default useChatHeaderStyles; + return styles; +}; diff --git a/packages/layout_editor/src/views/ChatHeader/HeaderOptions.jsx b/packages/layout_editor/src/views/ChatHeader/HeaderOptions.jsx new file mode 100644 index 000000000..fce4dbbcf --- /dev/null +++ b/packages/layout_editor/src/views/ChatHeader/HeaderOptions.jsx @@ -0,0 +1,22 @@ +import React from "react"; +import { useSortable } from "@dnd-kit/sortable"; +import { Box } from "@embeddedchat/ui-elements"; +import { CSS } from "@dnd-kit/utilities"; + +const HeaderOptions = ({ id, menuMap }) => { + const { attributes, listeners, setNodeRef, transform, transition } = + useSortable({ id }); + + const style = { + transform: CSS.Transform.toString(transform), + transition, + }; + + return ( + + {menuMap[id]} + + ); +}; + +export default HeaderOptions; diff --git a/packages/layout_editor/src/views/ChatHeader/SortableHeaderOptions.jsx b/packages/layout_editor/src/views/ChatHeader/SortableHeaderOptions.jsx deleted file mode 100644 index d3a35effc..000000000 --- a/packages/layout_editor/src/views/ChatHeader/SortableHeaderOptions.jsx +++ /dev/null @@ -1,123 +0,0 @@ -import React from "react"; -import { useSortable } from "@dnd-kit/sortable"; -import { Box, Tooltip, ActionButton, Icon } from "@embeddedchat/ui-elements"; -import { CSS } from "@dnd-kit/utilities"; - -const SortableHeaderOptions = (props) => { - const menuMap = { - minmax: ( - - {}} - ghost - display="inline" - square - size="medium" - > - - - - ), - - close: ( - - {}} - ghost - display="inline" - square - size="medium" - > - - - - ), - thread: ( - - {}}> - - - - ), - - mentions: ( - - {}}> - - - - ), - - starred: ( - - {}}> - - - - ), - - pinned: ( - - {}}> - - - - ), - - members: ( - - {}}> - - - - ), - - files: ( - - {}}> - - - - ), - - search: ( - - {}}> - - - - ), - - rInfo: ( - - {}}> - - - - ), - - logout: ( - - {}}> - - - - ), - }; - const { attributes, listeners, setNodeRef, transform, transition } = - useSortable({ id: props.id }); - - const style = { - transform: CSS.Transform.toString(transform), - transition, - }; - - return ( - - {menuMap[props.id]} - - ); -}; - -export default SortableHeaderOptions; From 3bab72d62d04ebe6c632f6a68527287205649f74 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 13 Jul 2024 10:46:44 +0530 Subject: [PATCH 004/104] implemented drag overlay --- .../src/components/SortableMenu/Menu.jsx | 23 +++++----- .../components/SortableMenu/Menu.styles.js | 7 +++ .../src/components/SortableMenu/MenuItem.jsx | 22 ++++++++-- .../src/views/ChatHeader/ChatHeader.jsx | 43 ++++++++++++++----- .../src/views/ChatHeader/ChatHeader.styles.js | 7 +++ .../src/views/ChatHeader/HeaderOptions.jsx | 24 +++++++++-- 6 files changed, 99 insertions(+), 27 deletions(-) diff --git a/packages/layout_editor/src/components/SortableMenu/Menu.jsx b/packages/layout_editor/src/components/SortableMenu/Menu.jsx index 41ac15518..31b1d0921 100644 --- a/packages/layout_editor/src/components/SortableMenu/Menu.jsx +++ b/packages/layout_editor/src/components/SortableMenu/Menu.jsx @@ -26,20 +26,21 @@ const Menu = ({ - - + + + {options.map((option, idx) => ( ))} - - + + ); }; diff --git a/packages/layout_editor/src/components/SortableMenu/Menu.styles.js b/packages/layout_editor/src/components/SortableMenu/Menu.styles.js index 275476956..eb629e7e5 100644 --- a/packages/layout_editor/src/components/SortableMenu/Menu.styles.js +++ b/packages/layout_editor/src/components/SortableMenu/Menu.styles.js @@ -53,6 +53,13 @@ export const getMenuItemStyles = (customTheme) => { cursor: not-allowed !important; color: ${colors.mutedForeground}; `, + + dragOverlay: css` + padding: 0.5rem 0.75em; + border: 1px solid ${colors.border}; + border-right: none; + border-left: none; + `, }; return styles; diff --git a/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx b/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx index 3c90be787..65a17b147 100644 --- a/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx +++ b/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx @@ -5,19 +5,35 @@ import { getMenuItemStyles } from "./Menu.styles"; import { useSortable } from "@dnd-kit/sortable"; import { CSS } from "@dnd-kit/utilities"; - const MenuItem = ({ id, icon, label, action, disabled }) => { const theme = useTheme(); const styles = getMenuItemStyles(theme); - const { attributes, listeners, setNodeRef, transform, transition } = - useSortable({ id }); + const { + attributes, + listeners, + setNodeRef, + transform, + transition, + isDragging, + } = useSortable({ + id, + data: { + type: "ColumnOptions", + icon, + label, + }, + }); const style = { transform: CSS.Transform.toString(transform), transition, }; + if (isDragging) { + return ; + } + return ( { + if (event.active.data.current?.type === "RowOptions") { + setActiveRowOption(event.active.id); + } else if (event.active.data.current?.type === "ColumnOptions") { + setActiveColumnOption({ + id: event.active.id, + icon: event.active.data.current.icon, + label: event.active.data.current.label, + }); + } + }; const handleDragEnd = (event) => { + setActiveRowOption(null); + setActiveColumnOption(null); const { active, over } = event; if (active.id !== over.id) { @@ -223,18 +239,25 @@ const ChatHeader = ({ sensors={sensors} collisionDetection={closestCenter} onDragEnd={handleDragEnd} + onDragStart={handleDragStart} > - - + + {toolOptions.slice(0, threshold).map((key) => ( ))} - {menuOptions.length > 0 && } - - + + {menuOptions.length > 0 && } + + {createPortal( + + {activeRowOption && ( + + )} + {activeColumnOption && } + , + document.body + )} diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js b/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js index ffb6860c7..0cbe97930 100644 --- a/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js @@ -45,6 +45,13 @@ export const getChatHeaderStyles = (customTheme) => { position:relative; gap: 0.5rem; `, + + overlayBox: css` + width: 24px; + height: 24px; + border: 1px solid ${colors.border}; + border-radius: ${theme.schemes.radius}; + `, }; return styles; diff --git a/packages/layout_editor/src/views/ChatHeader/HeaderOptions.jsx b/packages/layout_editor/src/views/ChatHeader/HeaderOptions.jsx index fce4dbbcf..a8b054795 100644 --- a/packages/layout_editor/src/views/ChatHeader/HeaderOptions.jsx +++ b/packages/layout_editor/src/views/ChatHeader/HeaderOptions.jsx @@ -1,17 +1,35 @@ import React from "react"; import { useSortable } from "@dnd-kit/sortable"; -import { Box } from "@embeddedchat/ui-elements"; +import { Box, useTheme } from "@embeddedchat/ui-elements"; import { CSS } from "@dnd-kit/utilities"; +import { getChatHeaderStyles } from "./ChatHeader.styles"; const HeaderOptions = ({ id, menuMap }) => { - const { attributes, listeners, setNodeRef, transform, transition } = - useSortable({ id }); + const theme = useTheme(); + const styles = getChatHeaderStyles(theme); + const { + attributes, + listeners, + setNodeRef, + transform, + transition, + isDragging, + } = useSortable({ + id, + data: { + type: "RowOptions", + }, + }); const style = { transform: CSS.Transform.toString(transform), transition, }; + if (isDragging) { + return ; + } + return ( {menuMap[id]} From 08acf621fc80940dad225c2a9953f74c63e9acf4 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 13 Jul 2024 12:34:36 +0530 Subject: [PATCH 005/104] added dragover event --- .../src/views/ChatHeader/ChatHeader.jsx | 20 ++++++++++++++++++- .../src/views/ChatHeader/ChatHeader.styles.js | 2 +- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx index e8880f527..21faf10d3 100644 --- a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx @@ -51,7 +51,7 @@ const ChatHeader = ({ const [toolOptions, setToolOptions] = useState(optionConfig.toolOptions); const [activeRowOption, setActiveRowOption] = useState(null); const [activeColumnOption, setActiveColumnOption] = useState(null); - const [threshold] = useState(optionConfig.threshold); + const [threshold, setThreshold] = useState(optionConfig.threshold); const menuMap = { minmax: ( @@ -213,6 +213,23 @@ const ChatHeader = ({ } }; + const handleDragOver = (event) => { + const isARowOption = event.active.data.current?.type === "RowOptions"; + const isAColumnOption = event.active.data.current?.type === "ColumnOptions"; + const isOverAColumnOption = + event.over.data.current?.type === "ColumnOptions"; + + const isOverARowOption = event.over.data.current?.type === "RowOptions"; + + if (isARowOption && isOverAColumnOption) { + setThreshold((threshold) => threshold - 1); + } else if (isAColumnOption && isOverARowOption) { + setThreshold((threshold) => threshold + 1); + } + + console.log(event); + }; + return ( @@ -240,6 +257,7 @@ const ChatHeader = ({ collisionDetection={closestCenter} onDragEnd={handleDragEnd} onDragStart={handleDragStart} + onDragOver={handleDragOver} > diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js b/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js index 0cbe97930..cf06e9685 100644 --- a/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js @@ -3,7 +3,7 @@ import { darken } from "@embeddedchat/ui-elements"; const rowCentreAlign = css` display: flex; - flex-direction: row; + flex-direction: ; align-items: center; `; From 500e43772f619c48d41a3ede186526d2ffea734e Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 13 Jul 2024 13:50:29 +0530 Subject: [PATCH 006/104] changed jsx to normal options --- .../react/src/views/ChatHeader/ChatHeader.js | 319 +++++++----------- .../src/views/ChatInput/ChatInput.styles.js | 3 +- .../src/views/SurfaceMenu/SurfaceItem.js | 12 + .../src/views/SurfaceMenu/SurfaceMenu.js | 12 + 4 files changed, 154 insertions(+), 192 deletions(-) create mode 100644 packages/react/src/views/SurfaceMenu/SurfaceItem.js create mode 100644 packages/react/src/views/SurfaceMenu/SurfaceMenu.js diff --git a/packages/react/src/views/ChatHeader/ChatHeader.js b/packages/react/src/views/ChatHeader/ChatHeader.js index 5a57a32b2..f9079c688 100644 --- a/packages/react/src/views/ChatHeader/ChatHeader.js +++ b/packages/react/src/views/ChatHeader/ChatHeader.js @@ -1,12 +1,10 @@ -import React, { useCallback, useEffect } from 'react'; +import React, { useCallback, useEffect, useMemo } from 'react'; import PropTypes from 'prop-types'; import { Box, Heading, Icon, Menu, - ActionButton, - Tooltip, useToastBarDispatch, useComponentOverrides, } from '@embeddedchat/ui-elements'; @@ -28,6 +26,7 @@ import useFetchChatData from '../../hooks/useFetchChatData'; import useSettingsStore from '../../store/settingsStore'; import useChatHeaderStyles from './ChatHeader.styles'; import useSetExclusiveState from '../../hooks/useSetExclusiveState'; +import SurfaceMenu from '../SurfaceMenu/SurfaceMenu'; const ChatHeader = ({ isClosable, @@ -37,9 +36,8 @@ const ChatHeader = ({ className = '', style = {}, optionConfig = { - toolOptions: [ - 'minmax', - 'close', + surfaceItems: ['minmax', 'close'], + menuItems: [ 'thread', 'mentions', 'starred', @@ -50,17 +48,15 @@ const ChatHeader = ({ 'rInfo', 'logout', ], - - threshold: 2, }, }) => { const { classNames, styleOverrides, configOverrides } = useComponentOverrides('ChatHeader'); - const toolOptions = - configOverrides.optionConfig?.toolOptions || optionConfig.toolOptions; - const threshold = - configOverrides.optionConfig?.threshold || optionConfig.threshold; + const surfaceItems = + configOverrides.optionConfig?.surfaceItems || optionConfig.surfaceItems; + const menuItems = + configOverrides.optionConfig?.menuItems || optionConfig.menuItems; const styles = useChatHeaderStyles(); const setExclusiveState = useSetExclusiveState(); @@ -204,190 +200,129 @@ const ChatHeader = ({ setIsChannelReadOnly, ]); - const menuMap = { - minmax: ( - - { - setFullScreen((prev) => !prev); - }} - ghost - display="inline" - square - size="medium" - > - - - - ), - - close: isClosable && ( - { - setClosableState((prev) => !prev); - }} - ghost - display="inline" - square - size="medium" - > - - - ), - thread: ( - - { - setExclusiveState(setShowAllThreads); - }} - > - - - - ), - - mentions: ( - - { - setExclusiveState(setShowMentions); - }} - > - - - - ), - - starred: ( - - { - setExclusiveState(setShowStarred); - }} - > - - - - ), - - pinned: ( - - { - setExclusiveState(setShowPinned); - }} - > - - - - ), - - members: isUserAuthenticated && ( - - { - setExclusiveState(setShowMembers); - }} - > - - - - ), - - files: isUserAuthenticated && ( - - { - setExclusiveState(setShowAllFiles); - }} - > - - - - ), - - search: isUserAuthenticated && ( - - { - setExclusiveState(setShowSearch); - }} - > - - - - ), - - rInfo: isUserAuthenticated && ( - - { - setExclusiveState(setShowChannelinfo); - }} - > - - - - ), - - logout: isUserAuthenticated && ( - - { - handleLogout(); - }} - > - - - - ), - }; - - const menuOptions = toolOptions - .slice(threshold) - .map((key) => { - const tool = menuMap[key]; + const options = useMemo( + () => ({ + minmax: { + label: `${fullScreen ? 'Minimize' : 'Maximize'}`, + id: 'minmax', + onClick: () => setFullScreen((prev) => !prev), + iconName: `${fullScreen ? 'collapse' : 'expand'}`, + visible: true, + }, + close: { + label: 'Close', + id: 'close', + onClick: () => setClosableState((prev) => !prev), + iconName: 'cross', + visible: isClosable, + }, + thread: { + label: 'Threads', + id: 'thread', + onClick: () => setExclusiveState(setShowAllThreads), + iconName: 'thread', + visible: true, + }, + mentions: { + label: 'Mentions', + id: 'mention', + onClick: () => setExclusiveState(setShowMentions), + iconName: 'at', + visible: true, + }, + starred: { + label: 'Starred Messages', + id: 'starred', + onClick: () => setExclusiveState(setShowStarred), + iconName: 'star', + visible: true, + }, + pinned: { + label: 'Pinned Messages', + id: 'pinned', + onClick: () => setExclusiveState(setShowPinned), + iconName: 'pin', + visible: true, + }, + members: { + label: 'Members', + id: 'members', + onClick: () => setExclusiveState(setShowMembers), + iconName: 'members', + visible: isUserAuthenticated, + }, + files: { + label: 'Files', + id: 'files', + onClick: () => setExclusiveState(setShowAllFiles), + iconName: 'clip', + visible: isUserAuthenticated, + }, + search: { + label: 'Search Messages', + id: 'search', + onClick: () => setExclusiveState(setShowSearch), + iconName: 'magnifier', + visible: isUserAuthenticated, + }, + rInfo: { + label: 'Room Information', + id: 'rInfo', + onClick: () => setExclusiveState(setShowChannelinfo), + iconName: 'info', + visible: isUserAuthenticated, + }, + logout: { + label: 'Logout', + id: 'logout', + onClick: handleLogout, + iconName: 'reply-directly', + visible: isUserAuthenticated, + }, + }), + [ + fullScreen, + isClosable, + isUserAuthenticated, + handleLogout, + setFullScreen, + setClosableState, + setExclusiveState, + setShowAllThreads, + setShowMentions, + setShowStarred, + setShowPinned, + setShowMembers, + setShowAllFiles, + setShowSearch, + setShowChannelinfo, + ] + ); - if (!tool) { - return null; + const menuOptions = menuItems + ?.map((item) => { + if (item in options && options[item].visible) { + return { + id: options[item].id, + action: options[item].onClick, + label: options[item].label, + icon: options[item].iconName, + }; } + return null; + }) + .filter((option) => option !== null); - const { onClick } = tool.props.children.props; - const { name: icon } = tool.props.children.props.children.props; - const { text } = tool.props; - - if (onClick && icon && text) { + const surfaceOptions = surfaceItems + ?.map((item) => { + if (item in options && options[item].visible) { return { - id: key, - action: onClick, - label: text, - icon, + id: options[item].id, + onClick: options[item].onClick, + label: options[item].label, + iconName: options[item].iconName, }; } - return null; }) .filter((option) => option !== null); @@ -436,7 +371,9 @@ const ChatHeader = ({ avatar )} - {toolOptions.slice(0, threshold).map((key) => menuMap[key])} + {surfaceOptions.length > 0 && ( + + )} {menuOptions.length > 0 && } diff --git a/packages/react/src/views/ChatInput/ChatInput.styles.js b/packages/react/src/views/ChatInput/ChatInput.styles.js index 12e102081..fe6176b42 100644 --- a/packages/react/src/views/ChatInput/ChatInput.styles.js +++ b/packages/react/src/views/ChatInput/ChatInput.styles.js @@ -21,7 +21,7 @@ export const useChatInputStyles = () => { align-items: center; justify-content: center; flex-direction: row; - padding: 0.25rem; + padding: 0.5rem; `; const iconCursor = css` @@ -29,6 +29,7 @@ export const useChatInputStyles = () => { `; const textInput = css` + flex: 1; word-wrap: break-word; white-space: pre-wrap; overflow: auto; diff --git a/packages/react/src/views/SurfaceMenu/SurfaceItem.js b/packages/react/src/views/SurfaceMenu/SurfaceItem.js new file mode 100644 index 000000000..f23dfb94f --- /dev/null +++ b/packages/react/src/views/SurfaceMenu/SurfaceItem.js @@ -0,0 +1,12 @@ +import React from 'react'; +import { Tooltip, ActionButton, Icon } from '@embeddedchat/ui-elements'; + +const SurfaceItem = ({ item }) => ( + + + + + +); + +export default SurfaceItem; diff --git a/packages/react/src/views/SurfaceMenu/SurfaceMenu.js b/packages/react/src/views/SurfaceMenu/SurfaceMenu.js new file mode 100644 index 000000000..dfb6e38f7 --- /dev/null +++ b/packages/react/src/views/SurfaceMenu/SurfaceMenu.js @@ -0,0 +1,12 @@ +import React from 'react'; +import SurfaceItem from './SurfaceItem'; + +const SurfaceMenu = ({ options }) => ( + <> + {options?.map((item, idx) => ( + + ))} + +); + +export default SurfaceMenu; From f48fdb0f6c926eaec0fe02550583a2498414b886 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 13 Jul 2024 14:58:01 +0530 Subject: [PATCH 007/104] structure change in layout editor --- .../src/components/SortableMenu/Menu.jsx | 3 +- .../src/components/SortableMenu/MenuItem.jsx | 2 +- .../SurfaceMenu/SurfaceItem.jsx} | 30 +- .../components/SurfaceMenu/SurfaceMenu.jsx | 15 + .../SurfaceMenu/SurfaceMenu.styles.js | 16 + .../src/views/ChatHeader/ChatHeader.jsx | 330 ++++++++---------- 6 files changed, 197 insertions(+), 199 deletions(-) rename packages/layout_editor/src/{views/ChatHeader/HeaderOptions.jsx => components/SurfaceMenu/SurfaceItem.jsx} (50%) create mode 100644 packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.jsx create mode 100644 packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.styles.js diff --git a/packages/layout_editor/src/components/SortableMenu/Menu.jsx b/packages/layout_editor/src/components/SortableMenu/Menu.jsx index 31b1d0921..a6ab1d12c 100644 --- a/packages/layout_editor/src/components/SortableMenu/Menu.jsx +++ b/packages/layout_editor/src/components/SortableMenu/Menu.jsx @@ -10,7 +10,6 @@ import MenuItem from "./MenuItem"; import { getMenuStyles } from "./Menu.styles"; import { SortableContext, - verticalListSortingStrategy, } from "@dnd-kit/sortable"; const Menu = ({ @@ -35,7 +34,7 @@ const Menu = ({ `, ]} > - + {options.map((option, idx) => ( ))} diff --git a/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx b/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx index 65a17b147..90dc91d68 100644 --- a/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx +++ b/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx @@ -19,7 +19,7 @@ const MenuItem = ({ id, icon, label, action, disabled }) => { } = useSortable({ id, data: { - type: "ColumnOptions", + type: "MenuOptions", icon, label, }, diff --git a/packages/layout_editor/src/views/ChatHeader/HeaderOptions.jsx b/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx similarity index 50% rename from packages/layout_editor/src/views/ChatHeader/HeaderOptions.jsx rename to packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx index a8b054795..f293f060f 100644 --- a/packages/layout_editor/src/views/ChatHeader/HeaderOptions.jsx +++ b/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx @@ -1,29 +1,35 @@ import React from "react"; +import { + Tooltip, + ActionButton, + Icon, + Box, + useTheme, +} from "@embeddedchat/ui-elements"; import { useSortable } from "@dnd-kit/sortable"; -import { Box, useTheme } from "@embeddedchat/ui-elements"; import { CSS } from "@dnd-kit/utilities"; -import { getChatHeaderStyles } from "./ChatHeader.styles"; +import { getSurfaceItemStyles } from "./SurfaceMenu.styles"; -const HeaderOptions = ({ id, menuMap }) => { - const theme = useTheme(); - const styles = getChatHeaderStyles(theme); +const SurfaceItem = ({ id, label, iconName, onClick }) => { const { attributes, listeners, setNodeRef, transform, - transition, isDragging, } = useSortable({ id, data: { - type: "RowOptions", + type: "SurfaceOptions", + icon: iconName, + label, }, }); + const theme = useTheme(); + const styles = getSurfaceItemStyles(theme); const style = { transform: CSS.Transform.toString(transform), - transition, }; if (isDragging) { @@ -32,9 +38,13 @@ const HeaderOptions = ({ id, menuMap }) => { return ( - {menuMap[id]} + + + + + ); }; -export default HeaderOptions; +export default SurfaceItem; diff --git a/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.jsx b/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.jsx new file mode 100644 index 000000000..d15f3337a --- /dev/null +++ b/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.jsx @@ -0,0 +1,15 @@ +import React from "react"; +import SurfaceItem from "./SurfaceItem"; +import { SortableContext } from "@dnd-kit/sortable"; + +const SurfaceMenu = ({ options }) => { + return ( + + {options?.map((item, idx) => ( + + ))} + + ); +}; + +export default SurfaceMenu; diff --git a/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.styles.js b/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.styles.js new file mode 100644 index 000000000..87984171e --- /dev/null +++ b/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.styles.js @@ -0,0 +1,16 @@ +import { css } from "@emotion/react"; + +export const getSurfaceItemStyles = (customTheme) => { + const { theme, colors } = customTheme; + + const styles = { + overlayBox: css` + width: 24px; + height: 24px; + border: 1px solid ${colors.border}; + border-radius: ${theme.schemes.radius}; + `, + }; + + return styles; +}; diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx index 21faf10d3..cbe5a093a 100644 --- a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx @@ -1,15 +1,8 @@ -import React, { useState } from "react"; -import { - Heading, - Box, - Icon, - ActionButton, - Tooltip, - useTheme, -} from "@embeddedchat/ui-elements"; +import React, { useState, useMemo } from "react"; +import { Heading, Box, Icon, useTheme } from "@embeddedchat/ui-elements"; import { getChatHeaderStyles } from "./ChatHeader.styles"; -import HeaderOptions from "./HeaderOptions"; import { Menu } from "../../components/SortableMenu"; +import SurfaceItem from "../../components/SurfaceMenu/SurfaceItem"; import { DndContext, closestCenter, @@ -19,164 +12,138 @@ import { useSensors, DragOverlay, } from "@dnd-kit/core"; -import { - SortableContext, - sortableKeyboardCoordinates, - arrayMove, -} from "@dnd-kit/sortable"; +import { sortableKeyboardCoordinates, arrayMove } from "@dnd-kit/sortable"; import { createPortal } from "react-dom"; import MenuItem from "../../components/SortableMenu/MenuItem"; +import SurfaceMenu from "../../components/SurfaceMenu/SurfaceMenu"; const ChatHeader = ({ optionConfig = { - toolOptions: [ + surfaceItems: [ "minmax", + "close", "thread", "mentions", "starred", "pinned", - "files", - "members", - "search", - "rInfo", - "logout", - "close", ], - - threshold: 4, + menuItems: ["files", "members", "search", "rInfo", "logout"], }, }) => { const theme = useTheme(); const styles = getChatHeaderStyles(theme); - const [toolOptions, setToolOptions] = useState(optionConfig.toolOptions); - const [activeRowOption, setActiveRowOption] = useState(null); - const [activeColumnOption, setActiveColumnOption] = useState(null); - const [threshold, setThreshold] = useState(optionConfig.threshold); - - const menuMap = { - minmax: ( - - {}} - ghost - display="inline" - square - size="medium" - > - - - - ), - - close: ( - - {}} - ghost - display="inline" - square - size="medium" - > - - - - ), - thread: ( - - {}}> - - - - ), - - mentions: ( - - {}}> - - - - ), - - starred: ( - - {}}> - - - - ), - - pinned: ( - - {}}> - - - - ), - - members: ( - - {}}> - - - - ), - - files: ( - - {}}> - - - - ), - - search: ( - - {}}> - - - - ), - - rInfo: ( - - {}}> - - - - ), - - logout: ( - - {}}> - - - - ), - }; - - const menuOptions = toolOptions - .slice(threshold) - .map((key) => { - const tool = menuMap[key]; + const [surfaceItems, setSurfaceItems] = useState(optionConfig.surfaceItems); + const [menuItems, setMenuItems] = useState(optionConfig.menuItems); + const [activeSurfaceItem, setActiveSurfaceItem] = useState(null); + const [activeMenuItem, setActiveMenuItem] = useState(null); + + const options = useMemo( + () => ({ + minmax: { + label: "Maximize", + id: "minmax", + onClick: () => {}, + iconName: "expand", + visible: true, + }, + close: { + label: "Close", + id: "close", + onClick: () => {}, + iconName: "cross", + visible: true, + }, + thread: { + label: "Threads", + id: "thread", + onClick: () => {}, + iconName: "thread", + visible: true, + }, + mentions: { + label: "Mentions", + id: "mentions", + onClick: () => {}, + iconName: "at", + visible: true, + }, + starred: { + label: "Starred Messages", + id: "starred", + onClick: () => {}, + iconName: "star", + visible: true, + }, + pinned: { + label: "Pinned Messages", + id: "pinned", + onClick: () => {}, + iconName: "pin", + visible: true, + }, + members: { + label: "Members", + id: "members", + onClick: () => {}, + iconName: "members", + visible: true, + }, + files: { + label: "Files", + id: "files", + onClick: () => {}, + iconName: "clip", + visible: true, + }, + search: { + label: "Search Messages", + id: "search", + onClick: () => {}, + iconName: "magnifier", + visible: true, + }, + rInfo: { + label: "Room Information", + id: "rInfo", + onClick: () => {}, + iconName: "info", + visible: true, + }, + logout: { + label: "Logout", + id: "logout", + onClick: () => {}, + iconName: "reply-directly", + visible: true, + }, + }), + [] + ); - if (!tool) { - return null; + const menuOptions = menuItems + ?.map((item) => { + if (item in options && options[item].visible) { + return { + id: options[item].id, + action: options[item].onClick, + label: options[item].label, + icon: options[item].iconName, + }; } + return null; + }) + .filter((option) => option !== null); - const { onClick } = tool.props.children.props; - const { name: icon } = tool.props.children.props.children.props; - const { text } = tool.props; - - if (onClick && icon && text) { + const surfaceOptions = surfaceItems + ?.map((item) => { + if (item in options && options[item].visible) { return { - id: key, - action: onClick, - label: text, - icon, + id: options[item].id, + onClick: options[item].onClick, + label: options[item].label, + iconName: options[item].iconName, }; } - return null; }) .filter((option) => option !== null); @@ -188,10 +155,14 @@ const ChatHeader = ({ }) ); const handleDragStart = (event) => { - if (event.active.data.current?.type === "RowOptions") { - setActiveRowOption(event.active.id); - } else if (event.active.data.current?.type === "ColumnOptions") { - setActiveColumnOption({ + if (event.active.data.current?.type === "SurfaceOptions") { + setActiveSurfaceItem({ + id: event.active.id, + iconName: event.active.data.current.icon, + label: event.active.data.current.label, + }); + } else if (event.active.data.current?.type === "MenuOptions") { + setActiveMenuItem({ id: event.active.id, icon: event.active.data.current.icon, label: event.active.data.current.label, @@ -199,35 +170,27 @@ const ChatHeader = ({ } }; const handleDragEnd = (event) => { - setActiveRowOption(null); - setActiveColumnOption(null); + setActiveSurfaceItem(null); + setActiveMenuItem(null); const { active, over } = event; if (active.id !== over.id) { - setToolOptions((items) => { - const oldIndex = items.indexOf(active.id); - const newIndex = items.indexOf(over.id); - - return arrayMove(items, oldIndex, newIndex); - }); - } - }; - - const handleDragOver = (event) => { - const isARowOption = event.active.data.current?.type === "RowOptions"; - const isAColumnOption = event.active.data.current?.type === "ColumnOptions"; - const isOverAColumnOption = - event.over.data.current?.type === "ColumnOptions"; - - const isOverARowOption = event.over.data.current?.type === "RowOptions"; - - if (isARowOption && isOverAColumnOption) { - setThreshold((threshold) => threshold - 1); - } else if (isAColumnOption && isOverARowOption) { - setThreshold((threshold) => threshold + 1); + if (event.active.data.current?.type === "SurfaceOptions") { + setSurfaceItems((items) => { + const oldIndex = items.indexOf(active.id); + const newIndex = items.indexOf(over.id); + + return arrayMove(items, oldIndex, newIndex); + }); + } else if (event.active.data.current?.type === "MenuOptions") { + setMenuItems((items) => { + const oldIndex = items.indexOf(active.id); + const newIndex = items.indexOf(over.id); + + return arrayMove(items, oldIndex, newIndex); + }); + } } - - console.log(event); }; return ( @@ -257,22 +220,17 @@ const ChatHeader = ({ collisionDetection={closestCenter} onDragEnd={handleDragEnd} onDragStart={handleDragStart} - onDragOver={handleDragOver} > - - {toolOptions.slice(0, threshold).map((key) => ( - - ))} - + {surfaceOptions.length > 0 && ( + + )} {menuOptions.length > 0 && } {createPortal( - {activeRowOption && ( - - )} - {activeColumnOption && } + {activeSurfaceItem && } + {activeMenuItem && } , document.body )} From 68632c5d36a180e72710ec96c5dbedd130defab0 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 13 Jul 2024 15:27:35 +0530 Subject: [PATCH 008/104] enabled transfer between two sortable context --- .../src/views/ChatHeader/ChatHeader.jsx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx index cbe5a093a..4ffb21d60 100644 --- a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx @@ -175,20 +175,24 @@ const ChatHeader = ({ const { active, over } = event; if (active.id !== over.id) { - if (event.active.data.current?.type === "SurfaceOptions") { + if (event.active.data.current?.type === "SurfaceOptions" && event.over.data.current?.type === "SurfaceOptions") { setSurfaceItems((items) => { const oldIndex = items.indexOf(active.id); const newIndex = items.indexOf(over.id); - return arrayMove(items, oldIndex, newIndex); }); - } else if (event.active.data.current?.type === "MenuOptions") { + } else if (event.active.data.current?.type === "MenuOptions" && event.over.data.current?.type === "MenuOptions") { setMenuItems((items) => { const oldIndex = items.indexOf(active.id); const newIndex = items.indexOf(over.id); - return arrayMove(items, oldIndex, newIndex); }); + } else if (event.active.data.current?.type === "SurfaceOptions" && event.over.data.current?.type === "MenuOptions") { + setSurfaceItems((items) => items.filter((item) => item !== active.id)); + setMenuItems((items) => [...items, active.id]); + } else if (event.active.data.current?.type === "MenuOptions" && event.over.data.current?.type === "SurfaceOptions") { + setMenuItems((items) => items.filter((item) => item !== active.id)); + setSurfaceItems((items) => [...items, active.id]); } } }; From 48fd98a5d079a85145a6506dde077b777acdf921 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 13 Jul 2024 23:41:45 +0530 Subject: [PATCH 009/104] enable no items --- .../src/views/ChatHeader/ChatHeader.jsx | 71 +++++++++++-------- 1 file changed, 43 insertions(+), 28 deletions(-) diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx index 4ffb21d60..3018c0aba 100644 --- a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx @@ -37,6 +37,9 @@ const ChatHeader = ({ const [activeSurfaceItem, setActiveSurfaceItem] = useState(null); const [activeMenuItem, setActiveMenuItem] = useState(null); + const placeholderSurfaceItem = "placeholder-surface"; + const placeholderMenuItem = "placeholder-menu"; + const options = useMemo( () => ({ minmax: { @@ -120,33 +123,37 @@ const ChatHeader = ({ [] ); - const menuOptions = menuItems - ?.map((item) => { - if (item in options && options[item].visible) { - return { - id: options[item].id, - action: options[item].onClick, - label: options[item].label, - icon: options[item].iconName, - }; - } - return null; - }) - .filter((option) => option !== null); + const menuOptions = menuItems.length > 0 + ? menuItems + .map((item) => { + if (item in options && options[item].visible) { + return { + id: options[item].id, + action: options[item].onClick, + label: options[item].label, + icon: options[item].iconName, + }; + } + return null; + }) + .filter((option) => option !== null) + : [{ id: placeholderMenuItem, label: "No items", icon: "plus" }]; - const surfaceOptions = surfaceItems - ?.map((item) => { - if (item in options && options[item].visible) { - return { - id: options[item].id, - onClick: options[item].onClick, - label: options[item].label, - iconName: options[item].iconName, - }; - } - return null; - }) - .filter((option) => option !== null); + const surfaceOptions = surfaceItems.length > 0 + ? surfaceItems + .map((item) => { + if (item in options && options[item].visible) { + return { + id: options[item].id, + onClick: options[item].onClick, + label: options[item].label, + iconName: options[item].iconName, + }; + } + return null; + }) + .filter((option) => option !== null) + : [{ id: placeholderSurfaceItem, label: "No items", iconName: "plus" }]; const sensors = useSensors( useSensor(PointerSensor), @@ -154,6 +161,7 @@ const ChatHeader = ({ coordinateGetter: sortableKeyboardCoordinates, }) ); + const handleDragStart = (event) => { if (event.active.data.current?.type === "SurfaceOptions") { setActiveSurfaceItem({ @@ -169,6 +177,7 @@ const ChatHeader = ({ }); } }; + const handleDragEnd = (event) => { setActiveSurfaceItem(null); setActiveMenuItem(null); @@ -189,10 +198,16 @@ const ChatHeader = ({ }); } else if (event.active.data.current?.type === "SurfaceOptions" && event.over.data.current?.type === "MenuOptions") { setSurfaceItems((items) => items.filter((item) => item !== active.id)); - setMenuItems((items) => [...items, active.id]); + setMenuItems((items) => { + const newItems = [...items.filter((item) => item !== placeholderMenuItem), active.id]; + return newItems; + }); } else if (event.active.data.current?.type === "MenuOptions" && event.over.data.current?.type === "SurfaceOptions") { setMenuItems((items) => items.filter((item) => item !== active.id)); - setSurfaceItems((items) => [...items, active.id]); + setSurfaceItems((items) => { + const newItems = [...items.filter((item) => item !== placeholderSurfaceItem), active.id]; + return newItems; + }); } } }; From 65a446a93453d9e898eb8c0e97b50af71651d8fe Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 14 Jul 2024 00:50:26 +0530 Subject: [PATCH 010/104] enabled icon size --- .../components/ActionButton/ActionButton.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/packages/ui-elements/src/components/ActionButton/ActionButton.js b/packages/ui-elements/src/components/ActionButton/ActionButton.js index ed38e2c46..f6dfb25f7 100644 --- a/packages/ui-elements/src/components/ActionButton/ActionButton.js +++ b/packages/ui-elements/src/components/ActionButton/ActionButton.js @@ -3,21 +3,31 @@ import PropTypes from 'prop-types'; import { Button } from '../Button'; import { Icon } from '../Icon'; -const getSize = ({ small, large }) => { +const getSize = ({ small, large, size }) => { if (small) { return '1.25rem'; } if (large) { return '1.75rem'; } - return '1.5rem'; + return size || '1.5rem'; }; const ActionButton = forwardRef( - ({ icon, size = 'medium', color = 'default', children, ...props }, ref) => ( + ( + { + icon, + size = 'medium', + color = 'default', + children, + iconSize = {}, + ...props + }, + ref + ) => ( ) ); From 64a948850873f9f464ec9718862370ac6ac2a212 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 14 Jul 2024 00:50:41 +0530 Subject: [PATCH 011/104] changed jsx to option menus --- .../ChatInput/ChatInputFormattingToolbar.js | 8 +- .../react/src/views/Message/MessageToolbox.js | 239 +++++++++--------- .../src/views/SurfaceMenu/SurfaceItem.js | 16 +- .../src/views/SurfaceMenu/SurfaceMenu.js | 4 +- 4 files changed, 131 insertions(+), 136 deletions(-) diff --git a/packages/react/src/views/ChatInput/ChatInputFormattingToolbar.js b/packages/react/src/views/ChatInput/ChatInputFormattingToolbar.js index 47fb4e489..e293567b4 100644 --- a/packages/react/src/views/ChatInput/ChatInputFormattingToolbar.js +++ b/packages/react/src/views/ChatInput/ChatInputFormattingToolbar.js @@ -19,7 +19,7 @@ const ChatInputFormattingToolbar = ({ messageRef, inputRef, optionConfig = { - toolOptions: ['emoji', 'formatter', 'audio', 'video', 'file'], + surfaceItems: ['emoji', 'formatter', 'audio', 'video', 'file'], }, }) => { const { classNames, styleOverrides, configOverrides } = useComponentOverrides( @@ -27,8 +27,8 @@ const ChatInputFormattingToolbar = ({ ); const styles = useChatInputFormattingToolbarStyles(); - const toolOptions = - configOverrides.optionConfig?.toolOptions || optionConfig.toolOptions; + const surfaceItems = + configOverrides.optionConfig?.surfaceItems || optionConfig.surfaceItems; const isRecordingMessage = useMessageStore( (state) => state.isRecordingMessage @@ -122,7 +122,7 @@ const ChatInputFormattingToolbar = ({ className={`ec-chat-input-formatting-toolbar ${classNames}`} style={styleOverrides} > - {toolOptions.map((key) => chatToolMap[key])} + {surfaceItems.map((key) => chatToolMap[key])} ); }; diff --git a/packages/react/src/views/Message/MessageToolbox.js b/packages/react/src/views/Message/MessageToolbox.js index 0d911526c..a11b38fd6 100644 --- a/packages/react/src/views/Message/MessageToolbox.js +++ b/packages/react/src/views/Message/MessageToolbox.js @@ -1,11 +1,9 @@ -import React, { useState } from 'react'; +import React, { useState, useMemo } from 'react'; import { Box, - ActionButton, Modal, Icon, Button, - Tooltip, Menu, useComponentOverrides, appendClassNames, @@ -13,6 +11,7 @@ import { import { EmojiPicker } from '../EmojiPicker'; import { parseEmoji } from '../../lib/emoji'; import { useMessageToolboxStyles } from './Message.styles'; +import SurfaceMenu from '../SurfaceMenu/SurfaceMenu'; export const MessageToolbox = ({ className = '', @@ -31,7 +30,7 @@ export const MessageToolbox = ({ handleQuoteMessage, isEditing = false, optionConfig = { - toolOptions: [ + surfaceItems: [ 'reaction', 'reply', 'quote', @@ -41,7 +40,8 @@ export const MessageToolbox = ({ 'delete', 'report', ], - threshold: 8, + + menuItems: [], }, ...props @@ -53,10 +53,10 @@ export const MessageToolbox = ({ ); const styles = useMessageToolboxStyles(); - const toolOptions = - configOverrides.optionConfig?.toolOptions || optionConfig.toolOptions; - const threshold = - configOverrides.optionConfig?.threshold || optionConfig.threshold; + const surfaceItems = + configOverrides.optionConfig?.surfaceItems || optionConfig.surfaceItems; + const menuItems = + configOverrides.optionConfig?.menuItems || optionConfig.menuItems; const [isEmojiOpen, setEmojiOpen] = useState(false); @@ -66,128 +66,116 @@ export const MessageToolbox = ({ setShowDeleteModal(false); }; - const toolMap = { - reply: !isThreadMessage && ( - - - - ), - quote: ( - - handleQuoteMessage(message)} - /> - - ), - star: ( - ({ + reply: { + label: 'Reply in thread', + id: 'reply', + onClick: handleOpenThread(message), + iconName: 'thread', + visible: !isThreadMessage, + }, + quote: { + label: 'Quote', + id: 'quote', + onClick: () => handleQuoteMessage(message), + iconName: 'quote', + visible: true, + }, + star: { + label: message.starred && message.starred.find((u) => u._id === authenticatedUserId) ? 'Unstar' - : 'Star' - } - position="top" - key="star" - > - u._id === authenticatedUserId) - ? 'star-filled' - : 'star' - }`} - onClick={() => handleStarMessage(message)} - /> - - ), - reaction: ( - - setEmojiOpen(true)} - /> - - ), - pin: !isThreadMessage && ( - - handlePinMessage(message)} - /> - - ), - edit: message.u._id === authenticatedUserId && ( - - handleEditMessage(message)} - /> - - ), - delete: message.u._id === authenticatedUserId && ( - - setShowDeleteModal(true)} - /> - - ), - report: ( - - handlerReportMessage(message)} - /> - - ), - }; - - const menuOptions = toolOptions - .slice(threshold) - .map((key) => { - const tool = toolMap[key]; + : 'Star', + id: 'star', + onClick: () => handleStarMessage(message), + iconName: + message.starred && + message.starred.find((u) => u._id === authenticatedUserId) + ? 'star-filled' + : 'star', + visible: true, + }, + reaction: { + label: 'Add reaction', + id: 'reaction', + onClick: () => setEmojiOpen(true), + iconName: 'emoji', + visible: true, + }, + pin: { + label: message.pinned ? 'Unpin' : 'Pin', + id: 'pin', + onClick: () => handlePinMessage(message), + iconName: message.pinned ? 'pin-filled' : 'pin', + visible: !isThreadMessage, + }, + edit: { + label: 'Edit', + id: 'edit', + onClick: () => handleEditMessage(message), + iconName: 'edit', + visible: message.u._id === authenticatedUserId, + color: isEditing ? 'secondary' : 'default', + ghost: !isEditing, + }, + delete: { + label: 'Delete', + id: 'delete', + onClick: () => setShowDeleteModal(true), + iconName: 'trash', + visible: message.u._id === authenticatedUserId, + type: 'destructive', + }, + report: { + label: 'Report', + id: 'report', + onClick: () => handlerReportMessage(message), + iconName: 'report', + visible: true, + type: 'destructive', + }, + }), + [ + handleOpenThread, + message, + isThreadMessage, + authenticatedUserId, + isEditing, + handleQuoteMessage, + handleStarMessage, + handlePinMessage, + handleEditMessage, + handlerReportMessage, + ] + ); - if (!tool) { - return null; + const menuOptions = menuItems + ?.map((item) => { + if (item in options && options[item].visible) { + return { + id: options[item].id, + action: options[item].onClick, + label: options[item].label, + icon: options[item].iconName, + }; } + return null; + }) + .filter((option) => option !== null); - const { onClick } = tool.props.children.props; - const { icon } = tool.props.children.props; - const { text } = tool.props; - - if (onClick && icon && text) { + const surfaceOptions = surfaceItems + ?.map((item) => { + if (item in options && options[item].visible) { return { - id: key, - action: onClick, - label: text, - icon, + id: options[item].id, + onClick: options[item].onClick, + label: options[item].label, + iconName: options[item].iconName, + type: options[item].type, }; } - return null; }) .filter((option) => option !== null); @@ -201,9 +189,10 @@ export const MessageToolbox = ({ style={styleOverrides} {...props} > - {toolOptions.slice(0, threshold).map((key) => toolMap[key])} - - {menuOptions.length > 0 && ( + {surfaceOptions?.length > 0 && ( + + )} + {menuOptions?.length > 0 && ( ( +const SurfaceItem = ({ item, size }) => ( - - - + ); diff --git a/packages/react/src/views/SurfaceMenu/SurfaceMenu.js b/packages/react/src/views/SurfaceMenu/SurfaceMenu.js index dfb6e38f7..35573f384 100644 --- a/packages/react/src/views/SurfaceMenu/SurfaceMenu.js +++ b/packages/react/src/views/SurfaceMenu/SurfaceMenu.js @@ -1,10 +1,10 @@ import React from 'react'; import SurfaceItem from './SurfaceItem'; -const SurfaceMenu = ({ options }) => ( +const SurfaceMenu = ({ options, size = 'medium' }) => ( <> {options?.map((item, idx) => ( - + ))} ); From b79c6bc5a6cbea5f22e96da981ff60a19592f60a Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 14 Jul 2024 00:57:50 +0530 Subject: [PATCH 012/104] updated yarn lock and fixed build issues --- packages/layout_editor/package.json | 1 + yarn.lock | 72 +++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) diff --git a/packages/layout_editor/package.json b/packages/layout_editor/package.json index c7b1c506f..e163e8ff6 100644 --- a/packages/layout_editor/package.json +++ b/packages/layout_editor/package.json @@ -15,6 +15,7 @@ "dependencies": { "@dnd-kit/core": "^6.1.0", "@dnd-kit/sortable": "^8.0.0", + "@embeddedchat/ui-elements": "workspace:^", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/yarn.lock b/yarn.lock index bab4af45c..6c48db18d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2220,6 +2220,55 @@ __metadata: languageName: node linkType: hard +"@dnd-kit/accessibility@npm:^3.1.0": + version: 3.1.0 + resolution: "@dnd-kit/accessibility@npm:3.1.0" + dependencies: + tslib: ^2.0.0 + peerDependencies: + react: ">=16.8.0" + checksum: fcb88c961e2f4c226ab575bc4a13712419884bb0f60761befcaa23bcb6c9939dc2cac6633416f2a07baee9a8830350c6df444039332408cdaaf27cad17c6b64b + languageName: node + linkType: hard + +"@dnd-kit/core@npm:^6.1.0": + version: 6.1.0 + resolution: "@dnd-kit/core@npm:6.1.0" + dependencies: + "@dnd-kit/accessibility": ^3.1.0 + "@dnd-kit/utilities": ^3.2.2 + tslib: ^2.0.0 + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 3b8f46d2f4d2723abad4721c7bc4d1df2c4f6f26ce54673243666212cfa6f34f33e3255b53144a847da469dc736c966c19e4c45330f967ce8c01f8f878ec7f5b + languageName: node + linkType: hard + +"@dnd-kit/sortable@npm:^8.0.0": + version: 8.0.0 + resolution: "@dnd-kit/sortable@npm:8.0.0" + dependencies: + "@dnd-kit/utilities": ^3.2.2 + tslib: ^2.0.0 + peerDependencies: + "@dnd-kit/core": ^6.1.0 + react: ">=16.8.0" + checksum: 26589fd23c18d930a949489b232a7345c0bee4abb6be91d3673232bc79085f13cb5d82087c2068edbc51cbdd3d47c2fe386bada92dc7f2d0dcde13d6be379daa + languageName: node + linkType: hard + +"@dnd-kit/utilities@npm:^3.2.2": + version: 3.2.2 + resolution: "@dnd-kit/utilities@npm:3.2.2" + dependencies: + tslib: ^2.0.0 + peerDependencies: + react: ">=16.8.0" + checksum: 8a5015c2faa52760ab82a64287b2ac6a3d798867a1bca5ccbc1178560dbd9a1f9f1a21faea80f590ba1a4277c3eb7e7c4d3b4a39f1f32171bf6bc8174b370547 + languageName: node + linkType: hard + "@egjs/hammerjs@npm:^2.0.17": version: 2.0.17 resolution: "@egjs/hammerjs@npm:2.0.17" @@ -20907,6 +20956,29 @@ __metadata: languageName: node linkType: hard +"layout_editor@workspace:packages/layout_editor": + version: 0.0.0-use.local + resolution: "layout_editor@workspace:packages/layout_editor" + dependencies: + "@dnd-kit/core": ^6.1.0 + "@dnd-kit/sortable": ^8.0.0 + "@embeddedchat/ui-elements": "workspace:^" + "@types/node": ^20.11.19 + "@types/react": ^18.2.55 + "@types/react-dom": ^18.2.19 + "@typescript-eslint/eslint-plugin": ^6.21.0 + "@typescript-eslint/parser": ^6.21.0 + "@vitejs/plugin-react": ^4.2.1 + eslint: ^8.56.0 + eslint-plugin-react-hooks: ^4.6.0 + eslint-plugin-react-refresh: ^0.4.5 + react: ^18.2.0 + react-dom: ^18.2.0 + typescript: ^5.2.2 + vite: ^5.1.0 + languageName: unknown + linkType: soft + "lazy-universal-dotenv@npm:^3.0.1": version: 3.0.1 resolution: "lazy-universal-dotenv@npm:3.0.1" From 6aaaa9da155b87a073570c51f6f1a21e3b4c7d4c Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 14 Jul 2024 01:04:56 +0530 Subject: [PATCH 013/104] changed lint rules --- packages/layout_editor/.eslintrc.cjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/layout_editor/.eslintrc.cjs b/packages/layout_editor/.eslintrc.cjs index 7c50310c9..aced9b503 100644 --- a/packages/layout_editor/.eslintrc.cjs +++ b/packages/layout_editor/.eslintrc.cjs @@ -4,10 +4,12 @@ module.exports = { extends: [ "eslint:recommended", "plugin:react/jsx-runtime", + 'plugin:@typescript-eslint/recommended', "plugin:react-hooks/recommended", "plugin:react/recommended", ], ignorePatterns: ["dist", ".eslintrc.cjs"], + parser: '@typescript-eslint/parser', parserOptions: { ecmaVersion: "latest", sourceType: "module" }, settings: { react: { version: "18.2" } }, plugins: ["react-refresh"], From 7177e5b7f2698a9958edbfb6409fde4ef22f882c Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 14 Jul 2024 11:47:54 +0530 Subject: [PATCH 014/104] fixed theme vars --- packages/react/src/theme/CurveVariant/AquaBreeze.js | 13 ++----------- packages/react/src/theme/CurveVariant/AzureSky.js | 13 ++----------- packages/react/src/theme/CurveVariant/BlushCandy.js | 13 ++----------- .../react/src/theme/CurveVariant/PineWhisper.js | 13 ++----------- .../react/src/theme/ModernVariant/StormySeas.js | 9 ++------- 5 files changed, 10 insertions(+), 51 deletions(-) diff --git a/packages/react/src/theme/CurveVariant/AquaBreeze.js b/packages/react/src/theme/CurveVariant/AquaBreeze.js index 94774fe2b..d8af86faf 100644 --- a/packages/react/src/theme/CurveVariant/AquaBreeze.js +++ b/packages/react/src/theme/CurveVariant/AquaBreeze.js @@ -76,17 +76,8 @@ const AquaBreeze = { MessageToolbox: { configOverrides: { optionConfig: { - toolOptions: [ - 'reaction', - 'reply', - 'quote', - 'star', - 'pin', - 'edit', - 'delete', - 'report', - ], - threshold: 4, + surfaceItems: ['reaction', 'reply', 'quote', 'star'], + menuItems: ['pin', 'edit', 'delete', 'report'], }, }, }, diff --git a/packages/react/src/theme/CurveVariant/AzureSky.js b/packages/react/src/theme/CurveVariant/AzureSky.js index d8bfcd9d0..0374cdb34 100644 --- a/packages/react/src/theme/CurveVariant/AzureSky.js +++ b/packages/react/src/theme/CurveVariant/AzureSky.js @@ -75,17 +75,8 @@ const AzureSky = { MessageToolbox: { configOverrides: { optionConfig: { - toolOptions: [ - 'reaction', - 'reply', - 'quote', - 'star', - 'pin', - 'edit', - 'delete', - 'report', - ], - threshold: 4, + surfaceItems: ['reaction', 'reply', 'quote', 'star'], + menuItems: ['pin', 'edit', 'delete', 'report'], }, }, }, diff --git a/packages/react/src/theme/CurveVariant/BlushCandy.js b/packages/react/src/theme/CurveVariant/BlushCandy.js index 54dcd94bc..63320ca75 100644 --- a/packages/react/src/theme/CurveVariant/BlushCandy.js +++ b/packages/react/src/theme/CurveVariant/BlushCandy.js @@ -75,17 +75,8 @@ const BlushCandy = { MessageToolbox: { configOverrides: { optionConfig: { - toolOptions: [ - 'reaction', - 'reply', - 'quote', - 'star', - 'pin', - 'edit', - 'delete', - 'report', - ], - threshold: 4, + surfaceItems: ['reaction', 'reply', 'quote', 'star'], + menuItems: ['pin', 'edit', 'delete', 'report'], }, }, }, diff --git a/packages/react/src/theme/CurveVariant/PineWhisper.js b/packages/react/src/theme/CurveVariant/PineWhisper.js index d561b7a86..4fef4b054 100644 --- a/packages/react/src/theme/CurveVariant/PineWhisper.js +++ b/packages/react/src/theme/CurveVariant/PineWhisper.js @@ -76,17 +76,8 @@ const PineWhisper = { MessageToolbox: { configOverrides: { optionConfig: { - toolOptions: [ - 'reaction', - 'reply', - 'quote', - 'star', - 'pin', - 'edit', - 'delete', - 'report', - ], - threshold: 4, + surfaceItems: ['reaction', 'reply', 'quote', 'star'], + menuItems: ['pin', 'edit', 'delete', 'report'], }, }, }, diff --git a/packages/react/src/theme/ModernVariant/StormySeas.js b/packages/react/src/theme/ModernVariant/StormySeas.js index 7951770e0..ec255446c 100644 --- a/packages/react/src/theme/ModernVariant/StormySeas.js +++ b/packages/react/src/theme/ModernVariant/StormySeas.js @@ -104,7 +104,7 @@ const StormySeas = { ChatHeader: { configOverrides: { optionConfig: { - toolOptions: [ + surfaceItems: [ 'minmax', 'close', 'thread', @@ -112,13 +112,8 @@ const StormySeas = { 'starred', 'pinned', 'files', - 'members', - 'search', - 'rInfo', - 'logout', ], - - threshold: 7, + menuItems: ['members', 'search', 'rInfo', 'logout'], }, }, }, From 2fe1e32d6b555cb9d05543bea66a1b72f7c8986b Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 14 Jul 2024 11:57:25 +0530 Subject: [PATCH 015/104] updated docs fixed actionbtn color changed namings --- .../ChatInput/ChatInputFormattingToolbar.jsx | 8 +- packages/react/docs/theming.md | 21 ++--- packages/react/docs/theming_technical.md | 93 +++++++++++++------ .../src/views/SurfaceMenu/SurfaceItem.js | 2 +- 4 files changed, 81 insertions(+), 43 deletions(-) diff --git a/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx b/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx index 26dc55083..855bf1acb 100644 --- a/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx +++ b/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx @@ -4,10 +4,12 @@ import { formatter } from "../../lib/textFormat"; import { useChatInputFormattingToolbarStyles } from "./ChatInput.styles"; const ChatInputFormattingToolbar = ({ - toolConfig = ["emoji", "formatter", "audio", "video", "file"], + optionConfig = { + surfaceItems: ["emoji", "formatter", "audio", "video", "file"], + }, }) => { const styles = useChatInputFormattingToolbarStyles(); - const toolOptions = toolConfig; + const surfaceItems = optionConfig.surfaceItems; const chatToolMap = { emoji: ( @@ -51,7 +53,7 @@ const ChatInputFormattingToolbar = ({ return ( - {toolOptions.map((key) => chatToolMap[key])} + {surfaceItems.map((key) => chatToolMap[key])} ); }; diff --git a/packages/react/docs/theming.md b/packages/react/docs/theming.md index 4feae1fe1..2c2119d59 100644 --- a/packages/react/docs/theming.md +++ b/packages/react/docs/theming.md @@ -192,15 +192,13 @@ In this example: - `theme.components.ChatInput.styleOverrides` will apply the specified styles to the ChatInput component. - `theme.components.ChatInput.classNames` will apply the specified class name to the ChatInput component. -Now, let's understand `configOverrides` using ChatHeader as an example. - -The `configOverrides` object contains `optionConfig`, which includes two keys: `toolOptions` and `threshold`. `toolOptions` specify which options should be displayed in the component, and `threshold` defines how many options should be displayed directly. Options beyond the threshold will be wrapped inside a menu component. +The `configOverrides` object contains `optionConfig`, which includes two keys: `surfaceItems` and `menuItems`. `surfaceItems` specifies which options should be displayed directly on the surface container. Options listed in `menuItems` will be wrapped inside a menu component. ```jsx ChatHeader: { configOverrides: { optionConfig: { - toolOptions: [ + surfaceItems: [ 'minmax', 'close', 'thread', @@ -208,27 +206,28 @@ ChatHeader: { 'starred', 'pinned', 'files', + ], + menuItems: [ 'members', 'search', 'rInfo', 'logout', ], - threshold: 7, }, }, } ``` -In this example, for ChatHeader, options from `minmax` to `files` will be displayed directly, while options from `members` to `logout` will be wrapped inside a menu, as shown: +In this example, for `ChatHeader`, options from `minmax` to `files` will be displayed directly on the surface, while options from `members` to `logout` will be wrapped inside a menu, as shown: ![image](https://github.com/RocketChat/EmbeddedChat/assets/78961432/84b9558b-5496-4904-8788-070b519aa1f2) If an option is omitted, it will simply not be rendered. This flexibility is useful for customizing the application to your needs. -Similarly, for MessageToolbox, the supported `toolOptions` are: +Similarly, for `MessageToolbox`, the supported options are: ```jsx -toolOptions: [ +[ 'reaction', 'reply', 'quote', @@ -240,13 +239,13 @@ toolOptions: [ ], ``` -For the ChatInputFormattingToolbar component, the supported `toolOptions` are: +For the `ChatInputFormattingToolbar` component, the supported options are: ```jsx -toolOptions: ['emoji', 'formatter', 'audio', 'video', 'file'], +['emoji', 'formatter', 'audio', 'video', 'file'], ``` -Note: In ChatInputFormattingToolbar, the `threshold` is not supported as all options will be displayed directly, and none will be inside a menu. +Note: In `ChatInputFormattingToolbar`, `menuItems` is not supported as all options will be displayed directly on the surface, and none will be inside a menu. ## Understanding the `variants` key diff --git a/packages/react/docs/theming_technical.md b/packages/react/docs/theming_technical.md index 909c28981..523eb8bb5 100644 --- a/packages/react/docs/theming_technical.md +++ b/packages/react/docs/theming_technical.md @@ -12,25 +12,38 @@ This guide dives into the technical aspects of how themes, styles, and configura We use [Emotion](https://emotion.sh/) for styling. Each component has a `component.style.js` file for CSS definitions. -We use Emotion's theming with the `useTheme` hook and a custom `useCustomTheme` hook for specific adjustments: +We use theming with our `useTheme` hook, exported from `@embeddedchat/ui-elements`, according to our specific requirements. The implementation looks something like this: ```jsx -import { useTheme } from '@emotion/react'; -import { useRCContext } from '../context/RCInstance'; +import { useContext } from 'react'; +import { ThemeContext } from '../context/ThemeContextProvider'; +import DefaultTheme from '../theme/DefaultTheme'; const invertMode = (mode) => (mode === 'light' ? 'dark' : 'light'); -export const useCustomTheme = () => { - const { ECOptions } = useRCContext() || {}; - const theme = useTheme(); - - const mode = ECOptions?.mode || 'light'; - - const colors = theme.schemes?.[mode]; - const invertedColors = theme.schemes?.[invertMode(mode)]; +const useTheme = () => { + const context = useContext(ThemeContext); + + if (!context) { + const defaultMode = 'light'; + const defaultTheme = DefaultTheme; + const colors = defaultTheme.schemes?.[defaultMode]; + const invertedColors = defaultTheme.schemes?.[invertMode(defaultMode)]; + + return { + theme: defaultTheme, + mode: defaultMode, + colors, + invertedColors, + setMode: () => {}, + setTheme: () => {}, + }; + } - return { theme, mode, colors, invertedColors }; + return context; }; + +export default useTheme; ``` This hook grants access to the theme, mode, colors, and invertedColors, streamlining their usage across different parts of the application. It ensures that colors are dynamically provided according to the current theme mode (light or dark), eliminating the need for repetitive code. @@ -38,21 +51,20 @@ This hook grants access to the theme, mode, colors, and invertedColors, streamli For example, in the CSS: ```jsx -const { colors } = useCustomTheme(); +const { colors } = useTheme(); const main = css` margin: 0.2rem 2rem; display: block; max-height: 10rem; overflow: scroll; overflow-x: hidden; - max-height: 145px; border: 1px solid ${colors.border}; border-radius: 0.2rem; color: ${colors.secondaryForeground}; `; ``` -Here, `colors` from `useCustomTheme` sets `colors.border` and `colors.secondaryForeground`. +Here, `colors` from `useTheme` sets `colors.border` and `colors.secondaryForeground`. ## Technical Overview of `useComponentOverrides` @@ -99,21 +111,46 @@ const { styleOverrides, classNames, configOverrides } = useComponentOverrides( style ); -// Extract toolOptions and threshold from configOverrides -const toolOptions = - configOverrides.optionConfig?.toolOptions || optionConfig.toolOptions; -const threshold = - configOverrides.optionConfig?.threshold || optionConfig.threshold; - -// Process toolOptions based on the defined threshold -{ - toolOptions.slice(0, threshold).map((key) => toolMap[key]); -} - +// Extract surfaceItems and menuItems from configOverrides +const surfaceItems = configOverrides.optionConfig?.surfaceItems || optionConfig.surfaceItems; +const menuItems = configOverrides.optionConfig?.menuItems || optionConfig.menuItems; + +// Process surfaceItems and menuItems based on the configuration +const menuOptions = menuItems + ?.map((item) => options[item]?.visible ? { + id: options[item].id, + action: options[item].onClick, + label: options[item].label, + icon: options[item].iconName, + } : null) + .filter((option) => option !== null); + +const surfaceOptions = surfaceItems + ?.map((item) => options[item]?.visible ? { + id: options[item].id, + onClick: options[item].onClick, + label: options[item].label, + iconName: options[item].iconName, + type: options[item].type, + } : null) + .filter((option) => option !== null); + +// Render the options +{surfaceOptions?.length > 0 && ( + +)} +{menuOptions?.length > 0 && ( + +)} ``` -In this snippet, toolOptions and threshold are retrieved from configOverrides.optionConfig, or fallback to default values (optionConfig.toolOptions and optionConfig.threshold respectively) when not provided in configOverrides. - +In this snippet, `surfaceItems` and `menuItems` are retrieved from `configOverrides.optionConfig` or fall back to default values (`optionConfig.surfaceItems` and `optionConfig.menuItems`) when not provided in `configOverrides`. These items are then processed and rendered accordingly. ### Example: Variant Overrides ```jsx diff --git a/packages/react/src/views/SurfaceMenu/SurfaceItem.js b/packages/react/src/views/SurfaceMenu/SurfaceItem.js index abcef2fed..9674ead1c 100644 --- a/packages/react/src/views/SurfaceMenu/SurfaceItem.js +++ b/packages/react/src/views/SurfaceMenu/SurfaceItem.js @@ -10,7 +10,7 @@ const SurfaceItem = ({ item, size }) => ( icon={item.iconName} size={size} iconSize="small" - type={item.type} + color={item.type} /> ); From 73b52cc20a4188ec849264958410a8d9f2280b50 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 14 Jul 2024 12:55:00 +0530 Subject: [PATCH 016/104] added formatters config --- .../ChatInput/ChatInputFormattingToolbar.js | 95 ++++++++++--------- 1 file changed, 51 insertions(+), 44 deletions(-) diff --git a/packages/react/src/views/ChatInput/ChatInputFormattingToolbar.js b/packages/react/src/views/ChatInput/ChatInputFormattingToolbar.js index e293567b4..e6dbe3f2e 100644 --- a/packages/react/src/views/ChatInput/ChatInputFormattingToolbar.js +++ b/packages/react/src/views/ChatInput/ChatInputFormattingToolbar.js @@ -20,6 +20,7 @@ const ChatInputFormattingToolbar = ({ inputRef, optionConfig = { surfaceItems: ['emoji', 'formatter', 'audio', 'video', 'file'], + formatters: ['bold', 'italic', 'strike', 'code', 'multiline'], }, }) => { const { classNames, styleOverrides, configOverrides } = useComponentOverrides( @@ -29,6 +30,8 @@ const ChatInputFormattingToolbar = ({ const styles = useChatInputFormattingToolbarStyles(); const surfaceItems = configOverrides.optionConfig?.surfaceItems || optionConfig.surfaceItems; + const formatters = + configOverrides.optionConfig?.formatters || optionConfig.formatters; const isRecordingMessage = useMessageStore( (state) => state.isRecordingMessage @@ -47,36 +50,18 @@ const ChatInputFormattingToolbar = ({ const chatToolMap = { emoji: ( - - - { - setEmojiOpen(true); - }} - > - - - - - {isEmojiOpen && ( - { - setEmojiOpen(false); - handleEmojiClick(emoji); - }} - positionStyles={css` - position: absolute; - bottom: 7rem; - left: 1.85rem; - `} - onClose={() => setEmojiOpen(false)} - /> - )} - + + { + setEmojiOpen(true); + }} + > + + + ), audio: ( @@ -100,20 +85,26 @@ const ChatInputFormattingToolbar = ({ ), - formatter: formatter.map((item) => ( - - { - formatSelection(messageRef, item.pattern); - }} - > - - - - )), + formatter: formatters + .map((name) => formatter.find((item) => item.name === name)) + .map((item) => ( + + { + formatSelection(messageRef, item.pattern); + }} + > + + + + )), }; return ( @@ -123,6 +114,22 @@ const ChatInputFormattingToolbar = ({ style={styleOverrides} > {surfaceItems.map((key) => chatToolMap[key])} + + {isEmojiOpen && ( + { + setEmojiOpen(false); + handleEmojiClick(emoji); + }} + onClose={() => setEmojiOpen(false)} + positionStyles={css` + position: absolute; + bottom: 7rem; + left: 1.85rem; + `} + /> + )} ); }; From 348a05ec4fcd5e1ecdc905b2151b5f24186f840c Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 14 Jul 2024 12:55:57 +0530 Subject: [PATCH 017/104] changed render way of chatformat in layout editor --- .../components/SurfaceMenu/SurfaceItem.jsx | 27 ++--- .../components/SurfaceMenu/SurfaceMenu.jsx | 4 +- .../ChatInput/ChatInputFormattingToolbar.jsx | 113 +++++++++++------- 3 files changed, 83 insertions(+), 61 deletions(-) diff --git a/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx b/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx index f293f060f..28890b26f 100644 --- a/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx +++ b/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx @@ -10,21 +10,16 @@ import { useSortable } from "@dnd-kit/sortable"; import { CSS } from "@dnd-kit/utilities"; import { getSurfaceItemStyles } from "./SurfaceMenu.styles"; -const SurfaceItem = ({ id, label, iconName, onClick }) => { - const { - attributes, - listeners, - setNodeRef, - transform, - isDragging, - } = useSortable({ - id, - data: { - type: "SurfaceOptions", - icon: iconName, - label, - }, - }); +const SurfaceItem = ({ id, label, iconName, onClick, position = "bottom" }) => { + const { attributes, listeners, setNodeRef, transform, isDragging } = + useSortable({ + id, + data: { + type: "SurfaceOptions", + icon: iconName, + label, + }, + }); const theme = useTheme(); const styles = getSurfaceItemStyles(theme); @@ -38,7 +33,7 @@ const SurfaceItem = ({ id, label, iconName, onClick }) => { return ( - + diff --git a/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.jsx b/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.jsx index d15f3337a..84ce15692 100644 --- a/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.jsx +++ b/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.jsx @@ -2,11 +2,11 @@ import React from "react"; import SurfaceItem from "./SurfaceItem"; import { SortableContext } from "@dnd-kit/sortable"; -const SurfaceMenu = ({ options }) => { +const SurfaceMenu = ({ options, tooltipPosition }) => { return ( {options?.map((item, idx) => ( - + ))} ); diff --git a/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx b/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx index 855bf1acb..ed4faa82c 100644 --- a/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx +++ b/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx @@ -1,7 +1,8 @@ -import React from "react"; -import { Box, Icon, ActionButton, Tooltip } from "@embeddedchat/ui-elements"; +import React, { useMemo } from "react"; +import { Box } from "@embeddedchat/ui-elements"; import { formatter } from "../../lib/textFormat"; import { useChatInputFormattingToolbarStyles } from "./ChatInput.styles"; +import SurfaceMenu from "../../components/SurfaceMenu/SurfaceMenu"; const ChatInputFormattingToolbar = ({ optionConfig = { @@ -9,51 +10,77 @@ const ChatInputFormattingToolbar = ({ }, }) => { const styles = useChatInputFormattingToolbarStyles(); - const surfaceItems = optionConfig.surfaceItems; + const { surfaceItems } = optionConfig; + const placeholderSurfaceItem = "placeholder-surface"; - const chatToolMap = { - emoji: ( - - - - - - - - ), - audio: ( - - - - - - ), - video: ( - - - - - - ), - file: ( - - - - - - ), - formatter: formatter.map((item) => ( - - - - - - )), - }; + const options = useMemo(() => { + const formatterOptions = formatter.map((item) => ({ + label: item.name, + id: `formatter-${item.name}`, + onClick: item.onClick || (() => {}), + iconName: item.name, + visible: true, + })); + return { + emoji: { + label: "Emoji", + id: "emoji", + onClick: () => {}, + iconName: "emoji", + visible: true, + }, + audio: { + label: "Audio Message", + id: "audio", + onClick: () => {}, + iconName: "mic", + visible: true, + }, + video: { + label: "Video Message", + id: "video", + onClick: () => {}, + iconName: "video-recorder", + visible: true, + }, + file: { + label: "Upload File", + id: "file", + onClick: () => {}, + iconName: "attachment", + visible: true, + }, + formatter: formatterOptions, + }; + }, []); + + const surfaceOptions = useMemo(() => { + return surfaceItems.length > 0 + ? surfaceItems + .map((item) => { + if (item === "formatter") { + return options.formatter; + } + if (options[item] && options[item].visible) { + return { + id: options[item].id, + onClick: options[item].onClick, + label: options[item].label, + iconName: options[item].iconName, + }; + } + return null; + }) + .flat() + .filter((option) => option !== null) + : [{ id: placeholderSurfaceItem, label: "No items", iconName: "plus" }]; + }, [surfaceItems, options]); return ( - {surfaceItems.map((key) => chatToolMap[key])} + {surfaceOptions.length > 0 && ( + + )} ); }; From 910500d0305a461729f5f49ebade1805044b8fde Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 14 Jul 2024 13:30:50 +0530 Subject: [PATCH 018/104] added formatter config --- .../ChatInput/ChatInputFormattingToolbar.jsx | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx b/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx index ed4faa82c..f29dcea3f 100644 --- a/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx +++ b/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx @@ -7,21 +7,14 @@ import SurfaceMenu from "../../components/SurfaceMenu/SurfaceMenu"; const ChatInputFormattingToolbar = ({ optionConfig = { surfaceItems: ["emoji", "formatter", "audio", "video", "file"], + formatters: ["bold", "italic", "strike", "code", "multiline"], }, }) => { const styles = useChatInputFormattingToolbarStyles(); - const { surfaceItems } = optionConfig; + const { surfaceItems, formatters } = optionConfig; const placeholderSurfaceItem = "placeholder-surface"; const options = useMemo(() => { - const formatterOptions = formatter.map((item) => ({ - label: item.name, - id: `formatter-${item.name}`, - onClick: item.onClick || (() => {}), - iconName: item.name, - visible: true, - })); - return { emoji: { label: "Emoji", @@ -51,9 +44,17 @@ const ChatInputFormattingToolbar = ({ iconName: "attachment", visible: true, }, - formatter: formatterOptions, + formatter: formatter + .filter((item) => formatters.includes(item.name)) + .map((item) => ({ + label: item.name, + id: `formatter-${item.name}`, + onClick: item.onClick || (() => {}), + iconName: item.name, + visible: true, + })), }; - }, []); + }, [formatters]); const surfaceOptions = useMemo(() => { return surfaceItems.length > 0 @@ -72,10 +73,10 @@ const ChatInputFormattingToolbar = ({ } return null; }) - .flat() .filter((option) => option !== null) : [{ id: placeholderSurfaceItem, label: "No items", iconName: "plus" }]; }, [surfaceItems, options]); + return ( {surfaceOptions.length > 0 && ( From 82b4d5fb33a28cd73c27370f834e4fa8e3edbca9 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 14 Jul 2024 13:31:11 +0530 Subject: [PATCH 019/104] changed icon generator location --- packages/react/package.json | 1 - packages/ui-elements/package.json | 1 + packages/{react => ui-elements}/tools/icons-generator.js | 1 + yarn.lock | 2 +- 4 files changed, 3 insertions(+), 2 deletions(-) rename packages/{react => ui-elements}/tools/icons-generator.js (99%) diff --git a/packages/react/package.json b/packages/react/package.json index 26dd7d84b..476cbf026 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -90,7 +90,6 @@ "@emotion/react": "11.7.1", "@rocket.chat/emitter": "^0.31.25", "@rocket.chat/fuselage-hooks": "^0.33.1", - "@rocket.chat/icons": "^0.31.23", "@rocket.chat/ui-kit": "^0.31.25", "@rollup/plugin-json": "^6.0.0", "date-fns": "^2.30.0", diff --git a/packages/ui-elements/package.json b/packages/ui-elements/package.json index 5e418bf2b..ed205907f 100644 --- a/packages/ui-elements/package.json +++ b/packages/ui-elements/package.json @@ -33,6 +33,7 @@ "@babel/preset-react": "^7.16.7", "@emotion/babel-plugin": "^11.11.0", "@open-wc/building-rollup": "^3.0.2", + "@rocket.chat/icons": "^0.31.23", "@rollup/plugin-babel": "^5.3.1", "@rollup/plugin-commonjs": "^21.0.2", "@rollup/plugin-node-resolve": "^13.1.3", diff --git a/packages/react/tools/icons-generator.js b/packages/ui-elements/tools/icons-generator.js similarity index 99% rename from packages/react/tools/icons-generator.js rename to packages/ui-elements/tools/icons-generator.js index 228b4ca27..4f5173298 100644 --- a/packages/react/tools/icons-generator.js +++ b/packages/ui-elements/tools/icons-generator.js @@ -48,6 +48,7 @@ const iconsList = [ 'arrow-collapse', 'arrow-expand', ]; + const svgDirPath = path.join( __dirname, '../../../node_modules/@rocket.chat/icons/dist/svg' diff --git a/yarn.lock b/yarn.lock index 6c48db18d..8c81f2c8b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2448,7 +2448,6 @@ __metadata: "@open-wc/building-rollup": ^3.0.2 "@rocket.chat/emitter": ^0.31.25 "@rocket.chat/fuselage-hooks": ^0.33.1 - "@rocket.chat/icons": ^0.31.23 "@rocket.chat/ui-kit": ^0.31.25 "@rollup/plugin-babel": ^5.3.1 "@rollup/plugin-commonjs": ^21.0.2 @@ -2520,6 +2519,7 @@ __metadata: "@emotion/babel-preset-css-prop": ^11.11.0 "@emotion/react": 11.7.1 "@open-wc/building-rollup": ^3.0.2 + "@rocket.chat/icons": ^0.31.23 "@rollup/plugin-babel": ^5.3.1 "@rollup/plugin-commonjs": ^21.0.2 "@rollup/plugin-json": ^6.0.0 From 53784f7640602b86504418cb26d9138261c0af22 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 14 Jul 2024 14:03:46 +0530 Subject: [PATCH 020/104] icon generator to not edit index file --- packages/ui-elements/tools/icons-generator.js | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/packages/ui-elements/tools/icons-generator.js b/packages/ui-elements/tools/icons-generator.js index 4f5173298..238cbae34 100644 --- a/packages/ui-elements/tools/icons-generator.js +++ b/packages/ui-elements/tools/icons-generator.js @@ -6,7 +6,6 @@ const iconsList = [ 'file', 'mobile', 'star', - 'pin', 'reply-directly', 'hash', 'computer', @@ -42,7 +41,6 @@ const iconsList = [ 'chevron-down', 'chevron-left', 'key', - 'attachment', 'quote', 'at', 'arrow-collapse', @@ -80,24 +78,6 @@ const getComponentCode = (name, svgData) => ` export default ${camelCase(name)}; `; -const getIndexFileCode = () => { - const importCodes = iconsList - .map((icon) => `import ${camelCase(icon)} from './${camelCase(icon)}';`) - .join('\n'); - const exportCodes = iconsList - .map((icon) => `"${icon}": ${camelCase(icon)}`) - .join(',\n'); - return ` - ${importCodes} - - const icons = { - ${exportCodes} - }; - - export default icons; - `; -}; - if (!fs.existsSync(svgIconOutputDir)) { fs.mkdirSync(svgIconOutputDir, { recursive: true }); } @@ -112,5 +92,4 @@ iconsList.forEach((icon) => { fs.writeFileSync(svgIconOutputPath, componentCode); }); -fs.writeFileSync(path.join(svgIconOutputDir, 'index.js'), getIndexFileCode()); execSync(`npx prettier --write '${svgIconOutputDir}' `); From 833e3e1cc87c30aa6c6a03ebc20a412fdf8d4dbd Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 14 Jul 2024 14:17:30 +0530 Subject: [PATCH 021/104] added text formatter icon --- .../src/components/Icon/icons/FormatText.js | 17 +++++++++++++++++ .../src/components/Icon/icons/index.js | 2 ++ 2 files changed, 19 insertions(+) create mode 100644 packages/ui-elements/src/components/Icon/icons/FormatText.js diff --git a/packages/ui-elements/src/components/Icon/icons/FormatText.js b/packages/ui-elements/src/components/Icon/icons/FormatText.js new file mode 100644 index 000000000..8ff48e2cf --- /dev/null +++ b/packages/ui-elements/src/components/Icon/icons/FormatText.js @@ -0,0 +1,17 @@ +import React from 'react'; + +function FormatText(props) { + return ( + + + + ); +} + +export default FormatText; diff --git a/packages/ui-elements/src/components/Icon/icons/index.js b/packages/ui-elements/src/components/Icon/icons/index.js index a58cba2f8..8f0a26de2 100644 --- a/packages/ui-elements/src/components/Icon/icons/index.js +++ b/packages/ui-elements/src/components/Icon/icons/index.js @@ -59,6 +59,7 @@ import Expand from './ArrowExpand'; import Collapse from './ArrowCollapse'; import Arc from './Arc'; import Avatar from './Avatar'; +import FormatText from './FormatText'; const icons = { file: File, @@ -122,6 +123,7 @@ const icons = { collapse: Collapse, arc: Arc, avatar: Avatar, + 'format-text': FormatText, }; export default icons; From f0794f10ae24a9990f1e8a38fab45d8c83480210 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 14 Jul 2024 14:17:53 +0530 Subject: [PATCH 022/104] render text format icon --- packages/layout_editor/src/lib/textFormat.js | 7 ------- .../ChatInput/ChatInputFormattingToolbar.jsx | 19 ++++++++----------- 2 files changed, 8 insertions(+), 18 deletions(-) delete mode 100644 packages/layout_editor/src/lib/textFormat.js diff --git a/packages/layout_editor/src/lib/textFormat.js b/packages/layout_editor/src/lib/textFormat.js deleted file mode 100644 index 10ceb7f33..000000000 --- a/packages/layout_editor/src/lib/textFormat.js +++ /dev/null @@ -1,7 +0,0 @@ -export const formatter = [ - { name: 'bold', pattern: '*{{text}}*' }, - { name: 'italic', pattern: '_{{text}}_' }, - { name: 'strike', pattern: '~{{text}}~' }, - { name: 'code', pattern: '`{{text}}`' }, - { name: 'multiline', pattern: '```\n{{text}}\n``` ' }, -]; diff --git a/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx b/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx index f29dcea3f..191569e52 100644 --- a/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx +++ b/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx @@ -1,6 +1,5 @@ import React, { useMemo } from "react"; import { Box } from "@embeddedchat/ui-elements"; -import { formatter } from "../../lib/textFormat"; import { useChatInputFormattingToolbarStyles } from "./ChatInput.styles"; import SurfaceMenu from "../../components/SurfaceMenu/SurfaceMenu"; @@ -44,17 +43,15 @@ const ChatInputFormattingToolbar = ({ iconName: "attachment", visible: true, }, - formatter: formatter - .filter((item) => formatters.includes(item.name)) - .map((item) => ({ - label: item.name, - id: `formatter-${item.name}`, - onClick: item.onClick || (() => {}), - iconName: item.name, - visible: true, - })), + formatter: { + label: "Formatter", + id: "formatter", + onClick: () => {}, + iconName: "format-text", + visible: true, + }, }; - }, [formatters]); + }, []); const surfaceOptions = useMemo(() => { return surfaceItems.length > 0 From 9db94568fc8eeb1e61b71e0915ed8272c6c1caf6 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 14 Jul 2024 14:21:24 +0530 Subject: [PATCH 023/104] changed linting rules --- packages/layout_editor/.eslintrc.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/layout_editor/.eslintrc.cjs b/packages/layout_editor/.eslintrc.cjs index aced9b503..8153c0c9e 100644 --- a/packages/layout_editor/.eslintrc.cjs +++ b/packages/layout_editor/.eslintrc.cjs @@ -21,5 +21,6 @@ module.exports = { ], "react/prop-types": "off", "react/no-unknown-property": ["error", { ignore: ["css"] }], + "@typescript-eslint/no-unused-vars": ["warn"], }, }; From fa848e0e7142582e54fde640092820693ba51558 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 14 Jul 2024 14:37:25 +0530 Subject: [PATCH 024/104] add drag drop in chatInputFormattingToolbar --- .../ChatInput/ChatInputFormattingToolbar.jsx | 76 +++++++++++++++++-- 1 file changed, 69 insertions(+), 7 deletions(-) diff --git a/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx b/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx index 191569e52..0b2ef4bb6 100644 --- a/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx +++ b/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx @@ -1,7 +1,19 @@ -import React, { useMemo } from "react"; +import React, { useMemo, useState } from "react"; import { Box } from "@embeddedchat/ui-elements"; import { useChatInputFormattingToolbarStyles } from "./ChatInput.styles"; import SurfaceMenu from "../../components/SurfaceMenu/SurfaceMenu"; +import SurfaceItem from "../../components/SurfaceMenu/SurfaceItem"; +import { + DndContext, + closestCenter, + KeyboardSensor, + PointerSensor, + useSensor, + useSensors, + DragOverlay, +} from "@dnd-kit/core"; +import { sortableKeyboardCoordinates, arrayMove } from "@dnd-kit/sortable"; +import { createPortal } from "react-dom"; const ChatInputFormattingToolbar = ({ optionConfig = { @@ -10,7 +22,8 @@ const ChatInputFormattingToolbar = ({ }, }) => { const styles = useChatInputFormattingToolbarStyles(); - const { surfaceItems, formatters } = optionConfig; + const [surfaceItems, setSurfaceItems] = useState(optionConfig.surfaceItems); + const [activeSurfaceItem, setActiveSurfaceItem] = useState(null); const placeholderSurfaceItem = "placeholder-surface"; const options = useMemo(() => { @@ -43,7 +56,7 @@ const ChatInputFormattingToolbar = ({ iconName: "attachment", visible: true, }, - formatter: { + formatter: { label: "Formatter", id: "formatter", onClick: () => {}, @@ -53,6 +66,41 @@ const ChatInputFormattingToolbar = ({ }; }, []); + const sensors = useSensors( + useSensor(PointerSensor), + useSensor(KeyboardSensor, { + coordinateGetter: sortableKeyboardCoordinates, + }) + ); + + const handleDragStart = (event) => { + if (event.active.data.current?.type === "SurfaceOptions") { + setActiveSurfaceItem({ + id: event.active.id, + iconName: event.active.data.current.icon, + label: event.active.data.current.label, + }); + } + }; + + const handleDragEnd = (event) => { + setActiveSurfaceItem(null); + const { active, over } = event; + + if (active.id !== over.id) { + if ( + event.active.data.current?.type === "SurfaceOptions" && + event.over.data.current?.type === "SurfaceOptions" + ) { + setSurfaceItems((items) => { + const oldIndex = items.indexOf(active.id); + const newIndex = items.indexOf(over.id); + return arrayMove(items, oldIndex, newIndex); + }); + } + } + }; + const surfaceOptions = useMemo(() => { return surfaceItems.length > 0 ? surfaceItems @@ -75,11 +123,25 @@ const ChatInputFormattingToolbar = ({ }, [surfaceItems, options]); return ( - - {surfaceOptions.length > 0 && ( - + + + {surfaceOptions.length > 0 && ( + + )} + + + {createPortal( + + {activeSurfaceItem && } + , + document.body )} - + ); }; From 7f5a33c11734072fcda47100165449e6cc0b41e0 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 14 Jul 2024 16:05:51 +0530 Subject: [PATCH 025/104] added dummy messages --- packages/layout_editor/.eslintrc.cjs | 6 +- .../components/SurfaceMenu/SurfaceItem.jsx | 25 +- .../components/SurfaceMenu/SurfaceMenu.jsx | 9 +- packages/layout_editor/src/data/messages.json | 132 ++++++++ .../src/hooks/useDisplayNameColor.js | 27 ++ .../src/lib/isMessageLastSequential.js | 19 ++ .../src/lib/isMessageSequential.js | 34 ++ .../layout_editor/src/theme/DefaultTheme.js | 134 ++++---- .../src/views/Markdown/Markdown.jsx | 29 ++ .../layout_editor/src/views/Markdown/index.js | 1 + .../Message/BubbleVariant/Bubble.styles.js | 200 ++++++++++++ .../Message/BubbleVariant/BubbleThreadBtn.js | 31 ++ .../Message/BubbleVariant/useBubbleStyles.js | 20 ++ .../src/views/Message/Message.jsx | 88 +++++ .../src/views/Message/Message.styles.js | 300 ++++++++++++++++++ .../views/Message/MessageAvatarContainer.jsx | 21 ++ .../src/views/Message/MessageBody.jsx | 30 ++ .../views/Message/MessageBodyContainer.jsx | 19 ++ .../src/views/Message/MessageDivider.jsx | 34 ++ .../src/views/Message/MessageHeader.jsx | 62 ++++ .../src/views/Message/MessageToolbox.jsx | 142 +++++++++ .../layout_editor/src/views/Message/index.js | 1 + .../src/views/MessageList/MessageList.jsx | 60 +++- 23 files changed, 1340 insertions(+), 84 deletions(-) create mode 100644 packages/layout_editor/src/data/messages.json create mode 100644 packages/layout_editor/src/hooks/useDisplayNameColor.js create mode 100644 packages/layout_editor/src/lib/isMessageLastSequential.js create mode 100644 packages/layout_editor/src/lib/isMessageSequential.js create mode 100644 packages/layout_editor/src/views/Markdown/Markdown.jsx create mode 100644 packages/layout_editor/src/views/Markdown/index.js create mode 100644 packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js create mode 100644 packages/layout_editor/src/views/Message/BubbleVariant/BubbleThreadBtn.js create mode 100644 packages/layout_editor/src/views/Message/BubbleVariant/useBubbleStyles.js create mode 100644 packages/layout_editor/src/views/Message/Message.jsx create mode 100644 packages/layout_editor/src/views/Message/Message.styles.js create mode 100644 packages/layout_editor/src/views/Message/MessageAvatarContainer.jsx create mode 100644 packages/layout_editor/src/views/Message/MessageBody.jsx create mode 100644 packages/layout_editor/src/views/Message/MessageBodyContainer.jsx create mode 100644 packages/layout_editor/src/views/Message/MessageDivider.jsx create mode 100644 packages/layout_editor/src/views/Message/MessageHeader.jsx create mode 100644 packages/layout_editor/src/views/Message/MessageToolbox.jsx create mode 100644 packages/layout_editor/src/views/Message/index.js diff --git a/packages/layout_editor/.eslintrc.cjs b/packages/layout_editor/.eslintrc.cjs index 8153c0c9e..92640d851 100644 --- a/packages/layout_editor/.eslintrc.cjs +++ b/packages/layout_editor/.eslintrc.cjs @@ -4,15 +4,15 @@ module.exports = { extends: [ "eslint:recommended", "plugin:react/jsx-runtime", - 'plugin:@typescript-eslint/recommended', + "plugin:@typescript-eslint/recommended", "plugin:react-hooks/recommended", "plugin:react/recommended", ], ignorePatterns: ["dist", ".eslintrc.cjs"], - parser: '@typescript-eslint/parser', + parser: "@typescript-eslint/parser", parserOptions: { ecmaVersion: "latest", sourceType: "module" }, settings: { react: { version: "18.2" } }, - plugins: ["react-refresh"], + plugins: ["react-refresh", "import"], rules: { "react/jsx-no-target-blank": "off", "react-refresh/only-export-components": [ diff --git a/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx b/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx index 28890b26f..573bde6ab 100644 --- a/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx +++ b/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx @@ -2,7 +2,6 @@ import React from "react"; import { Tooltip, ActionButton, - Icon, Box, useTheme, } from "@embeddedchat/ui-elements"; @@ -10,7 +9,15 @@ import { useSortable } from "@dnd-kit/sortable"; import { CSS } from "@dnd-kit/utilities"; import { getSurfaceItemStyles } from "./SurfaceMenu.styles"; -const SurfaceItem = ({ id, label, iconName, onClick, position = "bottom" }) => { +const SurfaceItem = ({ + id, + label, + iconName, + onClick, + type, + position = "bottom", + size, +}) => { const { attributes, listeners, setNodeRef, transform, isDragging } = useSortable({ id, @@ -33,10 +40,16 @@ const SurfaceItem = ({ id, label, iconName, onClick, position = "bottom" }) => { return ( - - - - + + ); diff --git a/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.jsx b/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.jsx index 84ce15692..f42799553 100644 --- a/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.jsx +++ b/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.jsx @@ -2,11 +2,16 @@ import React from "react"; import SurfaceItem from "./SurfaceItem"; import { SortableContext } from "@dnd-kit/sortable"; -const SurfaceMenu = ({ options, tooltipPosition }) => { +const SurfaceMenu = ({ options, tooltipPosition, size = "medium" }) => { return ( {options?.map((item, idx) => ( - + ))} ); diff --git a/packages/layout_editor/src/data/messages.json b/packages/layout_editor/src/data/messages.json new file mode 100644 index 000000000..26d5d2c60 --- /dev/null +++ b/packages/layout_editor/src/data/messages.json @@ -0,0 +1,132 @@ +[ + { + "_id": "wz5cNwELaK6MnZWkN", + "rid": "GENERAL", + "msg": "That's great to hear! It's exciting that we can now customize the EmbeddedChat design using this layout editor. This will open up so many possibilities for tailoring the user experience exactly to our needs. Looking forward to seeing what we can create with it!", + "ts": "2024-07-14T09:22:39.277Z", + "u": { + "_id": "a9bAtEYzGoTHvtxws", + "username": "sidmohanty11", + "name": "Sidharth Mohanty" + }, + "_updatedAt": "2024-07-14T09:22:39.362Z", + "urls": [], + "mentions": [], + "channels": [], + "md": [ + { + "type": "PARAGRAPH", + "value": [ + { + "type": "PLAIN_TEXT", + "value": "That's great to hear! It's exciting that we can now customize the EmbeddedChat design using this layout editor. This will open up so many possibilities for tailoring the user experience exactly to our needs. Looking forward to seeing what we can create with it!" + } + ] + } + ] + }, + { + "_id": "62vhmKJGNoxgvLL7M", + "rid": "GENERAL", + "msg": "Do give it a try !", + "ts": "2024-07-14T09:22:16.995Z", + "u": { + "_id": "c9bAtEYzGoTHvtxws", + "username": "spiral_memory", + "name": "Zishan Ahmad" + }, + "_updatedAt": "2024-07-14T09:22:17.039Z", + "urls": [], + "mentions": [], + "channels": [], + "md": [ + { + "type": "PARAGRAPH", + "value": [ + { + "type": "PLAIN_TEXT", + "value": "Do give it a try !" + } + ] + } + ] + }, + { + "_id": "7JkH8StoJxeN8ftcn", + "rid": "GENERAL", + "msg": "I am good as well. We can now customize the EmbeddedChat design with this layout editor.", + "ts": "2024-07-14T09:22:11.965Z", + "u": { + "_id": "c9bAtEYzGoTHvtxws", + "username": "spiral_memory", + "name": "Zishan Ahmad" + }, + "_updatedAt": "2024-07-14T09:22:12.015Z", + "urls": [], + "mentions": [], + "channels": [], + "md": [ + { + "type": "PARAGRAPH", + "value": [ + { + "type": "PLAIN_TEXT", + "value": "I am good as well. We can now customize the EmbeddedChat design with this layout editor." + } + ] + } + ] + }, + { + "_id": "DBLBa3TwkWSyW9ADz", + "rid": "GENERAL", + "msg": "I am good, How about you?", + "ts": "2024-07-14T09:21:20.600Z", + "u": { + "_id": "a9bAtEYzGoTHvtxws", + "username": "sidmohanty11", + "name": "Sidharth Mohanty" + }, + "_updatedAt": "2024-07-14T09:21:20.688Z", + "urls": [], + "mentions": [], + "channels": [], + "md": [ + { + "type": "PARAGRAPH", + "value": [ + { + "type": "PLAIN_TEXT", + "value": "I am good, How about you?" + } + ] + } + ] + }, + { + "_id": "nt6L6bijA7CNWd2ci", + "rid": "GENERAL", + "msg": "Hey, How are you Sidharth ?", + "ts": "2024-07-14T09:21:08.470Z", + "u": { + "_id": "c9bAtEYzGoTHvtxws", + "username": "spiral_memory", + "name": "Zishan Ahmad" + }, + "_updatedAt": "2024-07-14T09:21:08.551Z", + "urls": [], + "mentions": [], + "channels": [], + "md": [ + { + "type": "PARAGRAPH", + "value": [ + { + "type": "PLAIN_TEXT", + "value": "Hey, How are you Sidharth ?" + } + ] + } + ] + } +] \ No newline at end of file diff --git a/packages/layout_editor/src/hooks/useDisplayNameColor.js b/packages/layout_editor/src/hooks/useDisplayNameColor.js new file mode 100644 index 000000000..5e9c32c07 --- /dev/null +++ b/packages/layout_editor/src/hooks/useDisplayNameColor.js @@ -0,0 +1,27 @@ +/* eslint-disable no-bitwise */ +import { useTheme } from '@embeddedchat/ui-elements'; + +const simpleHash = (str) => { + if (!str) return 0; + let hash = 0; + for (let i = 0; i < str.length; i += 1) { + const char = str.charCodeAt(i); + hash = (hash << 5) - hash + char; + } + return hash; +}; + +const useDisplayNameColor = () => { + const { theme, mode } = useTheme(); + + const getDisplayNameColor = (username) => { + const hash = simpleHash(username); + const { saturation, luminance } = theme.schemes.contrastParams[mode]; + const hue = Math.abs(hash) % 360; + return `hsl(${hue}, ${saturation}%, ${luminance}%)`; + }; + + return getDisplayNameColor; +}; + +export default useDisplayNameColor; diff --git a/packages/layout_editor/src/lib/isMessageLastSequential.js b/packages/layout_editor/src/lib/isMessageLastSequential.js new file mode 100644 index 000000000..ee558c463 --- /dev/null +++ b/packages/layout_editor/src/lib/isMessageLastSequential.js @@ -0,0 +1,19 @@ +import isMessageSequential from './isMessageSequential'; + +const isMessageLastSequential = (current, next) => { + if (!next) { + return true; + } + + if (current.u._id !== next.u._id) { + return true; + } + + if (!isMessageSequential(next, current, 300)) { + return true; + } + + return false; +}; + +export default isMessageLastSequential; diff --git a/packages/layout_editor/src/lib/isMessageSequential.js b/packages/layout_editor/src/lib/isMessageSequential.js new file mode 100644 index 000000000..261713675 --- /dev/null +++ b/packages/layout_editor/src/lib/isMessageSequential.js @@ -0,0 +1,34 @@ +import { differenceInSeconds, isSameDay } from 'date-fns'; + +const isMessageSequential = (current, previous, groupingRange) => { + if (!previous) { + return false; + } + + if (current.t || previous.t) { + return false; + } + + if (current.groupable === false) { + return false; + } + + if (current.u._id !== previous.u._id) { + return false; + } + + if (current.alias !== previous.alias) { + return false; + } + + const isTimeDiffSmall = + differenceInSeconds(new Date(current.ts), new Date(previous.ts)) < + groupingRange; + + const isMessageNewDay = + !previous || !isSameDay(new Date(current.ts), new Date(previous.ts)); + + return isTimeDiffSmall && !isMessageNewDay; +}; + +export default isMessageSequential; diff --git a/packages/layout_editor/src/theme/DefaultTheme.js b/packages/layout_editor/src/theme/DefaultTheme.js index bcf1ac888..5392a374f 100644 --- a/packages/layout_editor/src/theme/DefaultTheme.js +++ b/packages/layout_editor/src/theme/DefaultTheme.js @@ -1,63 +1,73 @@ const DefaultTheme = { schemes: { - radius: '0.2rem', + radius: "0.2rem", + contrastParams: { + light: { + saturation: 70, + luminance: 19, + }, + dark: { + saturation: 88, + luminance: 77, + }, + }, common: { - black: 'hsl(0, 100%, 0%)', - white: 'hsl(0, 100%, 100%)', + black: "hsl(0, 100%, 0%)", + white: "hsl(0, 100%, 100%)", }, light: { - background: 'hsl(0, 0%, 100%)', - foreground: 'hsl(240, 10%, 3.9%)', - card: 'hsl(0, 0%, 100%)', - cardForeground: 'hsl(240, 10%, 3.9%)', - popover: 'hsl(0, 0%, 100%)', - popoverForeground: 'hsl(240, 10%, 3.9%)', - primary: 'hsl(240, 5.9%, 10%)', - primaryForeground: 'hsl(0, 0%, 98%)', - secondary: 'hsl(240, 4.8%, 95.9%)', - secondaryForeground: 'hsl(240, 5.9%, 10%)', - muted: 'hsl(240, 4.8%, 95.9%)', - mutedForeground: 'hsl(240, 3.8%, 46.1%)', - accent: 'hsl(240, 4.8%, 95.9%)', - accentForeground: 'hsl(240, 5.9%, 10%)', - destructive: 'hsl(0, 84.2%, 60.2%)', - destructiveForeground: 'hsl(0, 0%, 98%)', - border: 'hsl(240, 5.9%, 90%)', - input: 'hsl(240, 5.9%, 90%)', - ring: 'hsl(240, 5.9%, 10%)', - warning: 'hsl(38, 92%, 50%)', - warningForeground: 'hsl(48, 96%, 89%)', - success: 'hsl(91, 60.4%, 81.2%)', - successForeground: 'hsl(90, 61.1%, 14.1%)', - info: 'hsl(214, 76.4%, 50.2%)', - infoForeground: 'hsl(214.3, 77.8%, 92.9%)', + background: "hsl(0, 0%, 100%)", + foreground: "hsl(240, 10%, 3.9%)", + card: "hsl(0, 0%, 100%)", + cardForeground: "hsl(240, 10%, 3.9%)", + popover: "hsl(0, 0%, 100%)", + popoverForeground: "hsl(240, 10%, 3.9%)", + primary: "hsl(240, 5.9%, 10%)", + primaryForeground: "hsl(0, 0%, 98%)", + secondary: "hsl(240, 4.8%, 95.9%)", + secondaryForeground: "hsl(240, 5.9%, 10%)", + muted: "hsl(240, 4.8%, 95.9%)", + mutedForeground: "hsl(240, 3.8%, 46.1%)", + accent: "hsl(240, 4.8%, 95.9%)", + accentForeground: "hsl(240, 5.9%, 10%)", + destructive: "hsl(0, 84.2%, 60.2%)", + destructiveForeground: "hsl(0, 0%, 98%)", + border: "hsl(240, 5.9%, 90%)", + input: "hsl(240, 5.9%, 90%)", + ring: "hsl(240, 5.9%, 10%)", + warning: "hsl(38, 92%, 50%)", + warningForeground: "hsl(48, 96%, 89%)", + success: "hsl(91, 60.4%, 81.2%)", + successForeground: "hsl(90, 61.1%, 14.1%)", + info: "hsl(214, 76.4%, 50.2%)", + infoForeground: "hsl(214.3, 77.8%, 92.9%)", }, dark: { - background: 'hsl(240, 10%, 3.9%)', - foreground: 'hsl(0, 0%, 98%)', - card: 'hsl(240, 10%, 3.9%)', - cardForeground: 'hsl(0, 0%, 98%)', - popover: 'hsl(240, 10%, 3.9%)', - popoverForeground: 'hsl(0, 0%, 98%)', - primary: 'hsl(0, 0%, 98%)', - primaryForeground: 'hsl(240, 5.9%, 10%)', - secondary: 'hsl(240, 3.7%, 15.9%)', - secondaryForeground: 'hsl(0, 0%, 98%)', - muted: 'hsl(240, 3.7%, 15.9%)', - mutedForeground: 'hsl(240, 5%, 64.9%)', - accent: 'hsl(240, 3.7%, 15.9%)', - accentForeground: 'hsl(0, 0%, 98%)', - destructive: 'hsl(0, 62.8%, 30.6%)', - destructiveForeground: 'hsl(0, 0%, 98%)', - border: 'hsl(240, 3.7%, 15.9%)', - input: 'hsl(240, 3.7%, 15.9%)', - ring: 'hsl(240, 4.9%, 83.9%)', - warning: 'hsl(48, 96%, 89%)', - warningForeground: 'hsl(38, 92%, 50%)', - success: 'hsl(90, 61.1%, 14.1%)', - successForeground: 'hsl(90, 60%, 90.2%)', - info: 'hsl(214.3, 77.8%, 92.9%)', - infoForeground: 'hsl(214.4, 75.8%, 19.4%)', + background: "hsl(240, 10%, 3.9%)", + foreground: "hsl(0, 0%, 98%)", + card: "hsl(240, 10%, 3.9%)", + cardForeground: "hsl(0, 0%, 98%)", + popover: "hsl(240, 10%, 3.9%)", + popoverForeground: "hsl(0, 0%, 98%)", + primary: "hsl(0, 0%, 98%)", + primaryForeground: "hsl(240, 5.9%, 10%)", + secondary: "hsl(240, 3.7%, 15.9%)", + secondaryForeground: "hsl(0, 0%, 98%)", + muted: "hsl(240, 3.7%, 15.9%)", + mutedForeground: "hsl(240, 5%, 64.9%)", + accent: "hsl(240, 3.7%, 15.9%)", + accentForeground: "hsl(0, 0%, 98%)", + destructive: "hsl(0, 62.8%, 30.6%)", + destructiveForeground: "hsl(0, 0%, 98%)", + border: "hsl(240, 3.7%, 15.9%)", + input: "hsl(240, 3.7%, 15.9%)", + ring: "hsl(240, 4.9%, 83.9%)", + warning: "hsl(48, 96%, 89%)", + warningForeground: "hsl(38, 92%, 50%)", + success: "hsl(90, 61.1%, 14.1%)", + successForeground: "hsl(90, 60%, 90.2%)", + info: "hsl(214.3, 77.8%, 92.9%)", + infoForeground: "hsl(214.4, 75.8%, 19.4%)", }, }, @@ -77,34 +87,34 @@ const DefaultTheme = { fontWeightRegular: 400, }, h1: { - fontSize: '2rem', + fontSize: "2rem", fontWeight: 800, }, h2: { - fontSize: '1.5rem', + fontSize: "1.5rem", fontWeight: 800, }, h3: { - fontSize: '1.3rem', + fontSize: "1.3rem", fontWeight: 400, }, h4: { - fontSize: '1rem', + fontSize: "1rem", fontWeight: 400, }, h5: { - fontSize: '0.83rem', + fontSize: "0.83rem", fontWeight: 400, }, h6: { - fontSize: '0.67rem', + fontSize: "0.67rem", fontWeight: 500, }, }, shadows: [ - 'none', - 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', - 'rgba(100, 100, 111, 0.2) 0px 7px 29px 0px', + "none", + "rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px", + "rgba(100, 100, 111, 0.2) 0px 7px 29px 0px", ], zIndex: { divider: 1000, diff --git a/packages/layout_editor/src/views/Markdown/Markdown.jsx b/packages/layout_editor/src/views/Markdown/Markdown.jsx new file mode 100644 index 000000000..c54f1cd23 --- /dev/null +++ b/packages/layout_editor/src/views/Markdown/Markdown.jsx @@ -0,0 +1,29 @@ +import React, { useMemo } from "react"; +import PropTypes from "prop-types"; +import { Box } from "@embeddedchat/ui-elements"; +import { Markup, MarkupInteractionContext } from "@embeddedchat/markups"; + +const Markdown = ({ body }) => { + const username = "spiral_memory"; + + const value = useMemo(() => { + const members = []; + + return { members, username }; + }, [username]); + + return ( + + + + + + ); +}; + +Markdown.propTypes = { + body: PropTypes.any, + isReaction: PropTypes.bool, +}; + +export default Markdown; diff --git a/packages/layout_editor/src/views/Markdown/index.js b/packages/layout_editor/src/views/Markdown/index.js new file mode 100644 index 000000000..45e90e969 --- /dev/null +++ b/packages/layout_editor/src/views/Markdown/index.js @@ -0,0 +1 @@ +export { default as Markdown } from './Markdown'; diff --git a/packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js b/packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js new file mode 100644 index 000000000..576d30d2b --- /dev/null +++ b/packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js @@ -0,0 +1,200 @@ +import { css } from '@emotion/react'; +import { alpha } from '@embeddedchat/ui-elements'; + +export const bubbleStyles = (customTheme) => { + const { theme, colors } = customTheme; + + const styles = { + name: 'bubble', + messageParent: css` + display: flex; + gap: 0.25rem; + flex-direction: row; + align-items: flex-start; + padding: 0 2.25rem 0.25rem 2.25rem; + a { + color: ${colors.primaryForeground}; + } + `, + + messageBodyContainer: css` + display: flex; + flex: 1; + align-items: flex-start; + flex-direction: column; + `, + + messageBody: css` + position: relative; + letter-spacing: 0rem; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.25rem; + transition: opacity 0.3s linear; + word-break: break-word; + opacity: 1; + margin-top: 0.125rem; + margin-bottom: 0.125rem; + width: fit-content; + max-width: 80%; + padding: 0.5rem 0.75rem; + border-radius: ${theme.schemes.radius} ${theme.schemes.radius} + ${theme.schemes.radius} 0.2rem; + background: ${colors.primary}; + color: ${colors.primaryForeground}; + &:hover { + background: ${alpha(colors.primary, 0.8)}; + } + `, + + attachmentBody: css` + position: relative; + width: fit-content; + max-width: 80%; + border-radius: ${theme.schemes.radius} ${theme.schemes.radius} + ${theme.schemes.radius} 0.2rem; + `, + + sequential: css` + border-radius: 0.2rem ${theme.schemes.radius} ${theme.schemes.radius} + 0.2rem; + `, + lastSequential: css` + border-radius: 0.2rem ${theme.schemes.radius} ${theme.schemes.radius}; + `, + + metricsContainer: css` + display: flex; + margin: 0.25rem; + `, + + threadReplyButton: css` + background-color: ${colors.accent}; + color: ${colors.accentForeground}; + border-radius: 0.2rem; + `, + + arcIcon: css` + transform: none; + `, + + toolboxContainer: css` + display: none; + .ec-message-body:hover & { + display: flex; + position: absolute; + bottom: calc(100% - 20px); + left: calc(100% - 20px); + z-index: ${theme.zIndex.body + 1}; + } + `, + + videoAttachmentContainer: css` + border: 1px solid ${colors.border}; + border-radius: inherit; + `, + imageAttachmentContainer: css` + border: 1px solid ${colors.border}; + border-radius: inherit; + overflow: hidden; + `, + pinnedContainer: css` + max-width: 80%; + `, + + quoteContainer: css` + background-color: ${colors.background}; + color: ${colors.foreground}; + flex: 1; + border-bottom-right-radius: inherit; + border-bottom-left-radius: inherit; + border: 2px solid ${colors.border}; + margin: 0.2rem -0.75rem -0.5rem; + `, + + textUserInfo: css` + align-self: flex-start; + `, + + attachmentMetaContainer: css` + padding: 2.5% 2.5% 0; + `, + + emojiPickerStyles: css` + position: absolute; + bottom: 100%; + left: calc(100% + 5px); + `, + }; + + return styles; +}; + +export const bubbleStylesMe = (customTheme) => { + const { theme, colors } = customTheme; + + const styles = { + messageParentMe: css` + flex-direction: row-reverse; + `, + + messageBodyContainerMe: css` + align-items: flex-end; + `, + + messageBodyMe: css` + background: ${colors.secondary}; + color: ${colors.secondaryForeground}; + border-radius: ${theme.schemes.radius} ${theme.schemes.radius} 0.2rem + ${theme.schemes.radius}; + &:hover { + background: ${alpha(colors.secondary, 0.8)}; + } + `, + + attachmentBodyMe: css` + border-radius: ${theme.schemes.radius} ${theme.schemes.radius} 0.2rem + ${theme.schemes.radius}; + `, + + lastSequentialMe: css` + border-radius: ${theme.schemes.radius} 0.2rem ${theme.schemes.radius} + ${theme.schemes.radius}; + `, + sequentialMe: css` + border-radius: ${theme.schemes.radius} 0.2rem 0.2rem + ${theme.schemes.radius}; + `, + + metricsContainerMe: css` + flex-direction: row-reverse; + `, + + arcIconMe: css` + transform: scaleX(-1); + `, + + toolboxContainerMe: css` + .ec-message-body:hover & { + left: auto; + right: calc(100% - 20px); + } + `, + + pinnedContainerMe: css` + border-inline-start: none; + border-inline-end: 3px solid ${colors.border}; + `, + + textUserInfoMe: css` + align-self: flex-end; + `, + + emojiPickerStylesMe: css` + left: auto; + right: calc(100% + 5px); + `, + }; + + return styles; +}; diff --git a/packages/layout_editor/src/views/Message/BubbleVariant/BubbleThreadBtn.js b/packages/layout_editor/src/views/Message/BubbleVariant/BubbleThreadBtn.js new file mode 100644 index 000000000..fd966423e --- /dev/null +++ b/packages/layout_editor/src/views/Message/BubbleVariant/BubbleThreadBtn.js @@ -0,0 +1,31 @@ +import React from 'react'; +import { format } from 'date-fns'; +import { Button, Icon, useTheme } from '@embeddedchat/ui-elements'; + +const BubbleThreadBtn = ({ message, handleOpenThread, styles = {} }) => { + const { colors } = useTheme(); + + return ( + <> + + + + ); +}; + +export default BubbleThreadBtn; diff --git a/packages/layout_editor/src/views/Message/BubbleVariant/useBubbleStyles.js b/packages/layout_editor/src/views/Message/BubbleVariant/useBubbleStyles.js new file mode 100644 index 000000000..6f3f81f45 --- /dev/null +++ b/packages/layout_editor/src/views/Message/BubbleVariant/useBubbleStyles.js @@ -0,0 +1,20 @@ +import { useTheme } from '@embeddedchat/ui-elements'; +import { bubbleStyles, bubbleStylesMe } from './Bubble.styles'; + +const useBubbleStyles = (isMe = false) => { + const customTheme = useTheme(); + const styles = bubbleStyles(customTheme); + const meStyles = bubbleStylesMe(customTheme); + + const mergedStyles = {}; + + Object.keys(styles).forEach((key) => { + mergedStyles[key] = [styles[key], isMe && meStyles[`${key}Me`]].filter( + Boolean + ); + }); + + return mergedStyles; +}; + +export default useBubbleStyles; diff --git a/packages/layout_editor/src/views/Message/Message.jsx b/packages/layout_editor/src/views/Message/Message.jsx new file mode 100644 index 000000000..c306e30c1 --- /dev/null +++ b/packages/layout_editor/src/views/Message/Message.jsx @@ -0,0 +1,88 @@ +import React from "react"; +import PropTypes from "prop-types"; +import { format } from "date-fns"; +import { Box } from "@embeddedchat/ui-elements"; +import { Markdown } from "../Markdown"; +import MessageHeader from "./MessageHeader"; +import { MessageBody } from "./MessageBody"; +import { MessageToolbox } from "./MessageToolbox"; +import { MessageDivider } from "./MessageDivider"; +import MessageAvatarContainer from "./MessageAvatarContainer"; +import MessageBodyContainer from "./MessageBodyContainer"; +import { useMessageStyles } from "./Message.styles"; +import useBubbleStyles from "./BubbleVariant/useBubbleStyles"; + +const Message = ({ + message, + sequential = false, + lastSequential = false, + newDay = false, + variantOverrides = "flat", +}) => { + const isMe = message.u._id === "spiral_memory"; + const styles = useMessageStyles(); + const bubbleStyles = useBubbleStyles(isMe); + const shouldShowHeader = !sequential; + const variantStyles = variantOverrides === "bubble" ? bubbleStyles : {}; + + return ( + <> + + + + + {shouldShowHeader && ( + + )} + + {!message.t ? ( + <> + + + + {!message.t ? ( + + ) : ( + <> + )} + + + ) : null} + + + {newDay && ( + + {format(new Date(message.ts), "MMMM d, yyyy")} + + )} + + ); +}; +Message.propTypes = { + message: PropTypes.any, + sequential: PropTypes.bool, + newDay: PropTypes.bool, + type: PropTypes.oneOf(["thread", "default"]), + showAvatar: PropTypes.bool, +}; + +export default Message; diff --git a/packages/layout_editor/src/views/Message/Message.styles.js b/packages/layout_editor/src/views/Message/Message.styles.js new file mode 100644 index 000000000..f23b4de21 --- /dev/null +++ b/packages/layout_editor/src/views/Message/Message.styles.js @@ -0,0 +1,300 @@ +import { css } from '@emotion/react'; +import { lighten, darken, useTheme } from '@embeddedchat/ui-elements'; + +export const useMessageStyles = () => { + const { mode, colors } = useTheme(); + + const main = css` + display: flex; + flex-direction: row; + align-items: flex-start; + padding-top: 0.5rem; + padding-bottom: 0.25rem; + padding-left: 2.25rem; + padding-right: 2.25rem; + color: ${colors.foreground}; + + &:hover { + background-color: ${mode === 'light' + ? darken(colors.background, 0.03) + : lighten(colors.background, 1)}; + } + `; + const messageEditing = css` + background-color: ${colors.secondary}; + &:hover { + background-color: ${colors.secondary}; + } + `; + + const pendingMessageBody = css` + opacity: 0.4 !important; + white-space: pre-line; + `; + + return { main, messageEditing, pendingMessageBody }; +}; + +export const useMessageAvatarContainerStyles = () => { + const { colors } = useTheme(); + + const container = css` + margin: 3px; + width: 2.25em; + max-height: 2.25em; + display: flex; + justify-content: flex-end; + color: ${colors.primary}; + `; + + return { container }; +}; + +export const MessageBodyStyles = { + messageBody: css` + position: relative; + letter-spacing: 0rem; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.25rem; + flex-shrink: 1; + transition: opacity 0.3s linear; + word-break: break-word; + opacity: 1; + margin-top: 0.125rem; + margin-bottom: 0.125rem; + `, +}; + +export const useMessageDividerStyles = () => { + const { theme, colors } = useTheme(); + + const divider = css` + letter-spacing: 0rem; + font-size: 0.75rem; + font-weight: 700; + line-height: 1rem; + position: relative; + display: flex; + z-index: ${theme.zIndex.divider}; + align-items: center; + margin-top: 0.5rem; + margin-bottom: 0.75rem; + padding-left: 1.25rem; + padding-right: 1.25rem; + `; + + const dividerContent = css` + margin-top: 0.5rem; + margin-bottom: 0.5rem; + padding-left: 0.5rem; + padding-right: 0.5rem; + background-color: ${colors.secondary}; + color: ${colors.secondaryForeground}; + position: absolute; + left: 50%; + transform: translateX(-50%); + border-radius: ${theme.schemes.radius}; + `; + + const bar = css` + display: flex; + justify-content: flex-end; + align-items: center; + flex-grow: 1; + height: 1px; + background-color: ${colors.secondary}; + `; + + return { divider, bar, dividerContent }; +}; + +export const useMessageHeaderStyles = () => { + const { theme, colors } = useTheme(); + + const header = css` + display: flex; + flex-direction: row; + flex-grow: 0; + flex-shrink: 1; + min-width: 1px; + margin-top: 0.125rem; + margin-bottom: 0.125rem; + gap: 0.125rem; + align-items: center; + `; + + const name = css` + letter-spacing: 0rem; + font-size: 0.875rem; + font-weight: 700; + line-height: 1.25rem; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + flex-shrink: 1; + `; + + const userName = css` + color: ${colors.accentForeground}; + font-weight: 700; + letter-spacing: 0rem; + font-size: 0.875rem; + line-height: 1.25rem; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + flex-shrink: 1; + `; + + const userRole = css` + letter-spacing: 0rem; + font-size: 0.75rem; + padding: 0 0.25rem; + margin: 0 0.1rem; + border-radius: ${theme.schemes.radius}; + font-weight: 700; + line-height: 1rem; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + background-color: ${colors.secondary}; + `; + + const userActions = css` + color: ${colors.accentForeground}; + letter-spacing: 0rem; + font-size: 0.875rem; + line-height: 1.25rem; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + flex-shrink: 1; + `; + + const timestamp = css` + color: ${colors.accentForeground}; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + letter-spacing: 0rem; + font-size: 0.75rem; + font-weight: 400; + line-height: 1rem; + flex-shrink: 0; + margin-left: 0.25rem; + `; + + return { header, name, userRole, userName, timestamp, userActions }; +}; + +export const MessageMetricsStyles = { + metrics: css` + display: flex; + margin-left: -0.25rem; + margin-right: -0.25rem; + margin-top: 0.5rem; + `, + + metricsItem: (isFirstMessage = false) => css` + letter-spacing: 0rem; + font-size: 0.625rem; + font-weight: 700; + line-height: 0.75rem; + display: flex; + justify-content: center; + align-items: center; + margin-left: ${isFirstMessage ? '0.5rem' : '0.25rem'}; + `, + + metricsItemLabel: css` + margin: 0.25rem; + margin-inline-start: 0.25rem; + white-space: nowrap; + `, +}; + +export const useMessageReactionsStyles = () => { + const { colors } = useTheme(); + const container = css` + display: flex; + flex-flow: row wrap; + justify-content: flex-start; + `; + + const reaction = css` + letter-spacing: 0rem; + font-size: 0.6rem; + display: inline-flex; + gap: 0.125rem; + align-items: center; + justify-content: center; + padding: 0.1rem; + margin: 0.125rem; + cursor: pointer; + img.joypixels { + height: 0.75em; + width: 0.75em; + } + p { + margin: 0; + } + border: 1px solid ${colors.border}; + border-radius: 0.2rem; + `; + + const reactionMine = css` + background: ${colors.secondary}; + `; + + return { container, reaction, reactionMine }; +}; + +export const useMessageToolboxStyles = () => { + const { theme, colors } = useTheme(); + + const toolboxContainer = css` + display: none; + .ec-message:hover & { + display: flex; + position: absolute; + bottom: 100%; + z-index: ${theme.zIndex.body + 1}; + right: 2rem; + } + `; + + const toolbox = css` + display: flex; + margin-left: -0.25rem; + margin-right: -0.25rem; + margin-top: 0.125rem; + background-color: ${colors.background}; + box-shadow: 0 0 2px ${colors.foreground}; + gap: 0.25rem; + padding: 0.25rem; + border-radius: ${theme.schemes.radius}; + `; + + const emojiPickerStyles = css` + position: absolute; + bottom: 100%; + right: 1.5rem; + `; + + return { + toolboxContainer, + toolbox, + emojiPickerStyles, + }; +}; + +export const useMessageBodyContainerStyles = () => { + const bodyContainer = css` + margin-left: 5px; + position: relative; + width: 100%; + `; + + return { bodyContainer }; +}; diff --git a/packages/layout_editor/src/views/Message/MessageAvatarContainer.jsx b/packages/layout_editor/src/views/Message/MessageAvatarContainer.jsx new file mode 100644 index 000000000..15f7a36a3 --- /dev/null +++ b/packages/layout_editor/src/views/Message/MessageAvatarContainer.jsx @@ -0,0 +1,21 @@ +import React from "react"; +import { Box, Icon } from "@embeddedchat/ui-elements"; +import { useMessageAvatarContainerStyles } from "./Message.styles"; + +const MessageAvatarContainer = ({ message, sequential }) => { + const styles = useMessageAvatarContainerStyles(); + + return ( + + {!sequential ? ( + + ) : null} + + ); +}; + +export default MessageAvatarContainer; diff --git a/packages/layout_editor/src/views/Message/MessageBody.jsx b/packages/layout_editor/src/views/Message/MessageBody.jsx new file mode 100644 index 000000000..7c7a5df62 --- /dev/null +++ b/packages/layout_editor/src/views/Message/MessageBody.jsx @@ -0,0 +1,30 @@ +import React from "react"; +import { Box } from "@embeddedchat/ui-elements"; +import { MessageBodyStyles as styles } from "./Message.styles"; + +export const MessageBody = ({ + children, + variantStyles = {}, + isText = true, + sequential = false, + lastSequential = false, + ...props +}) => { + const messageBodyStyles = + (isText ? variantStyles.messageBody : variantStyles.attachmentBody) || + styles.messageBody; + + return ( + + {children} + + ); +}; diff --git a/packages/layout_editor/src/views/Message/MessageBodyContainer.jsx b/packages/layout_editor/src/views/Message/MessageBodyContainer.jsx new file mode 100644 index 000000000..209c86712 --- /dev/null +++ b/packages/layout_editor/src/views/Message/MessageBodyContainer.jsx @@ -0,0 +1,19 @@ +import React from "react"; +import { Box } from "@embeddedchat/ui-elements"; + +import { useMessageBodyContainerStyles } from "./Message.styles"; + +const MessageBodyContainer = ({ children, variantStyles = {} }) => { + const styles = useMessageBodyContainerStyles(); + + return ( + + {children} + + ); +}; + +export default MessageBodyContainer; diff --git a/packages/layout_editor/src/views/Message/MessageDivider.jsx b/packages/layout_editor/src/views/Message/MessageDivider.jsx new file mode 100644 index 000000000..40182552e --- /dev/null +++ b/packages/layout_editor/src/views/Message/MessageDivider.jsx @@ -0,0 +1,34 @@ +import React from 'react'; +import { + Box, +} from '@embeddedchat/ui-elements'; + +import { useMessageDividerStyles } from './Message.styles'; + +export const MessageDivider = ({ + children, + ...props +}) => { + + const styles = useMessageDividerStyles(); + return ( + + {children && ( + <> + + + {children} + + + )} + + ); +}; diff --git a/packages/layout_editor/src/views/Message/MessageHeader.jsx b/packages/layout_editor/src/views/Message/MessageHeader.jsx new file mode 100644 index 000000000..a64f983de --- /dev/null +++ b/packages/layout_editor/src/views/Message/MessageHeader.jsx @@ -0,0 +1,62 @@ +import React from "react"; +import PropTypes from "prop-types"; +import { format } from "date-fns"; +import { + Box, + Icon, + useTheme, + appendClassNames, +} from "@embeddedchat/ui-elements"; +import { useMessageHeaderStyles } from "./Message.styles"; +import useDisplayNameColor from "../../hooks/useDisplayNameColor"; + +const MessageHeader = ({ message, variantOverrides }) => { + const displayNameVariant = variantOverrides || "Normal"; + const styles = useMessageHeaderStyles(); + const { colors } = useTheme(); + const getDisplayNameColor = useDisplayNameColor(); + + return ( + + + @{message.u.username} + + + + {format(new Date(message.ts), "h:mm a")} + + + {!message.t && ( + + {message.editedAt && ( + + )} + + )} + + ); +}; + +export default MessageHeader; + +MessageHeader.propTypes = { + message: PropTypes.any, +}; diff --git a/packages/layout_editor/src/views/Message/MessageToolbox.jsx b/packages/layout_editor/src/views/Message/MessageToolbox.jsx new file mode 100644 index 000000000..a57a571f1 --- /dev/null +++ b/packages/layout_editor/src/views/Message/MessageToolbox.jsx @@ -0,0 +1,142 @@ +import React, { useMemo } from "react"; +import { Box, Menu } from "@embeddedchat/ui-elements"; +import { useMessageToolboxStyles } from "./Message.styles"; +import SurfaceMenu from "../../components/SurfaceMenu/SurfaceMenu"; + +export const MessageToolbox = ({ + variantStyles = {}, + optionConfig = { + surfaceItems: [ + "reaction", + "reply", + "quote", + "star", + "pin", + "edit", + "delete", + "report", + ], + + menuItems: [], + }, + + ...props +}) => { + const styles = useMessageToolboxStyles(); + const surfaceItems = optionConfig.surfaceItems; + const menuItems = optionConfig.menuItems; + + const options = useMemo( + () => ({ + reply: { + label: "Reply in thread", + id: "reply", + onClick: () => {}, + iconName: "thread", + visible: true, + }, + quote: { + label: "Quote", + id: "quote", + onClick: () => {}, + iconName: "quote", + visible: true, + }, + star: { + label: "Star", + id: "star", + onClick: () => {}, + iconName: "star", + visible: true, + }, + reaction: { + label: "Add reaction", + id: "reaction", + onClick: () => {}, + iconName: "emoji", + visible: true, + }, + pin: { + label: "Pin", + id: "pin", + onClick: () => {}, + iconName: "pin", + visible: true, + }, + edit: { + label: "Edit", + id: "edit", + onClick: () => {}, + iconName: "edit", + visible: true, + }, + delete: { + label: "Delete", + id: "delete", + onClick: () => {}, + iconName: "trash", + visible: true, + type: "destructive", + }, + report: { + label: "Report", + id: "report", + onClick: () => {}, + iconName: "report", + visible: true, + type: "destructive", + }, + }), + [] + ); + + const menuOptions = menuItems + ?.map((item) => { + if (item in options && options[item].visible) { + return { + id: options[item].id, + action: options[item].onClick, + label: options[item].label, + icon: options[item].iconName, + }; + } + return null; + }) + .filter((option) => option !== null); + + const surfaceOptions = surfaceItems + ?.map((item) => { + if (item in options && options[item].visible) { + return { + id: options[item].id, + onClick: options[item].onClick, + label: options[item].label, + iconName: options[item].iconName, + type: options[item].type, + }; + } + return null; + }) + .filter((option) => option !== null); + + return ( + <> + + + {surfaceOptions?.length > 0 && ( + + )} + {menuOptions?.length > 0 && ( + + )} + + + + ); +}; diff --git a/packages/layout_editor/src/views/Message/index.js b/packages/layout_editor/src/views/Message/index.js new file mode 100644 index 000000000..b0e7e95e8 --- /dev/null +++ b/packages/layout_editor/src/views/Message/index.js @@ -0,0 +1 @@ +export { default as Message } from './Message'; diff --git a/packages/layout_editor/src/views/MessageList/MessageList.jsx b/packages/layout_editor/src/views/MessageList/MessageList.jsx index 26248259d..b70aedee7 100644 --- a/packages/layout_editor/src/views/MessageList/MessageList.jsx +++ b/packages/layout_editor/src/views/MessageList/MessageList.jsx @@ -1,19 +1,57 @@ import React from "react"; import PropTypes from "prop-types"; import { css } from "@emotion/react"; +import { isSameDay } from "date-fns"; import { Box, Icon } from "@embeddedchat/ui-elements"; +import Message from "../Message/Message"; +import isMessageLastSequential from "../../lib/isMessageLastSequential"; +import isMessageSequential from "../../lib/isMessageSequential"; +import messages from "../../data/messages.json"; -const MessageList = () => ( - - - Ready to chat? Login now to join the fun - -); +const MessageList = () => { + const isMessageNewDay = (current, previous) => + !previous || !isSameDay(new Date(current.ts), new Date(previous.ts)); + + return ( + <> + {messages.length === 0 ? ( + + + No messages + + ) : ( + <> + {messages.map((msg, index, arr) => { + const prev = arr[index + 1]; + const next = arr[index - 1]; + + if (!msg) return null; + const newDay = isMessageNewDay(msg, prev); + const sequential = isMessageSequential(msg, prev, 300); + const lastSequential = + sequential && isMessageLastSequential(msg, next); + + return ( + + ); + })} + + )} + + ); +}; MessageList.propTypes = { messages: PropTypes.arrayOf(PropTypes.shape), From 5152e8cac86d8f16264e1404fbd314d6941ecce5 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 14 Jul 2024 19:00:49 +0530 Subject: [PATCH 026/104] added emotion babel parser --- packages/layout_editor/.eslintrc.cjs | 1 - packages/layout_editor/package.json | 1 + .../src/views/Message/Message.jsx | 4 ++-- packages/layout_editor/src/vite-env.d.ts | 1 + packages/layout_editor/vite.config.ts | 19 +++++++++++++------ yarn.lock | 1 + 6 files changed, 18 insertions(+), 9 deletions(-) diff --git a/packages/layout_editor/.eslintrc.cjs b/packages/layout_editor/.eslintrc.cjs index 92640d851..ab0963231 100644 --- a/packages/layout_editor/.eslintrc.cjs +++ b/packages/layout_editor/.eslintrc.cjs @@ -20,7 +20,6 @@ module.exports = { { allowConstantExport: true }, ], "react/prop-types": "off", - "react/no-unknown-property": ["error", { ignore: ["css"] }], "@typescript-eslint/no-unused-vars": ["warn"], }, }; diff --git a/packages/layout_editor/package.json b/packages/layout_editor/package.json index e163e8ff6..c67c27167 100644 --- a/packages/layout_editor/package.json +++ b/packages/layout_editor/package.json @@ -20,6 +20,7 @@ "react-dom": "^18.2.0" }, "devDependencies": { + "@emotion/babel-plugin": "^11.11.0", "@types/node": "^20.11.19", "@types/react": "^18.2.55", "@types/react-dom": "^18.2.19", diff --git a/packages/layout_editor/src/views/Message/Message.jsx b/packages/layout_editor/src/views/Message/Message.jsx index c306e30c1..aea8f6268 100644 --- a/packages/layout_editor/src/views/Message/Message.jsx +++ b/packages/layout_editor/src/views/Message/Message.jsx @@ -17,9 +17,9 @@ const Message = ({ sequential = false, lastSequential = false, newDay = false, - variantOverrides = "flat", + variantOverrides = "default", }) => { - const isMe = message.u._id === "spiral_memory"; + const isMe = message.u.username === "spiral_memory"; const styles = useMessageStyles(); const bubbleStyles = useBubbleStyles(isMe); const shouldShowHeader = !sequential; diff --git a/packages/layout_editor/src/vite-env.d.ts b/packages/layout_editor/src/vite-env.d.ts index 11f02fe2a..683cbd2af 100644 --- a/packages/layout_editor/src/vite-env.d.ts +++ b/packages/layout_editor/src/vite-env.d.ts @@ -1 +1,2 @@ /// +/// diff --git a/packages/layout_editor/vite.config.ts b/packages/layout_editor/vite.config.ts index 028287cd5..2e2219a6a 100644 --- a/packages/layout_editor/vite.config.ts +++ b/packages/layout_editor/vite.config.ts @@ -1,10 +1,17 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; // https://vitejs.dev/config/ export default defineConfig({ - plugins: [react()], + plugins: [ + react({ + jsxImportSource: "@emotion/react", + babel: { + plugins: ["@emotion/babel-plugin"], + }, + }), + ], define: { - 'process.env': {} - } -}) + "process.env": {}, + }, +}); diff --git a/yarn.lock b/yarn.lock index 8c81f2c8b..d573d2a32 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20963,6 +20963,7 @@ __metadata: "@dnd-kit/core": ^6.1.0 "@dnd-kit/sortable": ^8.0.0 "@embeddedchat/ui-elements": "workspace:^" + "@emotion/babel-plugin": ^11.11.0 "@types/node": ^20.11.19 "@types/react": ^18.2.55 "@types/react-dom": ^18.2.19 From b3253de762e9f6aa2f3e4d439e3f996876e5acc4 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 14 Jul 2024 19:45:11 +0530 Subject: [PATCH 027/104] added special message style --- .../src/views/Message/Message.jsx | 12 ++++---- .../src/views/Message/Message.styles.js | 29 ++++++++++--------- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/packages/layout_editor/src/views/Message/Message.jsx b/packages/layout_editor/src/views/Message/Message.jsx index aea8f6268..b033e1fe8 100644 --- a/packages/layout_editor/src/views/Message/Message.jsx +++ b/packages/layout_editor/src/views/Message/Message.jsx @@ -29,7 +29,10 @@ const Message = ({ <> @@ -56,11 +59,8 @@ const Message = ({ > - {!message.t ? ( - + {!message.t && message._id === "62vhmKJGNoxgvLL7M" ? ( + ) : ( <> )} diff --git a/packages/layout_editor/src/views/Message/Message.styles.js b/packages/layout_editor/src/views/Message/Message.styles.js index f23b4de21..c5f01dd7e 100644 --- a/packages/layout_editor/src/views/Message/Message.styles.js +++ b/packages/layout_editor/src/views/Message/Message.styles.js @@ -1,5 +1,5 @@ -import { css } from '@emotion/react'; -import { lighten, darken, useTheme } from '@embeddedchat/ui-elements'; +import { css } from "@emotion/react"; +import { lighten, darken, useTheme } from "@embeddedchat/ui-elements"; export const useMessageStyles = () => { const { mode, colors } = useTheme(); @@ -15,7 +15,7 @@ export const useMessageStyles = () => { color: ${colors.foreground}; &:hover { - background-color: ${mode === 'light' + background-color: ${mode === "light" ? darken(colors.background, 0.03) : lighten(colors.background, 1)}; } @@ -32,7 +32,13 @@ export const useMessageStyles = () => { white-space: pre-line; `; - return { main, messageEditing, pendingMessageBody }; + const specialMessage = css` + background-color: ${mode === "light" + ? darken(colors.background, 0.03) + : lighten(colors.background, 1)}; + `; + + return { main, messageEditing, pendingMessageBody, specialMessage }; }; export const useMessageAvatarContainerStyles = () => { @@ -204,7 +210,7 @@ export const MessageMetricsStyles = { display: flex; justify-content: center; align-items: center; - margin-left: ${isFirstMessage ? '0.5rem' : '0.25rem'}; + margin-left: ${isFirstMessage ? "0.5rem" : "0.25rem"}; `, metricsItemLabel: css` @@ -254,14 +260,11 @@ export const useMessageToolboxStyles = () => { const { theme, colors } = useTheme(); const toolboxContainer = css` - display: none; - .ec-message:hover & { - display: flex; - position: absolute; - bottom: 100%; - z-index: ${theme.zIndex.body + 1}; - right: 2rem; - } + display: flex; + position: absolute; + bottom: 100%; + z-index: ${theme.zIndex.body + 1}; + right: 2rem; `; const toolbox = css` From 4fa1ce0b34df291c422dccf4c6843e9c469b0853 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 14 Jul 2024 23:10:30 +0530 Subject: [PATCH 028/104] added drag and drop in message toolbox --- .../src/components/SortableMenu/Menu.jsx | 17 +- .../components/SortableMenu/Menu.styles.js | 1 - packages/layout_editor/src/data/messages.json | 4 +- .../src/views/ChatHeader/ChatHeader.jsx | 4 +- .../src/views/Message/MessageToolbox.jsx | 205 ++++++++++++++---- 5 files changed, 178 insertions(+), 53 deletions(-) diff --git a/packages/layout_editor/src/components/SortableMenu/Menu.jsx b/packages/layout_editor/src/components/SortableMenu/Menu.jsx index a6ab1d12c..d3dfd72af 100644 --- a/packages/layout_editor/src/components/SortableMenu/Menu.jsx +++ b/packages/layout_editor/src/components/SortableMenu/Menu.jsx @@ -1,4 +1,4 @@ -import React from "react"; +import React, { useMemo } from "react"; import { css } from "@emotion/react"; import { Box, @@ -8,18 +8,26 @@ import { } from "@embeddedchat/ui-elements"; import MenuItem from "./MenuItem"; import { getMenuStyles } from "./Menu.styles"; -import { - SortableContext, -} from "@dnd-kit/sortable"; +import { SortableContext } from "@dnd-kit/sortable"; const Menu = ({ options = [], tooltip = { isToolTip: true, position: "bottom", text: "Options" }, + from = "top", size = "medium", }) => { const theme = useTheme(); const styles = getMenuStyles(theme); + const anchorStyle = useMemo(() => { + const positions = from.split(/\s+/); + const styleAnchor = {}; + positions.forEach((pos) => { + styleAnchor[pos] = "100%"; + }); + return styleAnchor; + }, [from]); + return ( @@ -33,6 +41,7 @@ const Menu = ({ box-shadow: ${theme.theme.shadows[2]}; `, ]} + style={anchorStyle} > {options.map((option, idx) => ( diff --git a/packages/layout_editor/src/components/SortableMenu/Menu.styles.js b/packages/layout_editor/src/components/SortableMenu/Menu.styles.js index eb629e7e5..1a4dc0172 100644 --- a/packages/layout_editor/src/components/SortableMenu/Menu.styles.js +++ b/packages/layout_editor/src/components/SortableMenu/Menu.styles.js @@ -11,7 +11,6 @@ export const getMenuStyles = (customTheme) => { container: css` position: absolute; - top: 100%; right: 0; display: flex; flex-direction: column; diff --git a/packages/layout_editor/src/data/messages.json b/packages/layout_editor/src/data/messages.json index 26d5d2c60..2d64470fb 100644 --- a/packages/layout_editor/src/data/messages.json +++ b/packages/layout_editor/src/data/messages.json @@ -2,7 +2,7 @@ { "_id": "wz5cNwELaK6MnZWkN", "rid": "GENERAL", - "msg": "That's great to hear! It's exciting that we can now customize the EmbeddedChat design using this layout editor. This will open up so many possibilities for tailoring the user experience exactly to our needs. Looking forward to seeing what we can create with it!", + "msg": "That's great to hear! It's exciting that we can now customize the EmbeddedChat design using this layout editor !", "ts": "2024-07-14T09:22:39.277Z", "u": { "_id": "a9bAtEYzGoTHvtxws", @@ -19,7 +19,7 @@ "value": [ { "type": "PLAIN_TEXT", - "value": "That's great to hear! It's exciting that we can now customize the EmbeddedChat design using this layout editor. This will open up so many possibilities for tailoring the user experience exactly to our needs. Looking forward to seeing what we can create with it!" + "value": "That's great to hear! It's exciting that we can now customize the EmbeddedChat design using this layout editor. This will open up so many possibilities for tailoring the user experience exactly to our needs !" } ] } diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx index 3018c0aba..a86ee89be 100644 --- a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx @@ -226,12 +226,12 @@ const ChatHeader = ({ general -

Channel description -

+
{ const styles = useMessageToolboxStyles(); - const surfaceItems = optionConfig.surfaceItems; - const menuItems = optionConfig.menuItems; + const [surfaceItems, setSurfaceItems] = useState(optionConfig.surfaceItems); + const [menuItems, setMenuItems] = useState(optionConfig.menuItems); + const [activeSurfaceItem, setActiveSurfaceItem] = useState(null); + const [activeMenuItem, setActiveMenuItem] = useState(null); + + const placeholderSurfaceItem = "placeholder-surface"; + const placeholderMenuItem = "placeholder-menu"; + + const sensors = useSensors( + useSensor(PointerSensor), + useSensor(KeyboardSensor, { + coordinateGetter: sortableKeyboardCoordinates, + }) + ); + + const handleDragStart = (event) => { + if (event.active.data.current?.type === "SurfaceOptions") { + setActiveSurfaceItem({ + id: event.active.id, + iconName: event.active.data.current.icon, + label: event.active.data.current.label, + }); + } else if (event.active.data.current?.type === "MenuOptions") { + setActiveMenuItem({ + id: event.active.id, + icon: event.active.data.current.icon, + label: event.active.data.current.label, + }); + } + }; + + const handleDragEnd = (event) => { + setActiveSurfaceItem(null); + setActiveMenuItem(null); + const { active, over } = event; + + if (active.id !== over.id) { + if ( + event.active.data.current?.type === "SurfaceOptions" && + event.over.data.current?.type === "SurfaceOptions" + ) { + setSurfaceItems((items) => { + const oldIndex = items.indexOf(active.id); + const newIndex = items.indexOf(over.id); + return arrayMove(items, oldIndex, newIndex); + }); + } else if ( + event.active.data.current?.type === "MenuOptions" && + event.over.data.current?.type === "MenuOptions" + ) { + setMenuItems((items) => { + const oldIndex = items.indexOf(active.id); + const newIndex = items.indexOf(over.id); + return arrayMove(items, oldIndex, newIndex); + }); + } else if ( + event.active.data.current?.type === "SurfaceOptions" && + event.over.data.current?.type === "MenuOptions" + ) { + setSurfaceItems((items) => items.filter((item) => item !== active.id)); + setMenuItems((items) => { + const newItems = [ + ...items.filter((item) => item !== placeholderMenuItem), + active.id, + ]; + return newItems; + }); + } else if ( + event.active.data.current?.type === "MenuOptions" && + event.over.data.current?.type === "SurfaceOptions" + ) { + setMenuItems((items) => items.filter((item) => item !== active.id)); + setSurfaceItems((items) => { + const newItems = [ + ...items.filter((item) => item !== placeholderSurfaceItem), + active.id, + ]; + return newItems; + }); + } + } + }; const options = useMemo( () => ({ @@ -90,52 +184,75 @@ export const MessageToolbox = ({ [] ); - const menuOptions = menuItems - ?.map((item) => { - if (item in options && options[item].visible) { - return { - id: options[item].id, - action: options[item].onClick, - label: options[item].label, - icon: options[item].iconName, - }; - } - return null; - }) - .filter((option) => option !== null); + const menuOptions = + menuItems.length > 0 + ? menuItems + ?.map((item) => { + if (item in options && options[item].visible) { + return { + id: options[item].id, + action: options[item].onClick, + label: options[item].label, + icon: options[item].iconName, + }; + } + return null; + }) + .filter((option) => option !== null) + : [{ id: placeholderMenuItem, label: "No items", icon: "plus" }]; - const surfaceOptions = surfaceItems - ?.map((item) => { - if (item in options && options[item].visible) { - return { - id: options[item].id, - onClick: options[item].onClick, - label: options[item].label, - iconName: options[item].iconName, - type: options[item].type, - }; - } - return null; - }) - .filter((option) => option !== null); + const surfaceOptions = + surfaceItems.length > 0 + ? surfaceItems + ?.map((item) => { + if (item in options && options[item].visible) { + return { + id: options[item].id, + onClick: options[item].onClick, + label: options[item].label, + iconName: options[item].iconName, + type: options[item].type, + }; + } + return null; + }) + .filter((option) => option !== null) + : [{ id: placeholderSurfaceItem, label: "No items", iconName: "plus" }]; return ( <> - - {surfaceOptions?.length > 0 && ( - - )} - {menuOptions?.length > 0 && ( - + + + {surfaceOptions?.length > 0 && ( + + )} + {menuOptions?.length > 0 && ( + + )} + + {createPortal( + + {activeSurfaceItem && ( + + )} + {activeMenuItem && } + , + document.body )} - + ); From f529b9968cc25b165302975057a70e2f0d6e2e2c Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 14 Jul 2024 23:13:20 +0530 Subject: [PATCH 029/104] fixed mode --- .../layout_editor/src/views/LayoutEditor.jsx | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/packages/layout_editor/src/views/LayoutEditor.jsx b/packages/layout_editor/src/views/LayoutEditor.jsx index 0807a3293..5df7bf41d 100644 --- a/packages/layout_editor/src/views/LayoutEditor.jsx +++ b/packages/layout_editor/src/views/LayoutEditor.jsx @@ -1,4 +1,4 @@ -import React from "react"; +import React, { useState } from "react"; import DefaultTheme from "../theme/DefaultTheme"; import { Box, ThemeProvider } from "@embeddedchat/ui-elements"; import { styles } from "./LayoutEditor.style"; @@ -6,18 +6,21 @@ import ChatLayout from "./ChatLayout/ChatLayout"; import ChatHeader from "./ChatHeader/ChatHeader"; import GlobalStyles from "./GlobalStyles"; -const LayoutEditor = () => ( - - - - - -
- - -); +const LayoutEditor = () => { + const [mode, setMode] = useState("light"); + return ( + + + + + +
+ + + ); +}; export default LayoutEditor; From 80bede68648a43e3525404539efecd0ab4894c1f Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Mon, 15 Jul 2024 12:35:43 +0530 Subject: [PATCH 030/104] added sensor distance --- .../src/components/SortableMenu/MenuItem.jsx | 1 + .../components/SurfaceMenu/SurfaceItem.jsx | 3 + .../src/views/ChatHeader/ChatHeader.jsx | 101 +++++++++++------- .../ChatInput/ChatInputFormattingToolbar.jsx | 6 +- .../src/views/Message/MessageToolbox.jsx | 6 +- 5 files changed, 77 insertions(+), 40 deletions(-) diff --git a/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx b/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx index 90dc91d68..03b4ec4f5 100644 --- a/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx +++ b/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx @@ -28,6 +28,7 @@ const MenuItem = ({ id, icon, label, action, disabled }) => { const style = { transform: CSS.Transform.toString(transform), transition, + cursor: "move", }; if (isDragging) { diff --git a/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx b/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx index 573bde6ab..694ee5a2d 100644 --- a/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx +++ b/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx @@ -49,6 +49,9 @@ const SurfaceItem = ({ size={size} iconSize="small" color={type} + style={{ + cursor: "move", + }} /> diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx index a86ee89be..483c84a20 100644 --- a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx @@ -123,40 +123,46 @@ const ChatHeader = ({ [] ); - const menuOptions = menuItems.length > 0 - ? menuItems - .map((item) => { - if (item in options && options[item].visible) { - return { - id: options[item].id, - action: options[item].onClick, - label: options[item].label, - icon: options[item].iconName, - }; - } - return null; - }) - .filter((option) => option !== null) - : [{ id: placeholderMenuItem, label: "No items", icon: "plus" }]; + const menuOptions = + menuItems.length > 0 + ? menuItems + .map((item) => { + if (item in options && options[item].visible) { + return { + id: options[item].id, + action: options[item].onClick, + label: options[item].label, + icon: options[item].iconName, + }; + } + return null; + }) + .filter((option) => option !== null) + : [{ id: placeholderMenuItem, label: "No items", icon: "plus" }]; - const surfaceOptions = surfaceItems.length > 0 - ? surfaceItems - .map((item) => { - if (item in options && options[item].visible) { - return { - id: options[item].id, - onClick: options[item].onClick, - label: options[item].label, - iconName: options[item].iconName, - }; - } - return null; - }) - .filter((option) => option !== null) - : [{ id: placeholderSurfaceItem, label: "No items", iconName: "plus" }]; + const surfaceOptions = + surfaceItems.length > 0 + ? surfaceItems + .map((item) => { + if (item in options && options[item].visible) { + return { + id: options[item].id, + onClick: options[item].onClick, + label: options[item].label, + iconName: options[item].iconName, + }; + } + return null; + }) + .filter((option) => option !== null) + : [{ id: placeholderSurfaceItem, label: "No items", iconName: "plus" }]; const sensors = useSensors( - useSensor(PointerSensor), + useSensor(PointerSensor, { + activationConstraint: { + distance: 1.5, + }, + }), useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates, }) @@ -184,28 +190,46 @@ const ChatHeader = ({ const { active, over } = event; if (active.id !== over.id) { - if (event.active.data.current?.type === "SurfaceOptions" && event.over.data.current?.type === "SurfaceOptions") { + if ( + event.active.data.current?.type === "SurfaceOptions" && + event.over.data.current?.type === "SurfaceOptions" + ) { setSurfaceItems((items) => { const oldIndex = items.indexOf(active.id); const newIndex = items.indexOf(over.id); return arrayMove(items, oldIndex, newIndex); }); - } else if (event.active.data.current?.type === "MenuOptions" && event.over.data.current?.type === "MenuOptions") { + } else if ( + event.active.data.current?.type === "MenuOptions" && + event.over.data.current?.type === "MenuOptions" + ) { setMenuItems((items) => { const oldIndex = items.indexOf(active.id); const newIndex = items.indexOf(over.id); return arrayMove(items, oldIndex, newIndex); }); - } else if (event.active.data.current?.type === "SurfaceOptions" && event.over.data.current?.type === "MenuOptions") { + } else if ( + event.active.data.current?.type === "SurfaceOptions" && + event.over.data.current?.type === "MenuOptions" + ) { setSurfaceItems((items) => items.filter((item) => item !== active.id)); setMenuItems((items) => { - const newItems = [...items.filter((item) => item !== placeholderMenuItem), active.id]; + const newItems = [ + ...items.filter((item) => item !== placeholderMenuItem), + active.id, + ]; return newItems; }); - } else if (event.active.data.current?.type === "MenuOptions" && event.over.data.current?.type === "SurfaceOptions") { + } else if ( + event.active.data.current?.type === "MenuOptions" && + event.over.data.current?.type === "SurfaceOptions" + ) { setMenuItems((items) => items.filter((item) => item !== active.id)); setSurfaceItems((items) => { - const newItems = [...items.filter((item) => item !== placeholderSurfaceItem), active.id]; + const newItems = [ + ...items.filter((item) => item !== placeholderSurfaceItem), + active.id, + ]; return newItems; }); } @@ -226,7 +250,8 @@ const ChatHeader = ({ general - diff --git a/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx b/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx index 0b2ef4bb6..5f203fdb0 100644 --- a/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx +++ b/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx @@ -67,7 +67,11 @@ const ChatInputFormattingToolbar = ({ }, []); const sensors = useSensors( - useSensor(PointerSensor), + useSensor(PointerSensor, { + activationConstraint: { + distance: 1.5, + }, + }), useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates, }) diff --git a/packages/layout_editor/src/views/Message/MessageToolbox.jsx b/packages/layout_editor/src/views/Message/MessageToolbox.jsx index 2d08fc2f6..5f8293906 100644 --- a/packages/layout_editor/src/views/Message/MessageToolbox.jsx +++ b/packages/layout_editor/src/views/Message/MessageToolbox.jsx @@ -46,7 +46,11 @@ export const MessageToolbox = ({ const placeholderMenuItem = "placeholder-menu"; const sensors = useSensors( - useSensor(PointerSensor), + useSensor(PointerSensor, { + activationConstraint: { + distance: 1.5, + }, + }), useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates, }) From a45980583a7bd90ac4a632097c2869cef89642bc Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Mon, 15 Jul 2024 16:20:27 +0530 Subject: [PATCH 031/104] added formatter own sortable context --- .../components/SurfaceMenu/SurfaceItem.jsx | 2 +- .../src/views/ChatInput/ChatInput.jsx | 4 +- .../src/views/ChatInput/ChatInput.styles.js | 130 +++++++++++------- ...attingToolbar.jsx => ChatInputToolbar.jsx} | 33 ++++- .../src/views/ChatInput/Formatters.jsx | 80 +++++++++++ 5 files changed, 187 insertions(+), 62 deletions(-) rename packages/layout_editor/src/views/ChatInput/{ChatInputFormattingToolbar.jsx => ChatInputToolbar.jsx} (80%) create mode 100644 packages/layout_editor/src/views/ChatInput/Formatters.jsx diff --git a/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx b/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx index 694ee5a2d..89b318fa5 100644 --- a/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx +++ b/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx @@ -39,7 +39,7 @@ const SurfaceItem = ({ } return ( - + { const styles = useChatInputStyles(); @@ -55,7 +55,7 @@ const ChatInput = () => { /> - diff --git a/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js b/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js index f9be35ba0..c03c61a22 100644 --- a/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js +++ b/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js @@ -4,70 +4,94 @@ import { darken, useTheme } from "@embeddedchat/ui-elements"; export const useChatInputStyles = () => { const { theme, colors } = useTheme(); - const inputWithFormattingBox = css` - border: 1px solid ${colors.border}; - border-radius: ${theme.schemes.radius}; - margin: 0.5rem 2rem 1rem 2rem; - &.focused { - border: ${`1.5px solid ${colors.ring}`}; - } - `; + const styles = { + inputWithFormattingBox: css` + border: 1px solid ${colors.border}; + border-radius: ${theme.schemes.radius}; + margin: 0.5rem 2rem 1rem 2rem; + &.focused { + border: ${`1.5px solid ${colors.ring}`}; + } + `, - const inputBox = css` - display: flex; - align-items: center; - flex-direction: row; - padding: 0.5rem; - `; + inputBox: css` + display: flex; + align-items: center; + flex-direction: row; + padding: 0.5rem; + `, - const textInput = css` - flex: 1; - word-wrap: break-word; - white-space: pre-wrap; - overflow: auto; - overflow-x: hidden; - resize: none; - border: none; - outline: none; - font-size: 14px; - - &:focus { + textInput: css` + flex: 1; + word-wrap: break-word; + white-space: pre-wrap; + overflow: auto; + overflow-x: hidden; + resize: none; border: none; outline: none; - } + font-size: 14px; - &:disabled { - cursor: not-allowed; - } + &:focus { + border: none; + outline: none; + } - &::placeholder { - padding-left: 5px; - } - `; + &:disabled { + cursor: not-allowed; + } - return { - inputWithFormattingBox, - inputBox, - textInput, + &::placeholder { + padding-left: 5px; + } + `, }; + + return styles; }; -export const useChatInputFormattingToolbarStyles = () => { +export const useChatInputToolbarStyles = () => { const { theme, mode, colors } = useTheme(); - const chatFormat = css` - bottom: 0; - padding: 0.2rem; - align-items: center; - background-color: ${mode === "light" - ? darken(colors.background, 0.03) - : colors.secondary}; - display: flex; - position: relative; - flex-direction: row; - gap: 0.375rem; - border-radius: 0 0 ${theme.schemes.radius} ${theme.schemes.radius}; - `; + const styles = { + chatFormat: css` + bottom: 0; + padding: 0.2rem; + align-items: center; + background-color: ${mode === "light" + ? darken(colors.background, 0.03) + : colors.secondary}; + display: flex; + position: relative; + flex-direction: row; + gap: 0.375rem; + border-radius: 0 0 ${theme.schemes.radius} ${theme.schemes.radius}; + `, + }; + + return styles; +}; + +export const useFormatterStyles = () => { + const { theme, colors } = useTheme(); + const styles = { + toolboxContainer: css` + display: flex; + position: absolute; + bottom: 100%; + left: auto; + z-index: ${theme.zIndex.body + 1}; + `, + + toolbox: css` + display: flex; + background-color: ${colors.background}; + box-shadow: 0 0 2px ${colors.foreground}; + gap: 0.25rem; + padding: 0.25rem; + border-radius: ${theme.schemes.radius}; + `, + }; - return { chatFormat }; + return styles; }; diff --git a/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx b/packages/layout_editor/src/views/ChatInput/ChatInputToolbar.jsx similarity index 80% rename from packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx rename to packages/layout_editor/src/views/ChatInput/ChatInputToolbar.jsx index 5f203fdb0..8c18eb71e 100644 --- a/packages/layout_editor/src/views/ChatInput/ChatInputFormattingToolbar.jsx +++ b/packages/layout_editor/src/views/ChatInput/ChatInputToolbar.jsx @@ -1,8 +1,9 @@ -import React, { useMemo, useState } from "react"; +import React, { useEffect, useMemo, useState } from "react"; import { Box } from "@embeddedchat/ui-elements"; -import { useChatInputFormattingToolbarStyles } from "./ChatInput.styles"; +import { useChatInputToolbarStyles } from "./ChatInput.styles"; import SurfaceMenu from "../../components/SurfaceMenu/SurfaceMenu"; import SurfaceItem from "../../components/SurfaceMenu/SurfaceItem"; +import Formatters from "./Formatters"; import { DndContext, closestCenter, @@ -15,15 +16,18 @@ import { import { sortableKeyboardCoordinates, arrayMove } from "@dnd-kit/sortable"; import { createPortal } from "react-dom"; -const ChatInputFormattingToolbar = ({ +const ChatInputToolbar = ({ optionConfig = { surfaceItems: ["emoji", "formatter", "audio", "video", "file"], formatters: ["bold", "italic", "strike", "code", "multiline"], }, }) => { - const styles = useChatInputFormattingToolbarStyles(); + const styles = useChatInputToolbarStyles(); const [surfaceItems, setSurfaceItems] = useState(optionConfig.surfaceItems); + const [formatters, setFormatters] = useState(optionConfig.formatters); const [activeSurfaceItem, setActiveSurfaceItem] = useState(null); + const [formattersVisible, setFormattersVisible] = useState(false); + const placeholderSurfaceItem = "placeholder-surface"; const options = useMemo(() => { @@ -59,7 +63,9 @@ const ChatInputFormattingToolbar = ({ formatter: { label: "Formatter", id: "formatter", - onClick: () => {}, + onClick: () => { + setFormattersVisible((prev) => !prev); + }, iconName: "format-text", visible: true, }, @@ -79,6 +85,9 @@ const ChatInputFormattingToolbar = ({ const handleDragStart = (event) => { if (event.active.data.current?.type === "SurfaceOptions") { + if (options[event.active.id] !== undefined) { + setFormattersVisible(false); + } setActiveSurfaceItem({ id: event.active.id, iconName: event.active.data.current.icon, @@ -101,6 +110,12 @@ const ChatInputFormattingToolbar = ({ const newIndex = items.indexOf(over.id); return arrayMove(items, oldIndex, newIndex); }); + + setFormatters((items) => { + const oldIndex = items.indexOf(active.id); + const newIndex = items.indexOf(over.id); + return arrayMove(items, oldIndex, newIndex); + }); } } }; @@ -145,8 +160,14 @@ const ChatInputFormattingToolbar = ({ , document.body )} + + {formattersVisible && + createPortal( + , + document.getElementById("formatter") + )} ); }; -export default ChatInputFormattingToolbar; +export default ChatInputToolbar; diff --git a/packages/layout_editor/src/views/ChatInput/Formatters.jsx b/packages/layout_editor/src/views/ChatInput/Formatters.jsx new file mode 100644 index 000000000..dcd4ece7f --- /dev/null +++ b/packages/layout_editor/src/views/ChatInput/Formatters.jsx @@ -0,0 +1,80 @@ +import React, { useMemo } from "react"; +import { Box } from "@embeddedchat/ui-elements"; +import { useFormatterStyles } from "./ChatInput.styles"; +import SurfaceMenu from "../../components/SurfaceMenu/SurfaceMenu"; + +const Formatters = ({ formatters }) => { + const styles = useFormatterStyles(); + + const options = useMemo(() => { + return { + bold: { + label: "Bold", + id: "bold", + onClick: () => {}, + iconName: "bold", + visible: true, + }, + italic: { + label: "Italic", + id: "italic", + onClick: () => {}, + iconName: "italic", + visible: true, + }, + strike: { + label: "Strike", + id: "strike", + onClick: () => {}, + iconName: "strike", + visible: true, + }, + code: { + label: "Code", + id: "code", + onClick: () => {}, + iconName: "code", + visible: true, + }, + multiline: { + label: "Multiline", + id: "multiline", + onClick: () => {}, + iconName: "multiline", + visible: true, + }, + }; + }, []); + + const surfaceOptions = useMemo(() => { + return ( + formatters.length > 0 && + formatters + .map((item) => { + if (item === "formatter") { + return options.formatter; + } + if (options[item] && options[item].visible) { + return { + id: options[item].id, + onClick: options[item].onClick, + label: options[item].label, + iconName: options[item].iconName, + }; + } + return null; + }) + .filter((option) => option !== null) + ); + }, [formatters, options]); + + return ( + + + {surfaceOptions?.length > 0 && } + + + ); +}; + +export default Formatters; From 5690dc187af3043c2c72946cdf813d1f72d0f2ea Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Mon, 15 Jul 2024 18:22:46 +0530 Subject: [PATCH 032/104] added conditional check --- packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx | 4 ++-- .../layout_editor/src/views/ChatInput/ChatInputToolbar.jsx | 4 ++-- packages/layout_editor/src/views/Message/MessageToolbox.jsx | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx index 483c84a20..4e0a0026a 100644 --- a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx @@ -187,9 +187,9 @@ const ChatHeader = ({ const handleDragEnd = (event) => { setActiveSurfaceItem(null); setActiveMenuItem(null); - const { active, over } = event; + const { active, over } = event || {}; - if (active.id !== over.id) { + if (active?.id !== over?.id) { if ( event.active.data.current?.type === "SurfaceOptions" && event.over.data.current?.type === "SurfaceOptions" diff --git a/packages/layout_editor/src/views/ChatInput/ChatInputToolbar.jsx b/packages/layout_editor/src/views/ChatInput/ChatInputToolbar.jsx index 8c18eb71e..db0f56ad0 100644 --- a/packages/layout_editor/src/views/ChatInput/ChatInputToolbar.jsx +++ b/packages/layout_editor/src/views/ChatInput/ChatInputToolbar.jsx @@ -98,9 +98,9 @@ const ChatInputToolbar = ({ const handleDragEnd = (event) => { setActiveSurfaceItem(null); - const { active, over } = event; + const { active, over } = event || {}; - if (active.id !== over.id) { + if (active?.id !== over?.id) { if ( event.active.data.current?.type === "SurfaceOptions" && event.over.data.current?.type === "SurfaceOptions" diff --git a/packages/layout_editor/src/views/Message/MessageToolbox.jsx b/packages/layout_editor/src/views/Message/MessageToolbox.jsx index 5f8293906..cf059a8ca 100644 --- a/packages/layout_editor/src/views/Message/MessageToolbox.jsx +++ b/packages/layout_editor/src/views/Message/MessageToolbox.jsx @@ -48,7 +48,7 @@ export const MessageToolbox = ({ const sensors = useSensors( useSensor(PointerSensor, { activationConstraint: { - distance: 1.5, + distance: 1.5, }, }), useSensor(KeyboardSensor, { @@ -75,9 +75,9 @@ export const MessageToolbox = ({ const handleDragEnd = (event) => { setActiveSurfaceItem(null); setActiveMenuItem(null); - const { active, over } = event; + const { active, over } = event || {}; - if (active.id !== over.id) { + if (active?.id !== over?.id) { if ( event.active.data.current?.type === "SurfaceOptions" && event.over.data.current?.type === "SurfaceOptions" From 29435792c20551a53abf7aecd67573c43412f0a2 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Mon, 15 Jul 2024 19:02:07 +0530 Subject: [PATCH 033/104] added cross icon for option deletion --- .../src/components/SortableMenu/Menu.jsx | 2 +- .../components/SortableMenu/Menu.styles.js | 23 ++++++++++- .../src/components/SortableMenu/MenuItem.jsx | 18 +++++++-- .../components/SurfaceMenu/SurfaceItem.jsx | 40 ++++++++++++------- .../SurfaceMenu/SurfaceMenu.styles.js | 25 ++++++++++++ 5 files changed, 88 insertions(+), 20 deletions(-) diff --git a/packages/layout_editor/src/components/SortableMenu/Menu.jsx b/packages/layout_editor/src/components/SortableMenu/Menu.jsx index d3dfd72af..d0a33127f 100644 --- a/packages/layout_editor/src/components/SortableMenu/Menu.jsx +++ b/packages/layout_editor/src/components/SortableMenu/Menu.jsx @@ -23,7 +23,7 @@ const Menu = ({ const positions = from.split(/\s+/); const styleAnchor = {}; positions.forEach((pos) => { - styleAnchor[pos] = "100%"; + styleAnchor[pos] = "120%"; }); return styleAnchor; }, [from]); diff --git a/packages/layout_editor/src/components/SortableMenu/Menu.styles.js b/packages/layout_editor/src/components/SortableMenu/Menu.styles.js index 1a4dc0172..83576a74f 100644 --- a/packages/layout_editor/src/components/SortableMenu/Menu.styles.js +++ b/packages/layout_editor/src/components/SortableMenu/Menu.styles.js @@ -36,7 +36,7 @@ export const getMenuItemStyles = (customTheme) => { display: flex; flex-direction: row; align-items: center; - justify-content: flex-start; + justify-content: space-between; padding: 0.25em 0.75em; white-space: nowrap; gap: 0.2rem; @@ -48,11 +48,32 @@ export const getMenuItemStyles = (customTheme) => { cursor: pointer; } `, + + mainItems: css` + display: flex; + align-items: center; + gap: 0.2rem; + `, + disabled: css` cursor: not-allowed !important; color: ${colors.mutedForeground}; `, + icon: css` + visibility: hidden; + &:hover { + fill: ${colors.destructive}; + } + `, + + showIcon: css` + &:hover .crossIcon { + visibility: visible; + cursor: pointer; + } + `, + dragOverlay: css` padding: 0.5rem 0.75em; border: 1px solid ${colors.border}; diff --git a/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx b/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx index 03b4ec4f5..6d687c485 100644 --- a/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx +++ b/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx @@ -28,7 +28,7 @@ const MenuItem = ({ id, icon, label, action, disabled }) => { const style = { transform: CSS.Transform.toString(transform), transition, - cursor: "move", + cursor: "grab", }; if (isDragging) { @@ -41,11 +41,21 @@ const MenuItem = ({ id, icon, label, action, disabled }) => { style={style} {...attributes} {...listeners} - css={[styles.item, disabled && styles.disabled]} + css={[styles.item, styles.showIcon, disabled && styles.disabled]} onClick={!disabled && action} > - - {label} + + + {label} + + + ); }; diff --git a/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx b/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx index 89b318fa5..876b192ce 100644 --- a/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx +++ b/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx @@ -4,6 +4,7 @@ import { ActionButton, Box, useTheme, + Icon, } from "@embeddedchat/ui-elements"; import { useSortable } from "@dnd-kit/sortable"; import { CSS } from "@dnd-kit/utilities"; @@ -40,20 +41,31 @@ const SurfaceItem = ({ return ( - - - + + + + + + + + ); }; diff --git a/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.styles.js b/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.styles.js index 87984171e..166e24603 100644 --- a/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.styles.js +++ b/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.styles.js @@ -10,6 +10,31 @@ export const getSurfaceItemStyles = (customTheme) => { border: 1px solid ${colors.border}; border-radius: ${theme.schemes.radius}; `, + + itemContainer: css` + &:hover .crossIcon { + visibility: visible; + cursor: pointer; + width: 14px; + height: 14px; + border-radius: 50%; + background: ${colors.secondary}; + border: 1px solid ${colors.border}; + } + `, + + iconBox: css` + position: absolute; + bottom: 60%; + right: 0; + visibility: hidden; + `, + + icon: css` + &:hover { + fill: ${colors.destructive}; + } + `, }; return styles; From 9dfbc2384f5e77b35c95fcf8caaab7b60eb96e29 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Mon, 15 Jul 2024 23:06:03 +0530 Subject: [PATCH 034/104] enabled deletion of otpions --- .../src/components/SortableMenu/Menu.jsx | 3 +- .../src/components/SortableMenu/MenuItem.jsx | 26 ++++++++++------ .../components/SurfaceMenu/SurfaceItem.jsx | 31 +++++++++++++------ .../components/SurfaceMenu/SurfaceMenu.jsx | 9 ++---- .../src/views/ChatHeader/ChatHeader.jsx | 19 ++++++++++-- .../src/views/ChatInput/ChatInputToolbar.jsx | 16 ++++++++-- .../src/views/ChatInput/Formatters.jsx | 6 ++-- .../src/views/Message/MessageToolbox.jsx | 15 ++++++++- 8 files changed, 91 insertions(+), 34 deletions(-) diff --git a/packages/layout_editor/src/components/SortableMenu/Menu.jsx b/packages/layout_editor/src/components/SortableMenu/Menu.jsx index d0a33127f..692cd7e6c 100644 --- a/packages/layout_editor/src/components/SortableMenu/Menu.jsx +++ b/packages/layout_editor/src/components/SortableMenu/Menu.jsx @@ -15,6 +15,7 @@ const Menu = ({ tooltip = { isToolTip: true, position: "bottom", text: "Options" }, from = "top", size = "medium", + ...props }) => { const theme = useTheme(); const styles = getMenuStyles(theme); @@ -45,7 +46,7 @@ const Menu = ({ > {options.map((option, idx) => ( - + ))} diff --git a/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx b/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx index 6d687c485..0c970b261 100644 --- a/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx +++ b/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx @@ -5,7 +5,7 @@ import { getMenuItemStyles } from "./Menu.styles"; import { useSortable } from "@dnd-kit/sortable"; import { CSS } from "@dnd-kit/utilities"; -const MenuItem = ({ id, icon, label, action, disabled }) => { +const MenuItem = ({ id, icon, label, action, disabled, onRemove }) => { const theme = useTheme(); const styles = getMenuItemStyles(theme); @@ -35,6 +35,10 @@ const MenuItem = ({ id, icon, label, action, disabled }) => { return ; } + const handleRemoveItem = (id) => { + if (id !== "placeholder-menu") onRemove(id); + }; + return ( { {label} - - + {id !== "placeholder-menu" && ( + { + handleRemoveItem(id); + }} + /> + )} ); }; diff --git a/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx b/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx index 876b192ce..01148304d 100644 --- a/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx +++ b/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx @@ -15,6 +15,7 @@ const SurfaceItem = ({ label, iconName, onClick, + onRemove, type, position = "bottom", size, @@ -39,6 +40,10 @@ const SurfaceItem = ({ return ; } + const handleRemoveItem = (id) => { + if (id !== "placeholder-surface") onRemove(id); + }; + return ( @@ -55,15 +60,23 @@ const SurfaceItem = ({ cursor: "grab", }} /> - - - + + {id !== "placeholder-surface" && ( + { + handleRemoveItem(id); + }} + > + + + )} diff --git a/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.jsx b/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.jsx index f42799553..aa9ba8a1c 100644 --- a/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.jsx +++ b/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.jsx @@ -2,16 +2,11 @@ import React from "react"; import SurfaceItem from "./SurfaceItem"; import { SortableContext } from "@dnd-kit/sortable"; -const SurfaceMenu = ({ options, tooltipPosition, size = "medium" }) => { +const SurfaceMenu = ({ options, ...props }) => { return ( {options?.map((item, idx) => ( - + ))} ); diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx index 4e0a0026a..eaa27317e 100644 --- a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx @@ -160,7 +160,7 @@ const ChatHeader = ({ const sensors = useSensors( useSensor(PointerSensor, { activationConstraint: { - distance: 1.5, + distance: 1.5, }, }), useSensor(KeyboardSensor, { @@ -236,6 +236,14 @@ const ChatHeader = ({ } }; + const removeSurfaceItem = (idToRemove) => { + setSurfaceItems((items) => items.filter((item) => item !== idToRemove)); + }; + + const removeMenuItem = (idToRemove) => { + setMenuItems((items) => items.filter((item) => item !== idToRemove)); + }; + return ( @@ -267,9 +275,14 @@ const ChatHeader = ({ > {surfaceOptions.length > 0 && ( - + + )} + {menuOptions.length > 0 && ( + )} - {menuOptions.length > 0 && } {createPortal( diff --git a/packages/layout_editor/src/views/ChatInput/ChatInputToolbar.jsx b/packages/layout_editor/src/views/ChatInput/ChatInputToolbar.jsx index db0f56ad0..5ecb17c17 100644 --- a/packages/layout_editor/src/views/ChatInput/ChatInputToolbar.jsx +++ b/packages/layout_editor/src/views/ChatInput/ChatInputToolbar.jsx @@ -141,6 +141,14 @@ const ChatInputToolbar = ({ : [{ id: placeholderSurfaceItem, label: "No items", iconName: "plus" }]; }, [surfaceItems, options]); + const removeSurfaceItem = (idToRemove) => { + setSurfaceItems((items) => items.filter((item) => item !== idToRemove)); + }; + + const removeFormatters = (idToRemove) => { + setFormatters((items) => items.filter((item) => item !== idToRemove)); + }; + return ( {surfaceOptions.length > 0 && ( - + )} @@ -163,7 +175,7 @@ const ChatInputToolbar = ({ {formattersVisible && createPortal( - , + , document.getElementById("formatter") )} diff --git a/packages/layout_editor/src/views/ChatInput/Formatters.jsx b/packages/layout_editor/src/views/ChatInput/Formatters.jsx index dcd4ece7f..c0ebe271a 100644 --- a/packages/layout_editor/src/views/ChatInput/Formatters.jsx +++ b/packages/layout_editor/src/views/ChatInput/Formatters.jsx @@ -3,7 +3,7 @@ import { Box } from "@embeddedchat/ui-elements"; import { useFormatterStyles } from "./ChatInput.styles"; import SurfaceMenu from "../../components/SurfaceMenu/SurfaceMenu"; -const Formatters = ({ formatters }) => { +const Formatters = ({ formatters, ...props }) => { const styles = useFormatterStyles(); const options = useMemo(() => { @@ -71,7 +71,9 @@ const Formatters = ({ formatters }) => { return ( - {surfaceOptions?.length > 0 && } + {surfaceOptions?.length > 0 && ( + + )} ); diff --git a/packages/layout_editor/src/views/Message/MessageToolbox.jsx b/packages/layout_editor/src/views/Message/MessageToolbox.jsx index cf059a8ca..823987653 100644 --- a/packages/layout_editor/src/views/Message/MessageToolbox.jsx +++ b/packages/layout_editor/src/views/Message/MessageToolbox.jsx @@ -223,6 +223,14 @@ export const MessageToolbox = ({ .filter((option) => option !== null) : [{ id: placeholderSurfaceItem, label: "No items", iconName: "plus" }]; + const removeSurfaceItem = (idToRemove) => { + setSurfaceItems((items) => items.filter((item) => item !== idToRemove)); + }; + + const removeMenuItem = (idToRemove) => { + setMenuItems((items) => items.filter((item) => item !== idToRemove)); + }; + return ( <> @@ -234,7 +242,11 @@ export const MessageToolbox = ({ > {surfaceOptions?.length > 0 && ( - + )} {menuOptions?.length > 0 && ( )} From 8a009df7c06c32962ecc37c93cf296cf36232317 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Mon, 15 Jul 2024 23:23:50 +0530 Subject: [PATCH 035/104] fixed removal of noItems --- packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx | 6 ++++-- packages/layout_editor/src/views/Message/MessageToolbox.jsx | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx index eaa27317e..0bff084ae 100644 --- a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx @@ -210,7 +210,8 @@ const ChatHeader = ({ }); } else if ( event.active.data.current?.type === "SurfaceOptions" && - event.over.data.current?.type === "MenuOptions" + event.over.data.current?.type === "MenuOptions" && + active.id !== placeholderSurfaceItem ) { setSurfaceItems((items) => items.filter((item) => item !== active.id)); setMenuItems((items) => { @@ -222,7 +223,8 @@ const ChatHeader = ({ }); } else if ( event.active.data.current?.type === "MenuOptions" && - event.over.data.current?.type === "SurfaceOptions" + event.over.data.current?.type === "SurfaceOptions" && + active.id !== placeholderMenuItem ) { setMenuItems((items) => items.filter((item) => item !== active.id)); setSurfaceItems((items) => { diff --git a/packages/layout_editor/src/views/Message/MessageToolbox.jsx b/packages/layout_editor/src/views/Message/MessageToolbox.jsx index 823987653..4bbfcf525 100644 --- a/packages/layout_editor/src/views/Message/MessageToolbox.jsx +++ b/packages/layout_editor/src/views/Message/MessageToolbox.jsx @@ -98,7 +98,8 @@ export const MessageToolbox = ({ }); } else if ( event.active.data.current?.type === "SurfaceOptions" && - event.over.data.current?.type === "MenuOptions" + event.over.data.current?.type === "MenuOptions" && + active.id !== placeholderSurfaceItem ) { setSurfaceItems((items) => items.filter((item) => item !== active.id)); setMenuItems((items) => { @@ -110,7 +111,8 @@ export const MessageToolbox = ({ }); } else if ( event.active.data.current?.type === "MenuOptions" && - event.over.data.current?.type === "SurfaceOptions" + event.over.data.current?.type === "SurfaceOptions" && + active.id !== placeholderMenuItem ) { setMenuItems((items) => items.filter((item) => item !== active.id)); setSurfaceItems((items) => { From e81fccc4b1bc3989242c8afa44dde25b474a309e Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Mon, 15 Jul 2024 23:30:03 +0530 Subject: [PATCH 036/104] fixed minor issues --- .../src/components/SurfaceMenu/SurfaceItem.jsx | 4 ++-- .../src/views/ChatInput/Formatters.jsx | 16 +++++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx b/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx index 01148304d..1ac42812b 100644 --- a/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx +++ b/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx @@ -17,7 +17,7 @@ const SurfaceItem = ({ onClick, onRemove, type, - position = "bottom", + tooltipPosition = "bottom", size, }) => { const { attributes, listeners, setNodeRef, transform, isDragging } = @@ -47,7 +47,7 @@ const SurfaceItem = ({ return ( - + { }, [formatters, options]); return ( - - - {surfaceOptions?.length > 0 && ( - - )} - - + <> + {surfaceOptions?.length > 0 && ( + + + + + + )} + ); }; From 70f0912d3a8e1015200bc7111516fa164ec655ac Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Tue, 16 Jul 2024 00:05:28 +0530 Subject: [PATCH 037/104] setup demo sidebar --- .../src/views/ChatLayout/ChatLayout.jsx | 37 +++++++------ .../src/views/DemoSidebar/DemoSidebar.jsx | 55 +++++++++++++++++++ .../views/DemoSidebar/DemoSidebar.styles.js | 31 +++++++++++ 3 files changed, 106 insertions(+), 17 deletions(-) create mode 100644 packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx create mode 100644 packages/layout_editor/src/views/DemoSidebar/DemoSidebar.styles.js diff --git a/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx b/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx index 6e37d26e5..3552b0ab8 100644 --- a/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx +++ b/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx @@ -1,22 +1,25 @@ -import React from 'react'; -import { Box } from '@embeddedchat/ui-elements'; -import ChatBody from '../Chatbody/ChatBody'; -import ChatInput from '../ChatInput/ChatInput'; -import styles from './ChatLayout.styles'; +import React from "react"; +import { Box } from "@embeddedchat/ui-elements"; +import ChatBody from "../Chatbody/ChatBody"; +import ChatInput from "../ChatInput/ChatInput"; +import styles from "./ChatLayout.styles"; +import DemoSidebar from "../DemoSidebar/DemoSidebar"; -const ChatLayout = () => ( - - - - -
- +const ChatLayout = () => { + const members = []; + return ( + + + + +
+ - - {/* {showMembers && } - )} */} + + + - -); + ); +}; export default ChatLayout; diff --git a/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx b/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx new file mode 100644 index 000000000..1582833d8 --- /dev/null +++ b/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx @@ -0,0 +1,55 @@ +import React from "react"; +import PropTypes from "prop-types"; +import { Box, Avatar, Icon, Sidebar, Popup } from "@embeddedchat/ui-elements"; +import { css } from "@emotion/react"; +import { useDemoSidebarStyles } from "./DemoSidebar.styles"; + +const DemoSidebar = ({ members, viewType = "Sidebar" }) => { + const ViewComponent = viewType === "Popup" ? Popup : Sidebar; + const styles = useDemoSidebarStyles(); + return ( + + {members.map((member, index) => ( + + + + {member.userStatus && ( + + )} + {member.username} + + + ))} + + ); +}; + +DemoSidebar.propTypes = { + members: PropTypes.arrayOf( + PropTypes.shape({ + avatarUrl: PropTypes.string, + userStatus: PropTypes.string, + username: PropTypes.string.isRequired, + }) + ).isRequired, + viewType: PropTypes.oneOf(["Sidebar", "Popup"]), +}; + +export default DemoSidebar; diff --git a/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.styles.js b/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.styles.js new file mode 100644 index 000000000..3ac6aaf1b --- /dev/null +++ b/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.styles.js @@ -0,0 +1,31 @@ +import { css } from "@emotion/react"; + +export const useDemoSidebarStyles = () => { + const styles = { + container: css` + display: flex; + flex-direction: column; + overflow: auto; + width: 100%; + align-items: center; + justify-content: center; + padding: 0 1rem 1rem; + `, + + itemContainer: css` + width: 100%; + padding-bottom: 8px; + padding-top: 8px; + display: flex; + align-items: center; + `, + + icon: css` + padding: 0.125em; + margin-right: 0.5rem; + align-self: center; + `, + }; + + return styles; +}; From 7b8f1a858d3664d9d09a1a2e35112464c99549c5 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Tue, 16 Jul 2024 00:23:18 +0530 Subject: [PATCH 038/104] added dummy members --- packages/layout_editor/src/data/members.json | 16 ++++++ .../src/views/ChatLayout/ChatLayout.jsx | 2 +- .../src/views/DemoSidebar/DemoSidebar.jsx | 50 ++++++++++--------- 3 files changed, 43 insertions(+), 25 deletions(-) create mode 100644 packages/layout_editor/src/data/members.json diff --git a/packages/layout_editor/src/data/members.json b/packages/layout_editor/src/data/members.json new file mode 100644 index 000000000..a9e6c3570 --- /dev/null +++ b/packages/layout_editor/src/data/members.json @@ -0,0 +1,16 @@ +[ + { + "_id": "a9bAtEYzGoTHvtxws", + "status": "away", + "_updatedAt": "2024-07-15T18:47:50.807Z", + "name": "Sidharth Mohanty", + "username": "sidmohanty11" + }, + { + "_id": "c9bAtEYzGoTHvtxws", + "status": "online", + "_updatedAt": "2024-07-15T18:47:50.807Z", + "name": "Zishan Ahmad", + "username": "spiral_memory" + } +] \ No newline at end of file diff --git a/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx b/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx index 3552b0ab8..cfe675bcf 100644 --- a/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx +++ b/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx @@ -4,9 +4,9 @@ import ChatBody from "../Chatbody/ChatBody"; import ChatInput from "../ChatInput/ChatInput"; import styles from "./ChatLayout.styles"; import DemoSidebar from "../DemoSidebar/DemoSidebar"; +import members from "../../data/members.json"; const ChatLayout = () => { - const members = []; return ( diff --git a/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx b/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx index 1582833d8..054a31a6c 100644 --- a/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx +++ b/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx @@ -1,6 +1,6 @@ import React from "react"; import PropTypes from "prop-types"; -import { Box, Avatar, Icon, Sidebar, Popup } from "@embeddedchat/ui-elements"; +import { Box, Icon, Sidebar, Popup } from "@embeddedchat/ui-elements"; import { css } from "@emotion/react"; import { useDemoSidebarStyles } from "./DemoSidebar.styles"; @@ -13,30 +13,32 @@ const DemoSidebar = ({ members, viewType = "Sidebar" }) => { iconName="members" {...(viewType === "Popup" ? { isPopupHeader: true } : {})} > - {members.map((member, index) => ( - - - - {member.userStatus && ( - - )} - {member.username} + + {members.map((member, index) => ( + + + + {member.status && ( + + )} + {member.username} + - - ))} + ))} + ); }; From c1ef5164576fc653584ad3fb284cdec2b81f6854 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Tue, 16 Jul 2024 14:21:27 +0530 Subject: [PATCH 039/104] changed use to get for stylings --- .../src/views/ChatHeader/ChatHeader.jsx | 3 +- .../src/views/ChatHeader/ChatHeader.styles.js | 24 +- .../src/views/ChatInput/ChatInput.jsx | 11 +- .../src/views/ChatInput/ChatInput.styles.js | 13 +- .../src/views/ChatInput/ChatInputToolbar.jsx | 8 +- .../src/views/ChatInput/Formatters.jsx | 6 +- .../src/views/ChatLayout/ChatLayout.jsx | 3 +- .../src/views/ChatLayout/ChatLayout.styles.js | 32 +- .../src/views/Chatbody/ChatBody.jsx | 12 +- .../src/views/Chatbody/ChatBody.styles.js | 32 +- .../src/views/DemoSidebar/DemoSidebar.jsx | 4 +- .../views/DemoSidebar/DemoSidebar.styles.js | 2 +- .../layout_editor/src/views/GlobalStyles.jsx | 11 +- .../Message/BubbleVariant/Bubble.styles.js | 10 +- .../Message/BubbleVariant/useBubbleStyles.js | 10 +- .../src/views/Message/Message.jsx | 6 +- .../src/views/Message/Message.styles.js | 503 +++++++++--------- .../views/Message/MessageAvatarContainer.jsx | 6 +- .../src/views/Message/MessageBody.jsx | 3 +- .../views/Message/MessageBodyContainer.jsx | 4 +- .../src/views/Message/MessageDivider.jsx | 18 +- .../src/views/Message/MessageHeader.jsx | 4 +- .../src/views/Message/MessageToolbox.jsx | 6 +- 23 files changed, 360 insertions(+), 371 deletions(-) diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx index 0bff084ae..007024aa5 100644 --- a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx @@ -30,8 +30,7 @@ const ChatHeader = ({ menuItems: ["files", "members", "search", "rInfo", "logout"], }, }) => { - const theme = useTheme(); - const styles = getChatHeaderStyles(theme); + const styles = getChatHeaderStyles(useTheme()); const [surfaceItems, setSurfaceItems] = useState(optionConfig.surfaceItems); const [menuItems, setMenuItems] = useState(optionConfig.menuItems); const [activeSurfaceItem, setActiveSurfaceItem] = useState(null); diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js b/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js index cf06e9685..101837e06 100644 --- a/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js @@ -1,15 +1,7 @@ import { css } from "@emotion/react"; import { darken } from "@embeddedchat/ui-elements"; -const rowCentreAlign = css` - display: flex; - flex-direction: ; - align-items: center; -`; - -export const getChatHeaderStyles = (customTheme) => { - const { theme, mode, colors } = customTheme; - +export const getChatHeaderStyles = ({ theme, mode, colors }) => { const styles = { clearSpacing: css` margin: 0; @@ -17,7 +9,9 @@ export const getChatHeaderStyles = (customTheme) => { `, chatHeaderChild: css` - ${rowCentreAlign} + display: flex; + flex-direction: ; + align-items: center; padding: 0 0.75rem; justify-content: space-between; width: 100%; @@ -36,13 +30,17 @@ export const getChatHeaderStyles = (customTheme) => { `, channelDescription: css` - ${rowCentreAlign} + display: flex; + flex-direction: ; + align-items: center; gap: 0.5rem; `, chatHeaderIconRow: css` - ${rowCentreAlign} - position:relative; + display: flex; + flex-direction: ; + align-items: center; + position: relative; gap: 0.5rem; `, diff --git a/packages/layout_editor/src/views/ChatInput/ChatInput.jsx b/packages/layout_editor/src/views/ChatInput/ChatInput.jsx index ced155b93..de0c4b3be 100644 --- a/packages/layout_editor/src/views/ChatInput/ChatInput.jsx +++ b/packages/layout_editor/src/views/ChatInput/ChatInput.jsx @@ -1,11 +1,11 @@ import React, { useRef } from "react"; import { css } from "@emotion/react"; -import { Box, Input, ActionButton } from "@embeddedchat/ui-elements"; -import { useChatInputStyles } from "./ChatInput.styles"; +import { Box, Input, ActionButton, useTheme } from "@embeddedchat/ui-elements"; +import { getChatInputStyles } from "./ChatInput.styles"; import ChatInputToolbar from "./ChatInputToolbar"; const ChatInput = () => { - const styles = useChatInputStyles(); + const styles = getChatInputStyles(useTheme()); const inputRef = useRef(null); const messageRef = useRef(null); @@ -55,10 +55,7 @@ const ChatInput = () => { /> - + ); diff --git a/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js b/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js index c03c61a22..c38db696c 100644 --- a/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js +++ b/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js @@ -1,9 +1,7 @@ import { css } from "@emotion/react"; -import { darken, useTheme } from "@embeddedchat/ui-elements"; - -export const useChatInputStyles = () => { - const { theme, colors } = useTheme(); +import { darken } from "@embeddedchat/ui-elements"; +export const getChatInputStyles = ({ theme, colors }) => { const styles = { inputWithFormattingBox: css` border: 1px solid ${colors.border}; @@ -50,9 +48,7 @@ export const useChatInputStyles = () => { return styles; }; -export const useChatInputToolbarStyles = () => { - const { theme, mode, colors } = useTheme(); - +export const getChatInputToolbarStyles = ({ theme, mode, colors }) => { const styles = { chatFormat: css` bottom: 0; @@ -72,8 +68,7 @@ export const useChatInputToolbarStyles = () => { return styles; }; -export const useFormatterStyles = () => { - const { theme, colors } = useTheme(); +export const getFormatterStyles = ({ theme, colors }) => { const styles = { toolboxContainer: css` display: flex; diff --git a/packages/layout_editor/src/views/ChatInput/ChatInputToolbar.jsx b/packages/layout_editor/src/views/ChatInput/ChatInputToolbar.jsx index 5ecb17c17..49d1d77ac 100644 --- a/packages/layout_editor/src/views/ChatInput/ChatInputToolbar.jsx +++ b/packages/layout_editor/src/views/ChatInput/ChatInputToolbar.jsx @@ -1,6 +1,6 @@ -import React, { useEffect, useMemo, useState } from "react"; -import { Box } from "@embeddedchat/ui-elements"; -import { useChatInputToolbarStyles } from "./ChatInput.styles"; +import React, { useMemo, useState } from "react"; +import { Box, useTheme } from "@embeddedchat/ui-elements"; +import { getChatInputToolbarStyles } from "./ChatInput.styles"; import SurfaceMenu from "../../components/SurfaceMenu/SurfaceMenu"; import SurfaceItem from "../../components/SurfaceMenu/SurfaceItem"; import Formatters from "./Formatters"; @@ -22,7 +22,7 @@ const ChatInputToolbar = ({ formatters: ["bold", "italic", "strike", "code", "multiline"], }, }) => { - const styles = useChatInputToolbarStyles(); + const styles = getChatInputToolbarStyles(useTheme()); const [surfaceItems, setSurfaceItems] = useState(optionConfig.surfaceItems); const [formatters, setFormatters] = useState(optionConfig.formatters); const [activeSurfaceItem, setActiveSurfaceItem] = useState(null); diff --git a/packages/layout_editor/src/views/ChatInput/Formatters.jsx b/packages/layout_editor/src/views/ChatInput/Formatters.jsx index ac2570638..94f9491b4 100644 --- a/packages/layout_editor/src/views/ChatInput/Formatters.jsx +++ b/packages/layout_editor/src/views/ChatInput/Formatters.jsx @@ -1,10 +1,10 @@ import React, { useMemo } from "react"; -import { Box } from "@embeddedchat/ui-elements"; -import { useFormatterStyles } from "./ChatInput.styles"; +import { Box, useTheme } from "@embeddedchat/ui-elements"; +import { getFormatterStyles } from "./ChatInput.styles"; import SurfaceMenu from "../../components/SurfaceMenu/SurfaceMenu"; const Formatters = ({ formatters, ...props }) => { - const styles = useFormatterStyles(); + const styles = getFormatterStyles(useTheme()); const options = useMemo(() => { return { diff --git a/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx b/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx index cfe675bcf..0fc1000b0 100644 --- a/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx +++ b/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx @@ -2,11 +2,12 @@ import React from "react"; import { Box } from "@embeddedchat/ui-elements"; import ChatBody from "../Chatbody/ChatBody"; import ChatInput from "../ChatInput/ChatInput"; -import styles from "./ChatLayout.styles"; +import { getChatLayoutStyles } from "./ChatLayout.styles"; import DemoSidebar from "../DemoSidebar/DemoSidebar"; import members from "../../data/members.json"; const ChatLayout = () => { + const styles = getChatLayoutStyles(); return ( diff --git a/packages/layout_editor/src/views/ChatLayout/ChatLayout.styles.js b/packages/layout_editor/src/views/ChatLayout/ChatLayout.styles.js index 12a45957b..ddfa382d0 100644 --- a/packages/layout_editor/src/views/ChatLayout/ChatLayout.styles.js +++ b/packages/layout_editor/src/views/ChatLayout/ChatLayout.styles.js @@ -1,18 +1,20 @@ -import { css } from '@emotion/react'; +import { css } from "@emotion/react"; -const styles = { - layout: css` - flex-basis: 100%; - display: flex; - overflow: hidden; - `, +export const getChatLayoutStyles = () => { + const styles = { + layout: css` + flex-basis: 100%; + display: flex; + overflow: hidden; + `, - chatMain: css` - display: flex; - flex-direction: column; - flex-grow: 1; - position: relative; - `, -}; + chatMain: css` + display: flex; + flex-direction: column; + flex-grow: 1; + position: relative; + `, + }; -export default styles; + return styles; +}; diff --git a/packages/layout_editor/src/views/Chatbody/ChatBody.jsx b/packages/layout_editor/src/views/Chatbody/ChatBody.jsx index ccc8790f0..de2fcf78d 100644 --- a/packages/layout_editor/src/views/Chatbody/ChatBody.jsx +++ b/packages/layout_editor/src/views/Chatbody/ChatBody.jsx @@ -1,11 +1,11 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { Box } from '@embeddedchat/ui-elements'; -import { useChatbodyStyles } from './ChatBody.styles'; -import MessageList from '../MessageList/MessageList'; +import React from "react"; +import PropTypes from "prop-types"; +import { Box } from "@embeddedchat/ui-elements"; +import { getChatbodyStyles } from "./ChatBody.styles"; +import MessageList from "../MessageList/MessageList"; const ChatBody = () => { - const styles = useChatbodyStyles(); + const styles = getChatbodyStyles(); return ( diff --git a/packages/layout_editor/src/views/Chatbody/ChatBody.styles.js b/packages/layout_editor/src/views/Chatbody/ChatBody.styles.js index 5ada0d0ca..99321e2eb 100644 --- a/packages/layout_editor/src/views/Chatbody/ChatBody.styles.js +++ b/packages/layout_editor/src/views/Chatbody/ChatBody.styles.js @@ -1,18 +1,20 @@ -import { css } from '@emotion/react'; +import { css } from "@emotion/react"; -export const useChatbodyStyles = () => { - const chatbodyContainer = css` - flex: 1; - word-break: break-all; - overflow: auto; - overflow-x: hidden; - display: flex; - flex-direction: column-reverse; - max-height: 600px; - position: relative; - padding-top: 70px; - margin-top: 0.25rem; - `; +export const getChatbodyStyles = () => { + const styles = { + chatbodyContainer: css` + flex: 1; + word-break: break-all; + overflow: auto; + overflow-x: hidden; + display: flex; + flex-direction: column-reverse; + max-height: 600px; + position: relative; + padding-top: 70px; + margin-top: 0.25rem; + `, + }; - return { chatbodyContainer }; + return styles; }; diff --git a/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx b/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx index 054a31a6c..7e549a2b4 100644 --- a/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx +++ b/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx @@ -2,11 +2,11 @@ import React from "react"; import PropTypes from "prop-types"; import { Box, Icon, Sidebar, Popup } from "@embeddedchat/ui-elements"; import { css } from "@emotion/react"; -import { useDemoSidebarStyles } from "./DemoSidebar.styles"; +import { getDemoSidebarStyles } from "./DemoSidebar.styles"; const DemoSidebar = ({ members, viewType = "Sidebar" }) => { const ViewComponent = viewType === "Popup" ? Popup : Sidebar; - const styles = useDemoSidebarStyles(); + const styles = getDemoSidebarStyles(); return ( { +export const getDemoSidebarStyles = () => { const styles = { container: css` display: flex; diff --git a/packages/layout_editor/src/views/GlobalStyles.jsx b/packages/layout_editor/src/views/GlobalStyles.jsx index d17c40143..72d9e52f6 100644 --- a/packages/layout_editor/src/views/GlobalStyles.jsx +++ b/packages/layout_editor/src/views/GlobalStyles.jsx @@ -1,8 +1,8 @@ -import React from 'react'; -import { css, Global } from '@emotion/react'; -import { useTheme, alpha } from '@embeddedchat/ui-elements'; +import React from "react"; +import { css, Global } from "@emotion/react"; +import { useTheme, alpha } from "@embeddedchat/ui-elements"; -const useStyles = (colors, theme) => css` +const useStyles = ({ colors, theme }) => css` .ec-embedded-chat * { box-sizing: border-box; margin: 0; @@ -39,8 +39,7 @@ const useStyles = (colors, theme) => css` `; const GlobalStyles = () => { - const { theme, colors } = useTheme(); - const styles = useStyles(colors, theme); + const styles = useStyles(useTheme()); return ; }; diff --git a/packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js b/packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js index 576d30d2b..137f36390 100644 --- a/packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js +++ b/packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js @@ -1,11 +1,9 @@ -import { css } from '@emotion/react'; -import { alpha } from '@embeddedchat/ui-elements'; - -export const bubbleStyles = (customTheme) => { - const { theme, colors } = customTheme; +import { css } from "@emotion/react"; +import { alpha } from "@embeddedchat/ui-elements"; +export const bubbleStyles = ({ theme, colors }) => { const styles = { - name: 'bubble', + name: "bubble", messageParent: css` display: flex; gap: 0.25rem; diff --git a/packages/layout_editor/src/views/Message/BubbleVariant/useBubbleStyles.js b/packages/layout_editor/src/views/Message/BubbleVariant/useBubbleStyles.js index 6f3f81f45..4f80b1596 100644 --- a/packages/layout_editor/src/views/Message/BubbleVariant/useBubbleStyles.js +++ b/packages/layout_editor/src/views/Message/BubbleVariant/useBubbleStyles.js @@ -1,10 +1,10 @@ -import { useTheme } from '@embeddedchat/ui-elements'; -import { bubbleStyles, bubbleStylesMe } from './Bubble.styles'; +import { useTheme } from "@embeddedchat/ui-elements"; +import { bubbleStyles, bubbleStylesMe } from "./Bubble.styles"; const useBubbleStyles = (isMe = false) => { - const customTheme = useTheme(); - const styles = bubbleStyles(customTheme); - const meStyles = bubbleStylesMe(customTheme); + const theme = useTheme(); + const styles = bubbleStyles(theme); + const meStyles = bubbleStylesMe(theme); const mergedStyles = {}; diff --git a/packages/layout_editor/src/views/Message/Message.jsx b/packages/layout_editor/src/views/Message/Message.jsx index b033e1fe8..404afb04c 100644 --- a/packages/layout_editor/src/views/Message/Message.jsx +++ b/packages/layout_editor/src/views/Message/Message.jsx @@ -1,7 +1,7 @@ import React from "react"; import PropTypes from "prop-types"; import { format } from "date-fns"; -import { Box } from "@embeddedchat/ui-elements"; +import { Box, useTheme } from "@embeddedchat/ui-elements"; import { Markdown } from "../Markdown"; import MessageHeader from "./MessageHeader"; import { MessageBody } from "./MessageBody"; @@ -9,7 +9,7 @@ import { MessageToolbox } from "./MessageToolbox"; import { MessageDivider } from "./MessageDivider"; import MessageAvatarContainer from "./MessageAvatarContainer"; import MessageBodyContainer from "./MessageBodyContainer"; -import { useMessageStyles } from "./Message.styles"; +import { getMessageStyles } from "./Message.styles"; import useBubbleStyles from "./BubbleVariant/useBubbleStyles"; const Message = ({ @@ -20,7 +20,7 @@ const Message = ({ variantOverrides = "default", }) => { const isMe = message.u.username === "spiral_memory"; - const styles = useMessageStyles(); + const styles = getMessageStyles(useTheme()); const bubbleStyles = useBubbleStyles(isMe); const shouldShowHeader = !sequential; const variantStyles = variantOverrides === "bubble" ? bubbleStyles : {}; diff --git a/packages/layout_editor/src/views/Message/Message.styles.js b/packages/layout_editor/src/views/Message/Message.styles.js index c5f01dd7e..f865d21d6 100644 --- a/packages/layout_editor/src/views/Message/Message.styles.js +++ b/packages/layout_editor/src/views/Message/Message.styles.js @@ -1,200 +1,204 @@ import { css } from "@emotion/react"; -import { lighten, darken, useTheme } from "@embeddedchat/ui-elements"; +import { lighten, darken } from "@embeddedchat/ui-elements"; + +export const getMessageStyles = ({ mode, colors }) => { + const styles = { + main: css` + display: flex; + flex-direction: row; + align-items: flex-start; + padding-top: 0.5rem; + padding-bottom: 0.25rem; + padding-left: 2.25rem; + padding-right: 2.25rem; + color: ${colors.foreground}; + + &:hover { + background-color: ${mode === "light" + ? darken(colors.background, 0.03) + : lighten(colors.background, 1)}; + } + `, + messageEditing: css` + background-color: ${colors.secondary}; + &:hover { + background-color: ${colors.secondary}; + } + `, -export const useMessageStyles = () => { - const { mode, colors } = useTheme(); + pendingMessageBody: css` + opacity: 0.4 !important; + white-space: pre-line; + `, - const main = css` - display: flex; - flex-direction: row; - align-items: flex-start; - padding-top: 0.5rem; - padding-bottom: 0.25rem; - padding-left: 2.25rem; - padding-right: 2.25rem; - color: ${colors.foreground}; - - &:hover { + specialMessage: css` background-color: ${mode === "light" ? darken(colors.background, 0.03) : lighten(colors.background, 1)}; - } - `; - const messageEditing = css` - background-color: ${colors.secondary}; - &:hover { - background-color: ${colors.secondary}; - } - `; - - const pendingMessageBody = css` - opacity: 0.4 !important; - white-space: pre-line; - `; - - const specialMessage = css` - background-color: ${mode === "light" - ? darken(colors.background, 0.03) - : lighten(colors.background, 1)}; - `; + `, + }; - return { main, messageEditing, pendingMessageBody, specialMessage }; + return styles; }; -export const useMessageAvatarContainerStyles = () => { - const { colors } = useTheme(); - - const container = css` - margin: 3px; - width: 2.25em; - max-height: 2.25em; - display: flex; - justify-content: flex-end; - color: ${colors.primary}; - `; - - return { container }; -}; +export const getMessageAvatarContainerStyles = ({ colors }) => { + const styles = { + container: css` + margin: 3px; + width: 2.25em; + max-height: 2.25em; + display: flex; + justify-content: flex-end; + color: ${colors.primary}; + `, + }; -export const MessageBodyStyles = { - messageBody: css` - position: relative; - letter-spacing: 0rem; - font-size: 0.875rem; - font-weight: 400; - line-height: 1.25rem; - flex-shrink: 1; - transition: opacity 0.3s linear; - word-break: break-word; - opacity: 1; - margin-top: 0.125rem; - margin-bottom: 0.125rem; - `, + return styles; }; -export const useMessageDividerStyles = () => { - const { theme, colors } = useTheme(); - - const divider = css` - letter-spacing: 0rem; - font-size: 0.75rem; - font-weight: 700; - line-height: 1rem; - position: relative; - display: flex; - z-index: ${theme.zIndex.divider}; - align-items: center; - margin-top: 0.5rem; - margin-bottom: 0.75rem; - padding-left: 1.25rem; - padding-right: 1.25rem; - `; - - const dividerContent = css` - margin-top: 0.5rem; - margin-bottom: 0.5rem; - padding-left: 0.5rem; - padding-right: 0.5rem; - background-color: ${colors.secondary}; - color: ${colors.secondaryForeground}; - position: absolute; - left: 50%; - transform: translateX(-50%); - border-radius: ${theme.schemes.radius}; - `; - - const bar = css` - display: flex; - justify-content: flex-end; - align-items: center; - flex-grow: 1; - height: 1px; - background-color: ${colors.secondary}; - `; +export const getMessageBodyStyles = () => { + const styles = { + messageBody: css` + position: relative; + letter-spacing: 0rem; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.25rem; + flex-shrink: 1; + transition: opacity 0.3s linear; + word-break: break-word; + opacity: 1; + margin-top: 0.125rem; + margin-bottom: 0.125rem; + `, + }; - return { divider, bar, dividerContent }; + return styles; }; -export const useMessageHeaderStyles = () => { - const { theme, colors } = useTheme(); - - const header = css` - display: flex; - flex-direction: row; - flex-grow: 0; - flex-shrink: 1; - min-width: 1px; - margin-top: 0.125rem; - margin-bottom: 0.125rem; - gap: 0.125rem; - align-items: center; - `; - - const name = css` - letter-spacing: 0rem; - font-size: 0.875rem; - font-weight: 700; - line-height: 1.25rem; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - flex-shrink: 1; - `; - - const userName = css` - color: ${colors.accentForeground}; - font-weight: 700; - letter-spacing: 0rem; - font-size: 0.875rem; - line-height: 1.25rem; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - flex-shrink: 1; - `; +export const getMessageDividerStyles = ({ theme, colors }) => { + const styles = { + divider: css` + letter-spacing: 0rem; + font-size: 0.75rem; + font-weight: 700; + line-height: 1rem; + position: relative; + display: flex; + z-index: ${theme.zIndex.divider}; + align-items: center; + margin-top: 0.5rem; + margin-bottom: 0.75rem; + padding-left: 1.25rem; + padding-right: 1.25rem; + `, + + dividerContent: css` + margin-top: 0.5rem; + margin-bottom: 0.5rem; + padding-left: 0.5rem; + padding-right: 0.5rem; + background-color: ${colors.secondary}; + color: ${colors.secondaryForeground}; + position: absolute; + left: 50%; + transform: translateX(-50%); + border-radius: ${theme.schemes.radius}; + `, + + bar: css` + display: flex; + justify-content: flex-end; + align-items: center; + flex-grow: 1; + height: 1px; + background-color: ${colors.secondary}; + `, + }; - const userRole = css` - letter-spacing: 0rem; - font-size: 0.75rem; - padding: 0 0.25rem; - margin: 0 0.1rem; - border-radius: ${theme.schemes.radius}; - font-weight: 700; - line-height: 1rem; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - background-color: ${colors.secondary}; - `; + return styles; +}; - const userActions = css` - color: ${colors.accentForeground}; - letter-spacing: 0rem; - font-size: 0.875rem; - line-height: 1.25rem; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - flex-shrink: 1; - `; +export const getMessageHeaderStyles = ({ theme, colors }) => { + const styles = { + header: css` + display: flex; + flex-direction: row; + flex-grow: 0; + flex-shrink: 1; + min-width: 1px; + margin-top: 0.125rem; + margin-bottom: 0.125rem; + gap: 0.125rem; + align-items: center; + `, + + name: css` + letter-spacing: 0rem; + font-size: 0.875rem; + font-weight: 700; + line-height: 1.25rem; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + flex-shrink: 1; + `, + + userName: css` + color: ${colors.accentForeground}; + font-weight: 700; + letter-spacing: 0rem; + font-size: 0.875rem; + line-height: 1.25rem; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + flex-shrink: 1; + `, + + userRole: css` + letter-spacing: 0rem; + font-size: 0.75rem; + padding: 0 0.25rem; + margin: 0 0.1rem; + border-radius: ${theme.schemes.radius}; + font-weight: 700; + line-height: 1rem; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + background-color: ${colors.secondary}; + `, + + userActions: css` + color: ${colors.accentForeground}; + letter-spacing: 0rem; + font-size: 0.875rem; + line-height: 1.25rem; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + flex-shrink: 1; + `, + + timestamp: css` + color: ${colors.accentForeground}; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + letter-spacing: 0rem; + font-size: 0.75rem; + font-weight: 400; + line-height: 1rem; + flex-shrink: 0; + margin-left: 0.25rem; + `, + }; - const timestamp = css` - color: ${colors.accentForeground}; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - letter-spacing: 0rem; - font-size: 0.75rem; - font-weight: 400; - line-height: 1rem; - flex-shrink: 0; - margin-left: 0.25rem; - `; - - return { header, name, userRole, userName, timestamp, userActions }; + return styles; }; -export const MessageMetricsStyles = { +export const getMessageMetricsStyles = { metrics: css` display: flex; margin-left: -0.25rem; @@ -220,84 +224,83 @@ export const MessageMetricsStyles = { `, }; -export const useMessageReactionsStyles = () => { - const { colors } = useTheme(); - const container = css` - display: flex; - flex-flow: row wrap; - justify-content: flex-start; - `; +export const getMessageReactionsStyles = ({ colors }) => { + const styles = { + container: css` + display: flex; + flex-flow: row wrap; + justify-content: flex-start; + `, + + reaction: css` + letter-spacing: 0rem; + font-size: 0.6rem; + display: inline-flex; + gap: 0.125rem; + align-items: center; + justify-content: center; + padding: 0.1rem; + margin: 0.125rem; + cursor: pointer; + img.joypixels { + height: 0.75em; + width: 0.75em; + } + p { + margin: 0; + } + border: 1px solid ${colors.border}; + border-radius: 0.2rem; + `, + + reactionMine: css` + background: ${colors.secondary}; + `, + }; - const reaction = css` - letter-spacing: 0rem; - font-size: 0.6rem; - display: inline-flex; - gap: 0.125rem; - align-items: center; - justify-content: center; - padding: 0.1rem; - margin: 0.125rem; - cursor: pointer; - img.joypixels { - height: 0.75em; - width: 0.75em; - } - p { - margin: 0; - } - border: 1px solid ${colors.border}; - border-radius: 0.2rem; - `; - - const reactionMine = css` - background: ${colors.secondary}; - `; - - return { container, reaction, reactionMine }; + return styles; }; -export const useMessageToolboxStyles = () => { - const { theme, colors } = useTheme(); - - const toolboxContainer = css` - display: flex; - position: absolute; - bottom: 100%; - z-index: ${theme.zIndex.body + 1}; - right: 2rem; - `; - - const toolbox = css` - display: flex; - margin-left: -0.25rem; - margin-right: -0.25rem; - margin-top: 0.125rem; - background-color: ${colors.background}; - box-shadow: 0 0 2px ${colors.foreground}; - gap: 0.25rem; - padding: 0.25rem; - border-radius: ${theme.schemes.radius}; - `; - - const emojiPickerStyles = css` - position: absolute; - bottom: 100%; - right: 1.5rem; - `; - - return { - toolboxContainer, - toolbox, - emojiPickerStyles, +export const getMessageToolboxStyles = ({ theme, colors }) => { + const styles = { + toolboxContainer: css` + display: flex; + position: absolute; + bottom: 100%; + z-index: ${theme.zIndex.body + 1}; + right: 2rem; + `, + + toolbox: css` + display: flex; + margin-left: -0.25rem; + margin-right: -0.25rem; + margin-top: 0.125rem; + background-color: ${colors.background}; + box-shadow: 0 0 2px ${colors.foreground}; + gap: 0.25rem; + padding: 0.25rem; + border-radius: ${theme.schemes.radius}; + `, + + emojiPickerStyles: css` + position: absolute; + bottom: 100%; + right: 1.5rem; + `, }; + + return styles; }; -export const useMessageBodyContainerStyles = () => { - const bodyContainer = css` - margin-left: 5px; - position: relative; - width: 100%; - `; +export const getMessageBodyContainerStyles = () => { + const styles = { + bodyContainer: css` + margin-left: 5px; + position: relative; + width: 100%; + `, + }; - return { bodyContainer }; + return styles; }; diff --git a/packages/layout_editor/src/views/Message/MessageAvatarContainer.jsx b/packages/layout_editor/src/views/Message/MessageAvatarContainer.jsx index 15f7a36a3..9a9ee65e3 100644 --- a/packages/layout_editor/src/views/Message/MessageAvatarContainer.jsx +++ b/packages/layout_editor/src/views/Message/MessageAvatarContainer.jsx @@ -1,9 +1,9 @@ import React from "react"; -import { Box, Icon } from "@embeddedchat/ui-elements"; -import { useMessageAvatarContainerStyles } from "./Message.styles"; +import { Box, Icon, useTheme } from "@embeddedchat/ui-elements"; +import { getMessageAvatarContainerStyles } from "./Message.styles"; const MessageAvatarContainer = ({ message, sequential }) => { - const styles = useMessageAvatarContainerStyles(); + const styles = getMessageAvatarContainerStyles(useTheme()); return ( diff --git a/packages/layout_editor/src/views/Message/MessageBody.jsx b/packages/layout_editor/src/views/Message/MessageBody.jsx index 7c7a5df62..d0eb14658 100644 --- a/packages/layout_editor/src/views/Message/MessageBody.jsx +++ b/packages/layout_editor/src/views/Message/MessageBody.jsx @@ -1,6 +1,6 @@ import React from "react"; import { Box } from "@embeddedchat/ui-elements"; -import { MessageBodyStyles as styles } from "./Message.styles"; +import { getMessageBodyStyles } from "./Message.styles"; export const MessageBody = ({ children, @@ -10,6 +10,7 @@ export const MessageBody = ({ lastSequential = false, ...props }) => { + const styles = getMessageBodyStyles(); const messageBodyStyles = (isText ? variantStyles.messageBody : variantStyles.attachmentBody) || styles.messageBody; diff --git a/packages/layout_editor/src/views/Message/MessageBodyContainer.jsx b/packages/layout_editor/src/views/Message/MessageBodyContainer.jsx index 209c86712..c89b53efb 100644 --- a/packages/layout_editor/src/views/Message/MessageBodyContainer.jsx +++ b/packages/layout_editor/src/views/Message/MessageBodyContainer.jsx @@ -1,10 +1,10 @@ import React from "react"; import { Box } from "@embeddedchat/ui-elements"; -import { useMessageBodyContainerStyles } from "./Message.styles"; +import { getMessageBodyContainerStyles } from "./Message.styles"; const MessageBodyContainer = ({ children, variantStyles = {} }) => { - const styles = useMessageBodyContainerStyles(); + const styles = getMessageBodyContainerStyles(); return ( { - - const styles = useMessageDividerStyles(); +export const MessageDivider = ({ children, ...props }) => { + const styles = getMessageDividerStyles(useTheme()); return ( {children && ( diff --git a/packages/layout_editor/src/views/Message/MessageHeader.jsx b/packages/layout_editor/src/views/Message/MessageHeader.jsx index a64f983de..a3dadfb37 100644 --- a/packages/layout_editor/src/views/Message/MessageHeader.jsx +++ b/packages/layout_editor/src/views/Message/MessageHeader.jsx @@ -7,12 +7,12 @@ import { useTheme, appendClassNames, } from "@embeddedchat/ui-elements"; -import { useMessageHeaderStyles } from "./Message.styles"; +import { getMessageHeaderStyles } from "./Message.styles"; import useDisplayNameColor from "../../hooks/useDisplayNameColor"; const MessageHeader = ({ message, variantOverrides }) => { const displayNameVariant = variantOverrides || "Normal"; - const styles = useMessageHeaderStyles(); + const styles = getMessageHeaderStyles(useTheme()); const { colors } = useTheme(); const getDisplayNameColor = useDisplayNameColor(); diff --git a/packages/layout_editor/src/views/Message/MessageToolbox.jsx b/packages/layout_editor/src/views/Message/MessageToolbox.jsx index 4bbfcf525..a4d48cac4 100644 --- a/packages/layout_editor/src/views/Message/MessageToolbox.jsx +++ b/packages/layout_editor/src/views/Message/MessageToolbox.jsx @@ -1,7 +1,7 @@ import React, { useMemo, useState } from "react"; -import { Box } from "@embeddedchat/ui-elements"; +import { Box, useTheme } from "@embeddedchat/ui-elements"; import { Menu } from "../../components/SortableMenu"; -import { useMessageToolboxStyles } from "./Message.styles"; +import { getMessageToolboxStyles } from "./Message.styles"; import SurfaceMenu from "../../components/SurfaceMenu/SurfaceMenu"; import SurfaceItem from "../../components/SurfaceMenu/SurfaceItem"; import MenuItem from "../../components/SortableMenu/MenuItem"; @@ -36,7 +36,7 @@ export const MessageToolbox = ({ ...props }) => { - const styles = useMessageToolboxStyles(); + const styles = getMessageToolboxStyles(useTheme()); const [surfaceItems, setSurfaceItems] = useState(optionConfig.surfaceItems); const [menuItems, setMenuItems] = useState(optionConfig.menuItems); const [activeSurfaceItem, setActiveSurfaceItem] = useState(null); From 871aa6900b2ef735972412cda192f112a290187d Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Tue, 16 Jul 2024 15:25:12 +0530 Subject: [PATCH 040/104] changed eslint config shifted to js project --- packages/layout_editor/.eslintrc.cjs | 11 +- packages/layout_editor/.prettierrc | 4 + packages/layout_editor/README.md | 9 +- packages/layout_editor/package.json | 18 +- packages/layout_editor/src/App.jsx | 4 +- .../src/components/SortableMenu/Menu.jsx | 20 +- .../components/SortableMenu/Menu.styles.js | 10 +- .../src/components/SortableMenu/MenuItem.jsx | 18 +- .../src/components/SortableMenu/index.js | 2 +- .../components/SurfaceMenu/SurfaceItem.jsx | 20 +- .../components/SurfaceMenu/SurfaceMenu.jsx | 6 +- .../SurfaceMenu/SurfaceMenu.styles.js | 6 +- .../src/hooks/useDisplayNameColor.js | 1 - packages/layout_editor/src/main.jsx | 8 +- packages/layout_editor/src/main.tsx | 8 +- .../layout_editor/src/theme/DefaultTheme.js | 124 ++-- .../src/views/ChatHeader/ChatHeader.jsx | 5 +- packages/layout_editor/tests/example.spec.ts | 4 +- packages/layout_editor/tsconfig.json | 26 - packages/layout_editor/tsconfig.node.json | 11 - packages/layout_editor/vite.config.ts | 11 +- packages/react-native/package.json | 2 +- yarn.lock | 696 +++++++++++++++++- 23 files changed, 804 insertions(+), 220 deletions(-) create mode 100644 packages/layout_editor/.prettierrc delete mode 100644 packages/layout_editor/tsconfig.json delete mode 100644 packages/layout_editor/tsconfig.node.json diff --git a/packages/layout_editor/.eslintrc.cjs b/packages/layout_editor/.eslintrc.cjs index ab0963231..bf64d1237 100644 --- a/packages/layout_editor/.eslintrc.cjs +++ b/packages/layout_editor/.eslintrc.cjs @@ -2,17 +2,14 @@ module.exports = { root: true, env: { browser: true, es2020: true }, extends: [ - "eslint:recommended", - "plugin:react/jsx-runtime", - "plugin:@typescript-eslint/recommended", - "plugin:react-hooks/recommended", "plugin:react/recommended", + "plugin:react-hooks/recommended", + "prettier", ], ignorePatterns: ["dist", ".eslintrc.cjs"], - parser: "@typescript-eslint/parser", parserOptions: { ecmaVersion: "latest", sourceType: "module" }, settings: { react: { version: "18.2" } }, - plugins: ["react-refresh", "import"], + plugins: ["react-refresh"], rules: { "react/jsx-no-target-blank": "off", "react-refresh/only-export-components": [ @@ -20,6 +17,6 @@ module.exports = { { allowConstantExport: true }, ], "react/prop-types": "off", - "@typescript-eslint/no-unused-vars": ["warn"], + "react/no-unknown-property": ["error", { ignore: ["css"] }], }, }; diff --git a/packages/layout_editor/.prettierrc b/packages/layout_editor/.prettierrc new file mode 100644 index 000000000..76e396e59 --- /dev/null +++ b/packages/layout_editor/.prettierrc @@ -0,0 +1,4 @@ +{ + "singleQuote": true, + "semi": true +} \ No newline at end of file diff --git a/packages/layout_editor/README.md b/packages/layout_editor/README.md index 181d94ad9..f768e33fc 100644 --- a/packages/layout_editor/README.md +++ b/packages/layout_editor/README.md @@ -1 +1,8 @@ -# E2E EmbeddedChat setup +# React + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh diff --git a/packages/layout_editor/package.json b/packages/layout_editor/package.json index c67c27167..90dd03b21 100644 --- a/packages/layout_editor/package.json +++ b/packages/layout_editor/package.json @@ -5,12 +5,9 @@ "type": "module", "scripts": { "dev": "vite", - "build": "tsc && vite build", - "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview", - "test": "playwright test", - "format": "prettier --write 'src/' ", - "format:check": "prettier --check 'src/' " + "build": "vite build", + "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" }, "dependencies": { "@dnd-kit/core": "^6.1.0", @@ -20,17 +17,12 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@emotion/babel-plugin": "^11.11.0", - "@types/node": "^20.11.19", - "@types/react": "^18.2.55", - "@types/react-dom": "^18.2.19", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@emotion/babel-preset-css-prop": "^11.11.0", "@vitejs/plugin-react": "^4.2.1", "eslint": "^8.56.0", + "eslint-plugin-react": "^7.34.4", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.5", - "typescript": "^5.2.2", "vite": "^5.1.0" } } diff --git a/packages/layout_editor/src/App.jsx b/packages/layout_editor/src/App.jsx index 33a8002f1..0e7bcf715 100644 --- a/packages/layout_editor/src/App.jsx +++ b/packages/layout_editor/src/App.jsx @@ -1,5 +1,5 @@ -import React from "react"; -import LayoutEditor from "./views/LayoutEditor"; +import React from 'react'; +import LayoutEditor from './views/LayoutEditor'; const App = () => { return ; diff --git a/packages/layout_editor/src/components/SortableMenu/Menu.jsx b/packages/layout_editor/src/components/SortableMenu/Menu.jsx index 692cd7e6c..37deccd89 100644 --- a/packages/layout_editor/src/components/SortableMenu/Menu.jsx +++ b/packages/layout_editor/src/components/SortableMenu/Menu.jsx @@ -1,20 +1,20 @@ -import React, { useMemo } from "react"; -import { css } from "@emotion/react"; +import React, { useMemo } from 'react'; +import { css } from '@emotion/react'; import { Box, ActionButton, Tooltip, useTheme, -} from "@embeddedchat/ui-elements"; -import MenuItem from "./MenuItem"; -import { getMenuStyles } from "./Menu.styles"; -import { SortableContext } from "@dnd-kit/sortable"; +} from '@embeddedchat/ui-elements'; +import MenuItem from './MenuItem'; +import { getMenuStyles } from './Menu.styles'; +import { SortableContext } from '@dnd-kit/sortable'; const Menu = ({ options = [], - tooltip = { isToolTip: true, position: "bottom", text: "Options" }, - from = "top", - size = "medium", + tooltip = { isToolTip: true, position: 'bottom', text: 'Options' }, + from = 'top', + size = 'medium', ...props }) => { const theme = useTheme(); @@ -24,7 +24,7 @@ const Menu = ({ const positions = from.split(/\s+/); const styleAnchor = {}; positions.forEach((pos) => { - styleAnchor[pos] = "120%"; + styleAnchor[pos] = '120%'; }); return styleAnchor; }, [from]); diff --git a/packages/layout_editor/src/components/SortableMenu/Menu.styles.js b/packages/layout_editor/src/components/SortableMenu/Menu.styles.js index 83576a74f..0202e392b 100644 --- a/packages/layout_editor/src/components/SortableMenu/Menu.styles.js +++ b/packages/layout_editor/src/components/SortableMenu/Menu.styles.js @@ -1,9 +1,7 @@ -import { css } from "@emotion/react"; -import { lighten, darken } from "@embeddedchat/ui-elements"; - -export const getMenuStyles = (customTheme) => { - const { theme, colors } = customTheme; +import { css } from '@emotion/react'; +import { lighten, darken } from '@embeddedchat/ui-elements'; +export const getMenuStyles = ({ theme, colors }) => { const styles = { wrapper: css` position: relative; @@ -42,7 +40,7 @@ export const getMenuItemStyles = (customTheme) => { gap: 0.2rem; color: ${colors.foreground}; &:hover { - background-color: ${mode === "light" + background-color: ${mode === 'light' ? darken(colors.background, 0.05) : lighten(colors.background, 2)}; cursor: pointer; diff --git a/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx b/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx index 0c970b261..63d94b47d 100644 --- a/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx +++ b/packages/layout_editor/src/components/SortableMenu/MenuItem.jsx @@ -1,9 +1,9 @@ -import React from "react"; -import { Box, Icon, useTheme } from "@embeddedchat/ui-elements"; +import React from 'react'; +import { Box, Icon, useTheme } from '@embeddedchat/ui-elements'; -import { getMenuItemStyles } from "./Menu.styles"; -import { useSortable } from "@dnd-kit/sortable"; -import { CSS } from "@dnd-kit/utilities"; +import { getMenuItemStyles } from './Menu.styles'; +import { useSortable } from '@dnd-kit/sortable'; +import { CSS } from '@dnd-kit/utilities'; const MenuItem = ({ id, icon, label, action, disabled, onRemove }) => { const theme = useTheme(); @@ -19,7 +19,7 @@ const MenuItem = ({ id, icon, label, action, disabled, onRemove }) => { } = useSortable({ id, data: { - type: "MenuOptions", + type: 'MenuOptions', icon, label, }, @@ -28,7 +28,7 @@ const MenuItem = ({ id, icon, label, action, disabled, onRemove }) => { const style = { transform: CSS.Transform.toString(transform), transition, - cursor: "grab", + cursor: 'grab', }; if (isDragging) { @@ -36,7 +36,7 @@ const MenuItem = ({ id, icon, label, action, disabled, onRemove }) => { } const handleRemoveItem = (id) => { - if (id !== "placeholder-menu") onRemove(id); + if (id !== 'placeholder-menu') onRemove(id); }; return ( @@ -52,7 +52,7 @@ const MenuItem = ({ id, icon, label, action, disabled, onRemove }) => { {label} - {id !== "placeholder-menu" && ( + {id !== 'placeholder-menu' && ( { const { attributes, listeners, setNodeRef, transform, isDragging } = useSortable({ id, data: { - type: "SurfaceOptions", + type: 'SurfaceOptions', icon: iconName, label, }, @@ -41,7 +41,7 @@ const SurfaceItem = ({ } const handleRemoveItem = (id) => { - if (id !== "placeholder-surface") onRemove(id); + if (id !== 'placeholder-surface') onRemove(id); }; return ( @@ -57,11 +57,11 @@ const SurfaceItem = ({ iconSize="small" color={type} style={{ - cursor: "grab", + cursor: 'grab', }} /> - {id !== "placeholder-surface" && ( + {id !== 'placeholder-surface' && ( { diff --git a/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.jsx b/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.jsx index aa9ba8a1c..1aeef53b7 100644 --- a/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.jsx +++ b/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.jsx @@ -1,6 +1,6 @@ -import React from "react"; -import SurfaceItem from "./SurfaceItem"; -import { SortableContext } from "@dnd-kit/sortable"; +import React from 'react'; +import SurfaceItem from './SurfaceItem'; +import { SortableContext } from '@dnd-kit/sortable'; const SurfaceMenu = ({ options, ...props }) => { return ( diff --git a/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.styles.js b/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.styles.js index 166e24603..1d86eaf16 100644 --- a/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.styles.js +++ b/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.styles.js @@ -1,8 +1,6 @@ -import { css } from "@emotion/react"; - -export const getSurfaceItemStyles = (customTheme) => { - const { theme, colors } = customTheme; +import { css } from '@emotion/react'; +export const getSurfaceItemStyles = ({ theme, colors }) => { const styles = { overlayBox: css` width: 24px; diff --git a/packages/layout_editor/src/hooks/useDisplayNameColor.js b/packages/layout_editor/src/hooks/useDisplayNameColor.js index 5e9c32c07..043ca8a89 100644 --- a/packages/layout_editor/src/hooks/useDisplayNameColor.js +++ b/packages/layout_editor/src/hooks/useDisplayNameColor.js @@ -1,4 +1,3 @@ -/* eslint-disable no-bitwise */ import { useTheme } from '@embeddedchat/ui-elements'; const simpleHash = (str) => { diff --git a/packages/layout_editor/src/main.jsx b/packages/layout_editor/src/main.jsx index 569fdf2fd..6f4d6559c 100644 --- a/packages/layout_editor/src/main.jsx +++ b/packages/layout_editor/src/main.jsx @@ -1,8 +1,8 @@ -import React from "react"; -import ReactDOM from "react-dom/client"; -import App from "./App.jsx"; +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import App from './App.jsx'; -ReactDOM.createRoot(document.getElementById("root")).render( +ReactDOM.createRoot(document.getElementById('root')).render( diff --git a/packages/layout_editor/src/main.tsx b/packages/layout_editor/src/main.tsx index 577372105..265922afa 100644 --- a/packages/layout_editor/src/main.tsx +++ b/packages/layout_editor/src/main.tsx @@ -1,8 +1,8 @@ -import React from "react"; -import ReactDOM from "react-dom/client"; -import App from "./App.jsx"; +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import App from './App.jsx'; -ReactDOM.createRoot(document.getElementById("root")!).render( +ReactDOM.createRoot(document.getElementById('root')!).render( diff --git a/packages/layout_editor/src/theme/DefaultTheme.js b/packages/layout_editor/src/theme/DefaultTheme.js index 5392a374f..da20fd7ac 100644 --- a/packages/layout_editor/src/theme/DefaultTheme.js +++ b/packages/layout_editor/src/theme/DefaultTheme.js @@ -1,6 +1,6 @@ const DefaultTheme = { schemes: { - radius: "0.2rem", + radius: '0.2rem', contrastParams: { light: { saturation: 70, @@ -12,62 +12,62 @@ const DefaultTheme = { }, }, common: { - black: "hsl(0, 100%, 0%)", - white: "hsl(0, 100%, 100%)", + black: 'hsl(0, 100%, 0%)', + white: 'hsl(0, 100%, 100%)', }, light: { - background: "hsl(0, 0%, 100%)", - foreground: "hsl(240, 10%, 3.9%)", - card: "hsl(0, 0%, 100%)", - cardForeground: "hsl(240, 10%, 3.9%)", - popover: "hsl(0, 0%, 100%)", - popoverForeground: "hsl(240, 10%, 3.9%)", - primary: "hsl(240, 5.9%, 10%)", - primaryForeground: "hsl(0, 0%, 98%)", - secondary: "hsl(240, 4.8%, 95.9%)", - secondaryForeground: "hsl(240, 5.9%, 10%)", - muted: "hsl(240, 4.8%, 95.9%)", - mutedForeground: "hsl(240, 3.8%, 46.1%)", - accent: "hsl(240, 4.8%, 95.9%)", - accentForeground: "hsl(240, 5.9%, 10%)", - destructive: "hsl(0, 84.2%, 60.2%)", - destructiveForeground: "hsl(0, 0%, 98%)", - border: "hsl(240, 5.9%, 90%)", - input: "hsl(240, 5.9%, 90%)", - ring: "hsl(240, 5.9%, 10%)", - warning: "hsl(38, 92%, 50%)", - warningForeground: "hsl(48, 96%, 89%)", - success: "hsl(91, 60.4%, 81.2%)", - successForeground: "hsl(90, 61.1%, 14.1%)", - info: "hsl(214, 76.4%, 50.2%)", - infoForeground: "hsl(214.3, 77.8%, 92.9%)", + background: 'hsl(0, 0%, 100%)', + foreground: 'hsl(240, 10%, 3.9%)', + card: 'hsl(0, 0%, 100%)', + cardForeground: 'hsl(240, 10%, 3.9%)', + popover: 'hsl(0, 0%, 100%)', + popoverForeground: 'hsl(240, 10%, 3.9%)', + primary: 'hsl(240, 5.9%, 10%)', + primaryForeground: 'hsl(0, 0%, 98%)', + secondary: 'hsl(240, 4.8%, 95.9%)', + secondaryForeground: 'hsl(240, 5.9%, 10%)', + muted: 'hsl(240, 4.8%, 95.9%)', + mutedForeground: 'hsl(240, 3.8%, 46.1%)', + accent: 'hsl(240, 4.8%, 95.9%)', + accentForeground: 'hsl(240, 5.9%, 10%)', + destructive: 'hsl(0, 84.2%, 60.2%)', + destructiveForeground: 'hsl(0, 0%, 98%)', + border: 'hsl(240, 5.9%, 90%)', + input: 'hsl(240, 5.9%, 90%)', + ring: 'hsl(240, 5.9%, 10%)', + warning: 'hsl(38, 92%, 50%)', + warningForeground: 'hsl(48, 96%, 89%)', + success: 'hsl(91, 60.4%, 81.2%)', + successForeground: 'hsl(90, 61.1%, 14.1%)', + info: 'hsl(214, 76.4%, 50.2%)', + infoForeground: 'hsl(214.3, 77.8%, 92.9%)', }, dark: { - background: "hsl(240, 10%, 3.9%)", - foreground: "hsl(0, 0%, 98%)", - card: "hsl(240, 10%, 3.9%)", - cardForeground: "hsl(0, 0%, 98%)", - popover: "hsl(240, 10%, 3.9%)", - popoverForeground: "hsl(0, 0%, 98%)", - primary: "hsl(0, 0%, 98%)", - primaryForeground: "hsl(240, 5.9%, 10%)", - secondary: "hsl(240, 3.7%, 15.9%)", - secondaryForeground: "hsl(0, 0%, 98%)", - muted: "hsl(240, 3.7%, 15.9%)", - mutedForeground: "hsl(240, 5%, 64.9%)", - accent: "hsl(240, 3.7%, 15.9%)", - accentForeground: "hsl(0, 0%, 98%)", - destructive: "hsl(0, 62.8%, 30.6%)", - destructiveForeground: "hsl(0, 0%, 98%)", - border: "hsl(240, 3.7%, 15.9%)", - input: "hsl(240, 3.7%, 15.9%)", - ring: "hsl(240, 4.9%, 83.9%)", - warning: "hsl(48, 96%, 89%)", - warningForeground: "hsl(38, 92%, 50%)", - success: "hsl(90, 61.1%, 14.1%)", - successForeground: "hsl(90, 60%, 90.2%)", - info: "hsl(214.3, 77.8%, 92.9%)", - infoForeground: "hsl(214.4, 75.8%, 19.4%)", + background: 'hsl(240, 10%, 3.9%)', + foreground: 'hsl(0, 0%, 98%)', + card: 'hsl(240, 10%, 3.9%)', + cardForeground: 'hsl(0, 0%, 98%)', + popover: 'hsl(240, 10%, 3.9%)', + popoverForeground: 'hsl(0, 0%, 98%)', + primary: 'hsl(0, 0%, 98%)', + primaryForeground: 'hsl(240, 5.9%, 10%)', + secondary: 'hsl(240, 3.7%, 15.9%)', + secondaryForeground: 'hsl(0, 0%, 98%)', + muted: 'hsl(240, 3.7%, 15.9%)', + mutedForeground: 'hsl(240, 5%, 64.9%)', + accent: 'hsl(240, 3.7%, 15.9%)', + accentForeground: 'hsl(0, 0%, 98%)', + destructive: 'hsl(0, 62.8%, 30.6%)', + destructiveForeground: 'hsl(0, 0%, 98%)', + border: 'hsl(240, 3.7%, 15.9%)', + input: 'hsl(240, 3.7%, 15.9%)', + ring: 'hsl(240, 4.9%, 83.9%)', + warning: 'hsl(48, 96%, 89%)', + warningForeground: 'hsl(38, 92%, 50%)', + success: 'hsl(90, 61.1%, 14.1%)', + successForeground: 'hsl(90, 60%, 90.2%)', + info: 'hsl(214.3, 77.8%, 92.9%)', + infoForeground: 'hsl(214.4, 75.8%, 19.4%)', }, }, @@ -87,34 +87,34 @@ const DefaultTheme = { fontWeightRegular: 400, }, h1: { - fontSize: "2rem", + fontSize: '2rem', fontWeight: 800, }, h2: { - fontSize: "1.5rem", + fontSize: '1.5rem', fontWeight: 800, }, h3: { - fontSize: "1.3rem", + fontSize: '1.3rem', fontWeight: 400, }, h4: { - fontSize: "1rem", + fontSize: '1rem', fontWeight: 400, }, h5: { - fontSize: "0.83rem", + fontSize: '0.83rem', fontWeight: 400, }, h6: { - fontSize: "0.67rem", + fontSize: '0.67rem', fontWeight: 500, }, }, shadows: [ - "none", - "rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px", - "rgba(100, 100, 111, 0.2) 0px 7px 29px 0px", + 'none', + 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', + 'rgba(100, 100, 111, 0.2) 0px 7px 29px 0px', ], zIndex: { divider: 1000, diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx index 007024aa5..4da65a240 100644 --- a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx @@ -259,13 +259,12 @@ const ChatHeader = ({ general - Channel description - +

{ test('EmbeddedChat has a title', async ({ page }) => { await page.goto('/'); - await expect(page.locator('.ec-chat-header--channelName')).toHaveText('Login to chat'); + await expect(page.locator('.ec-chat-header--channelName')).toHaveText( + 'Login to chat' + ); }); test('EmbeddedChat has messages', async ({ page }) => { diff --git a/packages/layout_editor/tsconfig.json b/packages/layout_editor/tsconfig.json deleted file mode 100644 index 1ae247aeb..000000000 --- a/packages/layout_editor/tsconfig.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2020", - "useDefineForClassFields": true, - "lib": ["ES2020", "DOM", "DOM.Iterable"], - "module": "ESNext", - "skipLibCheck": true, - "allowJs": 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/packages/layout_editor/tsconfig.node.json b/packages/layout_editor/tsconfig.node.json deleted file mode 100644 index 97ede7ee6..000000000 --- a/packages/layout_editor/tsconfig.node.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "compilerOptions": { - "composite": true, - "skipLibCheck": true, - "module": "ESNext", - "moduleResolution": "bundler", - "allowSyntheticDefaultImports": true, - "strict": true - }, - "include": ["vite.config.ts"] -} diff --git a/packages/layout_editor/vite.config.ts b/packages/layout_editor/vite.config.ts index 2e2219a6a..f10075223 100644 --- a/packages/layout_editor/vite.config.ts +++ b/packages/layout_editor/vite.config.ts @@ -1,17 +1,14 @@ -import { defineConfig } from "vite"; -import react from "@vitejs/plugin-react"; +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; // https://vitejs.dev/config/ export default defineConfig({ plugins: [ react({ - jsxImportSource: "@emotion/react", + jsxImportSource: '@emotion/react', babel: { - plugins: ["@emotion/babel-plugin"], + plugins: ['@emotion/babel-plugin'], }, }), ], - define: { - "process.env": {}, - }, }); diff --git a/packages/react-native/package.json b/packages/react-native/package.json index 35cd7435e..c68e9bce8 100644 --- a/packages/react-native/package.json +++ b/packages/react-native/package.json @@ -2,7 +2,7 @@ "dependencies": { "@embeddedchat/api": "0.0.2", "@emotion/native": "^11.11.0", - "@emotion/react": "^11.11.1", + "@emotion/react": "11.7.1", "@expo/vector-icons": "^13.0.0", "@gorhom/bottom-sheet": "^4", "@react-native-async-storage/async-storage": "1.17.11", diff --git a/yarn.lock b/yarn.lock index d573d2a32..1a5c60869 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2392,7 +2392,7 @@ __metadata: "@babel/eslint-parser": ^7.22.15 "@embeddedchat/api": 0.0.2 "@emotion/native": ^11.11.0 - "@emotion/react": ^11.11.1 + "@emotion/react": 11.7.1 "@expo/vector-icons": ^13.0.0 "@gorhom/bottom-sheet": ^4 "@react-native-async-storage/async-storage": 1.17.11 @@ -2678,7 +2678,7 @@ __metadata: languageName: node linkType: hard -"@emotion/cache@npm:^11.11.0, @emotion/cache@npm:^11.7.1": +"@emotion/cache@npm:^11.7.1": version: 11.11.0 resolution: "@emotion/cache@npm:11.11.0" dependencies: @@ -2751,27 +2751,6 @@ __metadata: languageName: node linkType: hard -"@emotion/react@npm:^11.11.1": - version: 11.11.1 - resolution: "@emotion/react@npm:11.11.1" - dependencies: - "@babel/runtime": ^7.18.3 - "@emotion/babel-plugin": ^11.11.0 - "@emotion/cache": ^11.11.0 - "@emotion/serialize": ^1.1.2 - "@emotion/use-insertion-effect-with-fallbacks": ^1.0.1 - "@emotion/utils": ^1.2.1 - "@emotion/weak-memoize": ^0.3.1 - hoist-non-react-statics: ^3.3.1 - peerDependencies: - react: ">=16.8.0" - peerDependenciesMeta: - "@types/react": - optional: true - checksum: aec3c36650f5f0d3d4445ff44d73dd88712b1609645b6af3e6d08049cfbc51f1785fe13dea1a1d4ab1b0800d68f2339ab11e459687180362b1ef98863155aae5 - languageName: node - linkType: hard - "@emotion/serialize@npm:^1.0.2, @emotion/serialize@npm:^1.1.2": version: 1.1.2 resolution: "@emotion/serialize@npm:1.1.2" @@ -2799,7 +2778,7 @@ __metadata: languageName: node linkType: hard -"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.0, @emotion/use-insertion-effect-with-fallbacks@npm:^1.0.1": +"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.0": version: 1.0.1 resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.1" peerDependencies: @@ -11327,6 +11306,16 @@ __metadata: languageName: node linkType: hard +"array-buffer-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "array-buffer-byte-length@npm:1.0.1" + dependencies: + call-bind: ^1.0.5 + is-array-buffer: ^3.0.4 + checksum: 53524e08f40867f6a9f35318fafe467c32e45e9c682ba67b11943e167344d2febc0f6977a17e699b05699e805c3e8f073d876f8bbf1b559ed494ad2cd0fae09e + languageName: node + linkType: hard + "array-differ@npm:^3.0.0": version: 3.0.0 resolution: "array-differ@npm:3.0.0" @@ -11361,6 +11350,20 @@ __metadata: languageName: node linkType: hard +"array-includes@npm:^3.1.8": + version: 3.1.8 + resolution: "array-includes@npm:3.1.8" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.2 + es-object-atoms: ^1.0.0 + get-intrinsic: ^1.2.4 + is-string: ^1.0.7 + checksum: eb39ba5530f64e4d8acab39297c11c1c5be2a4ea188ab2b34aba5fb7224d918f77717a9d57a3e2900caaa8440e59431bdaf5c974d5212ef65d97f132e38e2d91 + languageName: node + linkType: hard + "array-union@npm:^2.1.0": version: 2.1.0 resolution: "array-union@npm:2.1.0" @@ -11375,6 +11378,20 @@ __metadata: languageName: node linkType: hard +"array.prototype.findlast@npm:^1.2.5": + version: 1.2.5 + resolution: "array.prototype.findlast@npm:1.2.5" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.2 + es-errors: ^1.3.0 + es-object-atoms: ^1.0.0 + es-shim-unscopables: ^1.0.2 + checksum: 83ce4ad95bae07f136d316f5a7c3a5b911ac3296c3476abe60225bc4a17938bf37541972fcc37dd5adbc99cbb9c928c70bbbfc1c1ce549d41a415144030bb446 + languageName: node + linkType: hard + "array.prototype.findlastindex@npm:^1.2.3": version: 1.2.3 resolution: "array.prototype.findlastindex@npm:1.2.3" @@ -11438,6 +11455,18 @@ __metadata: languageName: node linkType: hard +"array.prototype.toreversed@npm:^1.1.2": + version: 1.1.2 + resolution: "array.prototype.toreversed@npm:1.1.2" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + es-shim-unscopables: ^1.0.0 + checksum: 58598193426282155297bedf950dc8d464624a0d81659822fb73124286688644cb7e0e4927a07f3ab2daaeb6617b647736cc3a5e6ca7ade5bb8e573b284e6240 + languageName: node + linkType: hard + "array.prototype.tosorted@npm:^1.1.1": version: 1.1.2 resolution: "array.prototype.tosorted@npm:1.1.2" @@ -11451,6 +11480,19 @@ __metadata: languageName: node linkType: hard +"array.prototype.tosorted@npm:^1.1.4": + version: 1.1.4 + resolution: "array.prototype.tosorted@npm:1.1.4" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.3 + es-errors: ^1.3.0 + es-shim-unscopables: ^1.0.2 + checksum: e4142d6f556bcbb4f393c02e7dbaea9af8f620c040450c2be137c9cbbd1a17f216b9c688c5f2c08fbb038ab83f55993fa6efdd9a05881d84693c7bcb5422127a + languageName: node + linkType: hard + "arraybuffer.prototype.slice@npm:^1.0.2": version: 1.0.2 resolution: "arraybuffer.prototype.slice@npm:1.0.2" @@ -11466,6 +11508,22 @@ __metadata: languageName: node linkType: hard +"arraybuffer.prototype.slice@npm:^1.0.3": + version: 1.0.3 + resolution: "arraybuffer.prototype.slice@npm:1.0.3" + dependencies: + array-buffer-byte-length: ^1.0.1 + call-bind: ^1.0.5 + define-properties: ^1.2.1 + es-abstract: ^1.22.3 + es-errors: ^1.2.1 + get-intrinsic: ^1.2.3 + is-array-buffer: ^3.0.4 + is-shared-array-buffer: ^1.0.2 + checksum: 352259cba534dcdd969c92ab002efd2ba5025b2e3b9bead3973150edbdf0696c629d7f4b3f061c5931511e8207bdc2306da614703c820b45dabce39e3daf7e3e + languageName: node + linkType: hard + "arrify@npm:^1.0.1": version: 1.0.1 resolution: "arrify@npm:1.0.1" @@ -11646,6 +11704,15 @@ __metadata: languageName: node linkType: hard +"available-typed-arrays@npm:^1.0.7": + version: 1.0.7 + resolution: "available-typed-arrays@npm:1.0.7" + dependencies: + possible-typed-array-names: ^1.0.0 + checksum: 1aa3ffbfe6578276996de660848b6e95669d9a95ad149e3dd0c0cda77db6ee1dbd9d1dd723b65b6d277b882dd0c4b91a654ae9d3cf9e1254b7e93e4908d78fd3 + languageName: node + linkType: hard + "axe-core@npm:=4.7.0": version: 4.7.0 resolution: "axe-core@npm:4.7.0" @@ -12733,6 +12800,19 @@ __metadata: languageName: node linkType: hard +"call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": + version: 1.0.7 + resolution: "call-bind@npm:1.0.7" + dependencies: + es-define-property: ^1.0.0 + es-errors: ^1.3.0 + function-bind: ^1.1.2 + get-intrinsic: ^1.2.4 + set-function-length: ^1.2.1 + checksum: 295c0c62b90dd6522e6db3b0ab1ce26bdf9e7404215bda13cfee25b626b5ff1a7761324d58d38b1ef1607fc65aca2d06e44d2e18d0dfc6c14b465b00d8660029 + languageName: node + linkType: hard + "caller-callsite@npm:^2.0.0": version: 2.0.0 resolution: "caller-callsite@npm:2.0.0" @@ -14297,6 +14377,39 @@ __metadata: languageName: node linkType: hard +"data-view-buffer@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-buffer@npm:1.0.1" + dependencies: + call-bind: ^1.0.6 + es-errors: ^1.3.0 + is-data-view: ^1.0.1 + checksum: ce24348f3c6231223b216da92e7e6a57a12b4af81a23f27eff8feabdf06acfb16c00639c8b705ca4d167f761cfc756e27e5f065d0a1f840c10b907fdaf8b988c + languageName: node + linkType: hard + +"data-view-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-byte-length@npm:1.0.1" + dependencies: + call-bind: ^1.0.7 + es-errors: ^1.3.0 + is-data-view: ^1.0.1 + checksum: dbb3200edcb7c1ef0d68979834f81d64fd8cab2f7691b3a4c6b97e67f22182f3ec2c8602efd7b76997b55af6ff8bce485829c1feda4fa2165a6b71fb7baa4269 + languageName: node + linkType: hard + +"data-view-byte-offset@npm:^1.0.0": + version: 1.0.0 + resolution: "data-view-byte-offset@npm:1.0.0" + dependencies: + call-bind: ^1.0.6 + es-errors: ^1.3.0 + is-data-view: ^1.0.1 + checksum: 7f0bf8720b7414ca719eedf1846aeec392f2054d7af707c5dc9a753cc77eb8625f067fa901e0b5127e831f9da9056138d894b9c2be79c27a21f6db5824f009c2 + languageName: node + linkType: hard + "date-fns@npm:^2.29.1, date-fns@npm:^2.30.0": version: 2.30.0 resolution: "date-fns@npm:2.30.0" @@ -14496,6 +14609,17 @@ __metadata: languageName: node linkType: hard +"define-data-property@npm:^1.1.4": + version: 1.1.4 + resolution: "define-data-property@npm:1.1.4" + dependencies: + es-define-property: ^1.0.0 + es-errors: ^1.3.0 + gopd: ^1.0.1 + checksum: 8068ee6cab694d409ac25936eb861eea704b7763f7f342adbdfe337fc27c78d7ae0eff2364b2917b58c508d723c7a074326d068eef2e45c4edcd85cf94d0313b + languageName: node + linkType: hard + "define-lazy-prop@npm:^2.0.0": version: 2.0.0 resolution: "define-lazy-prop@npm:2.0.0" @@ -15238,6 +15362,60 @@ __metadata: languageName: node linkType: hard +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3": + version: 1.23.3 + resolution: "es-abstract@npm:1.23.3" + dependencies: + array-buffer-byte-length: ^1.0.1 + arraybuffer.prototype.slice: ^1.0.3 + available-typed-arrays: ^1.0.7 + call-bind: ^1.0.7 + data-view-buffer: ^1.0.1 + data-view-byte-length: ^1.0.1 + data-view-byte-offset: ^1.0.0 + es-define-property: ^1.0.0 + es-errors: ^1.3.0 + es-object-atoms: ^1.0.0 + es-set-tostringtag: ^2.0.3 + es-to-primitive: ^1.2.1 + function.prototype.name: ^1.1.6 + get-intrinsic: ^1.2.4 + get-symbol-description: ^1.0.2 + globalthis: ^1.0.3 + gopd: ^1.0.1 + has-property-descriptors: ^1.0.2 + has-proto: ^1.0.3 + has-symbols: ^1.0.3 + hasown: ^2.0.2 + internal-slot: ^1.0.7 + is-array-buffer: ^3.0.4 + is-callable: ^1.2.7 + is-data-view: ^1.0.1 + is-negative-zero: ^2.0.3 + is-regex: ^1.1.4 + is-shared-array-buffer: ^1.0.3 + is-string: ^1.0.7 + is-typed-array: ^1.1.13 + is-weakref: ^1.0.2 + object-inspect: ^1.13.1 + object-keys: ^1.1.1 + object.assign: ^4.1.5 + regexp.prototype.flags: ^1.5.2 + safe-array-concat: ^1.1.2 + safe-regex-test: ^1.0.3 + string.prototype.trim: ^1.2.9 + string.prototype.trimend: ^1.0.8 + string.prototype.trimstart: ^1.0.8 + typed-array-buffer: ^1.0.2 + typed-array-byte-length: ^1.0.1 + typed-array-byte-offset: ^1.0.2 + typed-array-length: ^1.0.6 + unbox-primitive: ^1.0.2 + which-typed-array: ^1.1.15 + checksum: f840cf161224252512f9527306b57117192696571e07920f777cb893454e32999206198b4f075516112af6459daca282826d1735c450528470356d09eff3a9ae + languageName: node + linkType: hard + "es-abstract@npm:^1.22.1": version: 1.22.3 resolution: "es-abstract@npm:1.22.3" @@ -15292,6 +15470,22 @@ __metadata: languageName: node linkType: hard +"es-define-property@npm:^1.0.0": + version: 1.0.0 + resolution: "es-define-property@npm:1.0.0" + dependencies: + get-intrinsic: ^1.2.4 + checksum: f66ece0a887b6dca71848fa71f70461357c0e4e7249696f81bad0a1f347eed7b31262af4a29f5d726dc026426f085483b6b90301855e647aa8e21936f07293c6 + languageName: node + linkType: hard + +"es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: ec1414527a0ccacd7f15f4a3bc66e215f04f595ba23ca75cdae0927af099b5ec865f9f4d33e9d7e86f512f252876ac77d4281a7871531a50678132429b1271b5 + languageName: node + linkType: hard + "es-get-iterator@npm:^1.0.2, es-get-iterator@npm:^1.1.3": version: 1.1.3 resolution: "es-get-iterator@npm:1.1.3" @@ -15331,6 +15525,28 @@ __metadata: languageName: node linkType: hard +"es-iterator-helpers@npm:^1.0.19": + version: 1.0.19 + resolution: "es-iterator-helpers@npm:1.0.19" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.3 + es-errors: ^1.3.0 + es-set-tostringtag: ^2.0.3 + function-bind: ^1.1.2 + get-intrinsic: ^1.2.4 + globalthis: ^1.0.3 + has-property-descriptors: ^1.0.2 + has-proto: ^1.0.3 + has-symbols: ^1.0.3 + internal-slot: ^1.0.7 + iterator.prototype: ^1.1.2 + safe-array-concat: ^1.1.2 + checksum: 7ae112b88359fbaf4b9d7d1d1358ae57c5138768c57ba3a8fb930393662653b0512bfd7917c15890d1471577fb012fee8b73b4465e59b331739e6ee94f961683 + languageName: node + linkType: hard + "es-module-lexer@npm:^1.0.5, es-module-lexer@npm:^1.2.1": version: 1.4.1 resolution: "es-module-lexer@npm:1.4.1" @@ -15345,6 +15561,15 @@ __metadata: languageName: node linkType: hard +"es-object-atoms@npm:^1.0.0": + version: 1.0.0 + resolution: "es-object-atoms@npm:1.0.0" + dependencies: + es-errors: ^1.3.0 + checksum: 26f0ff78ab93b63394e8403c353842b2272836968de4eafe97656adfb8a7c84b9099bf0fe96ed58f4a4cddc860f6e34c77f91649a58a5daa4a9c40b902744e3c + languageName: node + linkType: hard + "es-set-tostringtag@npm:^2.0.1": version: 2.0.2 resolution: "es-set-tostringtag@npm:2.0.2" @@ -15356,7 +15581,18 @@ __metadata: languageName: node linkType: hard -"es-shim-unscopables@npm:^1.0.0": +"es-set-tostringtag@npm:^2.0.3": + version: 2.0.3 + resolution: "es-set-tostringtag@npm:2.0.3" + dependencies: + get-intrinsic: ^1.2.4 + has-tostringtag: ^1.0.2 + hasown: ^2.0.1 + checksum: 7227fa48a41c0ce83e0377b11130d324ac797390688135b8da5c28994c0165be8b252e15cd1de41e1325e5a5412511586960213e88f9ab4a5e7d028895db5129 + languageName: node + linkType: hard + +"es-shim-unscopables@npm:^1.0.0, es-shim-unscopables@npm:^1.0.2": version: 1.0.2 resolution: "es-shim-unscopables@npm:1.0.2" dependencies: @@ -15985,6 +16221,35 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-react@npm:^7.34.4": + version: 7.34.4 + resolution: "eslint-plugin-react@npm:7.34.4" + dependencies: + array-includes: ^3.1.8 + array.prototype.findlast: ^1.2.5 + array.prototype.flatmap: ^1.3.2 + array.prototype.toreversed: ^1.1.2 + array.prototype.tosorted: ^1.1.4 + doctrine: ^2.1.0 + es-iterator-helpers: ^1.0.19 + estraverse: ^5.3.0 + hasown: ^2.0.2 + jsx-ast-utils: ^2.4.1 || ^3.0.0 + minimatch: ^3.1.2 + object.entries: ^1.1.8 + object.fromentries: ^2.0.8 + object.values: ^1.2.0 + prop-types: ^15.8.1 + resolve: ^2.0.0-next.5 + semver: ^6.3.1 + string.prototype.matchall: ^4.0.11 + string.prototype.repeat: ^1.0.0 + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + checksum: 7bb7bdbec4ec628e1f139edbfa25f11ef6db8c92e9970866838bcb6d4dea471519dc0e5a0b3bd763afd1a8715fd54fe7f5317387580ff1e92eeb87eeba13bacf + languageName: node + linkType: hard + "eslint-plugin-storybook@npm:^0.6.12": version: 0.6.15 resolution: "eslint-plugin-storybook@npm:0.6.15" @@ -17589,6 +17854,19 @@ __metadata: languageName: node linkType: hard +"get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": + version: 1.2.4 + resolution: "get-intrinsic@npm:1.2.4" + dependencies: + es-errors: ^1.3.0 + function-bind: ^1.1.2 + has-proto: ^1.0.1 + has-symbols: ^1.0.3 + hasown: ^2.0.0 + checksum: 414e3cdf2c203d1b9d7d33111df746a4512a1aa622770b361dadddf8ed0b5aeb26c560f49ca077e24bfafb0acb55ca908d1f709216ccba33ffc548ec8a79a951 + languageName: node + linkType: hard + "get-nonce@npm:^1.0.0": version: 1.0.1 resolution: "get-nonce@npm:1.0.1" @@ -17685,6 +17963,17 @@ __metadata: languageName: node linkType: hard +"get-symbol-description@npm:^1.0.2": + version: 1.0.2 + resolution: "get-symbol-description@npm:1.0.2" + dependencies: + call-bind: ^1.0.5 + es-errors: ^1.3.0 + get-intrinsic: ^1.2.4 + checksum: e1cb53bc211f9dbe9691a4f97a46837a553c4e7caadd0488dc24ac694db8a390b93edd412b48dcdd0b4bbb4c595de1709effc75fc87c0839deedc6968f5bd973 + languageName: node + linkType: hard + "get-value@npm:^2.0.3, get-value@npm:^2.0.6": version: 2.0.6 resolution: "get-value@npm:2.0.6" @@ -18131,6 +18420,15 @@ __metadata: languageName: node linkType: hard +"has-property-descriptors@npm:^1.0.2": + version: 1.0.2 + resolution: "has-property-descriptors@npm:1.0.2" + dependencies: + es-define-property: ^1.0.0 + checksum: fcbb246ea2838058be39887935231c6d5788babed499d0e9d0cc5737494c48aba4fe17ba1449e0d0fbbb1e36175442faa37f9c427ae357d6ccb1d895fbcd3de3 + languageName: node + linkType: hard + "has-proto@npm:^1.0.1": version: 1.0.1 resolution: "has-proto@npm:1.0.1" @@ -18138,6 +18436,13 @@ __metadata: languageName: node linkType: hard +"has-proto@npm:^1.0.3": + version: 1.0.3 + resolution: "has-proto@npm:1.0.3" + checksum: fe7c3d50b33f50f3933a04413ed1f69441d21d2d2944f81036276d30635cad9279f6b43bc8f32036c31ebdfcf6e731150f46c1907ad90c669ffe9b066c3ba5c4 + languageName: node + linkType: hard + "has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" @@ -18154,6 +18459,15 @@ __metadata: languageName: node linkType: hard +"has-tostringtag@npm:^1.0.2": + version: 1.0.2 + resolution: "has-tostringtag@npm:1.0.2" + dependencies: + has-symbols: ^1.0.3 + checksum: 999d60bb753ad714356b2c6c87b7fb74f32463b8426e159397da4bde5bca7e598ab1073f4d8d4deafac297f2eb311484cd177af242776bf05f0d11565680468d + languageName: node + linkType: hard + "has-unicode@npm:2.0.1, has-unicode@npm:^2.0.1": version: 2.0.1 resolution: "has-unicode@npm:2.0.1" @@ -18230,6 +18544,15 @@ __metadata: languageName: node linkType: hard +"hasown@npm:^2.0.1, hasown@npm:^2.0.2": + version: 2.0.2 + resolution: "hasown@npm:2.0.2" + dependencies: + function-bind: ^1.1.2 + checksum: e8516f776a15149ca6c6ed2ae3110c417a00b62260e222590e54aa367cbcd6ed99122020b37b7fbdf05748df57b265e70095d7bf35a47660587619b15ffb93db + languageName: node + linkType: hard + "he@npm:^1.2.0": version: 1.2.0 resolution: "he@npm:1.2.0" @@ -18970,6 +19293,17 @@ __metadata: languageName: node linkType: hard +"internal-slot@npm:^1.0.7": + version: 1.0.7 + resolution: "internal-slot@npm:1.0.7" + dependencies: + es-errors: ^1.3.0 + hasown: ^2.0.0 + side-channel: ^1.0.4 + checksum: cadc5eea5d7d9bc2342e93aae9f31f04c196afebb11bde97448327049f492cd7081e18623ae71388aac9cd237b692ca3a105be9c68ac39c1dec679d7409e33eb + languageName: node + linkType: hard + "interpret@npm:^2.2.0": version: 2.2.0 resolution: "interpret@npm:2.2.0" @@ -19058,6 +19392,16 @@ __metadata: languageName: node linkType: hard +"is-array-buffer@npm:^3.0.4": + version: 3.0.4 + resolution: "is-array-buffer@npm:3.0.4" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.2.1 + checksum: e4e3e6ef0ff2239e75371d221f74bc3c26a03564a22efb39f6bb02609b598917ddeecef4e8c877df2a25888f247a98198959842a5e73236bc7f22cabdf6351a7 + languageName: node + linkType: hard + "is-arrayish@npm:^0.2.1": version: 0.2.1 resolution: "is-arrayish@npm:0.2.1" @@ -19181,6 +19525,15 @@ __metadata: languageName: node linkType: hard +"is-data-view@npm:^1.0.1": + version: 1.0.1 + resolution: "is-data-view@npm:1.0.1" + dependencies: + is-typed-array: ^1.1.13 + checksum: 4ba4562ac2b2ec005fefe48269d6bd0152785458cd253c746154ffb8a8ab506a29d0cfb3b74af87513843776a88e4981ae25c89457bf640a33748eab1a7216b5 + languageName: node + linkType: hard + "is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": version: 1.0.5 resolution: "is-date-object@npm:1.0.5" @@ -19421,6 +19774,13 @@ __metadata: languageName: node linkType: hard +"is-negative-zero@npm:^2.0.3": + version: 2.0.3 + resolution: "is-negative-zero@npm:2.0.3" + checksum: c1e6b23d2070c0539d7b36022d5a94407132411d01aba39ec549af824231f3804b1aea90b5e4e58e807a65d23ceb538ed6e355ce76b267bdd86edb757ffcbdcd + languageName: node + linkType: hard + "is-number-object@npm:^1.0.4": version: 1.0.7 resolution: "is-number-object@npm:1.0.7" @@ -19567,6 +19927,15 @@ __metadata: languageName: node linkType: hard +"is-shared-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "is-shared-array-buffer@npm:1.0.3" + dependencies: + call-bind: ^1.0.7 + checksum: a4fff602c309e64ccaa83b859255a43bb011145a42d3f56f67d9268b55bc7e6d98a5981a1d834186ad3105d6739d21547083fe7259c76c0468483fc538e716d8 + languageName: node + linkType: hard + "is-ssh@npm:^1.4.0": version: 1.4.0 resolution: "is-ssh@npm:1.4.0" @@ -19642,6 +20011,15 @@ __metadata: languageName: node linkType: hard +"is-typed-array@npm:^1.1.13": + version: 1.1.13 + resolution: "is-typed-array@npm:1.1.13" + dependencies: + which-typed-array: ^1.1.14 + checksum: 150f9ada183a61554c91e1c4290086d2c100b0dff45f60b028519be72a8db964da403c48760723bf5253979b8dffe7b544246e0e5351dcd05c5fdb1dcc1dc0f0 + languageName: node + linkType: hard + "is-typedarray@npm:^1.0.0": version: 1.0.0 resolution: "is-typedarray@npm:1.0.0" @@ -20963,19 +21341,14 @@ __metadata: "@dnd-kit/core": ^6.1.0 "@dnd-kit/sortable": ^8.0.0 "@embeddedchat/ui-elements": "workspace:^" - "@emotion/babel-plugin": ^11.11.0 - "@types/node": ^20.11.19 - "@types/react": ^18.2.55 - "@types/react-dom": ^18.2.19 - "@typescript-eslint/eslint-plugin": ^6.21.0 - "@typescript-eslint/parser": ^6.21.0 + "@emotion/babel-preset-css-prop": ^11.11.0 "@vitejs/plugin-react": ^4.2.1 eslint: ^8.56.0 + eslint-plugin-react: ^7.34.4 eslint-plugin-react-hooks: ^4.6.0 eslint-plugin-react-refresh: ^0.4.5 react: ^18.2.0 react-dom: ^18.2.0 - typescript: ^5.2.2 vite: ^5.1.0 languageName: unknown linkType: soft @@ -24030,6 +24403,18 @@ __metadata: languageName: node linkType: hard +"object.assign@npm:^4.1.5": + version: 4.1.5 + resolution: "object.assign@npm:4.1.5" + dependencies: + call-bind: ^1.0.5 + define-properties: ^1.2.1 + has-symbols: ^1.0.3 + object-keys: ^1.1.1 + checksum: f9aeac0541661370a1fc86e6a8065eb1668d3e771f7dbb33ee54578201336c057b21ee61207a186dd42db0c62201d91aac703d20d12a79fc79c353eed44d4e25 + languageName: node + linkType: hard + "object.entries@npm:^1.1.0, object.entries@npm:^1.1.5, object.entries@npm:^1.1.6, object.entries@npm:^1.1.7": version: 1.1.7 resolution: "object.entries@npm:1.1.7" @@ -24041,6 +24426,17 @@ __metadata: languageName: node linkType: hard +"object.entries@npm:^1.1.8": + version: 1.1.8 + resolution: "object.entries@npm:1.1.8" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-object-atoms: ^1.0.0 + checksum: 5314877cb637ef3437a30bba61d9bacdb3ce74bf73ac101518be0633c37840c8cc67407edb341f766e8093b3d7516d5c3358f25adfee4a2c697c0ec4c8491907 + languageName: node + linkType: hard + "object.fromentries@npm:^2.0.0 || ^1.0.0, object.fromentries@npm:^2.0.6, object.fromentries@npm:^2.0.7": version: 2.0.7 resolution: "object.fromentries@npm:2.0.7" @@ -24052,6 +24448,18 @@ __metadata: languageName: node linkType: hard +"object.fromentries@npm:^2.0.8": + version: 2.0.8 + resolution: "object.fromentries@npm:2.0.8" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.2 + es-object-atoms: ^1.0.0 + checksum: 29b2207a2db2782d7ced83f93b3ff5d425f901945f3665ffda1821e30a7253cd1fd6b891a64279976098137ddfa883d748787a6fea53ecdb51f8df8b8cec0ae1 + languageName: node + linkType: hard + "object.getownpropertydescriptors@npm:^2.0.3, object.getownpropertydescriptors@npm:^2.1.2": version: 2.1.7 resolution: "object.getownpropertydescriptors@npm:2.1.7" @@ -24107,6 +24515,17 @@ __metadata: languageName: node linkType: hard +"object.values@npm:^1.2.0": + version: 1.2.0 + resolution: "object.values@npm:1.2.0" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-object-atoms: ^1.0.0 + checksum: 51fef456c2a544275cb1766897f34ded968b22adfc13ba13b5e4815fdaf4304a90d42a3aee114b1f1ede048a4890381d47a5594d84296f2767c6a0364b9da8fa + languageName: node + linkType: hard + "objectorarray@npm:^1.0.5": version: 1.0.5 resolution: "objectorarray@npm:1.0.5" @@ -25110,6 +25529,13 @@ __metadata: languageName: node linkType: hard +"possible-typed-array-names@npm:^1.0.0": + version: 1.0.0 + resolution: "possible-typed-array-names@npm:1.0.0" + checksum: b32d403ece71e042385cc7856385cecf1cd8e144fa74d2f1de40d1e16035dba097bc189715925e79b67bdd1472796ff168d3a90d296356c9c94d272d5b95f3ae + languageName: node + linkType: hard + "postcss-calc@npm:^8.2.3": version: 8.2.4 resolution: "postcss-calc@npm:8.2.4" @@ -26891,6 +27317,18 @@ __metadata: languageName: node linkType: hard +"regexp.prototype.flags@npm:^1.5.2": + version: 1.5.2 + resolution: "regexp.prototype.flags@npm:1.5.2" + dependencies: + call-bind: ^1.0.6 + define-properties: ^1.2.1 + es-errors: ^1.3.0 + set-function-name: ^2.0.1 + checksum: d7f333667d5c564e2d7a97c56c3075d64c722c9bb51b2b4df6822b2e8096d623a5e63088fb4c83df919b6951ef8113841de8b47de7224872fa6838bc5d8a7d64 + languageName: node + linkType: hard + "regexpu-core@npm:^5.3.1": version: 5.3.2 resolution: "regexpu-core@npm:5.3.2" @@ -27118,7 +27556,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^2.0.0-next.4": +"resolve@npm:^2.0.0-next.4, resolve@npm:^2.0.0-next.5": version: 2.0.0-next.5 resolution: "resolve@npm:2.0.0-next.5" dependencies: @@ -27153,7 +27591,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^2.0.0-next.4#~builtin": +"resolve@patch:resolve@^2.0.0-next.4#~builtin, resolve@patch:resolve@^2.0.0-next.5#~builtin": version: 2.0.0-next.5 resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#~builtin::version=2.0.0-next.5&hash=c3c19d" dependencies: @@ -27584,6 +28022,18 @@ __metadata: languageName: node linkType: hard +"safe-array-concat@npm:^1.1.2": + version: 1.1.2 + resolution: "safe-array-concat@npm:1.1.2" + dependencies: + call-bind: ^1.0.7 + get-intrinsic: ^1.2.4 + has-symbols: ^1.0.3 + isarray: ^2.0.5 + checksum: a3b259694754ddfb73ae0663829e396977b99ff21cbe8607f35a469655656da8e271753497e59da8a7575baa94d2e684bea3e10ddd74ba046c0c9b4418ffa0c4 + languageName: node + linkType: hard + "safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": version: 5.1.2 resolution: "safe-buffer@npm:5.1.2" @@ -27623,6 +28073,17 @@ __metadata: languageName: node linkType: hard +"safe-regex-test@npm:^1.0.3": + version: 1.0.3 + resolution: "safe-regex-test@npm:1.0.3" + dependencies: + call-bind: ^1.0.6 + es-errors: ^1.3.0 + is-regex: ^1.1.4 + checksum: 6c7d392ff1ae7a3ae85273450ed02d1d131f1d2c76e177d6b03eb88e6df8fa062639070e7d311802c1615f351f18dc58f9454501c58e28d5ffd9b8f502ba6489 + languageName: node + linkType: hard + "safe-regex@npm:^1.1.0": version: 1.1.0 resolution: "safe-regex@npm:1.1.0" @@ -27937,6 +28398,20 @@ __metadata: languageName: node linkType: hard +"set-function-length@npm:^1.2.1": + version: 1.2.2 + resolution: "set-function-length@npm:1.2.2" + dependencies: + define-data-property: ^1.1.4 + es-errors: ^1.3.0 + function-bind: ^1.1.2 + get-intrinsic: ^1.2.4 + gopd: ^1.0.1 + has-property-descriptors: ^1.0.2 + checksum: a8248bdacdf84cb0fab4637774d9fb3c7a8e6089866d04c817583ff48e14149c87044ce683d7f50759a8c50fb87c7a7e173535b06169c87ef76f5fb276dfff72 + languageName: node + linkType: hard + "set-function-name@npm:^2.0.0, set-function-name@npm:^2.0.1": version: 2.0.1 resolution: "set-function-name@npm:2.0.1" @@ -27948,6 +28423,18 @@ __metadata: languageName: node linkType: hard +"set-function-name@npm:^2.0.2": + version: 2.0.2 + resolution: "set-function-name@npm:2.0.2" + dependencies: + define-data-property: ^1.1.4 + es-errors: ^1.3.0 + functions-have-names: ^1.2.3 + has-property-descriptors: ^1.0.2 + checksum: d6229a71527fd0404399fc6227e0ff0652800362510822a291925c9d7b48a1ca1a468b11b281471c34cd5a2da0db4f5d7ff315a61d26655e77f6e971e6d0c80f + languageName: node + linkType: hard + "set-value@npm:^2.0.0, set-value@npm:^2.0.1": version: 2.0.1 resolution: "set-value@npm:2.0.1" @@ -28059,6 +28546,18 @@ __metadata: languageName: node linkType: hard +"side-channel@npm:^1.0.6": + version: 1.0.6 + resolution: "side-channel@npm:1.0.6" + dependencies: + call-bind: ^1.0.7 + es-errors: ^1.3.0 + get-intrinsic: ^1.2.4 + object-inspect: ^1.13.1 + checksum: bfc1afc1827d712271453e91b7cd3878ac0efd767495fd4e594c4c2afaa7963b7b510e249572bfd54b0527e66e4a12b61b80c061389e129755f34c493aad9b97 + languageName: node + linkType: hard + "signal-exit@npm:3.0.7, signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" @@ -28756,6 +29255,26 @@ __metadata: languageName: node linkType: hard +"string.prototype.matchall@npm:^4.0.11": + version: 4.0.11 + resolution: "string.prototype.matchall@npm:4.0.11" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.2 + es-errors: ^1.3.0 + es-object-atoms: ^1.0.0 + get-intrinsic: ^1.2.4 + gopd: ^1.0.1 + has-symbols: ^1.0.3 + internal-slot: ^1.0.7 + regexp.prototype.flags: ^1.5.2 + set-function-name: ^2.0.2 + side-channel: ^1.0.6 + checksum: 6ac6566ed065c0c8489c91156078ca077db8ff64d683fda97ae652d00c52dfa5f39aaab0a710d8243031a857fd2c7c511e38b45524796764d25472d10d7075ae + languageName: node + linkType: hard + "string.prototype.padend@npm:^3.0.0": version: 3.1.5 resolution: "string.prototype.padend@npm:3.1.5" @@ -28778,6 +29297,16 @@ __metadata: languageName: node linkType: hard +"string.prototype.repeat@npm:^1.0.0": + version: 1.0.0 + resolution: "string.prototype.repeat@npm:1.0.0" + dependencies: + define-properties: ^1.1.3 + es-abstract: ^1.17.5 + checksum: 95dfc514ed7f328d80a066dabbfbbb1615c3e51490351085409db2eb7cbfed7ea29fdadaf277647fbf9f4a1e10e6dd9e95e78c0fd2c4e6bb6723ea6e59401004 + languageName: node + linkType: hard + "string.prototype.trim@npm:^1.2.8": version: 1.2.8 resolution: "string.prototype.trim@npm:1.2.8" @@ -28789,6 +29318,18 @@ __metadata: languageName: node linkType: hard +"string.prototype.trim@npm:^1.2.9": + version: 1.2.9 + resolution: "string.prototype.trim@npm:1.2.9" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.0 + es-object-atoms: ^1.0.0 + checksum: ea2df6ec1e914c9d4e2dc856fa08228e8b1be59b59e50b17578c94a66a176888f417264bb763d4aac638ad3b3dad56e7a03d9317086a178078d131aa293ba193 + languageName: node + linkType: hard + "string.prototype.trimend@npm:^1.0.7": version: 1.0.7 resolution: "string.prototype.trimend@npm:1.0.7" @@ -28800,6 +29341,17 @@ __metadata: languageName: node linkType: hard +"string.prototype.trimend@npm:^1.0.8": + version: 1.0.8 + resolution: "string.prototype.trimend@npm:1.0.8" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-object-atoms: ^1.0.0 + checksum: cc3bd2de08d8968a28787deba9a3cb3f17ca5f9f770c91e7e8fa3e7d47f079bad70fadce16f05dda9f261788be2c6e84a942f618c3bed31e42abc5c1084f8dfd + languageName: node + linkType: hard + "string.prototype.trimstart@npm:^1.0.7": version: 1.0.7 resolution: "string.prototype.trimstart@npm:1.0.7" @@ -28811,6 +29363,17 @@ __metadata: languageName: node linkType: hard +"string.prototype.trimstart@npm:^1.0.8": + version: 1.0.8 + resolution: "string.prototype.trimstart@npm:1.0.8" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-object-atoms: ^1.0.0 + checksum: df1007a7f580a49d692375d996521dc14fd103acda7f3034b3c558a60b82beeed3a64fa91e494e164581793a8ab0ae2f59578a49896a7af6583c1f20472bce96 + languageName: node + linkType: hard + "string_decoder@npm:^1.0.0, string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" @@ -30009,6 +30572,17 @@ __metadata: languageName: node linkType: hard +"typed-array-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "typed-array-buffer@npm:1.0.2" + dependencies: + call-bind: ^1.0.7 + es-errors: ^1.3.0 + is-typed-array: ^1.1.13 + checksum: 02ffc185d29c6df07968272b15d5319a1610817916ec8d4cd670ded5d1efe72901541ff2202fcc622730d8a549c76e198a2f74e312eabbfb712ed907d45cbb0b + languageName: node + linkType: hard + "typed-array-byte-length@npm:^1.0.0": version: 1.0.0 resolution: "typed-array-byte-length@npm:1.0.0" @@ -30021,6 +30595,19 @@ __metadata: languageName: node linkType: hard +"typed-array-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "typed-array-byte-length@npm:1.0.1" + dependencies: + call-bind: ^1.0.7 + for-each: ^0.3.3 + gopd: ^1.0.1 + has-proto: ^1.0.3 + is-typed-array: ^1.1.13 + checksum: f65e5ecd1cf76b1a2d0d6f631f3ea3cdb5e08da106c6703ffe687d583e49954d570cc80434816d3746e18be889ffe53c58bf3e538081ea4077c26a41055b216d + languageName: node + linkType: hard + "typed-array-byte-offset@npm:^1.0.0": version: 1.0.0 resolution: "typed-array-byte-offset@npm:1.0.0" @@ -30034,6 +30621,20 @@ __metadata: languageName: node linkType: hard +"typed-array-byte-offset@npm:^1.0.2": + version: 1.0.2 + resolution: "typed-array-byte-offset@npm:1.0.2" + dependencies: + available-typed-arrays: ^1.0.7 + call-bind: ^1.0.7 + for-each: ^0.3.3 + gopd: ^1.0.1 + has-proto: ^1.0.3 + is-typed-array: ^1.1.13 + checksum: c8645c8794a621a0adcc142e0e2c57b1823bbfa4d590ad2c76b266aa3823895cf7afb9a893bf6685e18454ab1b0241e1a8d885a2d1340948efa4b56add4b5f67 + languageName: node + linkType: hard + "typed-array-length@npm:^1.0.4": version: 1.0.4 resolution: "typed-array-length@npm:1.0.4" @@ -30045,6 +30646,20 @@ __metadata: languageName: node linkType: hard +"typed-array-length@npm:^1.0.6": + version: 1.0.6 + resolution: "typed-array-length@npm:1.0.6" + dependencies: + call-bind: ^1.0.7 + for-each: ^0.3.3 + gopd: ^1.0.1 + has-proto: ^1.0.3 + is-typed-array: ^1.1.13 + possible-typed-array-names: ^1.0.0 + checksum: f0315e5b8f0168c29d390ff410ad13e4d511c78e6006df4a104576844812ee447fcc32daab1f3a76c9ef4f64eff808e134528b5b2439de335586b392e9750e5c + languageName: node + linkType: hard + "typedarray-to-buffer@npm:^3.1.5": version: 3.1.5 resolution: "typedarray-to-buffer@npm:3.1.5" @@ -31265,6 +31880,19 @@ __metadata: languageName: node linkType: hard +"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15": + version: 1.1.15 + resolution: "which-typed-array@npm:1.1.15" + dependencies: + available-typed-arrays: ^1.0.7 + call-bind: ^1.0.7 + for-each: ^0.3.3 + gopd: ^1.0.1 + has-tostringtag: ^1.0.2 + checksum: 65227dcbfadf5677aacc43ec84356d17b5500cb8b8753059bb4397de5cd0c2de681d24e1a7bd575633f976a95f88233abfd6549c2105ef4ebd58af8aa1807c75 + languageName: node + linkType: hard + "which@npm:^1.2.9": version: 1.3.1 resolution: "which@npm:1.3.1" From e2d1a3970dbdd72b749fe02bb342efa1cfb26351 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Tue, 16 Jul 2024 18:58:26 +0530 Subject: [PATCH 041/104] changed sidebar stylings --- .../ui-elements/src/components/Sidebar/Sidebar.stories.js | 2 ++ .../ui-elements/src/components/Sidebar/Sidebar.styles.js | 7 ++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/ui-elements/src/components/Sidebar/Sidebar.stories.js b/packages/ui-elements/src/components/Sidebar/Sidebar.stories.js index c56314685..f03ab4857 100644 --- a/packages/ui-elements/src/components/Sidebar/Sidebar.stories.js +++ b/packages/ui-elements/src/components/Sidebar/Sidebar.stories.js @@ -19,6 +19,7 @@ export const Default = Template.bind({}); Default.args = { title: 'Sidebar Title', iconName: 'menu', + style: { width: '350px' }, onClose: () => console.log('Sidebar closed'), children: ( @@ -36,6 +37,7 @@ export const WithSearch = Template.bind({}); WithSearch.args = { title: 'Sidebar with Search', iconName: 'search', + style: { width: '350px' }, onClose: () => console.log('Sidebar closed'), searchProps: { isSearch: true, placeholder: 'Search...' }, children: ( diff --git a/packages/ui-elements/src/components/Sidebar/Sidebar.styles.js b/packages/ui-elements/src/components/Sidebar/Sidebar.styles.js index 37f3aa459..a60f6a4df 100644 --- a/packages/ui-elements/src/components/Sidebar/Sidebar.styles.js +++ b/packages/ui-elements/src/components/Sidebar/Sidebar.styles.js @@ -5,7 +5,7 @@ const useSidebarStyles = () => { const { theme, colors } = useTheme(); const sidebarContainer = css` - width: 350px; + min-width: 350px; height: 100%; box-shadow: ${theme.shadows[2]}; z-index: ${theme.zIndex.general}; @@ -45,8 +45,9 @@ const useSidebarStyles = () => { const searchContainer = css` display: flex; align-items: center; - justify-content: space-around; + justify-content: space-between; border: 1px solid ${colors.border}; + padding: 0 0.5rem; border-radius: ${theme.schemes.radius}; position: relative; margin: 0 1rem 1rem; @@ -57,7 +58,7 @@ const useSidebarStyles = () => { const textInput = css` border: none; - flex: none; + flex: 1; padding: none; &:focus { outline: none; From 0b9726ebb2216805314b5ff6bb7044e51be9fab5 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Tue, 16 Jul 2024 19:25:47 +0530 Subject: [PATCH 042/104] add showsidebar state to handle layout properly --- .../react/src/hooks/useSetExclusiveState.js | 11 +++++- packages/react/src/store/index.js | 1 + packages/react/src/store/sidebarStore.js | 8 ++++ .../react/src/views/ChatLayout/ChatLayout.js | 38 ++++++++++--------- .../src/views/ChatLayout/ChatLayout.styles.js | 8 +++- .../views/RoomMembers/RoomMembers.styles.js | 1 - 6 files changed, 46 insertions(+), 21 deletions(-) create mode 100644 packages/react/src/store/sidebarStore.js diff --git a/packages/react/src/hooks/useSetExclusiveState.js b/packages/react/src/hooks/useSetExclusiveState.js index 23ab5d9e3..9a59fdb41 100644 --- a/packages/react/src/hooks/useSetExclusiveState.js +++ b/packages/react/src/hooks/useSetExclusiveState.js @@ -9,9 +9,11 @@ import { usePinnedMessageStore, useStarredMessageStore, useFileStore, + useSidebarStore, } from '../store'; const useSetExclusiveState = () => { + const setShowSidebar = useSidebarStore((state) => state.setShowSidebar); const setShowMembers = useMemberStore((state) => state.setShowMembers); const setShowSearch = useSearchMessageStore((state) => state.setShowSearch); const setShowPinned = usePinnedMessageStore((state) => state.setShowPinned); @@ -55,9 +57,16 @@ const useSetExclusiveState = () => { ); const setExclusiveState = (activeSetter) => { + let isPanelActive = false; stateSetters.forEach((setter) => { - setter(setter === activeSetter); + if (setter === activeSetter) { + isPanelActive = true; + setter(true); + } else { + setter(false); + } }); + setShowSidebar(isPanelActive); }; return setExclusiveState; diff --git a/packages/react/src/store/index.js b/packages/react/src/store/index.js index 50e0a667c..bddd0bd1d 100644 --- a/packages/react/src/store/index.js +++ b/packages/react/src/store/index.js @@ -10,3 +10,4 @@ export { default as useFileStore } from './fileStore'; export { default as useMentionsStore } from './mentionsStore'; export { default as usePinnedMessageStore } from './pinnedMessageStore'; export { default as useStarredMessageStore } from './starredMessageStore'; +export { default as useSidebarStore } from './sidebarStore'; diff --git a/packages/react/src/store/sidebarStore.js b/packages/react/src/store/sidebarStore.js new file mode 100644 index 000000000..27a1c7f63 --- /dev/null +++ b/packages/react/src/store/sidebarStore.js @@ -0,0 +1,8 @@ +import { create } from 'zustand'; + +const useSidebarStore = create((set) => ({ + showSidebar: false, + setShowSidebar: (showSidebar) => set(() => ({ showSidebar })), +})); + +export default useSidebarStore; diff --git a/packages/react/src/views/ChatLayout/ChatLayout.js b/packages/react/src/views/ChatLayout/ChatLayout.js index 43c13f1a1..6243dc0cc 100644 --- a/packages/react/src/views/ChatLayout/ChatLayout.js +++ b/packages/react/src/views/ChatLayout/ChatLayout.js @@ -11,6 +11,7 @@ import { useMentionsStore, useThreadsMessageStore, useMemberStore, + useSidebarStore, } from '../../store'; import RoomMembers from '../RoomMembers/RoomMember'; @@ -38,6 +39,7 @@ const ChatLayout = () => { const { ECOptions } = useRCContext(); const anonymousMode = ECOptions?.anonymousMode; const showRoles = ECOptions?.anonymousMode; + const showSidebar = useSidebarStore((state) => state.showSidebar); const showMentions = useMentionsStore((state) => state.showMentions); const showAllFiles = useFileStore((state) => state.showAllFiles); const showAllThreads = useThreadsMessageStore( @@ -92,23 +94,25 @@ const ChatLayout = () => {
- - {showMembers && } - {showSearch && } - {showChannelinfo && } - {showAllThreads && } - {showAllFiles && } - {showMentions && } - {showPinned && } - {showStarred && } - {showCurrentUserInfo && } - {uiKitContextualBarOpen && ( - - )} - + {showSidebar && ( + + {showMembers && } + {showSearch && } + {showChannelinfo && } + {showAllThreads && } + {showAllFiles && } + {showMentions && } + {showPinned && } + {showStarred && } + {showCurrentUserInfo && } + {uiKitContextualBarOpen && ( + + )} + + )} {attachmentWindowOpen ? ( data ? ( diff --git a/packages/react/src/views/ChatLayout/ChatLayout.styles.js b/packages/react/src/views/ChatLayout/ChatLayout.styles.js index 12a45957b..3afa72649 100644 --- a/packages/react/src/views/ChatLayout/ChatLayout.styles.js +++ b/packages/react/src/views/ChatLayout/ChatLayout.styles.js @@ -2,17 +2,21 @@ import { css } from '@emotion/react'; const styles = { layout: css` - flex-basis: 100%; display: flex; + height: 100%; overflow: hidden; `, chatMain: css` display: flex; + flex: 1; flex-direction: column; - flex-grow: 1; position: relative; `, + + sidebar: css` + width: 350px; + `, }; export default styles; diff --git a/packages/react/src/views/RoomMembers/RoomMembers.styles.js b/packages/react/src/views/RoomMembers/RoomMembers.styles.js index 728fe0e70..8e5e692e4 100644 --- a/packages/react/src/views/RoomMembers/RoomMembers.styles.js +++ b/packages/react/src/views/RoomMembers/RoomMembers.styles.js @@ -6,7 +6,6 @@ export const useRoomMemberStyles = () => { flex-direction: column; overflow: auto; width: 100%; - align-items: center; justify-content: center; padding: 0 1rem 1rem; `; From e95763220e2474af3e3aa6f7632bed1b97b8139a Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Tue, 16 Jul 2024 19:38:16 +0530 Subject: [PATCH 043/104] sidebar modification --- packages/ui-elements/src/components/Sidebar/Sidebar.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/ui-elements/src/components/Sidebar/Sidebar.js b/packages/ui-elements/src/components/Sidebar/Sidebar.js index c114b02af..695d640b6 100644 --- a/packages/ui-elements/src/components/Sidebar/Sidebar.js +++ b/packages/ui-elements/src/components/Sidebar/Sidebar.js @@ -1,5 +1,6 @@ import React from 'react'; import { Box } from '../Box'; +import { useComponentOverrides } from '../../hooks'; import useSidebarStyles from './Sidebar.styles'; import SidebarHeader from './SidebarHeader'; import SidebarContent from './SidebarContent'; @@ -15,9 +16,14 @@ const Sidebar = ({ style = {}, }) => { const styles = useSidebarStyles(); + const { classNames, styleOverrides } = useComponentOverrides('Sidebar'); return ( - + {children} {footer && {footer}} From fcad6c3456d726e54f3a2c210b6846657d83c9d9 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Tue, 16 Jul 2024 21:59:12 +0530 Subject: [PATCH 044/104] added resizable sidebar --- packages/layout_editor/package.json | 3 +- .../src/views/ChatLayout/ChatLayout.jsx | 58 ++++++++++++++----- .../src/views/ChatLayout/ChatLayout.styles.js | 7 ++- 3 files changed, 48 insertions(+), 20 deletions(-) diff --git a/packages/layout_editor/package.json b/packages/layout_editor/package.json index 90dd03b21..ab36ab4fb 100644 --- a/packages/layout_editor/package.json +++ b/packages/layout_editor/package.json @@ -14,7 +14,8 @@ "@dnd-kit/sortable": "^8.0.0", "@embeddedchat/ui-elements": "workspace:^", "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "react-resizable-panels": "^2.0.20" }, "devDependencies": { "@emotion/babel-preset-css-prop": "^11.11.0", diff --git a/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx b/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx index 0fc1000b0..de62fa66f 100644 --- a/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx +++ b/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx @@ -1,24 +1,50 @@ -import React from "react"; -import { Box } from "@embeddedchat/ui-elements"; -import ChatBody from "../Chatbody/ChatBody"; -import ChatInput from "../ChatInput/ChatInput"; -import { getChatLayoutStyles } from "./ChatLayout.styles"; -import DemoSidebar from "../DemoSidebar/DemoSidebar"; -import members from "../../data/members.json"; +import React, { useState } from 'react'; +import { Box } from '@embeddedchat/ui-elements'; +import { Panel, PanelGroup, PanelResizeHandle } from 'react-resizable-panels'; +import ChatBody from '../Chatbody/ChatBody'; +import ChatInput from '../ChatInput/ChatInput'; +import { getChatLayoutStyles } from './ChatLayout.styles'; +import DemoSidebar from '../DemoSidebar/DemoSidebar'; +import members from '../../data/members.json'; const ChatLayout = () => { const styles = getChatLayoutStyles(); + + const handleResize = (size) => { + const minSize = 26.5; + const maxSize = 60; + const minWidth = 350; + const maxWidth = 796; + + const sidebarWidth = + minWidth + + ((size - minSize) / (maxSize - minSize)) * (maxWidth - minWidth); + + console.log(sidebarWidth); + }; + return ( - - - -
- - - - - + + + + + +
+ + + + + + + + + ); }; diff --git a/packages/layout_editor/src/views/ChatLayout/ChatLayout.styles.js b/packages/layout_editor/src/views/ChatLayout/ChatLayout.styles.js index ddfa382d0..d15c43ae4 100644 --- a/packages/layout_editor/src/views/ChatLayout/ChatLayout.styles.js +++ b/packages/layout_editor/src/views/ChatLayout/ChatLayout.styles.js @@ -1,9 +1,9 @@ -import { css } from "@emotion/react"; +import { css } from '@emotion/react'; export const getChatLayoutStyles = () => { const styles = { layout: css` - flex-basis: 100%; + height: 100%; display: flex; overflow: hidden; `, @@ -11,7 +11,8 @@ export const getChatLayoutStyles = () => { chatMain: css` display: flex; flex-direction: column; - flex-grow: 1; + height: 100%; + flex: 1; position: relative; `, }; From de0b4a06624de6dda8c2f475969e240930bc1b6f Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Tue, 16 Jul 2024 22:03:19 +0530 Subject: [PATCH 045/104] handled menu visibility --- .../src/components/SortableMenu/Menu.jsx | 46 ++++++++++++------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/packages/layout_editor/src/components/SortableMenu/Menu.jsx b/packages/layout_editor/src/components/SortableMenu/Menu.jsx index 37deccd89..7181ff4f0 100644 --- a/packages/layout_editor/src/components/SortableMenu/Menu.jsx +++ b/packages/layout_editor/src/components/SortableMenu/Menu.jsx @@ -1,4 +1,4 @@ -import React, { useMemo } from 'react'; +import React, { useMemo, useState } from 'react'; import { css } from '@emotion/react'; import { Box, @@ -19,6 +19,7 @@ const Menu = ({ }) => { const theme = useTheme(); const styles = getMenuStyles(theme); + const [isMenuVisible, setIsMenuVisible] = useState(false); const anchorStyle = useMemo(() => { const positions = from.split(/\s+/); @@ -29,27 +30,38 @@ const Menu = ({ return styleAnchor; }, [from]); + const handleMenuVisibility = () => { + setIsMenuVisible((prev) => !prev); + }; + return ( - + - - - {options.map((option, idx) => ( - - ))} - - + {isMenuVisible && ( + + + {options.map((option, idx) => ( + + ))} + + + )} ); }; From 80f475deda6b2b9b5e32027ffda02fcd3112acf2 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Tue, 16 Jul 2024 22:13:34 +0530 Subject: [PATCH 046/104] added slight styles to resize handler --- .../layout_editor/src/views/ChatLayout/ChatLayout.jsx | 11 ++++++++--- .../src/views/ChatLayout/ChatLayout.styles.js | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx b/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx index de62fa66f..7e11e51b9 100644 --- a/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx +++ b/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx @@ -1,5 +1,5 @@ import React, { useState } from 'react'; -import { Box } from '@embeddedchat/ui-elements'; +import { Box, useTheme } from '@embeddedchat/ui-elements'; import { Panel, PanelGroup, PanelResizeHandle } from 'react-resizable-panels'; import ChatBody from '../Chatbody/ChatBody'; import ChatInput from '../ChatInput/ChatInput'; @@ -8,7 +8,7 @@ import DemoSidebar from '../DemoSidebar/DemoSidebar'; import members from '../../data/members.json'; const ChatLayout = () => { - const styles = getChatLayoutStyles(); + const styles = getChatLayoutStyles(useTheme()); const handleResize = (size) => { const minSize = 26.5; @@ -33,7 +33,12 @@ const ChatLayout = () => {
- + { +export const getChatLayoutStyles = ({ colors }) => { const styles = { layout: css` height: 100%; From 45dc92433f75a51fa0f5b32e945d5b3e94055d8c Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Wed, 17 Jul 2024 00:00:08 +0530 Subject: [PATCH 047/104] fixed sidebar height --- packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx b/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx index 7e11e51b9..ae6175f5d 100644 --- a/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx +++ b/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React from 'react'; import { Box, useTheme } from '@embeddedchat/ui-elements'; import { Panel, PanelGroup, PanelResizeHandle } from 'react-resizable-panels'; import ChatBody from '../Chatbody/ChatBody'; @@ -45,7 +45,7 @@ const ChatLayout = () => { maxSize={60} onResize={handleResize} > - + From 0e67c78ff1a3ea55203d66d9fa5ac2e17b3ea9ea Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Wed, 17 Jul 2024 00:15:48 +0530 Subject: [PATCH 048/104] added theme lab --- .../layout_editor/src/views/GlobalStyles.jsx | 20 ++++----- .../layout_editor/src/views/LayoutEditor.jsx | 43 ++++++++++++------- .../src/views/LayoutEditor.style.js | 10 ++++- 3 files changed, 45 insertions(+), 28 deletions(-) diff --git a/packages/layout_editor/src/views/GlobalStyles.jsx b/packages/layout_editor/src/views/GlobalStyles.jsx index 72d9e52f6..ebdc3551f 100644 --- a/packages/layout_editor/src/views/GlobalStyles.jsx +++ b/packages/layout_editor/src/views/GlobalStyles.jsx @@ -1,39 +1,39 @@ -import React from "react"; -import { css, Global } from "@emotion/react"; -import { useTheme, alpha } from "@embeddedchat/ui-elements"; +import React from 'react'; +import { css, Global } from '@emotion/react'; +import { useTheme, alpha } from '@embeddedchat/ui-elements'; const useStyles = ({ colors, theme }) => css` - .ec-embedded-chat * { + * { box-sizing: border-box; margin: 0; padding: 0; } - .ec-embedded-chat body { + body { font-family: ${theme.typography.default.fontFamily}; font-size: ${theme.typography.default.fontSize}px; font-weight: ${theme.typography.default.fontWeightRegular}; } - .ec-embedded-chat a { + a { color: ${colors.foreground}; } - .ec-embedded-chat ::-webkit-scrollbar { + ::-webkit-scrollbar { width: 4px; height: 7.7px; } - .ec-embedded-chat ::-webkit-scrollbar-thumb { + ::-webkit-scrollbar-thumb { background: ${alpha(colors.primary, 0.5)}; border-radius: 4px; } - .ec-embedded-chat ::-webkit-scrollbar-thumb:hover { + ::-webkit-scrollbar-thumb:hover { background: ${colors.primary}; } - .ec-embedded-chat ::-webkit-scrollbar-button { + ::-webkit-scrollbar-button { display: none; } `; diff --git a/packages/layout_editor/src/views/LayoutEditor.jsx b/packages/layout_editor/src/views/LayoutEditor.jsx index 5df7bf41d..18ec34b89 100644 --- a/packages/layout_editor/src/views/LayoutEditor.jsx +++ b/packages/layout_editor/src/views/LayoutEditor.jsx @@ -1,23 +1,34 @@ -import React, { useState } from "react"; -import DefaultTheme from "../theme/DefaultTheme"; -import { Box, ThemeProvider } from "@embeddedchat/ui-elements"; -import { styles } from "./LayoutEditor.style"; -import ChatLayout from "./ChatLayout/ChatLayout"; -import ChatHeader from "./ChatHeader/ChatHeader"; -import GlobalStyles from "./GlobalStyles"; +import React, { useState } from 'react'; +import DefaultTheme from '../theme/DefaultTheme'; +import { Box, Sidebar, ThemeProvider } from '@embeddedchat/ui-elements'; +import { styles } from './LayoutEditor.style'; +import ChatLayout from './ChatLayout/ChatLayout'; +import ChatHeader from './ChatHeader/ChatHeader'; +import GlobalStyles from './GlobalStyles'; const LayoutEditor = () => { - const [mode, setMode] = useState("light"); + const [mode, setMode] = useState('light'); + const [isThemeLab, setIsThemeLab] = useState(true); return ( - - - - -
+ + + + + +
+ + {isThemeLab && ( + + setIsThemeLab(false)}> + + )} ); diff --git a/packages/layout_editor/src/views/LayoutEditor.style.js b/packages/layout_editor/src/views/LayoutEditor.style.js index 7a03f61ca..e91dff9f9 100644 --- a/packages/layout_editor/src/views/LayoutEditor.style.js +++ b/packages/layout_editor/src/views/LayoutEditor.style.js @@ -2,15 +2,21 @@ import { css } from '@emotion/react'; export const styles = { embeddedchat: (theme, dark) => css` - width: 100%; - height: 95vh; + width: 75%; + height: 100vh; position: relative; background: ${theme.schemes[dark ? 'dark' : 'light'].background}; color: ${theme.schemes[dark ? 'dark' : 'light'].foreground}; display: flex; + flex: 1; flex-direction: column; border: ${`1.5px solid ${theme.schemes[dark ? 'dark' : 'light'].border}`}; border-radius: ${theme.schemes.radius}; overflow: hidden; `, + + layoutEditor: css` + display: flex; + gap: 0.25rem; + `, }; From 6c3d17518272846809796037424b715fb40f9eef Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Wed, 17 Jul 2024 00:38:10 +0530 Subject: [PATCH 049/104] added start theming btn --- .../src/views/DemoSidebar/DemoSidebar.jsx | 71 ++++++++++--------- .../views/DemoSidebar/DemoSidebar.styles.js | 10 ++- .../layout_editor/src/views/LayoutEditor.jsx | 2 +- 3 files changed, 46 insertions(+), 37 deletions(-) diff --git a/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx b/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx index 7e549a2b4..f059b327c 100644 --- a/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx +++ b/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx @@ -1,43 +1,48 @@ -import React from "react"; -import PropTypes from "prop-types"; -import { Box, Icon, Sidebar, Popup } from "@embeddedchat/ui-elements"; -import { css } from "@emotion/react"; -import { getDemoSidebarStyles } from "./DemoSidebar.styles"; +import React from 'react'; +import PropTypes from 'prop-types'; +import { Box, Icon, Sidebar, Popup, Button } from '@embeddedchat/ui-elements'; +import { css } from '@emotion/react'; +import { getDemoSidebarStyles } from './DemoSidebar.styles'; -const DemoSidebar = ({ members, viewType = "Sidebar" }) => { - const ViewComponent = viewType === "Popup" ? Popup : Sidebar; +const DemoSidebar = ({ members, viewType = 'Sidebar' }) => { + const ViewComponent = viewType === 'Popup' ? Popup : Sidebar; const styles = getDemoSidebarStyles(); return ( - {members.map((member, index) => ( - - - - {member.status && ( - - )} - {member.username} + + {members.map((member, index) => ( + + + + {member.status && ( + + )} + {member.username} + - - ))} + ))} + + + + ); @@ -51,7 +56,7 @@ DemoSidebar.propTypes = { username: PropTypes.string.isRequired, }) ).isRequired, - viewType: PropTypes.oneOf(["Sidebar", "Popup"]), + viewType: PropTypes.oneOf(['Sidebar', 'Popup']), }; export default DemoSidebar; diff --git a/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.styles.js b/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.styles.js index e202c9806..32c7e5a8f 100644 --- a/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.styles.js +++ b/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.styles.js @@ -1,14 +1,14 @@ -import { css } from "@emotion/react"; +import { css } from '@emotion/react'; export const getDemoSidebarStyles = () => { const styles = { container: css` display: flex; + flex: 1; flex-direction: column; overflow: auto; width: 100%; - align-items: center; - justify-content: center; + justify-content: space-between; padding: 0 1rem 1rem; `, @@ -25,6 +25,10 @@ export const getDemoSidebarStyles = () => { margin-right: 0.5rem; align-self: center; `, + + btn: css` + width: 100%; + `, }; return styles; diff --git a/packages/layout_editor/src/views/LayoutEditor.jsx b/packages/layout_editor/src/views/LayoutEditor.jsx index 18ec34b89..0ae3b0c6e 100644 --- a/packages/layout_editor/src/views/LayoutEditor.jsx +++ b/packages/layout_editor/src/views/LayoutEditor.jsx @@ -8,7 +8,7 @@ import GlobalStyles from './GlobalStyles'; const LayoutEditor = () => { const [mode, setMode] = useState('light'); - const [isThemeLab, setIsThemeLab] = useState(true); + const [isThemeLab, setIsThemeLab] = useState(false); return ( From 6f3efd62dad1cecaf0c689894d04dca372ed7fe3 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Wed, 17 Jul 2024 11:28:42 +0530 Subject: [PATCH 050/104] added emoji --- packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx b/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx index f059b327c..dc9d6cd76 100644 --- a/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx +++ b/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx @@ -41,7 +41,9 @@ const DemoSidebar = ({ members, viewType = 'Sidebar' }) => { ))} - + From d3ca35e39f270002efe050f4d84a99f35baa03e6 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Wed, 17 Jul 2024 12:25:43 +0530 Subject: [PATCH 051/104] changed lint rules added zustand added settings icon added icon to themelab --- packages/layout_editor/.eslintrc.cjs | 25 ++++++++++--------- packages/layout_editor/package.json | 3 ++- .../layout_editor/src/store/layoutStore.js | 10 ++++++++ .../src/views/DemoSidebar/DemoSidebar.jsx | 13 ++++++++-- .../views/DemoSidebar/DemoSidebar.styles.js | 7 ++++++ .../layout_editor/src/views/LayoutEditor.jsx | 12 ++++----- .../src/views/ThemeLab/ThemeLab.jsx | 22 ++++++++++++++++ .../src/views/ThemeLab/ThemeLab.styles.js | 11 ++++++++ .../src/components/Icon/icons/Cog.js | 14 +++++++++++ .../src/components/Icon/icons/index.js | 2 ++ packages/ui-elements/tools/icons-generator.js | 1 + 11 files changed, 98 insertions(+), 22 deletions(-) create mode 100644 packages/layout_editor/src/store/layoutStore.js create mode 100644 packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx create mode 100644 packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js create mode 100644 packages/ui-elements/src/components/Icon/icons/Cog.js diff --git a/packages/layout_editor/.eslintrc.cjs b/packages/layout_editor/.eslintrc.cjs index bf64d1237..71cc58753 100644 --- a/packages/layout_editor/.eslintrc.cjs +++ b/packages/layout_editor/.eslintrc.cjs @@ -2,21 +2,22 @@ module.exports = { root: true, env: { browser: true, es2020: true }, extends: [ - "plugin:react/recommended", - "plugin:react-hooks/recommended", - "prettier", + 'plugin:react/recommended', + 'plugin:react-hooks/recommended', + 'prettier', ], - ignorePatterns: ["dist", ".eslintrc.cjs"], - parserOptions: { ecmaVersion: "latest", sourceType: "module" }, - settings: { react: { version: "18.2" } }, - plugins: ["react-refresh"], + ignorePatterns: ['dist', '.eslintrc.cjs'], + parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, + settings: { react: { version: '18.2' } }, + plugins: ['react-refresh'], rules: { - "react/jsx-no-target-blank": "off", - "react-refresh/only-export-components": [ - "warn", + 'react/jsx-no-target-blank': 'off', + 'react-refresh/only-export-components': [ + 'warn', { allowConstantExport: true }, ], - "react/prop-types": "off", - "react/no-unknown-property": ["error", { ignore: ["css"] }], + 'react/prop-types': 'off', + 'react/no-unknown-property': ['error', { ignore: ['css'] }], + 'no-undef': 'error', }, }; diff --git a/packages/layout_editor/package.json b/packages/layout_editor/package.json index ab36ab4fb..b712eb838 100644 --- a/packages/layout_editor/package.json +++ b/packages/layout_editor/package.json @@ -24,6 +24,7 @@ "eslint-plugin-react": "^7.34.4", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.5", - "vite": "^5.1.0" + "vite": "^5.1.0", + "zustand": "^4.3.8" } } diff --git a/packages/layout_editor/src/store/layoutStore.js b/packages/layout_editor/src/store/layoutStore.js new file mode 100644 index 000000000..943b4592f --- /dev/null +++ b/packages/layout_editor/src/store/layoutStore.js @@ -0,0 +1,10 @@ +import { create } from 'zustand'; + +const useLayoutStore = create((set) => ({ + themeLabOpen: false, + setThemeLabOpen: (themeLabOpen) => { + set({ themeLabOpen }); + }, +})); + +export default useLayoutStore; diff --git a/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx b/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx index dc9d6cd76..117e4c5c1 100644 --- a/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx +++ b/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.jsx @@ -3,8 +3,11 @@ import PropTypes from 'prop-types'; import { Box, Icon, Sidebar, Popup, Button } from '@embeddedchat/ui-elements'; import { css } from '@emotion/react'; import { getDemoSidebarStyles } from './DemoSidebar.styles'; +import useLayoutStore from '../../store/layoutStore'; const DemoSidebar = ({ members, viewType = 'Sidebar' }) => { + const themeLabOpen = useLayoutStore((state) => state.themeLabOpen); + const setThemeLabOpen = useLayoutStore((state) => state.setThemeLabOpen); const ViewComponent = viewType === 'Popup' ? Popup : Sidebar; const styles = getDemoSidebarStyles(); return ( @@ -41,8 +44,14 @@ const DemoSidebar = ({ members, viewType = 'Sidebar' }) => { ))} - diff --git a/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.styles.js b/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.styles.js index 32c7e5a8f..3c27e4980 100644 --- a/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.styles.js +++ b/packages/layout_editor/src/views/DemoSidebar/DemoSidebar.styles.js @@ -28,6 +28,13 @@ export const getDemoSidebarStyles = () => { btn: css` width: 100%; + opacity: 1; + transition: all 0.1s; + `, + + btnInvisible: css` + width: 0; + opacity: 0; `, }; diff --git a/packages/layout_editor/src/views/LayoutEditor.jsx b/packages/layout_editor/src/views/LayoutEditor.jsx index 0ae3b0c6e..b94da6958 100644 --- a/packages/layout_editor/src/views/LayoutEditor.jsx +++ b/packages/layout_editor/src/views/LayoutEditor.jsx @@ -1,14 +1,16 @@ import React, { useState } from 'react'; import DefaultTheme from '../theme/DefaultTheme'; -import { Box, Sidebar, ThemeProvider } from '@embeddedchat/ui-elements'; +import { Box, ThemeProvider } from '@embeddedchat/ui-elements'; import { styles } from './LayoutEditor.style'; import ChatLayout from './ChatLayout/ChatLayout'; import ChatHeader from './ChatHeader/ChatHeader'; import GlobalStyles from './GlobalStyles'; +import useLayoutStore from '../store/layoutStore'; +import ThemeLab from './ThemeLab/ThemeLab'; const LayoutEditor = () => { const [mode, setMode] = useState('light'); - const [isThemeLab, setIsThemeLab] = useState(false); + const themeLabOpen = useLayoutStore((state) => state.themeLabOpen); return ( @@ -24,11 +26,7 @@ const LayoutEditor = () => {
- {isThemeLab && ( - - setIsThemeLab(false)}> - - )} + {themeLabOpen && } ); diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx new file mode 100644 index 000000000..fed2e26bd --- /dev/null +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx @@ -0,0 +1,22 @@ +import React from 'react'; +import { Box, MinimalSidebar, SidebarHeader } from '@embeddedchat/ui-elements'; +import useLayoutStore from '../../store/layoutStore'; +import { useThemeLabStyles } from './ThemeLab.styles'; + +const ThemeLab = () => { + const styles = useThemeLabStyles(); + const setThemeLabOpen = useLayoutStore((state) => state.setThemeLabOpen); + return ( + + + setThemeLabOpen(false)} + title="Theme Lab" + iconName="cog" + /> + + + ); +}; + +export default ThemeLab; diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js new file mode 100644 index 000000000..060103e12 --- /dev/null +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js @@ -0,0 +1,11 @@ +import { css } from '@emotion/react'; + +export const useThemeLabStyles = () => { + const styles = { + themeLab: css` + display: flex; + `, + }; + + return styles; +}; diff --git a/packages/ui-elements/src/components/Icon/icons/Cog.js b/packages/ui-elements/src/components/Icon/icons/Cog.js new file mode 100644 index 000000000..08d027a63 --- /dev/null +++ b/packages/ui-elements/src/components/Icon/icons/Cog.js @@ -0,0 +1,14 @@ +import React from 'react'; + +const Cog = (props) => ( + + + +); + +export default Cog; diff --git a/packages/ui-elements/src/components/Icon/icons/index.js b/packages/ui-elements/src/components/Icon/icons/index.js index 8f0a26de2..77cd6a451 100644 --- a/packages/ui-elements/src/components/Icon/icons/index.js +++ b/packages/ui-elements/src/components/Icon/icons/index.js @@ -60,6 +60,7 @@ import Collapse from './ArrowCollapse'; import Arc from './Arc'; import Avatar from './Avatar'; import FormatText from './FormatText'; +import Cog from './Cog'; const icons = { file: File, @@ -124,6 +125,7 @@ const icons = { arc: Arc, avatar: Avatar, 'format-text': FormatText, + cog: Cog, }; export default icons; diff --git a/packages/ui-elements/tools/icons-generator.js b/packages/ui-elements/tools/icons-generator.js index 238cbae34..7dc17fc93 100644 --- a/packages/ui-elements/tools/icons-generator.js +++ b/packages/ui-elements/tools/icons-generator.js @@ -45,6 +45,7 @@ const iconsList = [ 'at', 'arrow-collapse', 'arrow-expand', + 'cog', ]; const svgDirPath = path.join( From a7dfc108da32d99ce0838c47054680187d52e1cf Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Thu, 18 Jul 2024 00:06:34 +0530 Subject: [PATCH 052/104] added layout and palette section: --- .../src/views/ThemeLab/ThemeLab.jsx | 32 +++++++++++++++++-- .../src/views/ThemeLab/ThemeLab.styles.js | 14 ++++++-- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx index fed2e26bd..a9eb7034f 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx @@ -1,11 +1,19 @@ -import React from 'react'; -import { Box, MinimalSidebar, SidebarHeader } from '@embeddedchat/ui-elements'; +import React, { useState } from 'react'; +import { + Box, + MinimalSidebar, + SidebarContent, + SidebarHeader, + useTheme, +} from '@embeddedchat/ui-elements'; import useLayoutStore from '../../store/layoutStore'; import { useThemeLabStyles } from './ThemeLab.styles'; const ThemeLab = () => { - const styles = useThemeLabStyles(); + const styles = useThemeLabStyles(useTheme()); const setThemeLabOpen = useLayoutStore((state) => state.setThemeLabOpen); + const [paletteActive, setPaletteAction] = useState(true); + return ( @@ -14,6 +22,24 @@ const ThemeLab = () => { title="Theme Lab" iconName="cog" /> + + + setPaletteAction(true)} + > + Palette + + setPaletteAction(false)} + > + Layout + + + ); diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js index 060103e12..be731f635 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js @@ -1,9 +1,19 @@ import { css } from '@emotion/react'; -export const useThemeLabStyles = () => { +export const useThemeLabStyles = ({ colors }) => { const styles = { - themeLab: css` + sectionContainer: css` display: flex; + align-items: center; + justify-content: space-around; + `, + + section: css` + padding: 0 1rem 0.5rem; + cursor: pointer; + `, + sectionActive: css` + border-bottom: 1px solid ${colors.primary}; `, }; From 39fa617dafc8807a70654c637d7bcf197da30a37 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Thu, 18 Jul 2024 00:16:02 +0530 Subject: [PATCH 053/104] fixed height issue --- packages/layout_editor/src/views/LayoutEditor.style.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/layout_editor/src/views/LayoutEditor.style.js b/packages/layout_editor/src/views/LayoutEditor.style.js index e91dff9f9..f34c535b7 100644 --- a/packages/layout_editor/src/views/LayoutEditor.style.js +++ b/packages/layout_editor/src/views/LayoutEditor.style.js @@ -3,7 +3,6 @@ import { css } from '@emotion/react'; export const styles = { embeddedchat: (theme, dark) => css` width: 75%; - height: 100vh; position: relative; background: ${theme.schemes[dark ? 'dark' : 'light'].background}; color: ${theme.schemes[dark ? 'dark' : 'light'].foreground}; @@ -16,6 +15,7 @@ export const styles = { `, layoutEditor: css` + height: 100vh; display: flex; gap: 0.25rem; `, From 5fa7fcfc938e0dafa7209047b657a3b105d6f320 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Thu, 18 Jul 2024 00:18:43 +0530 Subject: [PATCH 054/104] render diff sections --- .../layout_editor/src/views/ThemeLab/LayoutSetting.jsx | 9 +++++++++ .../layout_editor/src/views/ThemeLab/PaletteSetting.jsx | 9 +++++++++ packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx | 4 ++++ 3 files changed, 22 insertions(+) create mode 100644 packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx create mode 100644 packages/layout_editor/src/views/ThemeLab/PaletteSetting.jsx diff --git a/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx b/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx new file mode 100644 index 000000000..98186f7a0 --- /dev/null +++ b/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx @@ -0,0 +1,9 @@ +import React from 'react' + +const LayoutSetting = () => { + return ( +
LayoutSetting
+ ) +} + +export default LayoutSetting \ No newline at end of file diff --git a/packages/layout_editor/src/views/ThemeLab/PaletteSetting.jsx b/packages/layout_editor/src/views/ThemeLab/PaletteSetting.jsx new file mode 100644 index 000000000..60b9057bd --- /dev/null +++ b/packages/layout_editor/src/views/ThemeLab/PaletteSetting.jsx @@ -0,0 +1,9 @@ +import React from 'react' + +const PaletteSetting = () => { + return ( +
PaletteSetting
+ ) +} + +export default PaletteSetting \ No newline at end of file diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx index a9eb7034f..f0ff3c9f4 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx @@ -8,6 +8,8 @@ import { } from '@embeddedchat/ui-elements'; import useLayoutStore from '../../store/layoutStore'; import { useThemeLabStyles } from './ThemeLab.styles'; +import PaletteSetting from './PaletteSetting'; +import LayoutSetting from './LayoutSetting'; const ThemeLab = () => { const styles = useThemeLabStyles(useTheme()); @@ -39,6 +41,8 @@ const ThemeLab = () => { Layout + + {paletteActive ? : } From 5a8ec2a7de92af899eb78fc113ceef79b3151d2c Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Thu, 18 Jul 2024 20:00:24 +0530 Subject: [PATCH 055/104] setup sections added select updated yarn lock --- .../src/views/Message/MessageHeader.jsx | 26 +++---- .../src/views/ThemeLab/LayoutSetting.jsx | 67 +++++++++++++++++-- .../src/views/ThemeLab/PaletteSetting.jsx | 20 ++++-- .../src/views/ThemeLab/ThemeLab.jsx | 4 +- .../src/views/ThemeLab/ThemeLab.styles.js | 59 +++++++++++++++- .../StaticSelect/StaticSelect.styles.js | 1 + 6 files changed, 151 insertions(+), 26 deletions(-) diff --git a/packages/layout_editor/src/views/Message/MessageHeader.jsx b/packages/layout_editor/src/views/Message/MessageHeader.jsx index a3dadfb37..fca4819e1 100644 --- a/packages/layout_editor/src/views/Message/MessageHeader.jsx +++ b/packages/layout_editor/src/views/Message/MessageHeader.jsx @@ -1,17 +1,17 @@ -import React from "react"; -import PropTypes from "prop-types"; -import { format } from "date-fns"; +import React from 'react'; +import PropTypes from 'prop-types'; +import { format } from 'date-fns'; import { Box, Icon, useTheme, appendClassNames, -} from "@embeddedchat/ui-elements"; -import { getMessageHeaderStyles } from "./Message.styles"; -import useDisplayNameColor from "../../hooks/useDisplayNameColor"; +} from '@embeddedchat/ui-elements'; +import { getMessageHeaderStyles } from './Message.styles'; +import useDisplayNameColor from '../../hooks/useDisplayNameColor'; -const MessageHeader = ({ message, variantOverrides }) => { - const displayNameVariant = variantOverrides || "Normal"; +const MessageHeader = ({ message, variantOverrides = 'Normal' }) => { + const displayNameVariant = variantOverrides || 'Normal'; const styles = getMessageHeaderStyles(useTheme()); const { colors } = useTheme(); const getDisplayNameColor = useDisplayNameColor(); @@ -21,9 +21,9 @@ const MessageHeader = ({ message, variantOverrides }) => { { - {format(new Date(message.ts), "h:mm a")} + {format(new Date(message.ts), 'h:mm a')} {!message.t && ( {message.editedAt && ( { + const styles = getLayoutSettings(useTheme()); + + const messageViewOptions = [ + { + label: 'Flat', + value: 'flat', + }, + + { + label: 'Bubble', + value: 'bubble', + }, + ]; + + const displayNameOptions = [ + { + label: 'Normal', + value: 'normal', + }, + + { + label: 'Colorize', + value: 'colorize', + }, + ]; return ( -
LayoutSetting
- ) -} + + +

Variants

+ + Message View + + + + + Display Name + + +
+ + +

Tool Tray

+
+
+ ); +}; -export default LayoutSetting \ No newline at end of file +export default LayoutSetting; diff --git a/packages/layout_editor/src/views/ThemeLab/PaletteSetting.jsx b/packages/layout_editor/src/views/ThemeLab/PaletteSetting.jsx index 60b9057bd..e90c584ca 100644 --- a/packages/layout_editor/src/views/ThemeLab/PaletteSetting.jsx +++ b/packages/layout_editor/src/views/ThemeLab/PaletteSetting.jsx @@ -1,9 +1,19 @@ -import React from 'react' +import React from 'react'; +import { Box, useTheme } from '@embeddedchat/ui-elements'; +import { getPaletteSettings } from './ThemeLab.styles'; const PaletteSetting = () => { + const styles = getPaletteSettings(useTheme()); return ( -
PaletteSetting
- ) -} + + +

Colors

+
+ +

Typography

+
+
+ ); +}; -export default PaletteSetting \ No newline at end of file +export default PaletteSetting; diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx index f0ff3c9f4..c01e84d00 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx @@ -7,12 +7,12 @@ import { useTheme, } from '@embeddedchat/ui-elements'; import useLayoutStore from '../../store/layoutStore'; -import { useThemeLabStyles } from './ThemeLab.styles'; +import { getThemeLabStyles } from './ThemeLab.styles'; import PaletteSetting from './PaletteSetting'; import LayoutSetting from './LayoutSetting'; const ThemeLab = () => { - const styles = useThemeLabStyles(useTheme()); + const styles = getThemeLabStyles(useTheme()); const setThemeLabOpen = useLayoutStore((state) => state.setThemeLabOpen); const [paletteActive, setPaletteAction] = useState(true); diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js index be731f635..01860f9e8 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js @@ -1,6 +1,6 @@ import { css } from '@emotion/react'; -export const useThemeLabStyles = ({ colors }) => { +export const getThemeLabStyles = ({ colors }) => { const styles = { sectionContainer: css` display: flex; @@ -19,3 +19,60 @@ export const useThemeLabStyles = ({ colors }) => { return styles; }; + +export const getPaletteSettings = ({ colors }) => { + const styles = { + main: css` + height: 100%; + display: flex; + flex-direction: column; + padding: 0.75rem; + `, + colorSection: css` + padding: 0.5rem; + `, + typographySection: css` + padding: 0.5rem; + `, + }; + + return styles; +}; + +export const getLayoutSettings = ({ colors }) => { + const styles = { + main: css` + height: 100%; + display: flex; + flex-direction: column; + padding: 0.75rem; + padding: 0.75rem; + `, + variantSection: css` + padding: 0.5rem; + background-color: ${colors.secondary}; + border-radius: 0.25rem; + `, + + toolSection: css` + padding: 0.5rem; + `, + + commonSelect: css` + display: flex; + gap: 1.25rem; + justify-content: space-between; + padding: 1.25rem 0; + `, + + messageView: css` + position: relative; + `, + + displayName: css` + position: relative; + `, + }; + + return styles; +}; diff --git a/packages/ui-elements/src/components/StaticSelect/StaticSelect.styles.js b/packages/ui-elements/src/components/StaticSelect/StaticSelect.styles.js index 63df6107e..f0767930c 100644 --- a/packages/ui-elements/src/components/StaticSelect/StaticSelect.styles.js +++ b/packages/ui-elements/src/components/StaticSelect/StaticSelect.styles.js @@ -9,6 +9,7 @@ const useStaticSelectStyles = () => { flex: 1 0 auto; flex-direction: column; gap: 0.25rem; + background-color: ${colors.background}; min-width: 8rem; `, From 970466f3362edc2450e22491b6fdcd11263b2c72 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Thu, 18 Jul 2024 23:49:27 +0530 Subject: [PATCH 056/104] added states --- packages/layout_editor/src/store/layoutStore.js | 10 ++++++++++ .../src/views/ThemeLab/LayoutSetting.jsx | 11 +++++++++++ .../src/views/ThemeLab/ThemeLab.styles.js | 3 +++ 3 files changed, 24 insertions(+) diff --git a/packages/layout_editor/src/store/layoutStore.js b/packages/layout_editor/src/store/layoutStore.js index 943b4592f..7810d6bf0 100644 --- a/packages/layout_editor/src/store/layoutStore.js +++ b/packages/layout_editor/src/store/layoutStore.js @@ -5,6 +5,16 @@ const useLayoutStore = create((set) => ({ setThemeLabOpen: (themeLabOpen) => { set({ themeLabOpen }); }, + + messageView: 'flat', + setMessageView: (messageView) => { + set({ messageView }); + }, + + displayName: 'normal', + setDisplayName: (displayName) => { + set({ displayName }); + }, })); export default useLayoutStore; diff --git a/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx b/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx index 5bef6015a..879e39804 100644 --- a/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx +++ b/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx @@ -1,10 +1,19 @@ import React from 'react'; import { Box, useTheme, StaticSelect } from '@embeddedchat/ui-elements'; import { getLayoutSettings } from './ThemeLab.styles'; +import useLayoutStore from '../../store/layoutStore'; const LayoutSetting = () => { const styles = getLayoutSettings(useTheme()); + const { messageView, setMessageView, displayName, setDisplayName } = + useLayoutStore((state) => ({ + messageView: state.messageView, + setMessageView: state.setMessageView, + displayName: state.displayName, + setDisplayName: state.setDisplayName, + })); + const messageViewOptions = [ { label: 'Flat', @@ -43,6 +52,7 @@ const LayoutSetting = () => { zIndex: '1', }} placeholder="Choose" + value={messageView} />
@@ -52,6 +62,7 @@ const LayoutSetting = () => { options={displayNameOptions} style={{ position: 'absolute', top: '16px', right: 0 }} placeholder="Choose" + value={displayName} />
diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js index 01860f9e8..0b5b3db26 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js @@ -45,6 +45,7 @@ export const getLayoutSettings = ({ colors }) => { height: 100%; display: flex; flex-direction: column; + justify-content: space-between; padding: 0.75rem; padding: 0.75rem; `, @@ -56,6 +57,8 @@ export const getLayoutSettings = ({ colors }) => { toolSection: css` padding: 0.5rem; + background-color: ${colors.secondary}; + border-radius: 0.25rem; `, commonSelect: css` From b7f1544dda70f81f8b89b6dc413378eefaaa7555 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Fri, 19 Jul 2024 00:14:05 +0530 Subject: [PATCH 057/104] added switch functionality --- .../Message/BubbleVariant/Bubble.styles.js | 14 ++---- .../src/views/Message/Message.jsx | 47 ++++++++++--------- .../src/views/Message/MessageHeader.jsx | 8 ++-- .../src/views/ThemeLab/LayoutSetting.jsx | 2 + 4 files changed, 38 insertions(+), 33 deletions(-) diff --git a/packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js b/packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js index 137f36390..b90c0f406 100644 --- a/packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js +++ b/packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js @@ -1,9 +1,9 @@ -import { css } from "@emotion/react"; -import { alpha } from "@embeddedchat/ui-elements"; +import { css } from '@emotion/react'; +import { alpha } from '@embeddedchat/ui-elements'; export const bubbleStyles = ({ theme, colors }) => { const styles = { - name: "bubble", + name: 'bubble', messageParent: css` display: flex; gap: 0.25rem; @@ -77,8 +77,6 @@ export const bubbleStyles = ({ theme, colors }) => { `, toolboxContainer: css` - display: none; - .ec-message-body:hover & { display: flex; position: absolute; bottom: calc(100% - 20px); @@ -173,10 +171,8 @@ export const bubbleStylesMe = (customTheme) => { `, toolboxContainerMe: css` - .ec-message-body:hover & { - left: auto; - right: calc(100% - 20px); - } + left: auto; + right: calc(100% - 10px); `, pinnedContainerMe: css` diff --git a/packages/layout_editor/src/views/Message/Message.jsx b/packages/layout_editor/src/views/Message/Message.jsx index 404afb04c..fccf15b1e 100644 --- a/packages/layout_editor/src/views/Message/Message.jsx +++ b/packages/layout_editor/src/views/Message/Message.jsx @@ -1,29 +1,32 @@ -import React from "react"; -import PropTypes from "prop-types"; -import { format } from "date-fns"; -import { Box, useTheme } from "@embeddedchat/ui-elements"; -import { Markdown } from "../Markdown"; -import MessageHeader from "./MessageHeader"; -import { MessageBody } from "./MessageBody"; -import { MessageToolbox } from "./MessageToolbox"; -import { MessageDivider } from "./MessageDivider"; -import MessageAvatarContainer from "./MessageAvatarContainer"; -import MessageBodyContainer from "./MessageBodyContainer"; -import { getMessageStyles } from "./Message.styles"; -import useBubbleStyles from "./BubbleVariant/useBubbleStyles"; +import React from 'react'; +import PropTypes from 'prop-types'; +import { format } from 'date-fns'; +import { Box, useTheme } from '@embeddedchat/ui-elements'; +import { Markdown } from '../Markdown'; +import MessageHeader from './MessageHeader'; +import { MessageBody } from './MessageBody'; +import { MessageToolbox } from './MessageToolbox'; +import { MessageDivider } from './MessageDivider'; +import MessageAvatarContainer from './MessageAvatarContainer'; +import MessageBodyContainer from './MessageBodyContainer'; +import { getMessageStyles } from './Message.styles'; +import useBubbleStyles from './BubbleVariant/useBubbleStyles'; +import useLayoutStore from '../../store/layoutStore'; const Message = ({ message, sequential = false, lastSequential = false, newDay = false, - variantOverrides = "default", + variantOverrides = 'default', }) => { - const isMe = message.u.username === "spiral_memory"; + const isMe = message.u.username === 'spiral_memory'; const styles = getMessageStyles(useTheme()); const bubbleStyles = useBubbleStyles(isMe); const shouldShowHeader = !sequential; - const variantStyles = variantOverrides === "bubble" ? bubbleStyles : {}; + const messageView = useLayoutStore((state) => state.messageView); + const finalVariant = messageView || variantOverrides; + const variantStyles = finalVariant === 'bubble' ? bubbleStyles : {}; return ( <> @@ -31,7 +34,9 @@ const Message = ({ className="ec-message" css={[ variantStyles.messageParent || styles.main, - message._id === "62vhmKJGNoxgvLL7M" && styles.specialMessage, + message._id === '62vhmKJGNoxgvLL7M' && + variantOverrides === 'flat' && + styles.specialMessage, ]} > @@ -40,7 +45,7 @@ const Message = ({ {shouldShowHeader && ( @@ -59,7 +64,7 @@ const Message = ({ > - {!message.t && message._id === "62vhmKJGNoxgvLL7M" ? ( + {!message.t && message._id === '62vhmKJGNoxgvLL7M' ? ( ) : ( <> @@ -71,7 +76,7 @@ const Message = ({ {newDay && ( - {format(new Date(message.ts), "MMMM d, yyyy")} + {format(new Date(message.ts), 'MMMM d, yyyy')} )} @@ -81,7 +86,7 @@ Message.propTypes = { message: PropTypes.any, sequential: PropTypes.bool, newDay: PropTypes.bool, - type: PropTypes.oneOf(["thread", "default"]), + type: PropTypes.oneOf(['thread', 'default']), showAvatar: PropTypes.bool, }; diff --git a/packages/layout_editor/src/views/Message/MessageHeader.jsx b/packages/layout_editor/src/views/Message/MessageHeader.jsx index fca4819e1..5fdbad0ec 100644 --- a/packages/layout_editor/src/views/Message/MessageHeader.jsx +++ b/packages/layout_editor/src/views/Message/MessageHeader.jsx @@ -9,9 +9,11 @@ import { } from '@embeddedchat/ui-elements'; import { getMessageHeaderStyles } from './Message.styles'; import useDisplayNameColor from '../../hooks/useDisplayNameColor'; +import useLayoutStore from '../../store/layoutStore'; -const MessageHeader = ({ message, variantOverrides = 'Normal' }) => { - const displayNameVariant = variantOverrides || 'Normal'; +const MessageHeader = ({ message, variantOverrides = 'normal' }) => { + const displayName = useLayoutStore((state) => state.displayName); + const displayNameVariant = displayName || variantOverrides; const styles = getMessageHeaderStyles(useTheme()); const { colors } = useTheme(); const getDisplayNameColor = useDisplayNameColor(); @@ -23,7 +25,7 @@ const MessageHeader = ({ message, variantOverrides = 'Normal' }) => { css={styles.userName} className={appendClassNames('ec-message-header-username')} style={ - displayNameVariant === 'Colorize' + displayNameVariant === 'colorize' ? { color: getDisplayNameColor(message.u.username) } : null } diff --git a/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx b/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx index 879e39804..48cf662b3 100644 --- a/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx +++ b/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx @@ -53,6 +53,7 @@ const LayoutSetting = () => { }} placeholder="Choose" value={messageView} + onSelect={setMessageView} /> @@ -63,6 +64,7 @@ const LayoutSetting = () => { style={{ position: 'absolute', top: '16px', right: 0 }} placeholder="Choose" value={displayName} + onSelect={setDisplayName} /> From ec787f1f40a0d4450401f787795ac02a3d6a3f7f Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Fri, 19 Jul 2024 01:09:07 +0530 Subject: [PATCH 058/104] shifted items to global state --- .../src/store/chatInputItemsStore.js | 10 + .../src/store/headerItemsStore.js | 10 + .../src/store/messageItemsStore.js | 20 ++ .../src/views/ChatHeader/ChatHeader.jsx | 188 ++++++++---------- .../src/views/ChatInput/ChatInputToolbar.jsx | 107 +++++----- .../src/views/Message/MessageToolbox.jsx | 182 ++++++++--------- 6 files changed, 263 insertions(+), 254 deletions(-) create mode 100644 packages/layout_editor/src/store/chatInputItemsStore.js create mode 100644 packages/layout_editor/src/store/headerItemsStore.js create mode 100644 packages/layout_editor/src/store/messageItemsStore.js diff --git a/packages/layout_editor/src/store/chatInputItemsStore.js b/packages/layout_editor/src/store/chatInputItemsStore.js new file mode 100644 index 000000000..1a4b948bf --- /dev/null +++ b/packages/layout_editor/src/store/chatInputItemsStore.js @@ -0,0 +1,10 @@ +import { create } from 'zustand'; + +const useChatInputItemsStore = create((set) => ({ + surfaceItems: ['emoji', 'formatter', 'audio', 'video', 'file'], + formatters: ['bold', 'italic', 'strike', 'code', 'multiline'], + setSurfaceItems: (items) => set({ surfaceItems: items }), + setFormatters: (items) => set({ formatters: items }), +})); + +export default useChatInputItemsStore; diff --git a/packages/layout_editor/src/store/headerItemsStore.js b/packages/layout_editor/src/store/headerItemsStore.js new file mode 100644 index 000000000..78593cc1e --- /dev/null +++ b/packages/layout_editor/src/store/headerItemsStore.js @@ -0,0 +1,10 @@ +import { create } from 'zustand'; + +const useHeaderItemsStore = create((set) => ({ + surfaceItems: ['minmax', 'close', 'thread', 'mentions', 'starred', 'pinned'], + menuItems: ['files', 'members', 'search', 'rInfo', 'logout'], + setSurfaceItems: (items) => set({ surfaceItems: items }), + setMenuItems: (items) => set({ menuItems: items }), +})); + +export default useHeaderItemsStore; diff --git a/packages/layout_editor/src/store/messageItemsStore.js b/packages/layout_editor/src/store/messageItemsStore.js new file mode 100644 index 000000000..f89ac0e88 --- /dev/null +++ b/packages/layout_editor/src/store/messageItemsStore.js @@ -0,0 +1,20 @@ +import { create } from 'zustand'; + +const useMessageItemsStore = create((set) => ({ + surfaceItems: [ + 'reaction', + 'reply', + 'quote', + 'star', + 'pin', + 'edit', + 'delete', + 'report', + ], + + menuItems: [], + setSurfaceItems: (items) => set({ surfaceItems: items }), + setMenuItems: (items) => set({ menuItems: items }), +})); + +export default useMessageItemsStore; diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx index 4da65a240..f30880b01 100644 --- a/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.jsx @@ -1,8 +1,8 @@ -import React, { useState, useMemo } from "react"; -import { Heading, Box, Icon, useTheme } from "@embeddedchat/ui-elements"; -import { getChatHeaderStyles } from "./ChatHeader.styles"; -import { Menu } from "../../components/SortableMenu"; -import SurfaceItem from "../../components/SurfaceMenu/SurfaceItem"; +import React, { useState, useMemo } from 'react'; +import { Heading, Box, Icon, useTheme } from '@embeddedchat/ui-elements'; +import { getChatHeaderStyles } from './ChatHeader.styles'; +import { Menu } from '../../components/SortableMenu'; +import SurfaceItem from '../../components/SurfaceMenu/SurfaceItem'; import { DndContext, closestCenter, @@ -11,111 +11,106 @@ import { useSensor, useSensors, DragOverlay, -} from "@dnd-kit/core"; -import { sortableKeyboardCoordinates, arrayMove } from "@dnd-kit/sortable"; -import { createPortal } from "react-dom"; -import MenuItem from "../../components/SortableMenu/MenuItem"; -import SurfaceMenu from "../../components/SurfaceMenu/SurfaceMenu"; +} from '@dnd-kit/core'; +import { sortableKeyboardCoordinates, arrayMove } from '@dnd-kit/sortable'; +import { createPortal } from 'react-dom'; +import MenuItem from '../../components/SortableMenu/MenuItem'; +import SurfaceMenu from '../../components/SurfaceMenu/SurfaceMenu'; +import useHeaderItemsStore from '../../store/headerItemsStore'; -const ChatHeader = ({ - optionConfig = { - surfaceItems: [ - "minmax", - "close", - "thread", - "mentions", - "starred", - "pinned", - ], - menuItems: ["files", "members", "search", "rInfo", "logout"], - }, -}) => { +const ChatHeader = () => { const styles = getChatHeaderStyles(useTheme()); - const [surfaceItems, setSurfaceItems] = useState(optionConfig.surfaceItems); - const [menuItems, setMenuItems] = useState(optionConfig.menuItems); + const { surfaceItems, menuItems, setSurfaceItems, setMenuItems } = + useHeaderItemsStore((state) => ({ + surfaceItems: state.surfaceItems, + menuItems: state.menuItems, + setSurfaceItems: state.setSurfaceItems, + setMenuItems: state.setMenuItems, + })); + const [activeSurfaceItem, setActiveSurfaceItem] = useState(null); const [activeMenuItem, setActiveMenuItem] = useState(null); - const placeholderSurfaceItem = "placeholder-surface"; - const placeholderMenuItem = "placeholder-menu"; + const placeholderSurfaceItem = 'placeholder-surface'; + const placeholderMenuItem = 'placeholder-menu'; const options = useMemo( () => ({ minmax: { - label: "Maximize", - id: "minmax", + label: 'Maximize', + id: 'minmax', onClick: () => {}, - iconName: "expand", + iconName: 'expand', visible: true, }, close: { - label: "Close", - id: "close", + label: 'Close', + id: 'close', onClick: () => {}, - iconName: "cross", + iconName: 'cross', visible: true, }, thread: { - label: "Threads", - id: "thread", + label: 'Threads', + id: 'thread', onClick: () => {}, - iconName: "thread", + iconName: 'thread', visible: true, }, mentions: { - label: "Mentions", - id: "mentions", + label: 'Mentions', + id: 'mentions', onClick: () => {}, - iconName: "at", + iconName: 'at', visible: true, }, starred: { - label: "Starred Messages", - id: "starred", + label: 'Starred Messages', + id: 'starred', onClick: () => {}, - iconName: "star", + iconName: 'star', visible: true, }, pinned: { - label: "Pinned Messages", - id: "pinned", + label: 'Pinned Messages', + id: 'pinned', onClick: () => {}, - iconName: "pin", + iconName: 'pin', visible: true, }, members: { - label: "Members", - id: "members", + label: 'Members', + id: 'members', onClick: () => {}, - iconName: "members", + iconName: 'members', visible: true, }, files: { - label: "Files", - id: "files", + label: 'Files', + id: 'files', onClick: () => {}, - iconName: "clip", + iconName: 'clip', visible: true, }, search: { - label: "Search Messages", - id: "search", + label: 'Search Messages', + id: 'search', onClick: () => {}, - iconName: "magnifier", + iconName: 'magnifier', visible: true, }, rInfo: { - label: "Room Information", - id: "rInfo", + label: 'Room Information', + id: 'rInfo', onClick: () => {}, - iconName: "info", + iconName: 'info', visible: true, }, logout: { - label: "Logout", - id: "logout", + label: 'Logout', + id: 'logout', onClick: () => {}, - iconName: "reply-directly", + iconName: 'reply-directly', visible: true, }, }), @@ -137,7 +132,7 @@ const ChatHeader = ({ return null; }) .filter((option) => option !== null) - : [{ id: placeholderMenuItem, label: "No items", icon: "plus" }]; + : [{ id: placeholderMenuItem, label: 'No items', icon: 'plus' }]; const surfaceOptions = surfaceItems.length > 0 @@ -154,7 +149,7 @@ const ChatHeader = ({ return null; }) .filter((option) => option !== null) - : [{ id: placeholderSurfaceItem, label: "No items", iconName: "plus" }]; + : [{ id: placeholderSurfaceItem, label: 'No items', iconName: 'plus' }]; const sensors = useSensors( useSensor(PointerSensor, { @@ -168,13 +163,13 @@ const ChatHeader = ({ ); const handleDragStart = (event) => { - if (event.active.data.current?.type === "SurfaceOptions") { + if (event.active.data.current?.type === 'SurfaceOptions') { setActiveSurfaceItem({ id: event.active.id, iconName: event.active.data.current.icon, label: event.active.data.current.label, }); - } else if (event.active.data.current?.type === "MenuOptions") { + } else if (event.active.data.current?.type === 'MenuOptions') { setActiveMenuItem({ id: event.active.id, icon: event.active.data.current.icon, @@ -190,61 +185,52 @@ const ChatHeader = ({ if (active?.id !== over?.id) { if ( - event.active.data.current?.type === "SurfaceOptions" && - event.over.data.current?.type === "SurfaceOptions" + event.active.data.current?.type === 'SurfaceOptions' && + event.over.data.current?.type === 'SurfaceOptions' ) { - setSurfaceItems((items) => { - const oldIndex = items.indexOf(active.id); - const newIndex = items.indexOf(over.id); - return arrayMove(items, oldIndex, newIndex); - }); + const oldIndex = surfaceItems.indexOf(active.id); + const newIndex = surfaceItems.indexOf(over.id); + setSurfaceItems(arrayMove(surfaceItems, oldIndex, newIndex)); } else if ( - event.active.data.current?.type === "MenuOptions" && - event.over.data.current?.type === "MenuOptions" + event.active.data.current?.type === 'MenuOptions' && + event.over.data.current?.type === 'MenuOptions' ) { - setMenuItems((items) => { - const oldIndex = items.indexOf(active.id); - const newIndex = items.indexOf(over.id); - return arrayMove(items, oldIndex, newIndex); - }); + const oldIndex = menuItems.indexOf(active.id); + const newIndex = menuItems.indexOf(over.id); + setMenuItems(arrayMove(menuItems, oldIndex, newIndex)); } else if ( - event.active.data.current?.type === "SurfaceOptions" && - event.over.data.current?.type === "MenuOptions" && + event.active.data.current?.type === 'SurfaceOptions' && + event.over.data.current?.type === 'MenuOptions' && active.id !== placeholderSurfaceItem ) { - setSurfaceItems((items) => items.filter((item) => item !== active.id)); - setMenuItems((items) => { - const newItems = [ - ...items.filter((item) => item !== placeholderMenuItem), - active.id, - ]; - return newItems; - }); + setSurfaceItems(surfaceItems.filter((item) => item !== active.id)); + setMenuItems([ + ...menuItems.filter((item) => item !== placeholderMenuItem), + active.id, + ]); } else if ( - event.active.data.current?.type === "MenuOptions" && - event.over.data.current?.type === "SurfaceOptions" && + event.active.data.current?.type === 'MenuOptions' && + event.over.data.current?.type === 'SurfaceOptions' && active.id !== placeholderMenuItem ) { - setMenuItems((items) => items.filter((item) => item !== active.id)); - setSurfaceItems((items) => { - const newItems = [ - ...items.filter((item) => item !== placeholderSurfaceItem), - active.id, - ]; - return newItems; - }); + setMenuItems(menuItems.filter((item) => item !== active.id)); + setSurfaceItems([ + ...surfaceItems.filter((item) => item !== placeholderSurfaceItem), + active.id, + ]); } } }; const removeSurfaceItem = (idToRemove) => { - setSurfaceItems((items) => items.filter((item) => item !== idToRemove)); + const newSurfaceItems = surfaceItems.filter((item) => item !== idToRemove); + setSurfaceItems(newSurfaceItems); }; const removeMenuItem = (idToRemove) => { - setMenuItems((items) => items.filter((item) => item !== idToRemove)); + const newMenuItems = menuItems.filter((item) => item !== idToRemove); + setMenuItems(newMenuItems); }; - return ( diff --git a/packages/layout_editor/src/views/ChatInput/ChatInputToolbar.jsx b/packages/layout_editor/src/views/ChatInput/ChatInputToolbar.jsx index 49d1d77ac..f594e3a81 100644 --- a/packages/layout_editor/src/views/ChatInput/ChatInputToolbar.jsx +++ b/packages/layout_editor/src/views/ChatInput/ChatInputToolbar.jsx @@ -1,9 +1,10 @@ -import React, { useMemo, useState } from "react"; -import { Box, useTheme } from "@embeddedchat/ui-elements"; -import { getChatInputToolbarStyles } from "./ChatInput.styles"; -import SurfaceMenu from "../../components/SurfaceMenu/SurfaceMenu"; -import SurfaceItem from "../../components/SurfaceMenu/SurfaceItem"; -import Formatters from "./Formatters"; +import React, { useMemo, useState } from 'react'; +import { Box, useTheme } from '@embeddedchat/ui-elements'; +import { getChatInputToolbarStyles } from './ChatInput.styles'; +import SurfaceMenu from '../../components/SurfaceMenu/SurfaceMenu'; +import SurfaceItem from '../../components/SurfaceMenu/SurfaceItem'; +import Formatters from './Formatters'; +import useChatInputItemsStore from '../../store/chatInputItemsStore'; import { DndContext, closestCenter, @@ -12,61 +13,62 @@ import { useSensor, useSensors, DragOverlay, -} from "@dnd-kit/core"; -import { sortableKeyboardCoordinates, arrayMove } from "@dnd-kit/sortable"; -import { createPortal } from "react-dom"; +} from '@dnd-kit/core'; +import { sortableKeyboardCoordinates, arrayMove } from '@dnd-kit/sortable'; +import { createPortal } from 'react-dom'; -const ChatInputToolbar = ({ - optionConfig = { - surfaceItems: ["emoji", "formatter", "audio", "video", "file"], - formatters: ["bold", "italic", "strike", "code", "multiline"], - }, -}) => { +const ChatInputToolbar = () => { const styles = getChatInputToolbarStyles(useTheme()); - const [surfaceItems, setSurfaceItems] = useState(optionConfig.surfaceItems); - const [formatters, setFormatters] = useState(optionConfig.formatters); + const { surfaceItems, setSurfaceItems, formatters, setFormatters } = + useChatInputItemsStore((state) => ({ + surfaceItems: state.surfaceItems, + setSurfaceItems: state.setSurfaceItems, + formatters: state.formatters, + setFormatters: state.setFormatters, + })); + const [activeSurfaceItem, setActiveSurfaceItem] = useState(null); const [formattersVisible, setFormattersVisible] = useState(false); - const placeholderSurfaceItem = "placeholder-surface"; + const placeholderSurfaceItem = 'placeholder-surface'; const options = useMemo(() => { return { emoji: { - label: "Emoji", - id: "emoji", + label: 'Emoji', + id: 'emoji', onClick: () => {}, - iconName: "emoji", + iconName: 'emoji', visible: true, }, audio: { - label: "Audio Message", - id: "audio", + label: 'Audio Message', + id: 'audio', onClick: () => {}, - iconName: "mic", + iconName: 'mic', visible: true, }, video: { - label: "Video Message", - id: "video", + label: 'Video Message', + id: 'video', onClick: () => {}, - iconName: "video-recorder", + iconName: 'video-recorder', visible: true, }, file: { - label: "Upload File", - id: "file", + label: 'Upload File', + id: 'file', onClick: () => {}, - iconName: "attachment", + iconName: 'attachment', visible: true, }, formatter: { - label: "Formatter", - id: "formatter", + label: 'Formatter', + id: 'formatter', onClick: () => { setFormattersVisible((prev) => !prev); }, - iconName: "format-text", + iconName: 'format-text', visible: true, }, }; @@ -84,7 +86,7 @@ const ChatInputToolbar = ({ ); const handleDragStart = (event) => { - if (event.active.data.current?.type === "SurfaceOptions") { + if (event.active.data.current?.type === 'SurfaceOptions') { if (options[event.active.id] !== undefined) { setFormattersVisible(false); } @@ -102,20 +104,20 @@ const ChatInputToolbar = ({ if (active?.id !== over?.id) { if ( - event.active.data.current?.type === "SurfaceOptions" && - event.over.data.current?.type === "SurfaceOptions" + event.active.data.current?.type === 'SurfaceOptions' && + event.over.data.current?.type === 'SurfaceOptions' ) { - setSurfaceItems((items) => { - const oldIndex = items.indexOf(active.id); - const newIndex = items.indexOf(over.id); - return arrayMove(items, oldIndex, newIndex); - }); + const oldSurfaceIndex = surfaceItems.indexOf(active.id); + const newSurfaceIndex = surfaceItems.indexOf(over.id); + setSurfaceItems( + arrayMove(surfaceItems, oldSurfaceIndex, newSurfaceIndex) + ); - setFormatters((items) => { - const oldIndex = items.indexOf(active.id); - const newIndex = items.indexOf(over.id); - return arrayMove(items, oldIndex, newIndex); - }); + const oldFormatterIndex = formatters.indexOf(active.id); + const newFormatterIndex = formatters.indexOf(over.id); + setFormatters( + arrayMove(formatters, oldFormatterIndex, newFormatterIndex) + ); } } }; @@ -124,7 +126,7 @@ const ChatInputToolbar = ({ return surfaceItems.length > 0 ? surfaceItems .map((item) => { - if (item === "formatter") { + if (item === 'formatter') { return options.formatter; } if (options[item] && options[item].visible) { @@ -138,17 +140,18 @@ const ChatInputToolbar = ({ return null; }) .filter((option) => option !== null) - : [{ id: placeholderSurfaceItem, label: "No items", iconName: "plus" }]; + : [{ id: placeholderSurfaceItem, label: 'No items', iconName: 'plus' }]; }, [surfaceItems, options]); const removeSurfaceItem = (idToRemove) => { - setSurfaceItems((items) => items.filter((item) => item !== idToRemove)); + const newSurfaceItems = surfaceItems.filter((item) => item !== idToRemove); + setSurfaceItems(newSurfaceItems); }; const removeFormatters = (idToRemove) => { - setFormatters((items) => items.filter((item) => item !== idToRemove)); + const newFormatters = formatters.filter((item) => item !== idToRemove); + setFormatters(newFormatters); }; - return ( , - document.getElementById("formatter") + document.getElementById('formatter') )} ); diff --git a/packages/layout_editor/src/views/Message/MessageToolbox.jsx b/packages/layout_editor/src/views/Message/MessageToolbox.jsx index a4d48cac4..fbad6209c 100644 --- a/packages/layout_editor/src/views/Message/MessageToolbox.jsx +++ b/packages/layout_editor/src/views/Message/MessageToolbox.jsx @@ -1,10 +1,10 @@ -import React, { useMemo, useState } from "react"; -import { Box, useTheme } from "@embeddedchat/ui-elements"; -import { Menu } from "../../components/SortableMenu"; -import { getMessageToolboxStyles } from "./Message.styles"; -import SurfaceMenu from "../../components/SurfaceMenu/SurfaceMenu"; -import SurfaceItem from "../../components/SurfaceMenu/SurfaceItem"; -import MenuItem from "../../components/SortableMenu/MenuItem"; +import React, { useMemo, useState } from 'react'; +import { Box, useTheme } from '@embeddedchat/ui-elements'; +import { Menu } from '../../components/SortableMenu'; +import { getMessageToolboxStyles } from './Message.styles'; +import SurfaceMenu from '../../components/SurfaceMenu/SurfaceMenu'; +import SurfaceItem from '../../components/SurfaceMenu/SurfaceItem'; +import MenuItem from '../../components/SortableMenu/MenuItem'; import { DndContext, closestCenter, @@ -13,37 +13,25 @@ import { useSensor, useSensors, DragOverlay, -} from "@dnd-kit/core"; -import { sortableKeyboardCoordinates, arrayMove } from "@dnd-kit/sortable"; -import { createPortal } from "react-dom"; +} from '@dnd-kit/core'; +import { sortableKeyboardCoordinates, arrayMove } from '@dnd-kit/sortable'; +import { createPortal } from 'react-dom'; +import useMessageItemsStore from '../../store/messageItemsStore'; -export const MessageToolbox = ({ - variantStyles = {}, - optionConfig = { - surfaceItems: [ - "reaction", - "reply", - "quote", - "star", - "pin", - "edit", - "delete", - "report", - ], - - menuItems: [], - }, - - ...props -}) => { +export const MessageToolbox = ({ variantStyles = {}, ...props }) => { const styles = getMessageToolboxStyles(useTheme()); - const [surfaceItems, setSurfaceItems] = useState(optionConfig.surfaceItems); - const [menuItems, setMenuItems] = useState(optionConfig.menuItems); + const { surfaceItems, menuItems, setSurfaceItems, setMenuItems } = + useMessageItemsStore((state) => ({ + surfaceItems: state.surfaceItems, + menuItems: state.menuItems, + setSurfaceItems: state.setSurfaceItems, + setMenuItems: state.setMenuItems, + })); const [activeSurfaceItem, setActiveSurfaceItem] = useState(null); const [activeMenuItem, setActiveMenuItem] = useState(null); - const placeholderSurfaceItem = "placeholder-surface"; - const placeholderMenuItem = "placeholder-menu"; + const placeholderSurfaceItem = 'placeholder-surface'; + const placeholderMenuItem = 'placeholder-menu'; const sensors = useSensors( useSensor(PointerSensor, { @@ -57,13 +45,13 @@ export const MessageToolbox = ({ ); const handleDragStart = (event) => { - if (event.active.data.current?.type === "SurfaceOptions") { + if (event.active.data.current?.type === 'SurfaceOptions') { setActiveSurfaceItem({ id: event.active.id, iconName: event.active.data.current.icon, label: event.active.data.current.label, }); - } else if (event.active.data.current?.type === "MenuOptions") { + } else if (event.active.data.current?.type === 'MenuOptions') { setActiveMenuItem({ id: event.active.id, icon: event.active.data.current.icon, @@ -79,49 +67,39 @@ export const MessageToolbox = ({ if (active?.id !== over?.id) { if ( - event.active.data.current?.type === "SurfaceOptions" && - event.over.data.current?.type === "SurfaceOptions" + event.active.data.current?.type === 'SurfaceOptions' && + event.over.data.current?.type === 'SurfaceOptions' ) { - setSurfaceItems((items) => { - const oldIndex = items.indexOf(active.id); - const newIndex = items.indexOf(over.id); - return arrayMove(items, oldIndex, newIndex); - }); + const oldIndex = surfaceItems.indexOf(active.id); + const newIndex = surfaceItems.indexOf(over.id); + setSurfaceItems(arrayMove(surfaceItems, oldIndex, newIndex)); } else if ( - event.active.data.current?.type === "MenuOptions" && - event.over.data.current?.type === "MenuOptions" + event.active.data.current?.type === 'MenuOptions' && + event.over.data.current?.type === 'MenuOptions' ) { - setMenuItems((items) => { - const oldIndex = items.indexOf(active.id); - const newIndex = items.indexOf(over.id); - return arrayMove(items, oldIndex, newIndex); - }); + const oldIndex = menuItems.indexOf(active.id); + const newIndex = menuItems.indexOf(over.id); + setMenuItems(arrayMove(menuItems, oldIndex, newIndex)); } else if ( - event.active.data.current?.type === "SurfaceOptions" && - event.over.data.current?.type === "MenuOptions" && + event.active.data.current?.type === 'SurfaceOptions' && + event.over.data.current?.type === 'MenuOptions' && active.id !== placeholderSurfaceItem ) { - setSurfaceItems((items) => items.filter((item) => item !== active.id)); - setMenuItems((items) => { - const newItems = [ - ...items.filter((item) => item !== placeholderMenuItem), - active.id, - ]; - return newItems; - }); + setSurfaceItems(surfaceItems.filter((item) => item !== active.id)); + setMenuItems([ + ...menuItems.filter((item) => item !== placeholderMenuItem), + active.id, + ]); } else if ( - event.active.data.current?.type === "MenuOptions" && - event.over.data.current?.type === "SurfaceOptions" && + event.active.data.current?.type === 'MenuOptions' && + event.over.data.current?.type === 'SurfaceOptions' && active.id !== placeholderMenuItem ) { - setMenuItems((items) => items.filter((item) => item !== active.id)); - setSurfaceItems((items) => { - const newItems = [ - ...items.filter((item) => item !== placeholderSurfaceItem), - active.id, - ]; - return newItems; - }); + setMenuItems(menuItems.filter((item) => item !== active.id)); + setSurfaceItems([ + ...surfaceItems.filter((item) => item !== placeholderSurfaceItem), + active.id, + ]); } } }; @@ -129,62 +107,62 @@ export const MessageToolbox = ({ const options = useMemo( () => ({ reply: { - label: "Reply in thread", - id: "reply", + label: 'Reply in thread', + id: 'reply', onClick: () => {}, - iconName: "thread", + iconName: 'thread', visible: true, }, quote: { - label: "Quote", - id: "quote", + label: 'Quote', + id: 'quote', onClick: () => {}, - iconName: "quote", + iconName: 'quote', visible: true, }, star: { - label: "Star", - id: "star", + label: 'Star', + id: 'star', onClick: () => {}, - iconName: "star", + iconName: 'star', visible: true, }, reaction: { - label: "Add reaction", - id: "reaction", + label: 'Add reaction', + id: 'reaction', onClick: () => {}, - iconName: "emoji", + iconName: 'emoji', visible: true, }, pin: { - label: "Pin", - id: "pin", + label: 'Pin', + id: 'pin', onClick: () => {}, - iconName: "pin", + iconName: 'pin', visible: true, }, edit: { - label: "Edit", - id: "edit", + label: 'Edit', + id: 'edit', onClick: () => {}, - iconName: "edit", + iconName: 'edit', visible: true, }, delete: { - label: "Delete", - id: "delete", + label: 'Delete', + id: 'delete', onClick: () => {}, - iconName: "trash", + iconName: 'trash', visible: true, - type: "destructive", + type: 'destructive', }, report: { - label: "Report", - id: "report", + label: 'Report', + id: 'report', onClick: () => {}, - iconName: "report", + iconName: 'report', visible: true, - type: "destructive", + type: 'destructive', }, }), [] @@ -205,7 +183,7 @@ export const MessageToolbox = ({ return null; }) .filter((option) => option !== null) - : [{ id: placeholderMenuItem, label: "No items", icon: "plus" }]; + : [{ id: placeholderMenuItem, label: 'No items', icon: 'plus' }]; const surfaceOptions = surfaceItems.length > 0 @@ -223,14 +201,16 @@ export const MessageToolbox = ({ return null; }) .filter((option) => option !== null) - : [{ id: placeholderSurfaceItem, label: "No items", iconName: "plus" }]; + : [{ id: placeholderSurfaceItem, label: 'No items', iconName: 'plus' }]; const removeSurfaceItem = (idToRemove) => { - setSurfaceItems((items) => items.filter((item) => item !== idToRemove)); + const newSurfaceItems = surfaceItems.filter((item) => item !== idToRemove); + setSurfaceItems(newSurfaceItems); }; const removeMenuItem = (idToRemove) => { - setMenuItems((items) => items.filter((item) => item !== idToRemove)); + const newMenuItems = menuItems.filter((item) => item !== idToRemove); + setMenuItems(newMenuItems); }; return ( @@ -255,9 +235,9 @@ export const MessageToolbox = ({ size="small" options={menuOptions} from="bottom" - tooltip={{ isToolTip: true, position: "top", text: "More" }} + tooltip={{ isToolTip: true, position: 'top', text: 'More' }} useWrapper={false} - style={{ top: "auto", bottom: `calc(100% + 2px)` }} + style={{ top: 'auto', bottom: `calc(100% + 2px)` }} onRemove={removeMenuItem} /> )} From df2a97346b1b6b31ad6742759f2dd7edf828dc1a Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Fri, 19 Jul 2024 14:11:00 +0530 Subject: [PATCH 059/104] added functionality to restore items --- .../components/SurfaceMenu/SurfaceItem.jsx | 5 +- .../src/views/ThemeLab/LayoutSetting.jsx | 133 +++++++++++++++++- .../src/views/ThemeLab/ThemeLab.styles.js | 12 +- 3 files changed, 145 insertions(+), 5 deletions(-) diff --git a/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx b/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx index 72f8d06b1..4a4f47f23 100644 --- a/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx +++ b/packages/layout_editor/src/components/SurfaceMenu/SurfaceItem.jsx @@ -17,6 +17,7 @@ const SurfaceItem = ({ onClick, onRemove, type, + cursor = 'grab', tooltipPosition = 'bottom', size, }) => { @@ -57,11 +58,11 @@ const SurfaceItem = ({ iconSize="small" color={type} style={{ - cursor: 'grab', + cursor: cursor, }} /> - {id !== 'placeholder-surface' && ( + {id !== 'placeholder-surface' && onRemove && ( { diff --git a/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx b/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx index 48cf662b3..bf905e56c 100644 --- a/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx +++ b/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx @@ -1,7 +1,9 @@ -import React from 'react'; +import React, { useMemo, useCallback } from 'react'; import { Box, useTheme, StaticSelect } from '@embeddedchat/ui-elements'; import { getLayoutSettings } from './ThemeLab.styles'; import useLayoutStore from '../../store/layoutStore'; +import SurfaceItem from '../../components/SurfaceMenu/SurfaceItem'; +import useHeaderItemsStore from '../../store/headerItemsStore'; const LayoutSetting = () => { const styles = getLayoutSettings(useTheme()); @@ -37,6 +39,127 @@ const LayoutSetting = () => { value: 'colorize', }, ]; + + const { + surfaceItems: headerSurfaceItems, + setSurfaceItems: setHeaderSurfaceItems, + menuItems: headerMenuItems, + } = useHeaderItemsStore((state) => ({ + surfaceItems: state.surfaceItems, + setSurfaceItems: state.setSurfaceItems, + menuItems: state.menuItems, + })); + + const addHeaderSurfaceItem = useCallback( + (id) => { + if (!headerSurfaceItems.includes(id) && !headerMenuItems.includes(id)) { + setHeaderSurfaceItems([id, ...headerSurfaceItems]); + } + }, + [headerMenuItems, headerSurfaceItems, setHeaderSurfaceItems] + ); + + const headerOptions = useMemo( + () => ({ + minmax: { + label: 'Maximize', + id: 'minmax', + iconName: 'expand', + onClick: () => { + addHeaderSurfaceItem('minmax'); + }, + }, + close: { + label: 'Close', + id: 'close', + onClick: () => { + addHeaderSurfaceItem('close'); + }, + iconName: 'cross', + }, + thread: { + label: 'Threads', + id: 'thread', + onClick: () => { + addHeaderSurfaceItem('thread'); + }, + iconName: 'thread', + }, + mentions: { + label: 'Mentions', + id: 'mentions', + onClick: () => { + addHeaderSurfaceItem('mentions'); + }, + iconName: 'at', + }, + starred: { + label: 'Starred Messages', + id: 'starred', + onClick: () => { + addHeaderSurfaceItem('starred'); + }, + iconName: 'star', + }, + pinned: { + label: 'Pinned Messages', + id: 'pinned', + onClick: () => { + addHeaderSurfaceItem('pinned'); + }, + iconName: 'pin', + }, + members: { + label: 'Members', + id: 'members', + onClick: () => { + addHeaderSurfaceItem('members'); + }, + iconName: 'members', + }, + files: { + label: 'Files', + id: 'files', + onClick: () => { + addHeaderSurfaceItem('files'); + }, + iconName: 'clip', + }, + search: { + label: 'Search Messages', + id: 'search', + onClick: () => { + addHeaderSurfaceItem('search'); + }, + iconName: 'magnifier', + }, + rInfo: { + label: 'Room Information', + id: 'rInfo', + onClick: () => { + addHeaderSurfaceItem('rInfo'); + }, + iconName: 'info', + }, + logout: { + label: 'Logout', + id: 'logout', + onClick: () => { + addHeaderSurfaceItem('logout'); + }, + iconName: 'reply-directly', + }, + }), + [addHeaderSurfaceItem] + ); + + const surfaceOptions = Object.keys(headerOptions).map((key) => ({ + id: headerOptions[key].id, + onClick: headerOptions[key].onClick, + label: headerOptions[key].label, + iconName: headerOptions[key].iconName, + })); + return ( @@ -71,6 +194,14 @@ const LayoutSetting = () => {

Tool Tray

+ + Header Items + + {surfaceOptions?.map((item, idx) => ( + + ))} + +
); diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js index 0b5b3db26..6be962fde 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js @@ -45,8 +45,7 @@ export const getLayoutSettings = ({ colors }) => { height: 100%; display: flex; flex-direction: column; - justify-content: space-between; - padding: 0.75rem; + gap: 1.5rem; padding: 0.75rem; `, variantSection: css` @@ -75,6 +74,15 @@ export const getLayoutSettings = ({ colors }) => { displayName: css` position: relative; `, + + headerItems: css` + padding: 1.25rem 0; + `, + + itemContainer: css` + display: flex; + padding: 0.5rem 0; + `, }; return styles; From 074d7e243cf3874b24fb709bb5108a098b0fe3e6 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Fri, 19 Jul 2024 19:41:29 +0530 Subject: [PATCH 060/104] tool tray completed --- .../src/views/ThemeLab/LayoutSetting.jsx | 285 +++++++++++++++++- 1 file changed, 275 insertions(+), 10 deletions(-) diff --git a/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx b/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx index bf905e56c..f2fd06d5c 100644 --- a/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx +++ b/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx @@ -4,6 +4,8 @@ import { getLayoutSettings } from './ThemeLab.styles'; import useLayoutStore from '../../store/layoutStore'; import SurfaceItem from '../../components/SurfaceMenu/SurfaceItem'; import useHeaderItemsStore from '../../store/headerItemsStore'; +import useMessageItemsStore from '../../store/messageItemsStore'; +import useChatInputItemsStore from '../../store/chatInputItemsStore'; const LayoutSetting = () => { const styles = getLayoutSettings(useTheme()); @@ -50,6 +52,28 @@ const LayoutSetting = () => { menuItems: state.menuItems, })); + const { + surfaceItems: messageSurfaceItems, + setSurfaceItems: setMessageSurfaceItems, + menuItems: messageMenuItems, + } = useMessageItemsStore((state) => ({ + surfaceItems: state.surfaceItems, + setSurfaceItems: state.setSurfaceItems, + menuItems: state.menuItems, + })); + + const { + surfaceItems: inputSurfaceItems, + setSurfaceItems: setInputSurfaceItems, + formatters, + setFormatters, + } = useChatInputItemsStore((state) => ({ + surfaceItems: state.surfaceItems, + setSurfaceItems: state.setSurfaceItems, + formatters: state.formatters, + setFormatters: state.setFormatters, + })); + const addHeaderSurfaceItem = useCallback( (id) => { if (!headerSurfaceItems.includes(id) && !headerMenuItems.includes(id)) { @@ -59,6 +83,33 @@ const LayoutSetting = () => { [headerMenuItems, headerSurfaceItems, setHeaderSurfaceItems] ); + const addMessageSurfaceItem = useCallback( + (id) => { + if (!messageSurfaceItems.includes(id) && !messageMenuItems.includes(id)) { + setMessageSurfaceItems([id, ...messageSurfaceItems]); + } + }, + [messageMenuItems, messageSurfaceItems, setMessageSurfaceItems] + ); + + const addInputSurfaceItem = useCallback( + (id) => { + if (!inputSurfaceItems.includes(id)) { + setInputSurfaceItems([id, ...inputSurfaceItems]); + } + }, + [inputSurfaceItems, setInputSurfaceItems] + ); + + const addFormatters = useCallback( + (id) => { + if (!formatters.includes(id)) { + setFormatters([id, ...formatters]); + } + }, + [formatters, setFormatters] + ); + const headerOptions = useMemo( () => ({ minmax: { @@ -69,14 +120,7 @@ const LayoutSetting = () => { addHeaderSurfaceItem('minmax'); }, }, - close: { - label: 'Close', - id: 'close', - onClick: () => { - addHeaderSurfaceItem('close'); - }, - iconName: 'cross', - }, + thread: { label: 'Threads', id: 'thread', @@ -149,17 +193,217 @@ const LayoutSetting = () => { }, iconName: 'reply-directly', }, + + close: { + label: 'Close', + id: 'close', + onClick: () => { + addHeaderSurfaceItem('close'); + }, + iconName: 'cross', + }, }), [addHeaderSurfaceItem] ); - const surfaceOptions = Object.keys(headerOptions).map((key) => ({ + const inputOptions = useMemo(() => { + return { + emoji: { + label: 'Emoji', + id: 'emoji', + onClick: () => { + addInputSurfaceItem('emoji'); + }, + iconName: 'emoji', + visible: true, + }, + audio: { + label: 'Audio Message', + id: 'audio', + onClick: () => { + addInputSurfaceItem('audio'); + }, + iconName: 'mic', + visible: true, + }, + video: { + label: 'Video Message', + id: 'video', + onClick: () => { + addInputSurfaceItem('video'); + }, + iconName: 'video-recorder', + visible: true, + }, + file: { + label: 'Upload File', + id: 'file', + onClick: () => { + addInputSurfaceItem('file'); + }, + iconName: 'attachment', + visible: true, + }, + formatter: { + label: 'Formatter', + id: 'formatter', + onClick: () => { + addInputSurfaceItem('formatter'); + }, + iconName: 'format-text', + visible: true, + }, + }; + }, [addInputSurfaceItem]); + + const formatterOptions = useMemo(() => { + return { + bold: { + label: 'Bold', + id: 'bold', + onClick: () => { + addFormatters('bold'); + }, + iconName: 'bold', + visible: true, + }, + italic: { + label: 'Italic', + id: 'italic', + onClick: () => { + addFormatters('italic'); + }, + iconName: 'italic', + visible: true, + }, + strike: { + label: 'Strike', + id: 'strike', + onClick: () => { + addFormatters('strike'); + }, + iconName: 'strike', + visible: true, + }, + code: { + label: 'Code', + id: 'code', + onClick: () => { + addFormatters('code'); + }, + iconName: 'code', + visible: true, + }, + multiline: { + label: 'Multiline', + id: 'multiline', + onClick: () => { + addFormatters('multiline'); + }, + iconName: 'multiline', + visible: true, + }, + }; + }, [addFormatters]); + + const messageOptions = useMemo( + () => ({ + reply: { + label: 'Reply in thread', + id: 'reply', + onClick: () => { + addMessageSurfaceItem('reply'); + }, + iconName: 'thread', + }, + quote: { + label: 'Quote', + id: 'quote', + onClick: () => { + addMessageSurfaceItem('quote'); + }, + iconName: 'quote', + }, + star: { + label: 'Star', + id: 'star', + onClick: () => { + addMessageSurfaceItem('star'); + }, + iconName: 'star', + }, + reaction: { + label: 'Add reaction', + id: 'reaction', + onClick: () => { + addMessageSurfaceItem('reaction'); + }, + iconName: 'emoji', + }, + pin: { + label: 'Pin', + id: 'pin', + onClick: () => { + addMessageSurfaceItem('pin'); + }, + iconName: 'pin', + }, + edit: { + label: 'Edit', + id: 'edit', + onClick: () => { + addMessageSurfaceItem('edit'); + }, + iconName: 'edit', + }, + delete: { + label: 'Delete', + id: 'delete', + onClick: () => { + addMessageSurfaceItem('delete'); + }, + iconName: 'trash', + }, + report: { + label: 'Report', + id: 'report', + onClick: () => { + addMessageSurfaceItem('report'); + }, + iconName: 'report', + }, + }), + [addMessageSurfaceItem] + ); + + const headerSurfaceOptions = Object.keys(headerOptions).map((key) => ({ id: headerOptions[key].id, onClick: headerOptions[key].onClick, label: headerOptions[key].label, iconName: headerOptions[key].iconName, })); + const messageSurfaceOptions = Object.keys(messageOptions).map((key) => ({ + id: messageOptions[key].id, + onClick: messageOptions[key].onClick, + label: messageOptions[key].label, + iconName: messageOptions[key].iconName, + })); + + const inputSurfaceOptions = Object.keys(inputOptions).map((key) => ({ + id: inputOptions[key].id, + onClick: inputOptions[key].onClick, + label: inputOptions[key].label, + iconName: inputOptions[key].iconName, + })); + + const formatterItems = Object.keys(formatterOptions).map((key) => ({ + id: formatterOptions[key].id, + onClick: formatterOptions[key].onClick, + label: formatterOptions[key].label, + iconName: formatterOptions[key].iconName, + })); + return ( @@ -197,7 +441,28 @@ const LayoutSetting = () => { Header Items - {surfaceOptions?.map((item, idx) => ( + {headerSurfaceOptions?.map((item, idx) => ( + + ))} + + + Message Items + + {messageSurfaceOptions?.map((item, idx) => ( + + ))} + + + Input Items + + {inputSurfaceOptions?.map((item, idx) => ( + + ))} + + + Formatter Items + + {formatterItems?.map((item, idx) => ( ))} From 7ca735a9ae140477a6190823a3cd46a0c6a96c1d Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Fri, 19 Jul 2024 19:43:55 +0530 Subject: [PATCH 061/104] fixed stylings --- packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx | 2 +- packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx index c01e84d00..20843b421 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx @@ -17,7 +17,7 @@ const ThemeLab = () => { const [paletteActive, setPaletteAction] = useState(true); return ( - + setThemeLabOpen(false)} diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js index 6be962fde..405ca4684 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js @@ -81,6 +81,7 @@ export const getLayoutSettings = ({ colors }) => { itemContainer: css` display: flex; + flex-wrap: wrap; padding: 0.5rem 0; `, }; From 6cd849fa2b3e2a5720f80872601da4e227c413bf Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Fri, 19 Jul 2024 23:00:26 +0530 Subject: [PATCH 062/104] added mode shift --- packages/layout_editor/src/App.jsx | 8 +++- .../layout_editor/src/theme/DefaultTheme.js | 9 ---- .../src/views/ChatLayout/ChatLayout.jsx | 5 ++- .../layout_editor/src/views/LayoutEditor.jsx | 34 ++++++--------- .../src/views/LayoutEditor.style.js | 42 +++++++++++-------- .../src/views/ThemeLab/LayoutSetting.jsx | 4 +- .../src/views/ThemeLab/PaletteSetting.jsx | 35 +++++++++++++++- .../src/views/ThemeLab/ThemeLab.styles.js | 20 +++++---- 8 files changed, 96 insertions(+), 61 deletions(-) diff --git a/packages/layout_editor/src/App.jsx b/packages/layout_editor/src/App.jsx index 0e7bcf715..ecf12b6fe 100644 --- a/packages/layout_editor/src/App.jsx +++ b/packages/layout_editor/src/App.jsx @@ -1,8 +1,14 @@ import React from 'react'; import LayoutEditor from './views/LayoutEditor'; +import { ThemeProvider } from '@embeddedchat/ui-elements'; +import DefaultTheme from './theme/DefaultTheme'; const App = () => { - return ; + return ( + + ; + + ); }; export default App; diff --git a/packages/layout_editor/src/theme/DefaultTheme.js b/packages/layout_editor/src/theme/DefaultTheme.js index da20fd7ac..fc12ed9e9 100644 --- a/packages/layout_editor/src/theme/DefaultTheme.js +++ b/packages/layout_editor/src/theme/DefaultTheme.js @@ -71,15 +71,6 @@ const DefaultTheme = { }, }, - breakpoints: { - xs: 0, - sm: 600, - md: 900, - lg: 1200, - xl: 1536, - }, - components: {}, - typography: { default: { fontFamily: "'Times New Roman', serif", diff --git a/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx b/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx index ae6175f5d..8835a955f 100644 --- a/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx +++ b/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx @@ -8,7 +8,9 @@ import DemoSidebar from '../DemoSidebar/DemoSidebar'; import members from '../../data/members.json'; const ChatLayout = () => { - const styles = getChatLayoutStyles(useTheme()); + const theme = useTheme(); + const styles = getChatLayoutStyles(theme); + const { colors } = theme; const handleResize = (size) => { const minSize = 26.5; @@ -36,6 +38,7 @@ const ChatLayout = () => { diff --git a/packages/layout_editor/src/views/LayoutEditor.jsx b/packages/layout_editor/src/views/LayoutEditor.jsx index b94da6958..106095f90 100644 --- a/packages/layout_editor/src/views/LayoutEditor.jsx +++ b/packages/layout_editor/src/views/LayoutEditor.jsx @@ -1,34 +1,26 @@ -import React, { useState } from 'react'; -import DefaultTheme from '../theme/DefaultTheme'; -import { Box, ThemeProvider } from '@embeddedchat/ui-elements'; -import { styles } from './LayoutEditor.style'; +import React from 'react'; +import { Box, useTheme } from '@embeddedchat/ui-elements'; import ChatLayout from './ChatLayout/ChatLayout'; import ChatHeader from './ChatHeader/ChatHeader'; import GlobalStyles from './GlobalStyles'; import useLayoutStore from '../store/layoutStore'; import ThemeLab from './ThemeLab/ThemeLab'; +import { getEditorStyles } from './LayoutEditor.style'; const LayoutEditor = () => { - const [mode, setMode] = useState('light'); const themeLabOpen = useLayoutStore((state) => state.themeLabOpen); + const styles = getEditorStyles(useTheme()); + return ( - - - - - - -
- - {themeLabOpen && } + + + + + +
- + {themeLabOpen && } + ); }; diff --git a/packages/layout_editor/src/views/LayoutEditor.style.js b/packages/layout_editor/src/views/LayoutEditor.style.js index f34c535b7..61451c36b 100644 --- a/packages/layout_editor/src/views/LayoutEditor.style.js +++ b/packages/layout_editor/src/views/LayoutEditor.style.js @@ -1,22 +1,28 @@ import { css } from '@emotion/react'; -export const styles = { - embeddedchat: (theme, dark) => css` - width: 75%; - position: relative; - background: ${theme.schemes[dark ? 'dark' : 'light'].background}; - color: ${theme.schemes[dark ? 'dark' : 'light'].foreground}; - display: flex; - flex: 1; - flex-direction: column; - border: ${`1.5px solid ${theme.schemes[dark ? 'dark' : 'light'].border}`}; - border-radius: ${theme.schemes.radius}; - overflow: hidden; - `, +export const getEditorStyles = ({ theme, colors }) => { + const styles = { + embeddedchat: css` + width: 75%; + position: relative; + background: ${colors.background}; + color: ${colors.foreground}; + display: flex; + flex: 1; + flex-direction: column; + border: ${`1.5px solid ${theme.schemes.border}`}; + border-radius: ${theme.schemes.radius}; + overflow: hidden; + `, - layoutEditor: css` - height: 100vh; - display: flex; - gap: 0.25rem; - `, + layoutEditor: css` + background: ${colors.background}; + color: ${colors.foreground}; + height: 100vh; + display: flex; + gap: 0.25rem; + `, + }; + + return styles; }; diff --git a/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx b/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx index f2fd06d5c..d92e8eb4b 100644 --- a/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx +++ b/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx @@ -408,7 +408,7 @@ const LayoutSetting = () => {

Variants

- + Message View { /> - + Display Name { - const styles = getPaletteSettings(useTheme()); + const theme = useTheme(); + const styles = getPaletteSettings(theme); + + const { mode, setMode } = theme; + + const modeOptions = [ + { + label: 'Light', + value: 'light', + }, + + { + label: 'Dark', + value: 'dark', + }, + ]; + return (

Colors

+ + Mode + +

Typography

diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js index 405ca4684..c093c91c5 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js @@ -26,13 +26,26 @@ export const getPaletteSettings = ({ colors }) => { height: 100%; display: flex; flex-direction: column; + gap: 1.5rem; padding: 0.75rem; `, colorSection: css` padding: 0.5rem; + background-color: ${colors.secondary}; + border-radius: 0.25rem; `, typographySection: css` padding: 0.5rem; + background-color: ${colors.secondary}; + border-radius: 0.25rem; + `, + + commonSelect: css` + display: flex; + gap: 1.25rem; + justify-content: space-between; + padding: 1.25rem 0; + position: relative; `, }; @@ -65,13 +78,6 @@ export const getLayoutSettings = ({ colors }) => { gap: 1.25rem; justify-content: space-between; padding: 1.25rem 0; - `, - - messageView: css` - position: relative; - `, - - displayName: css` position: relative; `, From 0240ab21d8ee1cae87f26fc6a2580caf1bdb11fb Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 20 Jul 2024 01:23:56 +0530 Subject: [PATCH 063/104] added color manager --- packages/layout_editor/package.json | 1 + packages/layout_editor/src/App.jsx | 2 +- .../src/views/ThemeLab/ColorManager.jsx | 86 +++++++++++++++++++ .../src/views/ThemeLab/LayoutSetting.jsx | 24 ++++-- .../src/views/ThemeLab/ThemeLab.jsx | 6 +- .../src/views/ThemeLab/ThemeLab.styles.js | 27 ++++++ .../{PaletteSetting.jsx => ThemeSetting.jsx} | 21 +++-- 7 files changed, 151 insertions(+), 16 deletions(-) create mode 100644 packages/layout_editor/src/views/ThemeLab/ColorManager.jsx rename packages/layout_editor/src/views/ThemeLab/{PaletteSetting.jsx => ThemeSetting.jsx} (66%) diff --git a/packages/layout_editor/package.json b/packages/layout_editor/package.json index b712eb838..b554c260d 100644 --- a/packages/layout_editor/package.json +++ b/packages/layout_editor/package.json @@ -14,6 +14,7 @@ "@dnd-kit/sortable": "^8.0.0", "@embeddedchat/ui-elements": "workspace:^", "react": "^18.2.0", + "react-color": "^2.19.3", "react-dom": "^18.2.0", "react-resizable-panels": "^2.0.20" }, diff --git a/packages/layout_editor/src/App.jsx b/packages/layout_editor/src/App.jsx index ecf12b6fe..0163e1a11 100644 --- a/packages/layout_editor/src/App.jsx +++ b/packages/layout_editor/src/App.jsx @@ -6,7 +6,7 @@ import DefaultTheme from './theme/DefaultTheme'; const App = () => { return ( - ; + ); }; diff --git a/packages/layout_editor/src/views/ThemeLab/ColorManager.jsx b/packages/layout_editor/src/views/ThemeLab/ColorManager.jsx new file mode 100644 index 000000000..9842b8181 --- /dev/null +++ b/packages/layout_editor/src/views/ThemeLab/ColorManager.jsx @@ -0,0 +1,86 @@ +import React, { useState, useRef, useEffect } from 'react'; +import { Box, useTheme } from '@embeddedchat/ui-elements'; +import { ChromePicker } from 'react-color'; +import { getColorMangerStyles } from './ThemeLab.styles'; + +const ColorPicker = ({ color, onChange }) => { + return ( + onChange(updatedColor.hsl)} + /> + ); +}; + +const ColorManager = () => { + const { theme, mode } = useTheme(); + const styles = getColorMangerStyles(theme); + const [visiblePicker, setVisiblePicker] = useState(null); + const [lightColors, setLightColors] = useState(theme.schemes.light); + const [darkColors, setDarkColors] = useState(theme.schemes.dark); + const pickerRef = useRef(null); + + const handleColorChange = (key, hsl) => { + if (mode === 'light') { + setLightColors((prevColors) => ({ + ...prevColors, + [key]: `hsl(${hsl.h}, ${hsl.s * 100}%, ${hsl.l * 100}%)`, + })); + } else { + setDarkColors((prevColors) => ({ + ...prevColors, + [key]: `hsl(${hsl.h}, ${hsl.s * 100}%, ${hsl.l * 100}%)`, + })); + } + }; + + const togglePicker = (key) => { + setVisiblePicker((prevKey) => (prevKey === key ? null : key)); + }; + + const handleClickOutside = (event) => { + if (pickerRef.current && !pickerRef.current.contains(event.target)) { + setVisiblePicker(null); + } + }; + + useEffect(() => { + document.addEventListener('mousedown', handleClickOutside); + return () => { + document.removeEventListener('mousedown', handleClickOutside); + }; + }, []); + + const colors = mode === 'light' ? lightColors : darkColors; + + return ( + + {Object.entries(colors).map(([key, value]) => ( + + {key}: + togglePicker(key)} + /> + {visiblePicker === key && ( + + handleColorChange(key, newColor)} + /> + + )} + + ))} + + ); +}; + +export default ColorManager; diff --git a/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx b/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx index d92e8eb4b..0eba8d6ea 100644 --- a/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx +++ b/packages/layout_editor/src/views/ThemeLab/LayoutSetting.jsx @@ -409,7 +409,9 @@ const LayoutSetting = () => {

Variants

- Message View + + Message View + { - Display Name + + Display Name + {

Tool Tray

- Header Items + + Header Items + {headerSurfaceOptions?.map((item, idx) => ( ))} - Message Items + + Message Items + {messageSurfaceOptions?.map((item, idx) => ( ))} - Input Items + + Input Items + {inputSurfaceOptions?.map((item, idx) => ( ))} - Formatter Items + + Formatter Items + {formatterItems?.map((item, idx) => ( diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx index 20843b421..e01caf6a6 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx @@ -8,8 +8,8 @@ import { } from '@embeddedchat/ui-elements'; import useLayoutStore from '../../store/layoutStore'; import { getThemeLabStyles } from './ThemeLab.styles'; -import PaletteSetting from './PaletteSetting'; import LayoutSetting from './LayoutSetting'; +import ThemeSetting from './ThemeSetting'; const ThemeLab = () => { const styles = getThemeLabStyles(useTheme()); @@ -31,7 +31,7 @@ const ThemeLab = () => { css={[styles.section, paletteActive && styles.sectionActive]} onClick={() => setPaletteAction(true)} > - Palette + Theme { - {paletteActive ? : } + {paletteActive ? : }
diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js index c093c91c5..236f23db2 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js @@ -47,6 +47,12 @@ export const getPaletteSettings = ({ colors }) => { padding: 1.25rem 0; position: relative; `, + + palette: css` + display: flex; + flex-direction: column; + gap: 0.5rem; + `, }; return styles; @@ -94,3 +100,24 @@ export const getLayoutSettings = ({ colors }) => { return styles; }; + +export const getColorMangerStyles = () => { + const styles = { + pickerContainer: css` + position: relative; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0.5rem 0.25rem; + `, + + colorPicker: css` + position: absolute; + top: 100%; + right: 0; + z-index: 1; + `, + }; + + return styles; +}; diff --git a/packages/layout_editor/src/views/ThemeLab/PaletteSetting.jsx b/packages/layout_editor/src/views/ThemeLab/ThemeSetting.jsx similarity index 66% rename from packages/layout_editor/src/views/ThemeLab/PaletteSetting.jsx rename to packages/layout_editor/src/views/ThemeLab/ThemeSetting.jsx index 4acf122fc..2037048fb 100644 --- a/packages/layout_editor/src/views/ThemeLab/PaletteSetting.jsx +++ b/packages/layout_editor/src/views/ThemeLab/ThemeSetting.jsx @@ -1,12 +1,13 @@ import React from 'react'; import { Box, StaticSelect, useTheme } from '@embeddedchat/ui-elements'; import { getPaletteSettings } from './ThemeLab.styles'; +import ColorManager from './ColorManager'; -const PaletteSetting = () => { - const theme = useTheme(); - const styles = getPaletteSettings(theme); +const ThemeSetting = () => { + const themeObject = useTheme(); + const styles = getPaletteSettings(themeObject); - const { mode, setMode } = theme; + const { mode, setMode } = themeObject; const modeOptions = [ { @@ -25,7 +26,9 @@ const PaletteSetting = () => {

Colors

- Mode + + Mode + { onSelect={setMode} /> + + + Palette + + +

Typography

@@ -47,4 +56,4 @@ const PaletteSetting = () => { ); }; -export default PaletteSetting; +export default ThemeSetting; From e9477693392bca53b8158744e00b65264d6fa34d Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 20 Jul 2024 12:02:03 +0530 Subject: [PATCH 064/104] added live theme color view --- .../src/views/ThemeLab/ColorManager.jsx | 49 +++++++++++++------ .../src/views/ThemeLab/ThemeLab.styles.js | 8 +-- .../MessageAggregators/SearchMessages.js | 2 +- 3 files changed, 39 insertions(+), 20 deletions(-) diff --git a/packages/layout_editor/src/views/ThemeLab/ColorManager.jsx b/packages/layout_editor/src/views/ThemeLab/ColorManager.jsx index 9842b8181..bf360fa4d 100644 --- a/packages/layout_editor/src/views/ThemeLab/ColorManager.jsx +++ b/packages/layout_editor/src/views/ThemeLab/ColorManager.jsx @@ -1,7 +1,8 @@ -import React, { useState, useRef, useEffect } from 'react'; +import React, { useState, useRef, useEffect, useCallback, useMemo } from 'react'; import { Box, useTheme } from '@embeddedchat/ui-elements'; import { ChromePicker } from 'react-color'; import { getColorMangerStyles } from './ThemeLab.styles'; +import debounce from 'lodash/debounce'; const ColorPicker = ({ color, onChange }) => { return ( @@ -14,26 +15,44 @@ const ColorPicker = ({ color, onChange }) => { }; const ColorManager = () => { - const { theme, mode } = useTheme(); + const { theme, mode, setTheme } = useTheme(); const styles = getColorMangerStyles(theme); const [visiblePicker, setVisiblePicker] = useState(null); const [lightColors, setLightColors] = useState(theme.schemes.light); const [darkColors, setDarkColors] = useState(theme.schemes.dark); const pickerRef = useRef(null); - const handleColorChange = (key, hsl) => { - if (mode === 'light') { - setLightColors((prevColors) => ({ - ...prevColors, - [key]: `hsl(${hsl.h}, ${hsl.s * 100}%, ${hsl.l * 100}%)`, - })); - } else { - setDarkColors((prevColors) => ({ - ...prevColors, - [key]: `hsl(${hsl.h}, ${hsl.s * 100}%, ${hsl.l * 100}%)`, - })); - } - }; + const debouncedSetTheme = useMemo( + () => + debounce((newLightColors, newDarkColors) => { + const updatedTheme = { + ...theme, + schemes: { + ...theme.schemes, + light: newLightColors, + dark: newDarkColors, + }, + }; + setTheme(updatedTheme); + }, 300), + [theme, setTheme] + ); + + const handleColorChange = useCallback( + (key, hsl) => { + const updatedColor = `hsl(${hsl.h}, ${hsl.s * 100}%, ${hsl.l * 100}%)`; + if (mode === 'light') { + const newLightColors = { ...lightColors, [key]: updatedColor }; + setLightColors(newLightColors); + debouncedSetTheme(newLightColors, darkColors); + } else { + const newDarkColors = { ...darkColors, [key]: updatedColor }; + setDarkColors(newDarkColors); + debouncedSetTheme(lightColors, newDarkColors); + } + }, + [mode, lightColors, darkColors, debouncedSetTheme] + ); const togglePicker = (key) => { setVisiblePicker((prevKey) => (prevKey === key ? null : key)); diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js index 236f23db2..162f701f1 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js @@ -31,13 +31,13 @@ export const getPaletteSettings = ({ colors }) => { `, colorSection: css` padding: 0.5rem; - background-color: ${colors.secondary}; border-radius: 0.25rem; + border: 1px solid ${colors.border}; `, typographySection: css` padding: 0.5rem; - background-color: ${colors.secondary}; border-radius: 0.25rem; + border: 1px solid ${colors.border}; `, commonSelect: css` @@ -69,13 +69,13 @@ export const getLayoutSettings = ({ colors }) => { `, variantSection: css` padding: 0.5rem; - background-color: ${colors.secondary}; + border: 1px solid ${colors.border}; border-radius: 0.25rem; `, toolSection: css` padding: 0.5rem; - background-color: ${colors.secondary}; + border: 1px solid ${colors.border}; border-radius: 0.25rem; `, diff --git a/packages/react/src/views/MessageAggregators/SearchMessages.js b/packages/react/src/views/MessageAggregators/SearchMessages.js index 5f55cf934..e627921c8 100644 --- a/packages/react/src/views/MessageAggregators/SearchMessages.js +++ b/packages/react/src/views/MessageAggregators/SearchMessages.js @@ -1,5 +1,5 @@ import React, { useState, useContext, useEffect } from 'react'; -import { debounce } from 'lodash'; +import debounce from 'lodash/debounce'; import { useComponentOverrides } from '@embeddedchat/ui-elements'; import RCContext from '../../context/RCInstance'; import { MessageAggregator } from './common/MessageAggregator'; From 8185a8a9c097573c2baf28cab2ee02d1c20e894d Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 20 Jul 2024 12:52:04 +0530 Subject: [PATCH 065/104] added lighten to match theme --- packages/react/src/views/ChatHeader/ChatHeader.styles.js | 4 ++-- packages/react/src/views/ChatInput/ChatInput.styles.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/react/src/views/ChatHeader/ChatHeader.styles.js b/packages/react/src/views/ChatHeader/ChatHeader.styles.js index 09271f7af..656a08675 100644 --- a/packages/react/src/views/ChatHeader/ChatHeader.styles.js +++ b/packages/react/src/views/ChatHeader/ChatHeader.styles.js @@ -1,6 +1,6 @@ import { css } from '@emotion/react'; -import { useTheme, darken } from '@embeddedchat/ui-elements'; +import { useTheme, darken, lighten } from '@embeddedchat/ui-elements'; const rowCentreAlign = css` display: flex; @@ -25,7 +25,7 @@ const useChatHeaderStyles = () => { const chatHeaderParent = css` background-color: ${mode === 'light' ? darken(colors.background, 0.03) - : colors.secondary}; + : lighten(colors.background, 1)}; width: 100%; z-index: ${theme.zIndex.general}; display: flex; diff --git a/packages/react/src/views/ChatInput/ChatInput.styles.js b/packages/react/src/views/ChatInput/ChatInput.styles.js index fe6176b42..cd20819cf 100644 --- a/packages/react/src/views/ChatInput/ChatInput.styles.js +++ b/packages/react/src/views/ChatInput/ChatInput.styles.js @@ -1,5 +1,5 @@ import { css } from '@emotion/react'; -import { darken, useTheme } from '@embeddedchat/ui-elements'; +import { darken, lighten, useTheme } from '@embeddedchat/ui-elements'; export const useChatInputStyles = () => { const { theme, colors } = useTheme(); @@ -71,7 +71,7 @@ export const useChatInputFormattingToolbarStyles = () => { align-items: center; background-color: ${mode === 'light' ? darken(colors.background, 0.03) - : colors.secondary}; + : lighten(colors.background, 1)}; display: flex; position: relative; flex-direction: row; From ad6d1d85c4d30b99dbc0f601741f43933b4d6166 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 20 Jul 2024 12:52:39 +0530 Subject: [PATCH 066/104] added listener to change theme when changed externally --- .../src/context/ThemeContextProvider.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/ui-elements/src/context/ThemeContextProvider.js b/packages/ui-elements/src/context/ThemeContextProvider.js index 207a5fb57..084a1a9e4 100644 --- a/packages/ui-elements/src/context/ThemeContextProvider.js +++ b/packages/ui-elements/src/context/ThemeContextProvider.js @@ -1,4 +1,4 @@ -import React, { createContext, useMemo, useState } from 'react'; +import React, { createContext, useMemo, useState, useEffect } from 'react'; import DefaultTheme from '../theme/DefaultTheme'; const invertMode = (mode) => (mode === 'light' ? 'dark' : 'light'); @@ -17,6 +17,18 @@ export const ThemeProvider = ({ const colors = theme.schemes?.[mode]; const invertedColors = theme.schemes?.[invertMode(mode)]; + useEffect(() => { + if (initialTheme) { + setTheme(initialTheme); + } + }, [initialTheme]); + + useEffect(() => { + if (initialMode) { + setMode(initialMode); + } + }, [initialMode]); + const value = useMemo( () => ({ theme, From aae1c89788ecf58c7f61b4bd13bad758bc8e76c1 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 20 Jul 2024 13:14:12 +0530 Subject: [PATCH 067/104] fixed some stylings --- .../src/views/ChatHeader/ChatHeader.styles.js | 8 ++++---- .../src/views/ChatInput/ChatInput.styles.js | 8 ++++---- .../src/views/ThemeLab/ColorManager.jsx | 12 ++++++++++-- .../src/views/ThemeLab/ThemeLab.styles.js | 6 ++++++ 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js b/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js index 101837e06..1052f066e 100644 --- a/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js @@ -1,5 +1,5 @@ -import { css } from "@emotion/react"; -import { darken } from "@embeddedchat/ui-elements"; +import { css } from '@emotion/react'; +import { darken, lighten } from '@embeddedchat/ui-elements'; export const getChatHeaderStyles = ({ theme, mode, colors }) => { const styles = { @@ -18,9 +18,9 @@ export const getChatHeaderStyles = ({ theme, mode, colors }) => { `, chatHeaderParent: css` - background-color: ${mode === "light" + background-color: ${mode === 'light' ? darken(colors.background, 0.03) - : colors.secondary}; + : lighten(colors.background, 1)}; width: 100%; z-index: ${theme.zIndex.general}; display: flex; diff --git a/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js b/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js index c38db696c..03d3f2563 100644 --- a/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js +++ b/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js @@ -1,5 +1,5 @@ -import { css } from "@emotion/react"; -import { darken } from "@embeddedchat/ui-elements"; +import { css } from '@emotion/react'; +import { darken, lighten } from '@embeddedchat/ui-elements'; export const getChatInputStyles = ({ theme, colors }) => { const styles = { @@ -54,9 +54,9 @@ export const getChatInputToolbarStyles = ({ theme, mode, colors }) => { bottom: 0; padding: 0.2rem; align-items: center; - background-color: ${mode === "light" + background-color: ${mode === 'light' ? darken(colors.background, 0.03) - : colors.secondary}; + : lighten(colors.background, 1)}; display: flex; position: relative; flex-direction: row; diff --git a/packages/layout_editor/src/views/ThemeLab/ColorManager.jsx b/packages/layout_editor/src/views/ThemeLab/ColorManager.jsx index bf360fa4d..047bcfbb7 100644 --- a/packages/layout_editor/src/views/ThemeLab/ColorManager.jsx +++ b/packages/layout_editor/src/views/ThemeLab/ColorManager.jsx @@ -1,4 +1,10 @@ -import React, { useState, useRef, useEffect, useCallback, useMemo } from 'react'; +import React, { + useState, + useRef, + useEffect, + useCallback, + useMemo, +} from 'react'; import { Box, useTheme } from '@embeddedchat/ui-elements'; import { ChromePicker } from 'react-color'; import { getColorMangerStyles } from './ThemeLab.styles'; @@ -80,8 +86,10 @@ const ColorManager = () => { {key}: { top: 100%; right: 0; z-index: 1; + + .saturation-white, + .saturation-black, + .hue-horizontal { + cursor: pointer; + } `, }; From 9a49d4edeec31774be076748564dfc72d4ac3ffe Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 20 Jul 2024 14:49:16 +0530 Subject: [PATCH 068/104] added default heading styles when theme is not present --- .../src/components/Heading/Heading.js | 40 +++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/packages/ui-elements/src/components/Heading/Heading.js b/packages/ui-elements/src/components/Heading/Heading.js index 2e38ec93b..8cce39bd4 100644 --- a/packages/ui-elements/src/components/Heading/Heading.js +++ b/packages/ui-elements/src/components/Heading/Heading.js @@ -1,11 +1,45 @@ import React from 'react'; import { css } from '@emotion/react'; -import useTheme from '../../hooks/useTheme'; +import { useTheme } from '../../hooks'; const Heading = ({ level = 1, children, ...props }) => { - const { theme } = useTheme(); + const defaultTypography = { + h1: { + fontSize: '2rem', + fontWeight: 800, + lineHeight: 1.5, + }, + h2: { + fontSize: '1.5rem', + fontWeight: 800, + lineHeight: 1.4, + }, + h3: { + fontSize: '1.3rem', + fontWeight: 400, + lineHeight: 1.3, + }, + h4: { + fontSize: '1rem', + fontWeight: 400, + lineHeight: 1.2, + }, + h5: { + fontSize: '0.83rem', + fontWeight: 400, + lineHeight: 1.1, + }, + h6: { + fontSize: '0.67rem', + fontWeight: 500, + lineHeight: 1.0, + }, + }; + const Tag = `h${level}`; - const style = theme.typography[Tag]; + const { theme } = useTheme(); + const style = { ...defaultTypography[Tag], ...theme.typography[Tag] }; + return ( Date: Sat, 20 Jul 2024 15:06:02 +0530 Subject: [PATCH 069/104] added default zIndex --- .../src/components/Menu/Menu.styles.js | 2 +- .../src/components/Modal/Modal.styles.js | 2 +- .../src/components/Popup/Popup.styles.js | 2 +- .../src/components/Sidebar/Sidebar.styles.js | 2 +- .../components/ToastBar/ToastBar.styles.js | 4 +- .../src/components/Tooltip/Tooltip.styles.js | 2 +- .../ui-elements/src/theme/DefaultTheme.js | 40 ------------------- 7 files changed, 7 insertions(+), 47 deletions(-) diff --git a/packages/ui-elements/src/components/Menu/Menu.styles.js b/packages/ui-elements/src/components/Menu/Menu.styles.js index 49d8e9c8e..131b24e88 100644 --- a/packages/ui-elements/src/components/Menu/Menu.styles.js +++ b/packages/ui-elements/src/components/Menu/Menu.styles.js @@ -17,7 +17,7 @@ export const useMenuStyles = () => { flex-direction: column; width: fit-content; height: fit-content; - z-index: ${theme.zIndex.menu}; + z-index: ${theme.zIndex?.menu || 1300}; border-radius: 0.2em; padding: 0.5rem 0; box-shadow: ${theme.shadows[1]}; diff --git a/packages/ui-elements/src/components/Modal/Modal.styles.js b/packages/ui-elements/src/components/Modal/Modal.styles.js index cf8a4598b..8ef5b11c1 100644 --- a/packages/ui-elements/src/components/Modal/Modal.styles.js +++ b/packages/ui-elements/src/components/Modal/Modal.styles.js @@ -40,7 +40,7 @@ export const useModalBackdropStyles = () => { position: absolute; top: 0; right: 0; - z-index: ${theme.zIndex.modal}; + z-index: ${theme.zIndex?.modal || 1500}; background: ${alpha(theme.schemes.common.black, 0.5)}; width: 100%; height: 100%; diff --git a/packages/ui-elements/src/components/Popup/Popup.styles.js b/packages/ui-elements/src/components/Popup/Popup.styles.js index c060c748c..0f3eaf840 100644 --- a/packages/ui-elements/src/components/Popup/Popup.styles.js +++ b/packages/ui-elements/src/components/Popup/Popup.styles.js @@ -9,7 +9,7 @@ export const usePopupStyles = () => { popup: (width, height) => css` display: flex; flex-direction: column; - z-index: ${theme.zIndex.modal}; + z-index: ${theme.zIndex?.modal || 1500}; box-shadow: ${theme.shadows[2]}; border-radius: ${theme.schemes.radius}; background: ${colors.background}; diff --git a/packages/ui-elements/src/components/Sidebar/Sidebar.styles.js b/packages/ui-elements/src/components/Sidebar/Sidebar.styles.js index a60f6a4df..84617a076 100644 --- a/packages/ui-elements/src/components/Sidebar/Sidebar.styles.js +++ b/packages/ui-elements/src/components/Sidebar/Sidebar.styles.js @@ -8,7 +8,7 @@ const useSidebarStyles = () => { min-width: 350px; height: 100%; box-shadow: ${theme.shadows[2]}; - z-index: ${theme.zIndex.general}; + z-index: ${theme.zIndex?.sidebar || 1200}; display: flex; flex-direction: column; `; diff --git a/packages/ui-elements/src/components/ToastBar/ToastBar.styles.js b/packages/ui-elements/src/components/ToastBar/ToastBar.styles.js index 2b047a478..731ea006b 100644 --- a/packages/ui-elements/src/components/ToastBar/ToastBar.styles.js +++ b/packages/ui-elements/src/components/ToastBar/ToastBar.styles.js @@ -28,7 +28,7 @@ export const toastbarStyles = { background-color: ${bgColor}; border-radius: ${theme.schemes.radius}; padding: 0.75em 1em; - z-index: ${theme.zIndex?.toastbar}; + z-index: ${theme.zIndex?.toastbar || 1600}; animation: ${animation} ${time}ms ease-in-out forwards; `, }; @@ -36,7 +36,7 @@ export const toastbarStyles = { export const toastBarContainerStyles = { container: (theme) => css` position: absolute; - z-index: ${theme.zIndex.toastbar}; + z-index: ${theme.zIndex?.toastbar || 1600}; border-radius: ${theme.schemes.radius}; animation: ${animation} ${2000}ms ease-in-out forwards; `, diff --git a/packages/ui-elements/src/components/Tooltip/Tooltip.styles.js b/packages/ui-elements/src/components/Tooltip/Tooltip.styles.js index 4d85246e4..8ca69fbf0 100644 --- a/packages/ui-elements/src/components/Tooltip/Tooltip.styles.js +++ b/packages/ui-elements/src/components/Tooltip/Tooltip.styles.js @@ -12,7 +12,7 @@ const useTooltipStyles = (position) => { padding: 8.5px; border-radius: ${theme.schemes.radius}; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); - z-index: ${theme.zIndex.tooltip}; + z-index: ${theme.zIndex?.tooltip || 1400}; font-size: 12.5px; font-weight: 500; white-space: nowrap; diff --git a/packages/ui-elements/src/theme/DefaultTheme.js b/packages/ui-elements/src/theme/DefaultTheme.js index bcf1ac888..5fa9eb270 100644 --- a/packages/ui-elements/src/theme/DefaultTheme.js +++ b/packages/ui-elements/src/theme/DefaultTheme.js @@ -61,46 +61,6 @@ const DefaultTheme = { }, }, - breakpoints: { - xs: 0, - sm: 600, - md: 900, - lg: 1200, - xl: 1536, - }, - components: {}, - - typography: { - default: { - fontFamily: "'Times New Roman', serif", - fontSize: 16, - fontWeightRegular: 400, - }, - h1: { - fontSize: '2rem', - fontWeight: 800, - }, - h2: { - fontSize: '1.5rem', - fontWeight: 800, - }, - h3: { - fontSize: '1.3rem', - fontWeight: 400, - }, - h4: { - fontSize: '1rem', - fontWeight: 400, - }, - h5: { - fontSize: '0.83rem', - fontWeight: 400, - }, - h6: { - fontSize: '0.67rem', - fontWeight: 500, - }, - }, shadows: [ 'none', 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', From 7da2a05e9c82f2162673891f3ec9ca961fdfca7b Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 20 Jul 2024 15:10:39 +0530 Subject: [PATCH 070/104] removed zIndex from theme in layout editor --- .../components/SortableMenu/Menu.styles.js | 2 +- .../layout_editor/src/theme/DefaultTheme.js | 35 +-------- .../src/views/ChatHeader/ChatHeader.styles.js | 2 +- .../src/views/ChatInput/ChatInput.styles.js | 2 +- .../layout_editor/src/views/GlobalStyles.jsx | 6 +- .../Message/BubbleVariant/Bubble.styles.js | 2 +- .../src/views/Message/Message.styles.js | 4 +- .../src/views/ThemeLab/FontManager.jsx | 75 +++++++++++++++++++ .../src/views/ThemeLab/ThemeLab.styles.js | 20 ++++- .../src/views/ThemeLab/ThemeSetting.jsx | 2 + 10 files changed, 103 insertions(+), 47 deletions(-) create mode 100644 packages/layout_editor/src/views/ThemeLab/FontManager.jsx diff --git a/packages/layout_editor/src/components/SortableMenu/Menu.styles.js b/packages/layout_editor/src/components/SortableMenu/Menu.styles.js index 0202e392b..6b16dd691 100644 --- a/packages/layout_editor/src/components/SortableMenu/Menu.styles.js +++ b/packages/layout_editor/src/components/SortableMenu/Menu.styles.js @@ -14,7 +14,7 @@ export const getMenuStyles = ({ theme, colors }) => { flex-direction: column; width: fit-content; height: fit-content; - z-index: ${theme.zIndex.menu}; + z-index: 1300; border-radius: 0.2em; padding: 0.5rem 0; box-shadow: ${theme.shadows[1]}; diff --git a/packages/layout_editor/src/theme/DefaultTheme.js b/packages/layout_editor/src/theme/DefaultTheme.js index fc12ed9e9..be1650b8a 100644 --- a/packages/layout_editor/src/theme/DefaultTheme.js +++ b/packages/layout_editor/src/theme/DefaultTheme.js @@ -72,50 +72,17 @@ const DefaultTheme = { }, typography: { - default: { + global: { fontFamily: "'Times New Roman', serif", fontSize: 16, fontWeightRegular: 400, }, - h1: { - fontSize: '2rem', - fontWeight: 800, - }, - h2: { - fontSize: '1.5rem', - fontWeight: 800, - }, - h3: { - fontSize: '1.3rem', - fontWeight: 400, - }, - h4: { - fontSize: '1rem', - fontWeight: 400, - }, - h5: { - fontSize: '0.83rem', - fontWeight: 400, - }, - h6: { - fontSize: '0.67rem', - fontWeight: 500, - }, }, shadows: [ 'none', 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', 'rgba(100, 100, 111, 0.2) 0px 7px 29px 0px', ], - zIndex: { - divider: 1000, - body: 1100, - general: 1200, - menu: 1300, - tooltip: 1400, - modal: 1500, - toastbar: 1600, - }, }; export default DefaultTheme; diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js b/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js index 1052f066e..570a7e989 100644 --- a/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js @@ -22,7 +22,7 @@ export const getChatHeaderStyles = ({ theme, mode, colors }) => { ? darken(colors.background, 0.03) : lighten(colors.background, 1)}; width: 100%; - z-index: ${theme.zIndex.general}; + z-index: 1200; display: flex; flex-direction: column; padding: 0.75rem; diff --git a/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js b/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js index 03d3f2563..92855c1b0 100644 --- a/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js +++ b/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js @@ -75,7 +75,7 @@ export const getFormatterStyles = ({ theme, colors }) => { position: absolute; bottom: 100%; left: auto; - z-index: ${theme.zIndex.body + 1}; + z-index: 1101; `, toolbox: css` diff --git a/packages/layout_editor/src/views/GlobalStyles.jsx b/packages/layout_editor/src/views/GlobalStyles.jsx index ebdc3551f..dbca8e9af 100644 --- a/packages/layout_editor/src/views/GlobalStyles.jsx +++ b/packages/layout_editor/src/views/GlobalStyles.jsx @@ -10,9 +10,9 @@ const useStyles = ({ colors, theme }) => css` } body { - font-family: ${theme.typography.default.fontFamily}; - font-size: ${theme.typography.default.fontSize}px; - font-weight: ${theme.typography.default.fontWeightRegular}; + font-family: ${theme.typography.global.fontFamily}; + font-size: ${theme.typography.global.fontSize}px; + font-weight: ${theme.typography.global.fontWeightRegular}; } a { diff --git a/packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js b/packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js index b90c0f406..0bc6c7ce0 100644 --- a/packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js +++ b/packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js @@ -81,7 +81,7 @@ export const bubbleStyles = ({ theme, colors }) => { position: absolute; bottom: calc(100% - 20px); left: calc(100% - 20px); - z-index: ${theme.zIndex.body + 1}; + z-index: 1101; } `, diff --git a/packages/layout_editor/src/views/Message/Message.styles.js b/packages/layout_editor/src/views/Message/Message.styles.js index f865d21d6..680062c99 100644 --- a/packages/layout_editor/src/views/Message/Message.styles.js +++ b/packages/layout_editor/src/views/Message/Message.styles.js @@ -85,7 +85,7 @@ export const getMessageDividerStyles = ({ theme, colors }) => { line-height: 1rem; position: relative; display: flex; - z-index: ${theme.zIndex.divider}; + z-index: 1000; align-items: center; margin-top: 0.5rem; margin-bottom: 0.75rem; @@ -267,7 +267,7 @@ export const getMessageToolboxStyles = ({ theme, colors }) => { display: flex; position: absolute; bottom: 100%; - z-index: ${theme.zIndex.body + 1}; + z-index: 1101; right: 2rem; `, diff --git a/packages/layout_editor/src/views/ThemeLab/FontManager.jsx b/packages/layout_editor/src/views/ThemeLab/FontManager.jsx new file mode 100644 index 000000000..9c40deee7 --- /dev/null +++ b/packages/layout_editor/src/views/ThemeLab/FontManager.jsx @@ -0,0 +1,75 @@ +import React, { useState } from 'react'; +import { Box, StaticSelect, useTheme } from '@embeddedchat/ui-elements'; +import { getFontManagerStyles } from './ThemeLab.styles'; + +const FontManager = () => { + const themeObj = useTheme(); + const styles = getFontManagerStyles(themeObj); + + const { theme, setTheme } = themeObj; + + const fontFamilyOptions = [ + { label: 'Arial', value: 'Arial, sans-serif' }, + { label: 'Arial Black', value: '"Arial Black", Gadget, sans-serif' }, + { label: 'Comic Sans MS', value: '"Comic Sans MS", cursive, sans-serif' }, + { label: 'Courier New', value: '"Courier New", Courier, monospace' }, + { label: 'Georgia', value: 'Georgia, serif' }, + { label: 'Helvetica', value: 'Helvetica, sans-serif' }, + { label: 'Impact', value: 'Impact, Charcoal, sans-serif' }, + { label: 'Lucida Console', value: '"Lucida Console", Monaco, monospace' }, + { + label: 'Lucida Sans Unicode', + value: '"Lucida Sans Unicode", "Lucida Grande", sans-serif', + }, + { + label: 'Palatino Linotype', + value: '"Palatino Linotype", "Book Antiqua", Palatino, serif', + }, + { label: 'Tahoma', value: 'Tahoma, Geneva, sans-serif' }, + { label: 'Times New Roman', value: "'Times New Roman', serif" }, + { label: 'Trebuchet MS', value: '"Trebuchet MS", Helvetica, sans-serif' }, + { label: 'Verdana', value: 'Verdana, Geneva, sans-serif' }, + { label: 'MS Sans Serif', value: '"MS Sans Serif", Geneva, sans-serif' }, + { label: 'MS Serif', value: '"MS Serif", "New York", serif' }, + ]; + + const [fontFamily, setFontFamily] = useState( + theme.typography.global.fontFamily + ); + + const handleFontChange = (selectedOption) => { + setFontFamily(selectedOption); + setTheme({ + ...theme, + typography: { + ...theme.typography, + global: { + ...theme.typography.global, + fontFamily: selectedOption, + }, + }, + }); + }; + + return ( + + + Font Family + + + + ); +}; + +export default FontManager; diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js index 40c2aa1f1..0a56fb8e6 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js @@ -23,11 +23,10 @@ export const getThemeLabStyles = ({ colors }) => { export const getPaletteSettings = ({ colors }) => { const styles = { main: css` - height: 100%; display: flex; flex-direction: column; gap: 1.5rem; - padding: 0.75rem; + padding: 1.75rem 0.75rem; `, colorSection: css` padding: 0.5rem; @@ -61,11 +60,10 @@ export const getPaletteSettings = ({ colors }) => { export const getLayoutSettings = ({ colors }) => { const styles = { main: css` - height: 100%; display: flex; flex-direction: column; gap: 1.5rem; - padding: 0.75rem; + padding: 1.75rem 0.75rem; `, variantSection: css` padding: 0.5rem; @@ -127,3 +125,17 @@ export const getColorMangerStyles = () => { return styles; }; + +export const getFontManagerStyles = () => { + const styles = { + commonSelect: css` + display: flex; + gap: 1.25rem; + justify-content: space-between; + padding: 1.25rem 0; + position: relative; + `, + }; + + return styles; +}; diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeSetting.jsx b/packages/layout_editor/src/views/ThemeLab/ThemeSetting.jsx index 2037048fb..2df03a0a2 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeSetting.jsx +++ b/packages/layout_editor/src/views/ThemeLab/ThemeSetting.jsx @@ -2,6 +2,7 @@ import React from 'react'; import { Box, StaticSelect, useTheme } from '@embeddedchat/ui-elements'; import { getPaletteSettings } from './ThemeLab.styles'; import ColorManager from './ColorManager'; +import FontManager from './FontManager'; const ThemeSetting = () => { const themeObject = useTheme(); @@ -51,6 +52,7 @@ const ThemeSetting = () => {

Typography

+
); From 4bbfa6053b04fbb57e7f9260b0f91991900e5934 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 20 Jul 2024 15:17:22 +0530 Subject: [PATCH 071/104] removed zIndex from themes --- packages/react/src/theme/AzureSky.js | 9 --------- packages/react/src/theme/CurveVariant/AquaBreeze.js | 9 --------- packages/react/src/theme/CurveVariant/AzureSky.js | 9 --------- packages/react/src/theme/CurveVariant/BlushCandy.js | 9 --------- packages/react/src/theme/CurveVariant/PineWhisper.js | 9 --------- packages/react/src/theme/DefaultTheme.js | 9 --------- packages/react/src/theme/MintMeadow.js | 9 --------- packages/react/src/theme/ModernVariant/StormySeas.js | 9 --------- packages/react/src/theme/RoseEmber.js | 9 --------- .../react/src/views/ChannelState/ChannelState.styles.js | 2 +- packages/react/src/views/ChatBody/ChatBody.styles.js | 3 +-- packages/react/src/views/ChatHeader/ChatHeader.styles.js | 2 +- .../src/views/DynamicHeader/DynamicHeader.styles.js | 5 +---- .../react/src/views/ImageGallery/ImageGallery.styles.js | 4 ++-- .../src/views/Message/BubbleVariant/Bubble.styles.js | 2 +- packages/react/src/views/Message/Message.styles.js | 4 ++-- .../react/src/views/QuoteMessage/QuoteMessage.styles.js | 2 +- packages/react/src/views/TypingUsers/TypingUsers.js | 2 +- 18 files changed, 11 insertions(+), 96 deletions(-) diff --git a/packages/react/src/theme/AzureSky.js b/packages/react/src/theme/AzureSky.js index c401314cb..f0bee5f73 100644 --- a/packages/react/src/theme/AzureSky.js +++ b/packages/react/src/theme/AzureSky.js @@ -108,14 +108,5 @@ const AzureSky = { 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', 'rgba(100, 100, 111, 0.2) 0px 7px 29px 0px', ], - zIndex: { - divider: 1000, - body: 1100, - general: 1200, - menu: 1300, - tooltip: 1400, - modal: 1500, - toastbar: 1600, - }, }; export default AzureSky; diff --git a/packages/react/src/theme/CurveVariant/AquaBreeze.js b/packages/react/src/theme/CurveVariant/AquaBreeze.js index d8af86faf..63f6c4cf5 100644 --- a/packages/react/src/theme/CurveVariant/AquaBreeze.js +++ b/packages/react/src/theme/CurveVariant/AquaBreeze.js @@ -121,14 +121,5 @@ const AquaBreeze = { 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', 'rgba(100, 100, 111, 0.2) 0px 7px 29px 0px', ], - zIndex: { - divider: 1000, - body: 1100, - general: 1200, - menu: 1300, - tooltip: 1400, - modal: 1500, - toastbar: 1600, - }, }; export default AquaBreeze; diff --git a/packages/react/src/theme/CurveVariant/AzureSky.js b/packages/react/src/theme/CurveVariant/AzureSky.js index 0374cdb34..618e8a353 100644 --- a/packages/react/src/theme/CurveVariant/AzureSky.js +++ b/packages/react/src/theme/CurveVariant/AzureSky.js @@ -121,14 +121,5 @@ const AzureSky = { 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', 'rgba(100, 100, 111, 0.2) 0px 7px 29px 0px', ], - zIndex: { - divider: 1000, - body: 1100, - general: 1200, - menu: 1300, - tooltip: 1400, - modal: 1500, - toastbar: 1600, - }, }; export default AzureSky; diff --git a/packages/react/src/theme/CurveVariant/BlushCandy.js b/packages/react/src/theme/CurveVariant/BlushCandy.js index 63320ca75..a10e03762 100644 --- a/packages/react/src/theme/CurveVariant/BlushCandy.js +++ b/packages/react/src/theme/CurveVariant/BlushCandy.js @@ -121,14 +121,5 @@ const BlushCandy = { 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', 'rgba(100, 100, 111, 0.2) 0px 7px 29px 0px', ], - zIndex: { - divider: 1000, - body: 1100, - general: 1200, - menu: 1300, - tooltip: 1400, - modal: 1500, - toastbar: 1600, - }, }; export default BlushCandy; diff --git a/packages/react/src/theme/CurveVariant/PineWhisper.js b/packages/react/src/theme/CurveVariant/PineWhisper.js index 4fef4b054..5a6fc0a4b 100644 --- a/packages/react/src/theme/CurveVariant/PineWhisper.js +++ b/packages/react/src/theme/CurveVariant/PineWhisper.js @@ -122,14 +122,5 @@ const PineWhisper = { 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', 'rgba(100, 100, 111, 0.2) 0px 7px 29px 0px', ], - zIndex: { - divider: 1000, - body: 1100, - general: 1200, - menu: 1300, - tooltip: 1400, - modal: 1500, - toastbar: 1600, - }, }; export default PineWhisper; diff --git a/packages/react/src/theme/DefaultTheme.js b/packages/react/src/theme/DefaultTheme.js index bcf1ac888..6c3eeca9e 100644 --- a/packages/react/src/theme/DefaultTheme.js +++ b/packages/react/src/theme/DefaultTheme.js @@ -106,15 +106,6 @@ const DefaultTheme = { 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', 'rgba(100, 100, 111, 0.2) 0px 7px 29px 0px', ], - zIndex: { - divider: 1000, - body: 1100, - general: 1200, - menu: 1300, - tooltip: 1400, - modal: 1500, - toastbar: 1600, - }, }; export default DefaultTheme; diff --git a/packages/react/src/theme/MintMeadow.js b/packages/react/src/theme/MintMeadow.js index 86ab676de..4146c9c09 100644 --- a/packages/react/src/theme/MintMeadow.js +++ b/packages/react/src/theme/MintMeadow.js @@ -109,15 +109,6 @@ const MintMeadow = { 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', 'rgba(100, 100, 111, 0.2) 0px 7px 29px 0px', ], - zIndex: { - divider: 1000, - body: 1100, - general: 1200, - menu: 1300, - tooltip: 1400, - modal: 1500, - toastbar: 1600, - }, }; export default MintMeadow; diff --git a/packages/react/src/theme/ModernVariant/StormySeas.js b/packages/react/src/theme/ModernVariant/StormySeas.js index ec255446c..13ae3112a 100644 --- a/packages/react/src/theme/ModernVariant/StormySeas.js +++ b/packages/react/src/theme/ModernVariant/StormySeas.js @@ -158,14 +158,5 @@ const StormySeas = { 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', 'rgba(100, 100, 111, 0.2) 0px 7px 29px 0px', ], - zIndex: { - divider: 1000, - body: 1100, - general: 1200, - menu: 1300, - tooltip: 1400, - modal: 1500, - toastbar: 1600, - }, }; export default StormySeas; diff --git a/packages/react/src/theme/RoseEmber.js b/packages/react/src/theme/RoseEmber.js index 73ba6cd86..69ced5bc4 100644 --- a/packages/react/src/theme/RoseEmber.js +++ b/packages/react/src/theme/RoseEmber.js @@ -109,14 +109,5 @@ const RoseEmber = { 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', 'rgba(100, 100, 111, 0.2) 0px 7px 29px 0px', ], - zIndex: { - divider: 1000, - body: 1100, - general: 1200, - menu: 1300, - tooltip: 1400, - modal: 1500, - toastbar: 1600, - }, }; export default RoseEmber; diff --git a/packages/react/src/views/ChannelState/ChannelState.styles.js b/packages/react/src/views/ChannelState/ChannelState.styles.js index 3f728be0a..b18a82c69 100644 --- a/packages/react/src/views/ChannelState/ChannelState.styles.js +++ b/packages/react/src/views/ChannelState/ChannelState.styles.js @@ -6,7 +6,7 @@ const useChannelStateStyles = () => { const channelStateContainer = css` font-size: 0.75rem; padding: 0.2rem 2rem; - z-index: ${theme.zIndex.general}; + z-index: 1200; display: flex; justify-content: space-between; `; diff --git a/packages/react/src/views/ChatBody/ChatBody.styles.js b/packages/react/src/views/ChatBody/ChatBody.styles.js index 0e7404f08..cc8510da4 100644 --- a/packages/react/src/views/ChatBody/ChatBody.styles.js +++ b/packages/react/src/views/ChatBody/ChatBody.styles.js @@ -19,10 +19,9 @@ export const useChatbodyStyles = () => { }; export const useRecentMessageStyles = () => { - const { theme } = useTheme(); const button = css` position: relative; - z-index: ${theme.zIndex.body}; + z-index: 1100; left: 50%; transform: translateX(-50%); user-select: none; diff --git a/packages/react/src/views/ChatHeader/ChatHeader.styles.js b/packages/react/src/views/ChatHeader/ChatHeader.styles.js index 656a08675..90a0fd2e3 100644 --- a/packages/react/src/views/ChatHeader/ChatHeader.styles.js +++ b/packages/react/src/views/ChatHeader/ChatHeader.styles.js @@ -27,7 +27,7 @@ const useChatHeaderStyles = () => { ? darken(colors.background, 0.03) : lighten(colors.background, 1)}; width: 100%; - z-index: ${theme.zIndex.general}; + z-index: 1200; display: flex; flex-direction: column; padding: 0.75rem; diff --git a/packages/react/src/views/DynamicHeader/DynamicHeader.styles.js b/packages/react/src/views/DynamicHeader/DynamicHeader.styles.js index 8187a5f31..8ccdcea51 100644 --- a/packages/react/src/views/DynamicHeader/DynamicHeader.styles.js +++ b/packages/react/src/views/DynamicHeader/DynamicHeader.styles.js @@ -1,15 +1,12 @@ import { css } from '@emotion/react'; -import { useTheme } from '@embeddedchat/ui-elements'; const useDynamicHeaderStyles = () => { - const { theme } = useTheme(); - const container = css` display: flex; justify-content: space-between; align-items: center; width: 100%; - z-index: ${theme.zIndex.general}; + z-index: 1200; padding-block-start: 10px; `; diff --git a/packages/react/src/views/ImageGallery/ImageGallery.styles.js b/packages/react/src/views/ImageGallery/ImageGallery.styles.js index 4b90c8f26..d2cd56485 100644 --- a/packages/react/src/views/ImageGallery/ImageGallery.styles.js +++ b/packages/react/src/views/ImageGallery/ImageGallery.styles.js @@ -10,7 +10,7 @@ const useImageGalleryStyles = () => { left: 0; width: 100%; height: 100%; - z-index: ${theme.zIndex.modal}; + z-index: 1500; background-color: ${alpha(theme.schemes.common.black, 0.5)}; `; @@ -24,7 +24,7 @@ const useImageGalleryStyles = () => { border-radius: ${theme.schemes.radius}; padding: 8px 16px; cursor: pointer; - z-index: ${theme.zIndex.modal + 1}; + z-index: 1501; `; const imageContainer = css` diff --git a/packages/react/src/views/Message/BubbleVariant/Bubble.styles.js b/packages/react/src/views/Message/BubbleVariant/Bubble.styles.js index 576d30d2b..dcf49f821 100644 --- a/packages/react/src/views/Message/BubbleVariant/Bubble.styles.js +++ b/packages/react/src/views/Message/BubbleVariant/Bubble.styles.js @@ -85,7 +85,7 @@ export const bubbleStyles = (customTheme) => { position: absolute; bottom: calc(100% - 20px); left: calc(100% - 20px); - z-index: ${theme.zIndex.body + 1}; + z-index: 1101; } `, diff --git a/packages/react/src/views/Message/Message.styles.js b/packages/react/src/views/Message/Message.styles.js index f23b4de21..80a7f1553 100644 --- a/packages/react/src/views/Message/Message.styles.js +++ b/packages/react/src/views/Message/Message.styles.js @@ -76,7 +76,7 @@ export const useMessageDividerStyles = () => { line-height: 1rem; position: relative; display: flex; - z-index: ${theme.zIndex.divider}; + z-index: 1000; align-items: center; margin-top: 0.5rem; margin-bottom: 0.75rem; @@ -259,7 +259,7 @@ export const useMessageToolboxStyles = () => { display: flex; position: absolute; bottom: 100%; - z-index: ${theme.zIndex.body + 1}; + z-index: 1101; right: 2rem; } `; diff --git a/packages/react/src/views/QuoteMessage/QuoteMessage.styles.js b/packages/react/src/views/QuoteMessage/QuoteMessage.styles.js index feb494c19..16a0bfc2e 100644 --- a/packages/react/src/views/QuoteMessage/QuoteMessage.styles.js +++ b/packages/react/src/views/QuoteMessage/QuoteMessage.styles.js @@ -10,7 +10,7 @@ const useQuoteMessageStyles = () => { background-color: ${colors.background}; color: ${colors.foreground}; padding: 0.5rem; - z-index: ${theme.zIndex.general}; + z-index: 1200; border: 1px solid ${colors.border}; border-radius: ${theme.schemes.radius}; `; diff --git a/packages/react/src/views/TypingUsers/TypingUsers.js b/packages/react/src/views/TypingUsers/TypingUsers.js index b151861d1..db05619ec 100644 --- a/packages/react/src/views/TypingUsers/TypingUsers.js +++ b/packages/react/src/views/TypingUsers/TypingUsers.js @@ -51,7 +51,7 @@ export default function TypingUsers() { height: ${typingUsers.length !== 0 ? '15px' : '0px'}; font-size: 0.75rem; margin-inline-start: 2.25rem; - z-index: ${theme.zIndex.general}; + z-index: 1200; `} > {typingStatusMessage} From f5844f232ecfa5a9e169066b00bf673f340f427b Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 20 Jul 2024 15:18:04 +0530 Subject: [PATCH 072/104] updated yarn lock --- yarn.lock | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index 1a5c60869..f4ee2c319 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3997,6 +3997,15 @@ __metadata: languageName: node linkType: hard +"@icons/material@npm:^0.2.4": + version: 0.2.4 + resolution: "@icons/material@npm:0.2.4" + peerDependencies: + react: "*" + checksum: 24baa360cb83f7e1a9e6784ac11185d57eb895b0efd3070ec915693378330f35ff9feb248f650b9649fa3e1045601286585dc05795a4c734d4849b33900351ee + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -21348,8 +21357,11 @@ __metadata: eslint-plugin-react-hooks: ^4.6.0 eslint-plugin-react-refresh: ^0.4.5 react: ^18.2.0 + react-color: ^2.19.3 react-dom: ^18.2.0 + react-resizable-panels: ^2.0.20 vite: ^5.1.0 + zustand: ^4.3.8 languageName: unknown linkType: soft @@ -21875,6 +21887,13 @@ __metadata: languageName: node linkType: hard +"lodash-es@npm:^4.17.15": + version: 4.17.21 + resolution: "lodash-es@npm:4.17.21" + checksum: 05cbffad6e2adbb331a4e16fbd826e7faee403a1a04873b82b42c0f22090f280839f85b95393f487c1303c8a3d2a010048bf06151a6cbe03eee4d388fb0a12d2 + languageName: node + linkType: hard + "lodash.camelcase@npm:^4.3.0": version: 4.3.0 resolution: "lodash.camelcase@npm:4.3.0" @@ -21952,7 +21971,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.13, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.3.0, lodash@npm:^4.7.0": +"lodash@npm:^4.0.1, lodash@npm:^4.17.13, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.3.0, lodash@npm:^4.7.0": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -22275,6 +22294,13 @@ __metadata: languageName: node linkType: hard +"material-colors@npm:^1.2.1": + version: 1.2.6 + resolution: "material-colors@npm:1.2.6" + checksum: 72d005ccccb82bab68eef3cd757e802668634fc86976dedb9fc564ce994f2d3258273766b7efecb7404a0031969e2d72201a1b74169763f0a53c0dd8d649209f + languageName: node + linkType: hard + "maxmin@npm:^2.1.0": version: 2.1.0 resolution: "maxmin@npm:2.1.0" @@ -26550,6 +26576,23 @@ __metadata: languageName: node linkType: hard +"react-color@npm:^2.19.3": + version: 2.19.3 + resolution: "react-color@npm:2.19.3" + dependencies: + "@icons/material": ^0.2.4 + lodash: ^4.17.15 + lodash-es: ^4.17.15 + material-colors: ^1.2.1 + prop-types: ^15.5.10 + reactcss: ^1.2.0 + tinycolor2: ^1.4.1 + peerDependencies: + react: "*" + checksum: 40b49e1aa2ab27a099cc37a3fa2d5bb906b8def4dbe2d922c0e42365e386d82b03f9b06a2b29a44a51f1e114cef72e61c0ba0740581a128d951936ea4617429b + languageName: node + linkType: hard + "react-colorful@npm:^5.1.2": version: 5.6.1 resolution: "react-colorful@npm:5.6.1" @@ -26938,6 +26981,16 @@ __metadata: languageName: node linkType: hard +"react-resizable-panels@npm:^2.0.20": + version: 2.0.20 + resolution: "react-resizable-panels@npm:2.0.20" + peerDependencies: + react: ^16.14.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.14.0 || ^17.0.0 || ^18.0.0 + checksum: 73f42c826037a5027c4112c5d62ded42c122ca2f62210123954923fb000f9b4ce6b9d329284892046fb8b14036b53abc0c5235ef3ec85e53175c0c73ba70844a + languageName: node + linkType: hard + "react-shallow-renderer@npm:^16.15.0": version: 16.15.0 resolution: "react-shallow-renderer@npm:16.15.0" @@ -26986,6 +27039,15 @@ __metadata: languageName: node linkType: hard +"reactcss@npm:^1.2.0": + version: 1.2.3 + resolution: "reactcss@npm:1.2.3" + dependencies: + lodash: ^4.0.1 + checksum: c53e386a0881f1477e1cff661f6a6ad4c662230941f3827862193ac30f9b75cdf7bc7b4c7e5ca543d3e4e80fee1a3e9fa0056c206b1c0423726c41773ab3fe45 + languageName: node + linkType: hard + "read-cmd-shim@npm:3.0.0": version: 3.0.0 resolution: "read-cmd-shim@npm:3.0.0" From 6885ba08ff12c4a6458ddb0596d1cc845cbe69bc Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 20 Jul 2024 15:21:19 +0530 Subject: [PATCH 073/104] rollback to default name --- packages/layout_editor/src/theme/DefaultTheme.js | 2 +- packages/layout_editor/src/views/GlobalStyles.jsx | 6 +++--- packages/layout_editor/src/views/ThemeLab/FontManager.jsx | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/layout_editor/src/theme/DefaultTheme.js b/packages/layout_editor/src/theme/DefaultTheme.js index be1650b8a..8752e2e4a 100644 --- a/packages/layout_editor/src/theme/DefaultTheme.js +++ b/packages/layout_editor/src/theme/DefaultTheme.js @@ -72,7 +72,7 @@ const DefaultTheme = { }, typography: { - global: { + default: { fontFamily: "'Times New Roman', serif", fontSize: 16, fontWeightRegular: 400, diff --git a/packages/layout_editor/src/views/GlobalStyles.jsx b/packages/layout_editor/src/views/GlobalStyles.jsx index dbca8e9af..ebdc3551f 100644 --- a/packages/layout_editor/src/views/GlobalStyles.jsx +++ b/packages/layout_editor/src/views/GlobalStyles.jsx @@ -10,9 +10,9 @@ const useStyles = ({ colors, theme }) => css` } body { - font-family: ${theme.typography.global.fontFamily}; - font-size: ${theme.typography.global.fontSize}px; - font-weight: ${theme.typography.global.fontWeightRegular}; + font-family: ${theme.typography.default.fontFamily}; + font-size: ${theme.typography.default.fontSize}px; + font-weight: ${theme.typography.default.fontWeightRegular}; } a { diff --git a/packages/layout_editor/src/views/ThemeLab/FontManager.jsx b/packages/layout_editor/src/views/ThemeLab/FontManager.jsx index 9c40deee7..b7c24ae87 100644 --- a/packages/layout_editor/src/views/ThemeLab/FontManager.jsx +++ b/packages/layout_editor/src/views/ThemeLab/FontManager.jsx @@ -34,7 +34,7 @@ const FontManager = () => { ]; const [fontFamily, setFontFamily] = useState( - theme.typography.global.fontFamily + theme.typography.default.fontFamily ); const handleFontChange = (selectedOption) => { @@ -43,8 +43,8 @@ const FontManager = () => { ...theme, typography: { ...theme.typography, - global: { - ...theme.typography.global, + default: { + ...theme.typography.default, fontFamily: selectedOption, }, }, From c486dbe4aeaa922ea9b3b0aaae53a1558e027cd4 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 20 Jul 2024 15:40:21 +0530 Subject: [PATCH 074/104] added typography ssettings --- .../src/views/ThemeLab/FontManager.jsx | 102 +++++++++++++++--- .../src/views/ThemeLab/ThemeLab.styles.js | 4 +- 2 files changed, 87 insertions(+), 19 deletions(-) diff --git a/packages/layout_editor/src/views/ThemeLab/FontManager.jsx b/packages/layout_editor/src/views/ThemeLab/FontManager.jsx index b7c24ae87..4b7bd4b14 100644 --- a/packages/layout_editor/src/views/ThemeLab/FontManager.jsx +++ b/packages/layout_editor/src/views/ThemeLab/FontManager.jsx @@ -5,7 +5,6 @@ import { getFontManagerStyles } from './ThemeLab.styles'; const FontManager = () => { const themeObj = useTheme(); const styles = getFontManagerStyles(themeObj); - const { theme, setTheme } = themeObj; const fontFamilyOptions = [ @@ -33,11 +32,31 @@ const FontManager = () => { { label: 'MS Serif', value: '"MS Serif", "New York", serif' }, ]; + const fontSizeOptions = [ + { label: 'Small', value: 12 }, + { label: 'Medium', value: 16 }, + { label: 'Large', value: 20 }, + { label: 'Extra Large', value: 24 }, + ]; + + const fontWeightOptions = [ + { label: 'Light', value: 300 }, + { label: 'Normal', value: 400 }, + { label: 'Bold', value: 700 }, + { label: 'Extra Bold', value: 900 }, + ]; + const [fontFamily, setFontFamily] = useState( theme.typography.default.fontFamily ); + const [fontSize, setFontSize] = useState( + theme.typography.default.fontSize || '16' + ); + const [fontWeight, setFontWeight] = useState( + theme.typography.default.fontWeightRegular || 400 + ); - const handleFontChange = (selectedOption) => { + const handleFontFamilyChange = (selectedOption) => { setFontFamily(selectedOption); setTheme({ ...theme, @@ -51,23 +70,72 @@ const FontManager = () => { }); }; + const handleFontSizeChange = (selectedOption) => { + setFontSize(selectedOption); + setTheme({ + ...theme, + typography: { + ...theme.typography, + default: { + ...theme.typography.default, + fontSize: selectedOption, + }, + }, + }); + }; + + const handleFontWeightChange = (selectedOption) => { + setFontWeight(selectedOption); + setTheme({ + ...theme, + typography: { + ...theme.typography, + default: { + ...theme.typography.default, + fontWeightRegular: selectedOption, + }, + }, + }); + }; + return ( - - - Font Family + + + + Font Family + + + + + + Font Size + + + + + + Font Weight + + - ); }; diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js index 0a56fb8e6..4c9d88612 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js @@ -26,7 +26,7 @@ export const getPaletteSettings = ({ colors }) => { display: flex; flex-direction: column; gap: 1.5rem; - padding: 1.75rem 0.75rem; + padding: 1.25rem 0.75rem; `, colorSection: css` padding: 0.5rem; @@ -63,7 +63,7 @@ export const getLayoutSettings = ({ colors }) => { display: flex; flex-direction: column; gap: 1.5rem; - padding: 1.75rem 0.75rem; + padding: 1.25rem 0.75rem; `, variantSection: css` padding: 0.5rem; From 8b035c2d33dd083f4d3f95ab0bb3daa55b733f61 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 20 Jul 2024 16:20:32 +0530 Subject: [PATCH 075/104] added generate theme btn --- packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx | 6 ++++++ .../layout_editor/src/views/ThemeLab/ThemeLab.styles.js | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx index e01caf6a6..095214754 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx @@ -1,6 +1,7 @@ import React, { useState } from 'react'; import { Box, + Button, MinimalSidebar, SidebarContent, SidebarHeader, @@ -43,6 +44,11 @@ const ThemeLab = () => { {paletteActive ? : } + + + diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js index 4c9d88612..09e8497f2 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js @@ -9,12 +9,17 @@ export const getThemeLabStyles = ({ colors }) => { `, section: css` - padding: 0 1rem 0.5rem; cursor: pointer; `, sectionActive: css` border-bottom: 1px solid ${colors.primary}; `, + + btn: css` + border-radius: 0.25rem; + border: 1px solid ${colors.border}; + margin: 0 0.75rem 0.75rem; + `, }; return styles; From 6521d06f9ccb81c1c71c9b0b92e55bdf8f035981 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 20 Jul 2024 22:00:44 +0530 Subject: [PATCH 076/104] added generated theme to modal --- packages/layout_editor/package.json | 3 +- packages/layout_editor/src/App.jsx | 6 +- .../layout_editor/src/views/GlobalStyles.jsx | 2 +- .../src/views/ThemeLab/ThemeLab.jsx | 145 ++++++++++--- .../src/views/ThemeLab/ThemeLab.styles.js | 8 + yarn.lock | 196 +++++++++++++++++- 6 files changed, 324 insertions(+), 36 deletions(-) diff --git a/packages/layout_editor/package.json b/packages/layout_editor/package.json index b554c260d..28dea7bc0 100644 --- a/packages/layout_editor/package.json +++ b/packages/layout_editor/package.json @@ -16,7 +16,8 @@ "react": "^18.2.0", "react-color": "^2.19.3", "react-dom": "^18.2.0", - "react-resizable-panels": "^2.0.20" + "react-resizable-panels": "^2.0.20", + "react-syntax-highlighter": "^15.5.0" }, "devDependencies": { "@emotion/babel-preset-css-prop": "^11.11.0", diff --git a/packages/layout_editor/src/App.jsx b/packages/layout_editor/src/App.jsx index 0163e1a11..62d6c9502 100644 --- a/packages/layout_editor/src/App.jsx +++ b/packages/layout_editor/src/App.jsx @@ -1,12 +1,14 @@ import React from 'react'; import LayoutEditor from './views/LayoutEditor'; -import { ThemeProvider } from '@embeddedchat/ui-elements'; +import { ThemeProvider, ToastBarProvider } from '@embeddedchat/ui-elements'; import DefaultTheme from './theme/DefaultTheme'; const App = () => { return ( - + + + ); }; diff --git a/packages/layout_editor/src/views/GlobalStyles.jsx b/packages/layout_editor/src/views/GlobalStyles.jsx index ebdc3551f..2b6bd97e9 100644 --- a/packages/layout_editor/src/views/GlobalStyles.jsx +++ b/packages/layout_editor/src/views/GlobalStyles.jsx @@ -21,7 +21,7 @@ const useStyles = ({ colors, theme }) => css` ::-webkit-scrollbar { width: 4px; - height: 7.7px; + height: 4px; } ::-webkit-scrollbar-thumb { diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx index 095214754..404d66e75 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx @@ -1,57 +1,140 @@ import React, { useState } from 'react'; import { Box, + Icon, Button, MinimalSidebar, + Modal, SidebarContent, SidebarHeader, useTheme, + useToastBarDispatch, } from '@embeddedchat/ui-elements'; import useLayoutStore from '../../store/layoutStore'; import { getThemeLabStyles } from './ThemeLab.styles'; import LayoutSetting from './LayoutSetting'; import ThemeSetting from './ThemeSetting'; +import { Light as SyntaxHighlighter } from 'react-syntax-highlighter'; +import { dracula } from 'react-syntax-highlighter/dist/esm/styles/hljs'; const ThemeLab = () => { const styles = getThemeLabStyles(useTheme()); const setThemeLabOpen = useLayoutStore((state) => state.setThemeLabOpen); const [paletteActive, setPaletteAction] = useState(true); + const [themeModalOpen, setThemeModalOpen] = useState(false); + const [generatedTheme, setGeneratedTheme] = useState(null); + const { theme } = useTheme(); + const dispatchToastMessage = useToastBarDispatch(); + + const handleThemeGeneration = () => { + setThemeModalOpen(true); + const themeString = JSON.stringify(theme, null, 2) + .replace(/\\n/g, '\n') + .replace(/\\"/g, "'"); + setGeneratedTheme(themeString); + }; + + const handleCopyToClipboard = () => { + if (generatedTheme) { + navigator.clipboard + .writeText(generatedTheme) + .then(() => { + dispatchToastMessage({ + type: 'success', + message: 'Theme copied to clipboard.', + }); + }) + .catch((err) => { + dispatchToastMessage({ + type: 'error', + message: 'Copy to clipboard failed.', + }); + }); + } + }; return ( - - - setThemeLabOpen(false)} - title="Theme Lab" - iconName="cog" - /> - - - setPaletteAction(true)} - > - Theme + <> + + + setThemeLabOpen(false)} + title="Theme Lab" + iconName="cog" + /> + + + setPaletteAction(true)} + > + Theme + + setPaletteAction(false)} + > + Layout + - setPaletteAction(false)} - > - Layout + + {paletteActive ? : } + + - + + + - {paletteActive ? : } - - - - - - + {themeModalOpen && ( + setThemeModalOpen(false)}> + + + + Your theme is ready! + + setThemeModalOpen(false)} /> + + + + + {generatedTheme} + + + + + + + + + + + )} + ); }; diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js index 09e8497f2..ff874544c 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js @@ -20,6 +20,14 @@ export const getThemeLabStyles = ({ colors }) => { border: 1px solid ${colors.border}; margin: 0 0.75rem 0.75rem; `, + + syntaxBox: css` + position: relative; + `, + + closeBtn: css` + padding: 0.5rem; + `, }; return styles; diff --git a/yarn.lock b/yarn.lock index f4ee2c319..0b772473a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1876,6 +1876,15 @@ __metadata: languageName: node linkType: hard +"@babel/runtime@npm:^7.3.1": + version: 7.24.8 + resolution: "@babel/runtime@npm:7.24.8" + dependencies: + regenerator-runtime: ^0.14.0 + checksum: 6b1e4230580f67a807ad054720812bbefbb024cc2adc1159d050acbb764c4c81c7ac5f7a042c48f578987c5edc2453c71039268df059058e9501fa6023d764b0 + languageName: node + linkType: hard + "@babel/template@npm:^7.0.0, @babel/template@npm:^7.20.7, @babel/template@npm:^7.22.15, @babel/template@npm:^7.3.3": version: 7.22.15 resolution: "@babel/template@npm:7.22.15" @@ -9516,6 +9525,15 @@ __metadata: languageName: node linkType: hard +"@types/hast@npm:^2.0.0": + version: 2.3.10 + resolution: "@types/hast@npm:2.3.10" + dependencies: + "@types/unist": ^2 + checksum: 41531b7fbf590b02452996fc63272479c20a07269e370bd6514982cbcd1819b4b84d3ea620f2410d1b9541a23d08ce2eeb0a592145d05e00e249c3d56700d460 + languageName: node + linkType: hard + "@types/html-minifier-terser@npm:^6.0.0": version: 6.1.0 resolution: "@types/html-minifier-terser@npm:6.1.0" @@ -9873,7 +9891,7 @@ __metadata: languageName: node linkType: hard -"@types/unist@npm:^2.0.0": +"@types/unist@npm:^2, @types/unist@npm:^2.0.0": version: 2.0.10 resolution: "@types/unist@npm:2.0.10" checksum: e2924e18dedf45f68a5c6ccd6015cd62f1643b1b43baac1854efa21ae9e70505db94290434a23da1137d9e31eb58e54ca175982005698ac37300a1c889f6c4aa @@ -12980,6 +12998,27 @@ __metadata: languageName: node linkType: hard +"character-entities-legacy@npm:^1.0.0": + version: 1.1.4 + resolution: "character-entities-legacy@npm:1.1.4" + checksum: fe03a82c154414da3a0c8ab3188e4237ec68006cbcd681cf23c7cfb9502a0e76cd30ab69a2e50857ca10d984d57de3b307680fff5328ccd427f400e559c3a811 + languageName: node + linkType: hard + +"character-entities@npm:^1.0.0": + version: 1.2.4 + resolution: "character-entities@npm:1.2.4" + checksum: e1545716571ead57beac008433c1ff69517cd8ca5b336889321c5b8ff4a99c29b65589a701e9c086cda8a5e346a67295e2684f6c7ea96819fe85cbf49bf8686d + languageName: node + linkType: hard + +"character-reference-invalid@npm:^1.0.0": + version: 1.1.4 + resolution: "character-reference-invalid@npm:1.1.4" + checksum: 20274574c70e05e2f81135f3b93285536bc8ff70f37f0809b0d17791a832838f1e49938382899ed4cb444e5bbd4314ca1415231344ba29f4222ce2ccf24fea0b + languageName: node + linkType: hard + "chardet@npm:^0.4.0": version: 0.4.2 resolution: "chardet@npm:0.4.2" @@ -13417,6 +13456,13 @@ __metadata: languageName: node linkType: hard +"comma-separated-tokens@npm:^1.0.0": + version: 1.0.8 + resolution: "comma-separated-tokens@npm:1.0.8" + checksum: 0adcb07174fa4d08cf0f5c8e3aec40a36b5ff0c2c720e5e23f50fe02e6789d1d00a67036c80e0c1e1539f41d3e7f0101b074039dd833b4e4a59031b659d6ca0d + languageName: node + linkType: hard + "command-exists@npm:^1.2.4, command-exists@npm:^1.2.8": version: 1.2.9 resolution: "command-exists@npm:1.2.9" @@ -17022,6 +17068,15 @@ __metadata: languageName: node linkType: hard +"fault@npm:^1.0.0": + version: 1.0.4 + resolution: "fault@npm:1.0.4" + dependencies: + format: ^0.2.0 + checksum: 5ac610d8b09424e0f2fa8cf913064372f2ee7140a203a79957f73ed557c0e79b1a3d096064d7f40bde8132a69204c1fe25ec23634c05c6da2da2039cff26c4e7 + languageName: node + linkType: hard + "faye-websocket@npm:0.11.x": version: 0.11.4 resolution: "faye-websocket@npm:0.11.4" @@ -17528,6 +17583,13 @@ __metadata: languageName: node linkType: hard +"format@npm:^0.2.0": + version: 0.2.2 + resolution: "format@npm:0.2.2" + checksum: 646a60e1336250d802509cf24fb801e43bd4a70a07510c816fa133aa42cdbc9c21e66e9cc0801bb183c5b031c9d68be62e7fbb6877756e52357850f92aa28799 + languageName: node + linkType: hard + "forwarded@npm:0.2.0": version: 0.2.0 resolution: "forwarded@npm:0.2.0" @@ -18562,6 +18624,26 @@ __metadata: languageName: node linkType: hard +"hast-util-parse-selector@npm:^2.0.0": + version: 2.2.5 + resolution: "hast-util-parse-selector@npm:2.2.5" + checksum: 22ee4afbd11754562144cb3c4f3ec52524dafba4d90ee52512902d17cf11066d83b38f7bdf6ca571bbc2541f07ba30db0d234657b6ecb8ca4631587466459605 + languageName: node + linkType: hard + +"hastscript@npm:^6.0.0": + version: 6.0.0 + resolution: "hastscript@npm:6.0.0" + dependencies: + "@types/hast": ^2.0.0 + comma-separated-tokens: ^1.0.0 + hast-util-parse-selector: ^2.0.0 + property-information: ^5.0.0 + space-separated-tokens: ^1.0.0 + checksum: 5e50b85af0d2cb7c17979cb1ddca75d6b96b53019dd999b39e7833192c9004201c3cee6445065620ea05d0087d9ae147a4844e582d64868be5bc6b0232dfe52d + languageName: node + linkType: hard + "he@npm:^1.2.0": version: 1.2.0 resolution: "he@npm:1.2.0" @@ -18596,6 +18678,13 @@ __metadata: languageName: node linkType: hard +"highlight.js@npm:^10.4.1, highlight.js@npm:~10.7.0": + version: 10.7.3 + resolution: "highlight.js@npm:10.7.3" + checksum: defeafcd546b535d710d8efb8e650af9e3b369ef53e28c3dc7893eacfe263200bba4c5fcf43524ae66d5c0c296b1af0870523ceae3e3104d24b7abf6374a4fea + languageName: node + linkType: hard + "hmac-drbg@npm:^1.0.1": version: 1.0.1 resolution: "hmac-drbg@npm:1.0.1" @@ -19380,6 +19469,23 @@ __metadata: languageName: node linkType: hard +"is-alphabetical@npm:^1.0.0": + version: 1.0.4 + resolution: "is-alphabetical@npm:1.0.4" + checksum: 6508cce44fd348f06705d377b260974f4ce68c74000e7da4045f0d919e568226dc3ce9685c5a2af272195384df6930f748ce9213fc9f399b5d31b362c66312cb + languageName: node + linkType: hard + +"is-alphanumerical@npm:^1.0.0": + version: 1.0.4 + resolution: "is-alphanumerical@npm:1.0.4" + dependencies: + is-alphabetical: ^1.0.0 + is-decimal: ^1.0.0 + checksum: e2e491acc16fcf5b363f7c726f666a9538dba0a043665740feb45bba1652457a73441e7c5179c6768a638ed396db3437e9905f403644ec7c468fb41f4813d03f + languageName: node + linkType: hard + "is-arguments@npm:^1.0.4, is-arguments@npm:^1.1.1": version: 1.1.1 resolution: "is-arguments@npm:1.1.1" @@ -19552,6 +19658,13 @@ __metadata: languageName: node linkType: hard +"is-decimal@npm:^1.0.0": + version: 1.0.4 + resolution: "is-decimal@npm:1.0.4" + checksum: ed483a387517856dc395c68403a10201fddcc1b63dc56513fbe2fe86ab38766120090ecdbfed89223d84ca8b1cd28b0641b93cb6597b6e8f4c097a7c24e3fb96 + languageName: node + linkType: hard + "is-deflate@npm:^1.0.0": version: 1.0.0 resolution: "is-deflate@npm:1.0.0" @@ -19722,6 +19835,13 @@ __metadata: languageName: node linkType: hard +"is-hexadecimal@npm:^1.0.0": + version: 1.0.4 + resolution: "is-hexadecimal@npm:1.0.4" + checksum: a452e047587b6069332d83130f54d30da4faf2f2ebaa2ce6d073c27b5703d030d58ed9e0b729c8e4e5b52c6f1dab26781bb77b7bc6c7805f14f320e328ff8cd5 + languageName: node + linkType: hard + "is-interactive@npm:^1.0.0": version: 1.0.0 resolution: "is-interactive@npm:1.0.0" @@ -21360,6 +21480,7 @@ __metadata: react-color: ^2.19.3 react-dom: ^18.2.0 react-resizable-panels: ^2.0.20 + react-syntax-highlighter: ^15.5.0 vite: ^5.1.0 zustand: ^4.3.8 languageName: unknown @@ -22042,6 +22163,16 @@ __metadata: languageName: node linkType: hard +"lowlight@npm:^1.17.0": + version: 1.20.0 + resolution: "lowlight@npm:1.20.0" + dependencies: + fault: ^1.0.0 + highlight.js: ~10.7.0 + checksum: 14a1815d6bae202ddee313fc60f06d46e5235c02fa483a77950b401d85b4c1e12290145ccd17a716b07f9328bd5864aa2d402b6a819ff3be7c833d9748ff8ba7 + languageName: node + linkType: hard + "lru-cache@npm:^10.0.1, lru-cache@npm:^9.1.1 || ^10.0.0": version: 10.0.3 resolution: "lru-cache@npm:10.0.3" @@ -25113,6 +25244,20 @@ __metadata: languageName: node linkType: hard +"parse-entities@npm:^2.0.0": + version: 2.0.0 + resolution: "parse-entities@npm:2.0.0" + dependencies: + character-entities: ^1.0.0 + character-entities-legacy: ^1.0.0 + character-reference-invalid: ^1.0.0 + is-alphanumerical: ^1.0.0 + is-decimal: ^1.0.0 + is-hexadecimal: ^1.0.0 + checksum: 7addfd3e7d747521afac33c8121a5f23043c6973809756920d37e806639b4898385d386fcf4b3c8e2ecf1bc28aac5ae97df0b112d5042034efbe80f44081ebce + languageName: node + linkType: hard + "parse-json@npm:^4.0.0": version: 4.0.0 resolution: "parse-json@npm:4.0.0" @@ -26152,6 +26297,20 @@ __metadata: languageName: node linkType: hard +"prismjs@npm:^1.27.0": + version: 1.29.0 + resolution: "prismjs@npm:1.29.0" + checksum: 007a8869d4456ff8049dc59404e32d5666a07d99c3b0e30a18bd3b7676dfa07d1daae9d0f407f20983865fd8da56de91d09cb08e6aa61f5bc420a27c0beeaf93 + languageName: node + linkType: hard + +"prismjs@npm:~1.27.0": + version: 1.27.0 + resolution: "prismjs@npm:1.27.0" + checksum: 85c7f4a3e999073502cc9e1882af01e3709706369ec254b60bff1149eda701f40d02512acab956012dc7e61cfd61743a3a34c1bd0737e8dbacd79141e5698bbc + languageName: node + linkType: hard + "proc-log@npm:^2.0.0, proc-log@npm:^2.0.1": version: 2.0.1 resolution: "proc-log@npm:2.0.1" @@ -26300,6 +26459,15 @@ __metadata: languageName: node linkType: hard +"property-information@npm:^5.0.0": + version: 5.6.0 + resolution: "property-information@npm:5.6.0" + dependencies: + xtend: ^4.0.0 + checksum: fcf87c6542e59a8bbe31ca0b3255a4a63ac1059b01b04469680288998bcfa97f341ca989566adbb63975f4d85339030b82320c324a511532d390910d1c583893 + languageName: node + linkType: hard + "proto-list@npm:~1.2.1": version: 1.2.4 resolution: "proto-list@npm:1.2.4" @@ -27020,6 +27188,21 @@ __metadata: languageName: node linkType: hard +"react-syntax-highlighter@npm:^15.5.0": + version: 15.5.0 + resolution: "react-syntax-highlighter@npm:15.5.0" + dependencies: + "@babel/runtime": ^7.3.1 + highlight.js: ^10.4.1 + lowlight: ^1.17.0 + prismjs: ^1.27.0 + refractor: ^3.6.0 + peerDependencies: + react: ">= 0.14.0" + checksum: c082b48f30f8ba8d0c55ed1d761910630860077c7ff5793c4c912adcb5760df06436ed0ad62be0de28113aac9ad2af55eccd995f8eee98df53382e4ced2072fb + languageName: node + linkType: hard + "react@npm:18.2.0, react@npm:^18.2.0": version: 18.2.0 resolution: "react@npm:18.2.0" @@ -27298,6 +27481,17 @@ __metadata: languageName: node linkType: hard +"refractor@npm:^3.6.0": + version: 3.6.0 + resolution: "refractor@npm:3.6.0" + dependencies: + hastscript: ^6.0.0 + parse-entities: ^2.0.0 + prismjs: ~1.27.0 + checksum: 39b01c4168c77c5c8486f9bf8907bbb05f257f15026057ba5728535815a2d90eed620468a4bfbb2b8ceefbb3ce3931a1be8b17152dbdbc8b0eef92450ff750a2 + languageName: node + linkType: hard + "regenerate-unicode-properties@npm:^10.1.0": version: 10.1.1 resolution: "regenerate-unicode-properties@npm:10.1.1" From 03da2709109e982b028061789e2783306695468f Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 20 Jul 2024 23:29:12 +0530 Subject: [PATCH 077/104] added layout related settings in theme object --- .../src/views/ThemeLab/ThemeLab.jsx | 63 +++++++++++++++++-- 1 file changed, 58 insertions(+), 5 deletions(-) diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx index 404d66e75..16c9ba4be 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx @@ -16,20 +16,73 @@ import LayoutSetting from './LayoutSetting'; import ThemeSetting from './ThemeSetting'; import { Light as SyntaxHighlighter } from 'react-syntax-highlighter'; import { dracula } from 'react-syntax-highlighter/dist/esm/styles/hljs'; +import useHeaderItemsStore from '../../store/headerItemsStore'; +import useMessageItemsStore from '../../store/messageItemsStore'; +import useChatInputItemsStore from '../../store/chatInputItemsStore'; const ThemeLab = () => { + const { theme } = useTheme(); + const dispatchToastMessage = useToastBarDispatch(); const styles = getThemeLabStyles(useTheme()); const setThemeLabOpen = useLayoutStore((state) => state.setThemeLabOpen); const [paletteActive, setPaletteAction] = useState(true); const [themeModalOpen, setThemeModalOpen] = useState(false); const [generatedTheme, setGeneratedTheme] = useState(null); - const { theme } = useTheme(); - const dispatchToastMessage = useToastBarDispatch(); + + const { surfaceItems: headerSurfaceItems, menuItems: headerMenuItems } = + useHeaderItemsStore((state) => ({ + surfaceItems: state.surfaceItems, + menuItems: state.menuItems, + })); + + const { surfaceItems: messageSurfaceItems, menuItems: messageMenuItems } = + useMessageItemsStore((state) => ({ + surfaceItems: state.surfaceItems, + menuItems: state.menuItems, + })); + + const { surfaceItems: inputSurfaceItems, formatters } = + useChatInputItemsStore((state) => ({ + surfaceItems: state.surfaceItems, + formatters: state.formatters, + })); const handleThemeGeneration = () => { setThemeModalOpen(true); - const themeString = JSON.stringify(theme, null, 2) - .replace(/\\n/g, '\n') + const finalFormatters = inputSurfaceItems.includes('formatter') + ? formatters + : []; + const addedTheme = { + ...theme, + components: { + ChatHeader: { + configOverrides: { + optionConfig: { + surfaceItems: headerSurfaceItems, + menuItems: headerMenuItems, + }, + }, + }, + MessageToolbox: { + configOverrides: { + optionConfig: { + surfaceItems: messageSurfaceItems, + menuItems: messageMenuItems, + }, + }, + }, + ChatInputFormattingToolbar: { + configOverrides: { + optionConfig: { + surfaceItems: inputSurfaceItems, + formatters: finalFormatters, + }, + }, + }, + }, + }; + const themeString = JSON.stringify(addedTheme, null, 2) + .replace(/"([^"]+)":/g, '$1:') .replace(/\\"/g, "'"); setGeneratedTheme(themeString); }; @@ -106,7 +159,7 @@ const ThemeLab = () => { From abaaff0b36f4cbf02db93158a0a37acfb2dbd84f Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 20 Jul 2024 23:34:54 +0530 Subject: [PATCH 078/104] changed to small case --- packages/react/src/theme/ModernVariant/StormySeas.js | 2 +- packages/react/src/views/Message/MessageHeader.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/react/src/theme/ModernVariant/StormySeas.js b/packages/react/src/theme/ModernVariant/StormySeas.js index 13ae3112a..67e1d864c 100644 --- a/packages/react/src/theme/ModernVariant/StormySeas.js +++ b/packages/react/src/theme/ModernVariant/StormySeas.js @@ -80,7 +80,7 @@ const StormySeas = { }, variants: { - MessageHeader: 'Colorize', + MessageHeader: 'colorize', PinnedMessages: { viewType: 'Popup', }, diff --git a/packages/react/src/views/Message/MessageHeader.js b/packages/react/src/views/Message/MessageHeader.js index 4c9271df5..d622d6dd9 100644 --- a/packages/react/src/views/Message/MessageHeader.js +++ b/packages/react/src/views/Message/MessageHeader.js @@ -23,7 +23,7 @@ const MessageHeader = ({ const { styleOverrides, classNames, variantOverrides } = useComponentOverrides('MessageHeader'); const { ECOptions } = useRCContext(); - const displayNameVariant = variantOverrides || 'Normal'; + const displayNameVariant = variantOverrides || 'normal'; const styles = useMessageHeaderStyles(); const { colors } = useTheme(); const getDisplayNameColor = useDisplayNameColor(); @@ -85,7 +85,7 @@ const MessageHeader = ({ css={styles.name} className={appendClassNames('ec-message-header-name')} style={ - displayNameVariant === 'Colorize' + displayNameVariant === 'colorize' ? { color: getDisplayNameColor(message.u.username) } : null } @@ -99,7 +99,7 @@ const MessageHeader = ({ css={styles.userName} className={appendClassNames('ec-message-header-username')} style={ - displayNameVariant === 'Colorize' + displayNameVariant === 'colorize' ? { color: getDisplayNameColor(message.u.username) } : null } From 360991f0b9c6dff7ca7802532793d589a1c883ad Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 20 Jul 2024 23:35:12 +0530 Subject: [PATCH 079/104] added variant in theme object --- packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx index 16c9ba4be..a03497fa6 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx @@ -47,6 +47,11 @@ const ThemeLab = () => { formatters: state.formatters, })); + const { messageView, displayName } = useLayoutStore((state) => ({ + messageView: state.messageView, + displayName: state.displayName, + })); + const handleThemeGeneration = () => { setThemeModalOpen(true); const finalFormatters = inputSurfaceItems.includes('formatter') @@ -80,6 +85,11 @@ const ThemeLab = () => { }, }, }, + + variants: { + Message: messageView, + MessageHeader: displayName, + }, }; const themeString = JSON.stringify(addedTheme, null, 2) .replace(/"([^"]+)":/g, '$1:') From 8722d14ffbcc3c0f86498cee7f1102fe9cf5677b Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 20 Jul 2024 23:49:12 +0530 Subject: [PATCH 080/104] added sidebar customization in theme object --- packages/layout_editor/src/store/layoutStore.js | 5 +++++ .../src/views/ChatLayout/ChatLayout.jsx | 12 +++++++++--- .../src/views/ThemeLab/ThemeLab.jsx | 16 ++++++++++++---- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/packages/layout_editor/src/store/layoutStore.js b/packages/layout_editor/src/store/layoutStore.js index 7810d6bf0..94f82220d 100644 --- a/packages/layout_editor/src/store/layoutStore.js +++ b/packages/layout_editor/src/store/layoutStore.js @@ -15,6 +15,11 @@ const useLayoutStore = create((set) => ({ setDisplayName: (displayName) => { set({ displayName }); }, + + sidebarWidth: '350px', + setSidebarWidth: (sidebarWidth) => { + set({ sidebarWidth }); + }, })); export default useLayoutStore; diff --git a/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx b/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx index 8835a955f..0f745e9da 100644 --- a/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx +++ b/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx @@ -1,18 +1,24 @@ import React from 'react'; import { Box, useTheme } from '@embeddedchat/ui-elements'; +import debounce from 'lodash/debounce'; import { Panel, PanelGroup, PanelResizeHandle } from 'react-resizable-panels'; import ChatBody from '../Chatbody/ChatBody'; import ChatInput from '../ChatInput/ChatInput'; import { getChatLayoutStyles } from './ChatLayout.styles'; import DemoSidebar from '../DemoSidebar/DemoSidebar'; import members from '../../data/members.json'; +import useLayoutStore from '../../store/layoutStore'; const ChatLayout = () => { const theme = useTheme(); const styles = getChatLayoutStyles(theme); const { colors } = theme; - const handleResize = (size) => { + const { setSidebarWidth } = useLayoutStore((state) => ({ + setSidebarWidth: state.setSidebarWidth, + })); + + const handleResize = debounce((size) => { const minSize = 26.5; const maxSize = 60; const minWidth = 350; @@ -22,8 +28,8 @@ const ChatLayout = () => { minWidth + ((size - minSize) / (maxSize - minSize)) * (maxWidth - minWidth); - console.log(sidebarWidth); - }; + setSidebarWidth(`${sidebarWidth}px`); + }, 100); return ( diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx index a03497fa6..0ec8bb188 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx @@ -47,10 +47,13 @@ const ThemeLab = () => { formatters: state.formatters, })); - const { messageView, displayName } = useLayoutStore((state) => ({ - messageView: state.messageView, - displayName: state.displayName, - })); + const { messageView, displayName, sidebarWidth } = useLayoutStore( + (state) => ({ + messageView: state.messageView, + displayName: state.displayName, + sidebarWidth: state.sidebarWidth, + }) + ); const handleThemeGeneration = () => { setThemeModalOpen(true); @@ -60,6 +63,11 @@ const ThemeLab = () => { const addedTheme = { ...theme, components: { + Sidebar: { + styleOverrides: { + width: sidebarWidth, + }, + }, ChatHeader: { configOverrides: { optionConfig: { From 9e4e3926a4ddae18991f4f8484062b7ae4d527db Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sat, 20 Jul 2024 23:57:30 +0530 Subject: [PATCH 081/104] extracted theme generation logic --- .../src/hooks/useThemeGenerator.js | 92 +++++++++++++++++++ .../src/views/ThemeLab/ThemeLab.jsx | 84 +---------------- 2 files changed, 97 insertions(+), 79 deletions(-) create mode 100644 packages/layout_editor/src/hooks/useThemeGenerator.js diff --git a/packages/layout_editor/src/hooks/useThemeGenerator.js b/packages/layout_editor/src/hooks/useThemeGenerator.js new file mode 100644 index 000000000..5bf3ce524 --- /dev/null +++ b/packages/layout_editor/src/hooks/useThemeGenerator.js @@ -0,0 +1,92 @@ +import { useState } from 'react'; +import { useTheme } from '@embeddedchat/ui-elements'; +import useLayoutStore from '../store/layoutStore'; +import useHeaderItemsStore from '../store/headerItemsStore'; +import useMessageItemsStore from '../store/messageItemsStore'; +import useChatInputItemsStore from '../store/chatInputItemsStore'; + +const useThemeGenerator = () => { + const { theme } = useTheme(); + const [generatedTheme, setGeneratedTheme] = useState(null); + + const { surfaceItems: headerSurfaceItems, menuItems: headerMenuItems } = + useHeaderItemsStore((state) => ({ + surfaceItems: state.surfaceItems, + menuItems: state.menuItems, + })); + + const { surfaceItems: messageSurfaceItems, menuItems: messageMenuItems } = + useMessageItemsStore((state) => ({ + surfaceItems: state.surfaceItems, + menuItems: state.menuItems, + })); + + const { surfaceItems: inputSurfaceItems, formatters } = + useChatInputItemsStore((state) => ({ + surfaceItems: state.surfaceItems, + formatters: state.formatters, + })); + + const { messageView, displayName, sidebarWidth } = useLayoutStore( + (state) => ({ + messageView: state.messageView, + displayName: state.displayName, + sidebarWidth: state.sidebarWidth, + }) + ); + + const generateTheme = () => { + const finalFormatters = inputSurfaceItems.includes('formatter') + ? formatters + : []; + const addedTheme = { + ...theme, + components: { + Sidebar: { + styleOverrides: { + width: sidebarWidth, + }, + }, + ChatHeader: { + configOverrides: { + optionConfig: { + surfaceItems: headerSurfaceItems, + menuItems: headerMenuItems, + }, + }, + }, + MessageToolbox: { + configOverrides: { + optionConfig: { + surfaceItems: messageSurfaceItems, + menuItems: messageMenuItems, + }, + }, + }, + ChatInputFormattingToolbar: { + configOverrides: { + optionConfig: { + surfaceItems: inputSurfaceItems, + formatters: finalFormatters, + }, + }, + }, + }, + variants: { + Message: messageView, + MessageHeader: displayName, + }, + }; + const themeString = JSON.stringify(addedTheme, null, 2) + .replace(/"([^"]+)":/g, '$1:') + .replace(/\\"/g, "'"); + setGeneratedTheme(themeString); + }; + + return { + generatedTheme, + generateTheme, + }; +}; + +export default useThemeGenerator; diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx index 0ec8bb188..e79eba74b 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx @@ -7,102 +7,28 @@ import { Modal, SidebarContent, SidebarHeader, - useTheme, useToastBarDispatch, + useTheme, } from '@embeddedchat/ui-elements'; -import useLayoutStore from '../../store/layoutStore'; +import useThemeGenerator from '../../hooks/useThemeGenerator'; import { getThemeLabStyles } from './ThemeLab.styles'; import LayoutSetting from './LayoutSetting'; import ThemeSetting from './ThemeSetting'; import { Light as SyntaxHighlighter } from 'react-syntax-highlighter'; import { dracula } from 'react-syntax-highlighter/dist/esm/styles/hljs'; -import useHeaderItemsStore from '../../store/headerItemsStore'; -import useMessageItemsStore from '../../store/messageItemsStore'; -import useChatInputItemsStore from '../../store/chatInputItemsStore'; +import useLayoutStore from '../../store/layoutStore'; const ThemeLab = () => { - const { theme } = useTheme(); + const { generatedTheme, generateTheme } = useThemeGenerator(); const dispatchToastMessage = useToastBarDispatch(); const styles = getThemeLabStyles(useTheme()); const setThemeLabOpen = useLayoutStore((state) => state.setThemeLabOpen); const [paletteActive, setPaletteAction] = useState(true); const [themeModalOpen, setThemeModalOpen] = useState(false); - const [generatedTheme, setGeneratedTheme] = useState(null); - - const { surfaceItems: headerSurfaceItems, menuItems: headerMenuItems } = - useHeaderItemsStore((state) => ({ - surfaceItems: state.surfaceItems, - menuItems: state.menuItems, - })); - - const { surfaceItems: messageSurfaceItems, menuItems: messageMenuItems } = - useMessageItemsStore((state) => ({ - surfaceItems: state.surfaceItems, - menuItems: state.menuItems, - })); - - const { surfaceItems: inputSurfaceItems, formatters } = - useChatInputItemsStore((state) => ({ - surfaceItems: state.surfaceItems, - formatters: state.formatters, - })); - - const { messageView, displayName, sidebarWidth } = useLayoutStore( - (state) => ({ - messageView: state.messageView, - displayName: state.displayName, - sidebarWidth: state.sidebarWidth, - }) - ); const handleThemeGeneration = () => { + generateTheme(); setThemeModalOpen(true); - const finalFormatters = inputSurfaceItems.includes('formatter') - ? formatters - : []; - const addedTheme = { - ...theme, - components: { - Sidebar: { - styleOverrides: { - width: sidebarWidth, - }, - }, - ChatHeader: { - configOverrides: { - optionConfig: { - surfaceItems: headerSurfaceItems, - menuItems: headerMenuItems, - }, - }, - }, - MessageToolbox: { - configOverrides: { - optionConfig: { - surfaceItems: messageSurfaceItems, - menuItems: messageMenuItems, - }, - }, - }, - ChatInputFormattingToolbar: { - configOverrides: { - optionConfig: { - surfaceItems: inputSurfaceItems, - formatters: finalFormatters, - }, - }, - }, - }, - - variants: { - Message: messageView, - MessageHeader: displayName, - }, - }; - const themeString = JSON.stringify(addedTheme, null, 2) - .replace(/"([^"]+)":/g, '$1:') - .replace(/\\"/g, "'"); - setGeneratedTheme(themeString); }; const handleCopyToClipboard = () => { From ec1492137285674d4cffbd53dd8e502211a965b1 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 21 Jul 2024 12:07:46 +0530 Subject: [PATCH 082/104] added theme in ec settings --- packages/rc-app/endpoints/AuthTokenEndpoint.ts | 8 +++----- packages/rc-app/endpoints/InfoEndpoint.ts | 3 +++ packages/rc-app/settings/settings.ts | 11 +++++++++++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/packages/rc-app/endpoints/AuthTokenEndpoint.ts b/packages/rc-app/endpoints/AuthTokenEndpoint.ts index 70b31759d..589b58948 100644 --- a/packages/rc-app/endpoints/AuthTokenEndpoint.ts +++ b/packages/rc-app/endpoints/AuthTokenEndpoint.ts @@ -46,11 +46,9 @@ export class AuthTokenEndpoint extends ApiEndpoint { }, headers: { ...(await this.generateHeaders(read, "POST")), - "Set-Cookie": [ - `ec-token=${token}; Max-Age=${ - 24 * 60 * 60 - }; Path=/; HttpOnly; SameSite=None; Secure`, - ], + "Set-Cookie": `ec-token=${token}; Max-Age=${ + 24 * 60 * 60 + }; Path=/; HttpOnly; SameSite=None; Secure`, }, }; } diff --git a/packages/rc-app/endpoints/InfoEndpoint.ts b/packages/rc-app/endpoints/InfoEndpoint.ts index 2f5e8c1d8..9eee1d8d4 100644 --- a/packages/rc-app/endpoints/InfoEndpoint.ts +++ b/packages/rc-app/endpoints/InfoEndpoint.ts @@ -47,6 +47,7 @@ export class InfoEndpoint extends ApiEndpoint { hideHeader, secure, dark, + theme, ] = await getEnvironmentValues(readEnvironment, { serviceName: "custom-oauth-name", client_id: "client-id", @@ -65,6 +66,7 @@ export class InfoEndpoint extends ApiEndpoint { hideHeader: "hide-header", secure: "secure", dark: "dark", + theme: "theme", }); const [redirect_uri, allowedOrigins] = await Promise.all([ @@ -97,6 +99,7 @@ export class InfoEndpoint extends ApiEndpoint { hideHeader, secure, dark, + theme, }, }, }; diff --git a/packages/rc-app/settings/settings.ts b/packages/rc-app/settings/settings.ts index 2ef3b53f4..3f0e7e2bf 100644 --- a/packages/rc-app/settings/settings.ts +++ b/packages/rc-app/settings/settings.ts @@ -212,4 +212,15 @@ export const propSettings: ISetting[] = [ public: false, packageValue: false, }, + + { + id: "theme", + i18nLabel: "Custom Theme", + i18nDescription: + "Define a custom theme for remotely styling EmbeddedChat. This allows you to customize the appearance and behavior of the chat interface.", + type: SettingType.CODE, + required: false, + public: false, + packageValue: "", + }, ]; From fd274eb962beb5d5d55dac8a60027e74c3f07212 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 21 Jul 2024 12:36:03 +0530 Subject: [PATCH 083/104] added theme parsing --- packages/react/package.json | 1 + packages/react/src/lib/overrideECProps.js | 22 +++++++++++++++++++++- yarn.lock | 1 + 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/packages/react/package.json b/packages/react/package.json index 476cbf026..86af08529 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -95,6 +95,7 @@ "date-fns": "^2.30.0", "emoji-picker-react": "^4.4.9", "emoji-toolkit": "^7.0.1", + "json5": "^2.2.3", "normalize.css": "^8.0.1", "prop-types": "^15.8.1", "swiper": "^11.1.0", diff --git a/packages/react/src/lib/overrideECProps.js b/packages/react/src/lib/overrideECProps.js index 00c9b0f7b..2660b8903 100644 --- a/packages/react/src/lib/overrideECProps.js +++ b/packages/react/src/lib/overrideECProps.js @@ -1,13 +1,33 @@ +import JSON5 from 'json5'; + export const overrideECProps = (prevConfig, remoteConfig) => { if (!remoteConfig || Object.keys(remoteConfig).length === 0) { return prevConfig; } + const parseThemeString = (str) => { + try { + return JSON5.parse(str); + } catch (e) { + console.error('Failed to parse theme: ', e); + return null; + } + }; + const updatedConfig = { ...prevConfig, ...Object.keys(remoteConfig).reduce((acc, key) => { if (remoteConfig[key] !== '') { - acc[key] = remoteConfig[key]; + if (key === 'theme') { + const parsedTheme = parseThemeString(remoteConfig[key]); + if (parsedTheme) { + acc[key] = parsedTheme; + } else { + acc[key] = prevConfig[key]; + } + } else { + acc[key] = remoteConfig[key]; + } } return acc; }, {}), diff --git a/yarn.lock b/yarn.lock index 0b772473a..f26dc0fd0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2491,6 +2491,7 @@ __metadata: eslint-plugin-storybook: ^0.6.12 identity-obj-proxy: ^3.0.0 jest: ^27.5.1 + json5: ^2.2.3 lint-staged: ^12.4.2 normalize.css: ^8.0.1 npm-run-all: ^4.1.5 From b0414f6a72985ddc7fb4ca8a86004b1e10af289d Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 21 Jul 2024 13:11:36 +0530 Subject: [PATCH 084/104] removed running prebuild to allow running apps while building --- packages/react/package.json | 2 +- packages/ui-elements/package.json | 2 +- packages/ui-kit/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/react/package.json b/packages/react/package.json index 86af08529..6a2c98d89 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -13,7 +13,7 @@ ], "scripts": { "prebuild": "rimraf dist", - "build": "yarn prebuild && rollup -c --context=window --environment NODE_ENV:production", + "build": "rollup -c --context=window --environment NODE_ENV:production", "watch": "rollup -c --watch --context=window", "test:lint": "eslint src/**/*.js", "format": "prettier --write 'src/' ", diff --git a/packages/ui-elements/package.json b/packages/ui-elements/package.json index ed205907f..f8e41b8c0 100644 --- a/packages/ui-elements/package.json +++ b/packages/ui-elements/package.json @@ -14,7 +14,7 @@ ], "scripts": { "prebuild": "rimraf dist", - "build": "yarn prebuild && rollup -c --context=window --environment NODE_ENV:production", + "build": "rollup -c --context=window --environment NODE_ENV:production", "watch": "rollup -c --watch --context=window", "test:lint": "eslint src/**/*.js", "format": "prettier --write 'src/' ", diff --git a/packages/ui-kit/package.json b/packages/ui-kit/package.json index f9c84254b..9d9ddb0d8 100644 --- a/packages/ui-kit/package.json +++ b/packages/ui-kit/package.json @@ -14,7 +14,7 @@ ], "scripts": { "prebuild": "rimraf dist", - "build": "yarn prebuild && rollup -c --context=window --environment NODE_ENV:production", + "build": "rollup -c --context=window --environment NODE_ENV:production", "watch": "rollup -c --watch --context=window", "test:lint": "eslint src/**/*.js", "format": "prettier --write 'src/' ", From dec8ba7b9e29c40665205e1d43efb867eda35c63 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 21 Jul 2024 15:54:41 +0530 Subject: [PATCH 085/104] updated docs added dependency --- packages/{react => }/docs/authentication.md | 4 +- packages/docs/ec_rc_setup.md | 31 ++++ packages/docs/embeddedchat_dev.md | 163 ++++++++++++++++++ packages/docs/embeddedchat_setup.md | 162 +++++++++++++++++ packages/docs/layout_editor.md | 58 +++++++ packages/{react => }/docs/theming.md | 148 ++++++++-------- .../{react => }/docs/theming_technical.md | 2 +- packages/docs/ui-elements.md | 95 ++++++++++ packages/layout_editor/README.md | 60 ++++++- packages/layout_editor/package.json | 1 + .../src/views/ThemeLab/ThemeLab.jsx | 6 +- .../src/views/ThemeLab/ThemeLab.styles.js | 6 + packages/react/README.md | 4 +- packages/ui-elements/README.md | 95 ++++++++++ .../src/components/Heading/Heading.js | 5 +- yarn.lock | 3 +- 16 files changed, 751 insertions(+), 92 deletions(-) rename packages/{react => }/docs/authentication.md (97%) create mode 100644 packages/docs/ec_rc_setup.md create mode 100644 packages/docs/embeddedchat_dev.md create mode 100644 packages/docs/embeddedchat_setup.md create mode 100644 packages/docs/layout_editor.md rename packages/{react => }/docs/theming.md (73%) rename packages/{react => }/docs/theming_technical.md (99%) create mode 100644 packages/docs/ui-elements.md create mode 100644 packages/ui-elements/README.md diff --git a/packages/react/docs/authentication.md b/packages/docs/authentication.md similarity index 97% rename from packages/react/docs/authentication.md rename to packages/docs/authentication.md index 5bae0ae21..7bbba4a02 100644 --- a/packages/react/docs/authentication.md +++ b/packages/docs/authentication.md @@ -72,7 +72,7 @@ auth: { This method leverages the OAuth configuration established in Rocket.Chat, ensuring a streamlined authentication process. -For instructions on installing the EmbeddedChat RC app on your Rocket.Chat server, refer to the [EmbeddedChat RC App installation guide](../../rc-app/README.md). +For instructions on installing the EmbeddedChat RC app on your Rocket.Chat server, refer to the [EmbeddedChat RC App installation guide](ec_rc_setup.md). Certainly! Here are the instructions to enable OAuth login in the EmbeddedChat RC app, without using sub-bullets: @@ -118,8 +118,6 @@ Currently, EmbeddedChat supports two modes for enabling auto-login. After the us Here’s a concise explanation of how it operates: after logging in, the token is transferred to the EmbeddedChat RC app, where it is set as an HTTP-only cookie. During auto-login, EmbeddedChat makes a request that includes cookies managed by the browser to the RC app endpoint. The RC app retrieves the token and sends it back, which EmbeddedChat then forwards to the `/api/v1/login` endpoint of the Rocket.chat server for authentication. This functionality is fully integrated into the EmbeddedChat app, presented here for technical insight. -To install the EmbeddedChat RC app on your Rocket.Chat server, please refer to the [EmbeddedChat RC App installation guide](../../rc-app/README.md). - ## Integrating with EmbeddedChat When integrating any of these authentication methods into `EmbeddedChat`, ensure to include the `auth` prop containing the desired configuration, and set the `secure` prop to true to activate the HTTP-Only cookie. diff --git a/packages/docs/ec_rc_setup.md b/packages/docs/ec_rc_setup.md new file mode 100644 index 000000000..51523fa54 --- /dev/null +++ b/packages/docs/ec_rc_setup.md @@ -0,0 +1,31 @@ +# Embedded Chat: A staple in excellent customer service + +An easy-to-use, full-stack component (React.js + backend behaviors) for embedding Rocket.Chat into your web app. + +![ec-demo-image](https://github.com/RocketChat/EmbeddedChat/assets/78961432/b85c7b8a-65e2-4a90-a843-f4072c942ac0) + +## EmbeddedChat RC App + +This monorepo hosts an RC app designed to enhance EmbeddedChat functionalities. It facilitates remote configuration of EmbeddedChat settings, implements secure login (storing the resume token as an HTTP-only cookie), and help integrates Rocket.Chat OAuth login capabilities. + +### Installation + +To install this application, follow these steps: + +1. Clone the repository to your local machine: + + ``` + git clone https://github.com/RocketChat/EmbeddedChat.git + ``` + +2. Navigate to the `packages/rc-app` directory. + +3. Open a command prompt and execute the following command: + + ``` + rc-apps deploy --url host_url --username your_username --password your_password + ``` + +Ensure to substitute `host_url`, `your_username`, and `your_password` with your Rocket.Chat server's URL, username, and password respectively. + +Note: A Rocket.Chat server setup is required. If you haven't set up one yet, refer to this [link](https://developer.rocket.chat/open-source-projects/server/server-environment-setup) for instructions. \ No newline at end of file diff --git a/packages/docs/embeddedchat_dev.md b/packages/docs/embeddedchat_dev.md new file mode 100644 index 000000000..445039da9 --- /dev/null +++ b/packages/docs/embeddedchat_dev.md @@ -0,0 +1,163 @@ +

Embedded Chat: A staple in excellent customer service

+ +![image](https://github.com/RocketChat/EmbeddedChat/assets/78961432/574be6b4-d2f7-4bea-a7b1-4c6e840d8e22) + +An easy-to-use, full-stack component (React.js + backend behaviors) for embedding Rocket.Chat into your web app. + +_EmbeddedChat is a full-stack React component designed to integrate Rocket.Chat into your web app. It is fully configurable, extensible, and flexible, offering various preconfigured designs, multiple login options, and more. The component is tightly integrated with the Rocket.Chat server using the Rocket.Chat SDK, and its entire UI is built using custom components._ + +![ec-demo-image](https://github.com/RocketChat/EmbeddedChat/assets/78961432/b85c7b8a-65e2-4a90-a843-f4072c942ac0) + +
+ + + +
+ +## Installation and Usage + +Installation and usage documentation could be found here [EmbeddedChat installation and usage](embeddedchat_setup.md) + +## Development + +### Local Setup + +To develop and test `EmbeddedChat`, you need a local instance of the Rocket.Chat server. Follow the guide in the [Rocket.Chat Developer Docs](https://developer.rocket.chat/v1/docs/server-environment-setup) for setting up a Rocket.Chat development environment. + +Ensure that the "Enable CORS" option is turned on in your Rocket.Chat server. You can find it under Administration > Settings > General > REST API > Enable CORS. This setting must be enabled to access the app's functionality. + +#### Prerequisites + +- **Node.js**: Version 16.19.0 is required. Use [Node Version Manager (NVM)](https://github.com/nvm-sh/nvm) for easy switching between Node.js versions. + + To install and use the correct Node.js version, execute the following commands with the specific version number: + + ```bash + nvm install + nvm use + ``` + + Replace `` with the required Node.js version + +- **Yarn Workspaces**: Ensure Yarn workspaces are enabled. If not, run: + + ```bash + corepack enable + ``` + +#### Install Dependencies + +Install all necessary dependencies by navigating to the root directory of `EmbeddedChat` and running: + +```bash +yarn +``` + +#### Build Packages + +After installing dependencies, build the packages (`auth`, `api`, and `react`) by running the following command in the root directory: + +```bash +yarn build +``` + +#### Starting Storybook for React + +Navigate to the `react` package directory and start Storybook with the following commands: + +```bash +cd packages/react +yarn storybook +``` + +Storybook should now be operational. Experiment with `EmbeddedChat` and its components, observing real-time changes in Storybook. + +### Custom Rocket Chat Server Configuration + +By default, Storybook connects to `http://localhost:3000`. To use a different Rocket Chat server: + +Create a `.env` file in the `packages/react` directory. + +Set the `STORYBOOK_RC_HOST` variable: + +```bash +STORYBOOK_RC_HOST= +``` + +Alternatively, run this command in the `packages/react` directory: + +```bash +STORYBOOK_RC_HOST= yarn storybook +``` + +### Package Development Overview + +The project uses a monorepo structure with three key packages: `react`, `auth`, and `api`. Each package fulfills a vital role in the application: + +#### React Package Development + +The `react` package serves as the main frontend component, having all UI elements and views. It interfaces with the `auth` and `api` packages to manage interactions with the Rocket.Chat server, including API calls and authentication. + +To develop and test changes in the `react` package: + +1. Navigate to the directory of the `react` package: + +```bash +cd packages/react +``` + +2. Start Storybook to view live changes: + +```bash +yarn storybook +``` + +#### Auth Package Development + +To develop and test changes in the `auth` package: + +1. Navigate to the `auth` package directory: + + ```bash + cd packages/auth + ``` + +2. Start the development server: + + ```bash + yarn dev + ``` + +#### API Package Development + +For development in the `api` package: + +1. Navigate to the `api` package directory: + + ```bash + cd packages/api + ``` + +2. Start the development server: + + ```bash + yarn dev + ``` + +**Development Workflow Notes:** + +- The `react` package relies on the `api` package. After making changes to the `api`, rebuild it using `yarn build` in `packages/api`, and then restart the React project. + +- Similarly, the `api` package depends on the `auth` package. After making changes to `auth`, rebuild it using `yarn build` in `packages/auth`, and then restart the `api` development environment. + +This structured approach facilitates cohesive development and integration across all components of the application. + +### Conclusion + +This environment offers a complete setup for developing and testing the `EmbeddedChat` component, alongside its `api` and `auth` packages. Feel free to explore and enhance the capabilities of `EmbeddedChat`! + +### Contributors + + + + diff --git a/packages/docs/embeddedchat_setup.md b/packages/docs/embeddedchat_setup.md new file mode 100644 index 000000000..27794abb2 --- /dev/null +++ b/packages/docs/embeddedchat_setup.md @@ -0,0 +1,162 @@ +# Embedded Chat: A staple in excellent customer service + +An easy-to-use, full-stack component (React.js + backend behaviors) for embedding Rocket.Chat into your web app. + +![ec-demo-image](https://github.com/RocketChat/EmbeddedChat/assets/78961432/b85c7b8a-65e2-4a90-a843-f4072c942ac0) + + +## Installation + +```bash +npm install @embeddedchat/react +# or +yarn add @embeddedchat/react +``` + +## Importing the Component + +Import the `EmbeddedChat` component into your file: + +```javascript +import { EmbeddedChat } from '@embeddedchat/react'; +``` + +## Basic Usage + +To use the `EmbeddedChat` component, include it in your component's render method or return statement. Here's a basic example: + +```jsx + +``` + +## Props + +EmbeddedChat supports various props that are used to customize different aspects of this component. A brief description of all the supported props is listed as follows: + +- `isClosable` (boolean): If `true`, the chat window can be closed. Defaults to `false`. +- `setClosableState` (function): Callback for handling the closable state. +- `width` (string): Width of the chat window. Defaults to `'100%'`. +- `height` (string): Height of the chat window. Defaults to `'95vh'`. +- `host` (string): URL of your RocketChat server. +- `roomId` (string): ID of the chat room. Defaults to `GENERAL`. +- `channelName` (string): Fallback channel name for the chat. Defaults to `general`. +- `anonymousMode` (boolean): Enables anonymous mode. Defaults to `false`. +- `toastBarPosition` (string): Position of the toast bar. Defaults to `'bottom right'`. +- `showRoles` (boolean): Displays user roles. Defaults to `false`. +- `showAvatar` (boolean): Shows user avatars. Defaults to `true`. +- `showUsername` (boolean): Displays the user's username. Defaults to `false`. +- `showName` (boolean): Displays the user's name. Defaults to `true`. +- `enableThreads` (boolean): Enables chat threads. Defaults to `false`. +- `theme` (object): Theme object for styling. +- `className` (string): Additional CSS class for styling. +- `style` (object): Inline styles for the chat window. +- `hideHeader` (boolean): Hides the chat header. Defaults to `false`. +- `auth` (object): Authentication configuration. +- `secure` (boolean): Uses HTTP-only cookies for authentication. Defaults to `false`. +- `dark` (boolean): Enables dark mode in the application. Defaults to `false`. +- `remoteOpt` (boolean): Allows props override remotely using `EmbeddedChat RC App`. Defaults to `false`. + +## Understanding Prop Functionality + +This section of the guide aims to provide a detailed explanation of these props. However, props such as `width`, `height`, `host`, `channelName`, `showRoles`, `showAvatar`, `showUsername`, `showName`, `className`, `style`, `hideHeader`, and `dark` are straightforward and will not receive detailed discussion here. + +- ### Managing the Closable State + + When integrating EmbeddedChat, developers have the flexibility to control its visibility. They can utilize their internal state management to achieve this. EmbeddedChat supports a function to manage this state and provides a close icon for executing the close functionality. + + To enable the closable feature, set `isClosable` to `true` and provide a `setClosableState` function to handle the open and close states of the chat window. + + ```jsx + + ``` + + This setup allows seamless integration of EmbeddedChat with custom control over its visibility. + +- ### Obtaining Room ID + + By default, EmbeddedChat uses the 'GENERAL' channel as its default channel in a Rocket.Chat server. However, EmbeddedChat can be integrated into any channel within your workspace, provided you have the roomId of the desired room. To retrieve the roomId for your specified room, execute the following curl command. This API call accepts the roomName parameter and returns detailed information about the room, including its unique ID: + + ```bash + curl --request GET \ + --url 'http://your-rocketchat-server.com/api/v1/rooms.info?roomName=channelName' \ + --header 'X-Auth-Token: auth-token' \ + --header 'X-User-Id: user-id' \ + --header 'accept: application/json' + ``` + + For a comprehensive guide on retrieving room information, consult the Rocket.Chat API documentation: [Get Room Information](https://developer.rocket.chat/apidocs/get-room-information). + + Once you obtain the roomId, provide it as the value for the `roomId` prop to connect to the corresponding room. + + ```jsx + + ``` + +- ### Anonymous Mode + + Rocket.Chat allows users to view messages in read-only mode without logging in. This setting can be enabled by navigating to Workspace settings > Accounts > Allow Anonymous Read. Once this setting is activated, EmbeddedChat can also display channel messages in read-only mode without requiring a login. To enable this feature, pass `anonymousMode` as true in the props. + + ```jsx + + ``` + +- ### Enabling Threads + + Threads allow users to discuss a specific message separately, preventing the main channel from being cluttered with numerous messages and providing a dedicated space for focused discussions. By default, this setting is enabled, but it can be disabled by passing `enableThreads` as false. + + ```jsx + + ``` + +- ### Theming and Customization + + EmbeddedChat supports various design variants, style overrides, and many other customization features. To tailor it to your needs, you can pass a `theme` object to customize the appearance according to your application's design: + + ```jsx + + ``` + + However, the `theme` object must follow a specific format. For detailed information on theming EmbeddedChat, refer to [theming.md](theming.md). + + In Storybook, demonstrations of different themes and variants are provided in the 'Design Variants' section. + +- ### Authentication Guide + + Embedded Chat supports various methods for logging into a Rocket.Chat server. These include three primary methods: + + 1. **Token-Based Authentication**: This can be either a personal access token or a service-specific access token. + 2. **Login Credentials**: Using a valid username/email and password. + 3. **OAuth Authentication**: Uses the OAuth configuration set up in Rocket.Chat. [This method requires installing the EmbeddedChat RC App on the Rocket.Chat server] + + #### Storing the `ec-token` for Auto Login + + After completing the login, a resume token, referred to as `ec-token`, is used for auto login. There are currently two supported methods to store this token: + + 1. **Local Storage**: Store the `ec-token` in the browser's local storage. + 2. **HTTP-Only Cookie**: Store the `ec-token` as an HTTP-only cookie. [This method requires the installation of the EmbeddedChat RC App on the Rocket.Chat server] + + For a detailed guide on using each of these authentication methods with the `auth` and `secure` props, refer to the [authentication.md](authentication.md) file. + +## Development + +Follow this [EmbeddedChat Readme](https://github.com/RocketChat/EmbeddedChat) to setup EmbeddedChat for development. + +## Conclusion + +The `EmbeddedChat` component offers a flexible and feature-rich solution for integrating RocketChat into your application. Customize it according to your needs to enhance your app's chat functionality. diff --git a/packages/docs/layout_editor.md b/packages/docs/layout_editor.md new file mode 100644 index 000000000..5a587f0a5 --- /dev/null +++ b/packages/docs/layout_editor.md @@ -0,0 +1,58 @@ +# Embedded Chat: A Staple in Excellent Customer Service + +An easy-to-use, full-stack component (React.js + backend behaviors) for embedding Rocket.Chat into your web app. + +![ec-demo-image](https://github.com/RocketChat/EmbeddedChat/assets/78961432/b85c7b8a-65e2-4a90-a843-f4072c942ac0) + +## Layout Editor + +![image](https://github.com/user-attachments/assets/a42a66af-d8c0-4d3a-aa1a-71f91b07310e) + +We offer a layout editor that lets you customize the design and appearance of the EmbeddedChat component in real time. Features include: + +- **ChatHeader Options**: Add, remove, or reorder various options. +- **MessageToolbox Options**: Tailor toolbox settings. +- **ChatInputFormatting Toolbar Options**: Adjust input toolbar settings. +- **Drag-and-Drop**: Easily switch and reorder menu and surface items. +- **Resizable Sidebar**: Adjust the sidebar by dragging. +- **Theme Lab**: Customize layout and theme settings, including palette colors and typography. + +### Theme Lab + +In the Theme Lab, you can: + +- **Customize Palette Colors**: Adjust colors for both light and dark modes. +- **Font Settings**: Modify font-related settings. +- **Layout Customization**: Change layout variants and display names, and restore deleted options. + +Once satisfied with your changes, click the "Generate Theme" button to create a theme object. + +![image](https://github.com/user-attachments/assets/88ab51b6-aac6-41cc-b911-38378ed61e12) + +### Integration + +To apply your custom theme: + +```jsx + +``` + +Alternatively, you can paste the theme object into the Theme settings of the EmbeddedChat RC App. Note: These settings will only take effect if the `remoteOpt` prop is set to `true` when configuring EmbeddedChat. + +### Development + +Clone the repo, navigate to `packages/layout_editor`, then run: + +```bash +yarn dev # Start server +yarn build # Build for production +yarn preview # Preview build +``` + +### Additional Resources + +- For installation instructions of the EmbeddedChat RC App, visit [this guide](ec_rc_setup.md). +- For detailed prop usage, refer to [this guide](embeddedchat_setup.md). diff --git a/packages/react/docs/theming.md b/packages/docs/theming.md similarity index 73% rename from packages/react/docs/theming.md rename to packages/docs/theming.md index 2c2119d59..a4e3a4fd9 100644 --- a/packages/react/docs/theming.md +++ b/packages/docs/theming.md @@ -24,64 +24,64 @@ where `myCustomTheme` must adhere to a specific format. The default theme object ```jsx const DefaultTheme = { schemes: { - radius: '0.2rem', + radius: "0.2rem", common: { - black: 'hsl(0, 100%, 0%)', - white: 'hsl(0, 100%, 100%)', + black: "hsl(0, 100%, 0%)", + white: "hsl(0, 100%, 100%)", }, light: { - background: 'hsl(0, 0%, 100%)', - foreground: 'hsl(240, 10%, 3.9%)', - card: 'hsl(0, 0%, 100%)', - cardForeground: 'hsl(240, 10%, 3.9%)', - popover: 'hsl(0, 0%, 100%)', - popoverForeground: 'hsl(240, 10%, 3.9%)', - primary: 'hsl(240, 5.9%, 10%)', - primaryForeground: 'hsl(0, 0%, 98%)', - secondary: 'hsl(240, 4.8%, 95.9%)', - secondaryForeground: 'hsl(240, 5.9%, 10%)', - muted: 'hsl(240, 4.8%, 95.9%)', - mutedForeground: 'hsl(240, 3.8%, 46.1%)', - accent: 'hsl(240, 4.8%, 95.9%)', - accentForeground: 'hsl(240, 5.9%, 10%)', - destructive: 'hsl(0, 84.2%, 60.2%)', - destructiveForeground: 'hsl(0, 0%, 98%)', - border: 'hsl(240, 5.9%, 90%)', - input: 'hsl(240, 5.9%, 90%)', - ring: 'hsl(240, 5.9%, 10%)', - warning: 'hsl(38, 92%, 50%)', - warningForeground: 'hsl(48, 96%, 89%)', - success: 'hsl(91, 60.4%, 81.2%)', - successForeground: 'hsl(90, 61.1%, 14.1%)', - info: 'hsl(214, 76.4%, 50.2%)', - infoForeground: 'hsl(214.3, 77.8%, 92.9%)', + background: "hsl(0, 0%, 100%)", + foreground: "hsl(240, 10%, 3.9%)", + card: "hsl(0, 0%, 100%)", + cardForeground: "hsl(240, 10%, 3.9%)", + popover: "hsl(0, 0%, 100%)", + popoverForeground: "hsl(240, 10%, 3.9%)", + primary: "hsl(240, 5.9%, 10%)", + primaryForeground: "hsl(0, 0%, 98%)", + secondary: "hsl(240, 4.8%, 95.9%)", + secondaryForeground: "hsl(240, 5.9%, 10%)", + muted: "hsl(240, 4.8%, 95.9%)", + mutedForeground: "hsl(240, 3.8%, 46.1%)", + accent: "hsl(240, 4.8%, 95.9%)", + accentForeground: "hsl(240, 5.9%, 10%)", + destructive: "hsl(0, 84.2%, 60.2%)", + destructiveForeground: "hsl(0, 0%, 98%)", + border: "hsl(240, 5.9%, 90%)", + input: "hsl(240, 5.9%, 90%)", + ring: "hsl(240, 5.9%, 10%)", + warning: "hsl(38, 92%, 50%)", + warningForeground: "hsl(48, 96%, 89%)", + success: "hsl(91, 60.4%, 81.2%)", + successForeground: "hsl(90, 61.1%, 14.1%)", + info: "hsl(214, 76.4%, 50.2%)", + infoForeground: "hsl(214.3, 77.8%, 92.9%)", }, dark: { - background: 'hsl(240, 10%, 3.9%)', - foreground: 'hsl(0, 0%, 98%)', - card: 'hsl(240, 10%, 3.9%)', - cardForeground: 'hsl(0, 0%, 98%)', - popover: 'hsl(240, 10%, 3.9%)', - popoverForeground: 'hsl(0, 0%, 98%)', - primary: 'hsl(0, 0%, 98%)', - primaryForeground: 'hsl(240, 5.9%, 10%)', - secondary: 'hsl(240, 3.7%, 15.9%)', - secondaryForeground: 'hsl(0, 0%, 98%)', - muted: 'hsl(240, 3.7%, 15.9%)', - mutedForeground: 'hsl(240, 5%, 64.9%)', - accent: 'hsl(240, 3.7%, 15.9%)', - accentForeground: 'hsl(0, 0%, 98%)', - destructive: 'hsl(0, 62.8%, 30.6%)', - destructiveForeground: 'hsl(0, 0%, 98%)', - border: 'hsl(240, 3.7%, 15.9%)', - input: 'hsl(240, 3.7%, 15.9%)', - ring: 'hsl(240, 4.9%, 83.9%)', - warning: 'hsl(48, 96%, 89%)', - warningForeground: 'hsl(38, 92%, 50%)', - success: 'hsl(90, 61.1%, 14.1%)', - successForeground: 'hsl(90, 60%, 90.2%)', - info: 'hsl(214.3, 77.8%, 92.9%)', - infoForeground: 'hsl(214.4, 75.8%, 19.4%)', + background: "hsl(240, 10%, 3.9%)", + foreground: "hsl(0, 0%, 98%)", + card: "hsl(240, 10%, 3.9%)", + cardForeground: "hsl(0, 0%, 98%)", + popover: "hsl(240, 10%, 3.9%)", + popoverForeground: "hsl(0, 0%, 98%)", + primary: "hsl(0, 0%, 98%)", + primaryForeground: "hsl(240, 5.9%, 10%)", + secondary: "hsl(240, 3.7%, 15.9%)", + secondaryForeground: "hsl(0, 0%, 98%)", + muted: "hsl(240, 3.7%, 15.9%)", + mutedForeground: "hsl(240, 5%, 64.9%)", + accent: "hsl(240, 3.7%, 15.9%)", + accentForeground: "hsl(0, 0%, 98%)", + destructive: "hsl(0, 62.8%, 30.6%)", + destructiveForeground: "hsl(0, 0%, 98%)", + border: "hsl(240, 3.7%, 15.9%)", + input: "hsl(240, 3.7%, 15.9%)", + ring: "hsl(240, 4.9%, 83.9%)", + warning: "hsl(48, 96%, 89%)", + warningForeground: "hsl(38, 92%, 50%)", + success: "hsl(90, 61.1%, 14.1%)", + successForeground: "hsl(90, 60%, 90.2%)", + info: "hsl(214.3, 77.8%, 92.9%)", + infoForeground: "hsl(214.4, 75.8%, 19.4%)", }, }, @@ -104,45 +104,35 @@ const DefaultTheme = { fontWeightRegular: 400, }, h1: { - fontSize: '2rem', + fontSize: "2rem", fontWeight: 800, }, h2: { - fontSize: '1.5rem', + fontSize: "1.5rem", fontWeight: 800, }, h3: { - fontSize: '1.3rem', + fontSize: "1.3rem", fontWeight: 400, }, h4: { - fontSize: '1rem', + fontSize: "1rem", fontWeight: 400, }, h5: { - fontSize: '0.83rem', + fontSize: "0.83rem", fontWeight: 400, }, h6: { - fontSize: '0.67rem', + fontSize: "0.67rem", fontWeight: 500, }, }, shadows: [ - 'none', - 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', - 'rgba(100, 100, 111, 0.2) 0px 7px 29px 0px', + "none", + "rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px", + "rgba(100, 100, 111, 0.2) 0px 7px 29px 0px", ], - zIndex: { - divider: 1000, - body: 1100, - general: 1200, - menu: 1300, - - tooltip: 1400, - modal: 1500, - toastbar: 1600, - }, }; ``` @@ -158,8 +148,6 @@ const DefaultTheme = { - The `shadows` key currently includes two shadows used in the app. You can give different colors or styles to these shadows as needed. If more shadows are added, the source code will also need to be modified to reflect those changes. -- The `zIndex` key controls the stacking of different components in the application. It is recommended not to change these values unless necessary. If a requirement arises, adjustments can be made accordingly. - ### Understanding to the `components` key The `components` key/object allows you to customize specific components by applying custom styles, adding custom classes, or modifying certain configurations. @@ -239,10 +227,16 @@ Similarly, for `MessageToolbox`, the supported options are: ], ``` -For the `ChatInputFormattingToolbar` component, the supported options are: +For the `ChatInputFormattingToolbar` component, the supported options in `surfaceItems` are: + +```jsx +["emoji", "formatter", "audio", "video", "file"]; +``` + +Additionally, all formatters can be reordered or removed by passing a `formatter` array in the `optionConfig`, as demonstrated below: ```jsx -['emoji', 'formatter', 'audio', 'video', 'file'], +formatters: ["bold", "italic", "strike", "code", "multiline"]; ``` Note: In `ChatInputFormattingToolbar`, `menuItems` is not supported as all options will be displayed directly on the surface, and none will be inside a menu. @@ -285,7 +279,7 @@ To enable the colorize variant for the `MessageHeader` component, use the follow ```jsx variants: { - MessageHeader: 'Colorize', + MessageHeader: 'colorize', } ``` diff --git a/packages/react/docs/theming_technical.md b/packages/docs/theming_technical.md similarity index 99% rename from packages/react/docs/theming_technical.md rename to packages/docs/theming_technical.md index 523eb8bb5..20a608c1f 100644 --- a/packages/react/docs/theming_technical.md +++ b/packages/docs/theming_technical.md @@ -166,7 +166,7 @@ const displayNameVariant = variantOverrides || 'Normal'; css={styles.userName} className={appendClassNames('ec-message-header-username', classNames)} style={ - displayNameVariant === 'Colorize' + displayNameVariant === 'colorize' ? { color: getDisplayNameColor(message.u.username) } : null } diff --git a/packages/docs/ui-elements.md b/packages/docs/ui-elements.md new file mode 100644 index 000000000..cdb6c8a4b --- /dev/null +++ b/packages/docs/ui-elements.md @@ -0,0 +1,95 @@ +# Embedded Chat: A Staple in Excellent Customer Service + +The Embedded Chat component is an easy-to-use, full-stack solution for integrating Rocket.Chat into your web application. It combines React.js with backend behaviors for a seamless chat experience. + +![Embedded Chat Demo](https://github.com/RocketChat/EmbeddedChat/assets/78961432/b85c7b8a-65e2-4a90-a843-f4072c942ac0) + +## UI Elements + +This component is part of a monorepo, specifically within the `packages/react` project, which houses the main EmbeddedChat Component. + +![image](https://github.com/user-attachments/assets/2fd76929-ce43-4bb3-8ea8-3a7318468923) + +### Development + +To develop and view the components: + +1. Clone the repository. +2. Navigate to `packages/layout_editor`. +3. Run the following commands: + + ```bash + yarn build # To build the component library + yarn storybook # To view the components in real-time + ``` + +### Installation + +To install the component library, run: + +```bash +yarn add @embeddedchat/ui-elements +``` + +This library offers a range of UI components, including `Box`, `Input`, `StaticSelect`, `MultiSelect`, and more. For a complete list of available components, please refer to the Storybook. + +You can import components using the following syntax: + +````jsx +import { + Box, + Heading, + Icon, + Menu, + useToastBarDispatch, + useComponentOverrides, +} from '@embeddedchat/ui-elements'; + +### Theming + +By default, the component uses a standard theme. You can apply a custom theme and mode by importing `ThemeProvider` from `@embeddedchat/ui-elements` and using it as follows: + +```jsx +import { ThemeProvider } from "@embeddedchat/ui-elements"; + + + +; +```` + +Supported modes are `'light'` and `'dark'`. Ensure that the `theme` prop is provided with the correct format. + +The library also includes a `useTheme` hook for managing the theme and mode: + +```jsx +import { useTheme } from "@embeddedchat/ui-elements"; + +const { theme, mode, setTheme, setMode } = useTheme(); +``` + +The `useTheme` hook provides: + +- `theme`: The current theme object. +- `mode`: The current mode (`'light'` or `'dark'`). +- `setTheme`: A function to update the theme dynamically. +- `setMode`: A function to toggle between `'light'` and `'dark'` modes. + +`setTheme` allows you to change the theme on-the-fly, while `setMode` lets you switch between light and dark modes. This flexibility is useful for dynamically adjusting the appearance of your application based on user preferences or other conditions. + +You can use this hook to style your components with the provided theme. `useTheme()` also provides `colors` and `invertedColors`, simplifying color management. `colors` will automatically adjust according to the mode, while `invertedColors` provides colors for the alternate mode. + +Additionally, the library offers `darken` and `lighten` functions to dynamically adjust color brightness: + +```jsx +import { darken, lighten } from "@embeddedchat/ui-elements"; +``` + +These functions can be used as follows: + +```jsx +background-color: ${mode === 'light' + ? darken(colors.background, 0.03) + : lighten(colors.background, 1)}; +``` + +This hook allows you to dynamically switch modes or themes as needed. The `theme` object must adhere to a specific format, as outlined in the EmbeddedChat `react` project [Readme.md](theming.md). diff --git a/packages/layout_editor/README.md b/packages/layout_editor/README.md index f768e33fc..690a7d8bf 100644 --- a/packages/layout_editor/README.md +++ b/packages/layout_editor/README.md @@ -1,8 +1,58 @@ -# React + Vite +# Embedded Chat: A Staple in Excellent Customer Service -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. +An easy-to-use, full-stack component (React.js + backend behaviors) for embedding Rocket.Chat into your web app. -Currently, two official plugins are available: +![ec-demo-image](https://github.com/RocketChat/EmbeddedChat/assets/78961432/b85c7b8a-65e2-4a90-a843-f4072c942ac0) -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh +## Layout Editor + +![image](https://github.com/user-attachments/assets/a42a66af-d8c0-4d3a-aa1a-71f91b07310e) + +We offer a layout editor that lets you customize the design and appearance of the EmbeddedChat component in real time. Features include: + +- **ChatHeader Options**: Add, remove, or reorder various options. +- **MessageToolbox Options**: Tailor toolbox settings. +- **ChatInputFormatting Toolbar Options**: Adjust input toolbar settings. +- **Drag-and-Drop**: Easily switch and reorder menu and surface items. +- **Resizable Sidebar**: Adjust the sidebar by dragging. +- **Theme Lab**: Customize layout and theme settings, including palette colors and typography. + +### Theme Lab + +In the Theme Lab, you can: + +- **Customize Palette Colors**: Adjust colors for both light and dark modes. +- **Font Settings**: Modify font-related settings. +- **Layout Customization**: Change layout variants and display names, and restore deleted options. + +Once satisfied with your changes, click the "Generate Theme" button to create a theme object. + +![image](https://github.com/user-attachments/assets/88ab51b6-aac6-41cc-b911-38378ed61e12) + +### Integration + +To apply your custom theme: + +```jsx + +``` + +Alternatively, you can paste the theme object into the Theme settings of the EmbeddedChat RC App. Note: These settings will only take effect if the `remoteOpt` prop is set to `true` when configuring EmbeddedChat. + +### Development + +Clone the repo, navigate to `packages/layout_editor`, then run: + +```bash +yarn dev # Start server +yarn build # Build for production +yarn preview # Preview build +``` + +### Additional Resources + +- For installation instructions of the EmbeddedChat RC App, visit [this guide](../rc-app/README.md). +- For detailed prop usage, refer to [this guide](../react/README.md). diff --git a/packages/layout_editor/package.json b/packages/layout_editor/package.json index 28dea7bc0..9d035a4c7 100644 --- a/packages/layout_editor/package.json +++ b/packages/layout_editor/package.json @@ -12,6 +12,7 @@ "dependencies": { "@dnd-kit/core": "^6.1.0", "@dnd-kit/sortable": "^8.0.0", + "@embeddedchat/markups": "workspace:^", "@embeddedchat/ui-elements": "workspace:^", "react": "^18.2.0", "react-color": "^2.19.3", diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx index e79eba74b..74af0374a 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.jsx @@ -95,8 +95,10 @@ const ThemeLab = () => { setThemeModalOpen(false)}> - - Your theme is ready! + + + Your theme is ready! + setThemeModalOpen(false)} /> diff --git a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js index ff874544c..adb4986a7 100644 --- a/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js +++ b/packages/layout_editor/src/views/ThemeLab/ThemeLab.styles.js @@ -28,6 +28,12 @@ export const getThemeLabStyles = ({ colors }) => { closeBtn: css` padding: 0.5rem; `, + + modalTitle: css` + display: flex; + align-items: center; + gap: 0.5rem; + `, }; return styles; diff --git a/packages/react/README.md b/packages/react/README.md index f8a72877b..5478d4bf3 100644 --- a/packages/react/README.md +++ b/packages/react/README.md @@ -132,7 +132,7 @@ This section of the guide aims to provide a detailed explanation of these props. /> ``` - However, the `theme` object must follow a specific format. For detailed information on theming EmbeddedChat, refer to [theming.md](docs/theming.md). + However, the `theme` object must follow a specific format. For detailed information on theming EmbeddedChat, refer to [theming.md](../docs/theming.md). In Storybook, demonstrations of different themes and variants are provided in the 'Design Variants' section. @@ -151,7 +151,7 @@ This section of the guide aims to provide a detailed explanation of these props. 1. **Local Storage**: Store the `ec-token` in the browser's local storage. 2. **HTTP-Only Cookie**: Store the `ec-token` as an HTTP-only cookie. [This method requires the installation of the EmbeddedChat RC App on the Rocket.Chat server] - For a detailed guide on using each of these authentication methods with the `auth` and `secure` props, refer to the [authentication.md](docs/authentication.md) file. + For a detailed guide on using each of these authentication methods with the `auth` and `secure` props, refer to the [authentication.md](../docs/authentication.md) file. ## Development diff --git a/packages/ui-elements/README.md b/packages/ui-elements/README.md new file mode 100644 index 000000000..5a17e4a48 --- /dev/null +++ b/packages/ui-elements/README.md @@ -0,0 +1,95 @@ +# Embedded Chat: A Staple in Excellent Customer Service + +The Embedded Chat component is an easy-to-use, full-stack solution for integrating Rocket.Chat into your web application. It combines React.js with backend behaviors for a seamless chat experience. + +![Embedded Chat Demo](https://github.com/RocketChat/EmbeddedChat/assets/78961432/b85c7b8a-65e2-4a90-a843-f4072c942ac0) + +## UI Elements + +This component is part of a monorepo, specifically within the `packages/react` project, which houses the main EmbeddedChat Component. + +![image](https://github.com/user-attachments/assets/2fd76929-ce43-4bb3-8ea8-3a7318468923) + +### Development + +To develop and view the components: + +1. Clone the repository. +2. Navigate to `packages/layout_editor`. +3. Run the following commands: + + ```bash + yarn build # To build the component library + yarn storybook # To view the components in real-time + ``` + +### Installation + +To install the component library, run: + +```bash +yarn add @embeddedchat/ui-elements +``` + +This library offers a range of UI components, including `Box`, `Input`, `StaticSelect`, `MultiSelect`, and more. For a complete list of available components, please refer to the Storybook. + +You can import components using the following syntax: + +````jsx +import { + Box, + Heading, + Icon, + Menu, + useToastBarDispatch, + useComponentOverrides, +} from '@embeddedchat/ui-elements'; + +### Theming + +By default, the component uses a standard theme. You can apply a custom theme and mode by importing `ThemeProvider` from `@embeddedchat/ui-elements` and using it as follows: + +```jsx +import { ThemeProvider } from "@embeddedchat/ui-elements"; + + + +; +```` + +Supported modes are `'light'` and `'dark'`. Ensure that the `theme` prop is provided with the correct format. + +The library also includes a `useTheme` hook for managing the theme and mode: + +```jsx +import { useTheme } from "@embeddedchat/ui-elements"; + +const { theme, mode, setTheme, setMode } = useTheme(); +``` + +The `useTheme` hook provides: + +- `theme`: The current theme object. +- `mode`: The current mode (`'light'` or `'dark'`). +- `setTheme`: A function to update the theme dynamically. +- `setMode`: A function to toggle between `'light'` and `'dark'` modes. + +`setTheme` allows you to change the theme on-the-fly, while `setMode` lets you switch between light and dark modes. This flexibility is useful for dynamically adjusting the appearance of your application based on user preferences or other conditions. + +You can use this hook to style your components with the provided theme. `useTheme()` also provides `colors` and `invertedColors`, simplifying color management. `colors` will automatically adjust according to the mode, while `invertedColors` provides colors for the alternate mode. + +Additionally, the library offers `darken` and `lighten` functions to dynamically adjust color brightness: + +```jsx +import { darken, lighten } from "@embeddedchat/ui-elements"; +``` + +These functions can be used as follows: + +```jsx +background-color: ${mode === 'light' + ? darken(colors.background, 0.03) + : lighten(colors.background, 1)}; +``` + +This hook allows you to dynamically switch modes or themes as needed. The `theme` object must adhere to a specific format, as outlined in the EmbeddedChat `react` project [Readme.md](../docs/theming.md). diff --git a/packages/ui-elements/src/components/Heading/Heading.js b/packages/ui-elements/src/components/Heading/Heading.js index 8cce39bd4..541be8fb9 100644 --- a/packages/ui-elements/src/components/Heading/Heading.js +++ b/packages/ui-elements/src/components/Heading/Heading.js @@ -38,7 +38,10 @@ const Heading = ({ level = 1, children, ...props }) => { const Tag = `h${level}`; const { theme } = useTheme(); - const style = { ...defaultTypography[Tag], ...theme.typography[Tag] }; + const style = { + ...defaultTypography[Tag], + ...(theme.typography?.[Tag] || {}), + }; return ( Date: Sun, 21 Jul 2024 16:15:03 +0530 Subject: [PATCH 086/104] add all doc reference --- README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/README.md b/README.md index 63000a1fe..59b58af26 100644 --- a/README.md +++ b/README.md @@ -156,6 +156,24 @@ This structured approach facilitates cohesive development and integration across This environment offers a complete setup for developing and testing the `EmbeddedChat` component, alongside its `api` and `auth` packages. Feel free to explore and enhance the capabilities of `EmbeddedChat`! +## References + +- Embedded Chat Development: [EC Development](packages/docs/embeddedchat_dev.md) – Explore development techniques for Embedded Chat. + +- Embedded Chat Setup: [Setup Instructions](packages/docs/embeddedchat_setup.md) – Start setting up Embedded Chat in your app. + +- UI Elements: [Setup & Dev Guide](packages/docs/ui-elements.md) – Integration and customization of UI elements. + +- Layout Editor: [Using the Editor](packages/docs/layout_editor.md) – Customize the chat interface with the layout editor. + +- EmbeddedChat RC Setup: [Setup Instructions](packages/docs/ec_rc_setup.md) – Guide for setting up Embedded Chat RC App. + +- Authentication: [Guide](packages/docs/authentication.md) – Configure and manage authentication for Embedded Chat. + +- Theming Guide: [Guide](packages/docs/theming.md) – Guide to theming options and customization. + +- Theming Technical: [Technical Overview](packages/docs/theming_technical.md) – Technical aspects of theming. + ### Contributors From 85c802a4e39b3129a0b8895b7798ae855e67b53b Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Sun, 21 Jul 2024 21:31:39 +0530 Subject: [PATCH 087/104] changed layout editor title --- packages/layout_editor/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/layout_editor/index.html b/packages/layout_editor/index.html index e4b78eae1..328655b40 100644 --- a/packages/layout_editor/index.html +++ b/packages/layout_editor/index.html @@ -4,7 +4,7 @@ - Vite + React + TS + EmbeddedChat Layout Designer
From 790061318523cbd61a777ec6e4565ca240298f9d Mon Sep 17 00:00:00 2001 From: Devansh Kansagra <125076549+devanshkansagra@users.noreply.github.com> Date: Mon, 26 Aug 2024 15:26:50 +0530 Subject: [PATCH 088/104] FEAT: Added support to deploy monorepos to github pages (#615) * Added support to deploy monorepos to github pages * Changed the branch * Added Environment variable * Move files to build folder instead of copying it * Removed the redundant checkout code from deploy workflow * Removed deploy workflow and added official deploy-pages action of github to deploy monorepo to github pages * Added STORYBOOK_RC_HOST env variable * Added layout_editor in build-deploy workflow * Created docs site for EmbeddedChat Docs * Update docs README.md * Removed copyright from footer * Removed docusaurus images and svgs * Switched to yarn from npm * Made the changes that were reviewed * removed unnecessary text from theming * Added github-pages environment * Changed the workflow * Changed the content permission to write --- .github/workflows/deploy.yml | 81 + lerna.json | 3 +- package.json | 3 +- packages/docs/.gitignore | 20 + packages/docs/.yarn/install-state.gz | Bin 0 -> 1076029 bytes packages/docs/README.md | 25 + packages/docs/babel.config.js | 3 + packages/docs/blog/EmbeddedChat-2022.md | 157 + packages/docs/blog/EmbeddedChat-2023.md | 237 + packages/docs/blog/EmbeddedChat-2024.md | 204 + .../Development/dev_launch.md} | 21 +- .../Development}/theming_technical.md | 9 +- .../{ => docs/Development}/ui-elements.md | 15 +- .../docs/{ => docs/Usage}/authentication.md | 10 +- packages/docs/docs/Usage/ec_rc_setup.md | 35 + .../{ => docs/Usage}/embeddedchat_setup.md | 6 +- .../docs/{ => docs/Usage}/layout_editor.md | 10 +- packages/docs/{ => docs/Usage}/theming.md | 10 +- packages/docs/docs/introduction.md | 27 + packages/docs/docusaurus.config.js | 133 + packages/docs/ec_rc_setup.md | 31 - packages/docs/package.json | 44 + packages/docs/sidebars.js | 46 + packages/docs/src/assets/EC-Logo.png | Bin 0 -> 157851 bytes packages/docs/src/assets/app.png | Bin 0 -> 26547 bytes packages/docs/src/assets/easy.png | Bin 0 -> 18625 bytes packages/docs/src/assets/pencil.png | Bin 0 -> 9796 bytes .../src/components/HomepageFeatures/index.js | 68 + .../HomepageFeatures/styles.module.css | 11 + packages/docs/src/css/custom.css | 30 + packages/docs/src/pages/index.js | 48 + packages/docs/src/pages/index.module.css | 23 + packages/docs/src/pages/markdown-page.md | 7 + packages/docs/static/.nojekyll | 0 packages/docs/static/img/EC-Logo.png | Bin 0 -> 157851 bytes packages/docs/static/img/favicon.ico | Bin 0 -> 157851 bytes packages/docs/yarn.lock | 11762 ++++++++++++++++ packages/layout_editor/vite.config.ts | 1 + 38 files changed, 13000 insertions(+), 80 deletions(-) create mode 100644 .github/workflows/deploy.yml create mode 100644 packages/docs/.gitignore create mode 100644 packages/docs/.yarn/install-state.gz create mode 100644 packages/docs/README.md create mode 100644 packages/docs/babel.config.js create mode 100644 packages/docs/blog/EmbeddedChat-2022.md create mode 100644 packages/docs/blog/EmbeddedChat-2023.md create mode 100644 packages/docs/blog/EmbeddedChat-2024.md rename packages/docs/{embeddedchat_dev.md => docs/Development/dev_launch.md} (79%) rename packages/docs/{ => docs/Development}/theming_technical.md (96%) rename packages/docs/{ => docs/Development}/ui-elements.md (86%) rename packages/docs/{ => docs/Usage}/authentication.md (96%) create mode 100644 packages/docs/docs/Usage/ec_rc_setup.md rename packages/docs/{ => docs/Usage}/embeddedchat_setup.md (97%) rename packages/docs/{ => docs/Usage}/layout_editor.md (89%) rename packages/docs/{ => docs/Usage}/theming.md (97%) create mode 100644 packages/docs/docs/introduction.md create mode 100644 packages/docs/docusaurus.config.js delete mode 100644 packages/docs/ec_rc_setup.md create mode 100644 packages/docs/package.json create mode 100644 packages/docs/sidebars.js create mode 100644 packages/docs/src/assets/EC-Logo.png create mode 100644 packages/docs/src/assets/app.png create mode 100644 packages/docs/src/assets/easy.png create mode 100644 packages/docs/src/assets/pencil.png create mode 100644 packages/docs/src/components/HomepageFeatures/index.js create mode 100644 packages/docs/src/components/HomepageFeatures/styles.module.css create mode 100644 packages/docs/src/css/custom.css create mode 100644 packages/docs/src/pages/index.js create mode 100644 packages/docs/src/pages/index.module.css create mode 100644 packages/docs/src/pages/markdown-page.md create mode 100644 packages/docs/static/.nojekyll create mode 100644 packages/docs/static/img/EC-Logo.png create mode 100644 packages/docs/static/img/favicon.ico create mode 100644 packages/docs/yarn.lock diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 000000000..de66ccd85 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,81 @@ +name: Build and Publish Storybook to GitHub Pages + +on: + push: + branches: + - develop + +permissions: + contents: write + pages: write + id-token: write + +env: + STORYBOOK_RC_HOST: "https://demo.qa.rocket.chat" + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + environment: + name: github-pages + url: "https://rocketchat.github.io/EmbeddedChat/" + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "16.19.0" + + - name: Install Dependencies + run: yarn + + - name: Build Storybook + run: yarn build:storybook + working-directory: packages/react + + - name: Build UI-Elements + run: yarn build:storybook + working-directory: packages/ui-elements + + - name: Build Layout Editor + run: npm run build + working-directory: packages/layout_editor + + - name: Setup Node.js for Docs + uses: actions/setup-node@v4 + with: + node-version: "18.x" + + - name: "Install dependencies for docs" + run: yarn install + working-directory: packages/docs/ + + - name: Build Docs + run: yarn build + working-directory: packages/docs + + - name: Prepare Build Folder + run: | + mkdir -p build + mkdir -p build/ui-elements + mkdir -p build/layout_editor + mkdir -p build/docs + + mv -v packages/react/storybook-static/* build/ + mv -v packages/ui-elements/storybook-static/* build/ui-elements/ + mv -v packages/layout_editor/dist/* build/layout_editor/ + mv -v packages/docs/build/* build/docs/ + + - name: Deploy to GitHub Pages + uses: crazy-max/ghaction-github-pages@v2 + with: + target_branch: gh-deploy + build_dir: build/ + commit_message: "Deploy to Github Pages" + jekyll: false + keep_history: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/lerna.json b/lerna.json index bbd0e6162..d3c0c2035 100644 --- a/lerna.json +++ b/lerna.json @@ -3,7 +3,8 @@ "useWorkspaces": true, "version": "0.0.0", "packages": [ - "packages/*" + "packages/*", + "!packages/docs" ], "npmClient": "yarn" } diff --git a/package.json b/package.json index 8ece6278c..dc3d3f204 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "description": "Integrate RocketChat into any React based web app using this extensible, robust component library", "packageManager": "yarn@3.6.4", "workspaces": [ - "packages/*" + "packages/*", + "!packages/docs" ], "scripts": { "preinstall": "node scripts/node-check.js", diff --git a/packages/docs/.gitignore b/packages/docs/.gitignore new file mode 100644 index 000000000..b2d6de306 --- /dev/null +++ b/packages/docs/.gitignore @@ -0,0 +1,20 @@ +# Dependencies +/node_modules + +# Production +/build + +# Generated files +.docusaurus +.cache-loader + +# Misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/packages/docs/.yarn/install-state.gz b/packages/docs/.yarn/install-state.gz new file mode 100644 index 0000000000000000000000000000000000000000..1f543b7313c13e8e5dffe3c58455ccb461185c01 GIT binary patch literal 1076029 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
  • CZ0d&s72fCr>DNb+H#=aVUZnok5MJ7T~03SfPJpm zO;&4XcbxXtQ0vfmz_5Lrg9$(qMCM5NYgMK$d3JOzg&CsbY}4VSYpV(DGmsF*#e*b@ z@rt-kP-s@#iiDg1b=tW`;h~V~zK;UY28gi?ZQ5c!GiwKqJ;N{&FfeABeDBN@2QAY| z?sp0I#L}urlfwxkdOgFSTB;#*8W2V>c?49?Sp!vHkeNBd+SQi4BUK6!MMHBU8g~~K zjE^Bhi@q54hJ(=aoVblTBXi~pXpNL$K)Q`nNXm|Fbr^kz9+)XLj9hwY0$8_W)tF2< zkcVp(R%XnbnL^DHqYXGkY)}U+>cP#K$I5#Y)4F5`d4V$|cY-+)tBBzF8M2qHM@87V z(F2Mg$}(ggs!W?-MaA|YL-ka*$rr!Ap{mAu8Br>Hd&+CvWaKhAF4RR{kHMO2)l7Fm zF9$OCxGs`*SSjoQBQw_In;9M~Dh7v@rgyB7;|yYCw?TTv`h4K`kUe-z29A}uKJF^o zW6)$7dL0D=ftKOxK$om=b@?fHBTgRd`xu9kWgBy;G=R$zuQ$E`z1In6KrfSisuYX6 zEc+Qfgfcqakj@AGdbG>P{xV2#zz??}z+eZydXF3YVrVS%&7(>7X@Y0^=Bqs~tvw4u z$YrG+!`=W5vJq)q>|$K&Rh|cHSs7{mImz~ZjKIj$@a-Tj-&S`C#+q`yXF*2dNyEH! zsSxm7z$tf`i7(<%ZVsWfEJd10`Dop9FPHHEB(W=3UkHUUSyc)H#7d?OLmo2&QXYhy zlpHxDqQ=FF{W14bSl*-46f4ls*5K(FrD>PGK%{P8yZTs3(JQMB1D^OA2e7H&(J{gF z$((}k-rWMvUZUu&wXAwLtI+Vu21wz&)8?+Xy$uxPrI`n0k3e zUck2x)qK)gE-B|r?;889f|LV5$kF^GI}f%_Z4#+C#|9H9V={AHz*Ot9W zaX?Pl)dZC;Z%S0+D2U*a9>Vl0OJY4f@=gaWM(J{so?kd?L?u{9fT9wNW8XNJ%+p#!-$6UiiG6o{U~6SL#o#QF^@<02P2I8ZK2lMK(e%ll zwBSaIYjYymIYG0rH-y2=J<7$lv|j_z(YQ5J4~&5+rprb9&5^7J{R0eoQj6)W1A=-2 z{Szzln3b{_;-j#!d>j^+UwD8+OyxTdPljq4w$n8kXG&p+q+>Ns9G%MTbPjC|@&tlA z%sDmS;`d83UD;C%1m>8RmOYAoE~OcR%w4b!k))FERH zZ)hf-kSJoFCda+@0`4_id{x#d50B(9!o;&q1am;G;JeWnIRdt3S0lYw=~84U{B3aH zqx3xu_M0gqj)CFi3HLeYM!XPG1yEQY*k%iGkIk-zyj44wl-r^3^F+qrNx3g*A+rip zyA__nR<7^CgLNrR#nrS->v&%(XCcF$9MP9rfxE=l0jRv4%?-b^s%2$a791my`ef^Cjj5c`iPGuYAHCH_lY7w{- ztis{Gwqw>Yb~&iTSO#N3>^g_CBfea7=6jdTgWRZN+r^zu`^V7!H4r!SHHSF82wv6@ z-rEz-t@{p|J2_I4dOE;B$!bqDa~QX9@vg1$*4}+Z%#_g4kY=Sj{3?d_O%a&zHT1W3 zI{;}Kfieb};_OckN4}Iglhe>tf&Yoj#G>-VAVBR!rWho1?$HCAt&Il; z9|QoZT7483ZCW9v0PUbbZer`#8r5TR6-LOvIka-fzp8m~GpfJuI15K#j5o@;LKXs! zhFu`g(?F)3?tt$4#1zuNaS|9p!_{AhJl@IXL0!uc!bSm(NU@^4FNGx7Vmf{JRYOIR zyhqHl%;O19;urzxX;uD3=~}}BSwQ3$z~MK_DBSqZZm=lqaCm6w$;ig%@S%FTr34@9x-Yz}u10IY<#Y}MY zWJI`}wbK#o_1%EgFyx#I2vSSC5B+gdn#UYRB>(skGQRrL_;l^}^0|W=3dJau;#=_X zAiAnXe7_MX?y!HEIKu@wNj@hrbV5{0IhENVil{EQuDjhiQbhpmyet;oNEV( z`&_J_WhM^y^qKYP+W=i|ajdD2v}Wn#Fbme^S{PzgUL(TBxINl{m)H60r2Ns?z|bq) z445S@6h1pPiVRZ0y;4bR3_fZ;Uw!8kRS4~S0rZarNMSZm zb<09N;Lb<+gs<`{lfU=nY897MqmzOgO3GVsz^M>&rrlADp8|?Hvc+KD@9Y3}Y9Fh0 z<@qrVf2zZ6oTg6AQzjUOf|8oH4ikdghXGI$m)=>ThCmca!)bvM78 z?;y)VqWC=DN>Stm5ChsP9Z(Ivo5;u|sYW6K+H#{AQh_uGsdldMtg$+K@ow|UssM;# zV35B<$f`_lLA?dzZv&)z>8ztP#(9lU5Q}Gwuz)Z`bD6K`mZg$UN0y&^E&lxtE=r{w zY?BFK<1FLY+~S}Rg4>P#+q{3nSN^W4m80gA+vgHH4wd*?&;@|bzDmAvA*_E?!a zhrH}Pc^+SxMbOVIOztMf{560jMNMAb|^N?;^47I&)qzdsw)*xXpxoIi? znPB7;EEQ|S)dD6yVdtU^xuqSM!a(hJf(}~Tk(f7FS$x$xWUXlgN6SjgAK(hvRMyUt zR~ydwm07C-@0Pa~o8`99&SDtGXu`sION5uF_Fc-}f?kpvoMEn?+J>q(hGkRYz0Q+I z*z0bPF8f_@bfjTG2U6iFJg~`D4z^w_Cl3z8;`K@<6!BU@PFUUeas=pymL&-{dzL(e@Gqnvuozu_6BPeW=&Dt;~Z+Z1b~q^}+vFT0aou zA$4|=luj6%b{liqn*#wiS{S2hA0yM?vJvs^6>}Uz+XPq zqu2edAtrv+OTXsy3*&3j&Kl_Gt}yn13&>CKtV1GD;f~bWE@8LT=4MHpqEM&ALh{8( zaQNd6KhAmKa0k!JAv_ps3c%g?MY2n>WVyvItuR?>aN?=d!~u-HI^kYBI3+}1XNJ!8 zh0XL}i+SP20$(E0bJ3J?72v+~NYt%ZKm>9+Ro|BuJ>h_iAg<#N5~XCSYLZn5bj}rc~nVs%2hou&3sm@-Ya6 zg@v*1F)YY%HX!aeY+FfhA81t<-Cn%~w@6#0^hU5lZUDOlD!YKcgHJOX`bLJJXU97& zE@or`NBi#^K-s$(e zV{oUrY*y}S+ZOTnCyyYe7xgOO3^?$ZA;9HHf%c|WSa19y<}fr-+@m*tYJH=W<_HRi zegda7MTv)&o#*mXmefAHGD?J+67=bAfmQ)b9K3$z={BD?h9lP=nS~xyvh%~f8Y5Q! zbg8XNff+b9<;OuSp$sHD2Ug9+-mx2aGOXmhd$Br>sKus4cT`I@)%gMB3Sra@k&u)qLRdfPUE~OWVsk7HnK`w0v zKk&g9ZI--MIu=yypT7I5W8*_p z#hbLcIy%7xu3sHoI!h9^Ij!ube!z*5Qz5uTAxinDgQ)XVvh>N7BE=^}Cf6TH=aywj zjw8t}0R*4R0SR*dORyubub%1Z%!+Wo*Ng;IMHCo^54ir;p{=>n!sZT~5Vfq+i6-nw zJDZdpcx>c|qwKl_pS;K%f4ZF7i;uS-XOL2}lr5v)O*QpQMEI4lwp?_;ENjI_ULm^w%N$ zj3Hcbn23y$j90H>3detUa53C{*|kR0%hrZ_1UAky&aOgtD4^%GfM^)+EG>E;H{uB} zu3USbN=?}WswS2>8iRJ)_Rjj45J923H}QTeUF~Up0B>odGb3x4o45h3oqp)-3kxpe1CMK`KejZ+Yby{dv|;>xDzuCt|rb!5jK5Kmf+cRRM#MCP^M(qYE|yA!@mI`7o<>Vv7M; zevq3>*homvR6n<8@CuJI9m%Dw=d8~!7Xxw-w4*k(BBz>y((;L)h~^W#9^nhdQABn4 zMZlfXzHx3nleH9%##kYsN87x}-(`~dx*fj1D;sBRIar?Xq8E{C}2NhGqr}CKD=)3 z^G&o~xKPb$D&gCM%Y4=>mrMzeD$n)U(h0(-RQ96+nXB!XO@^Zb=EA&7c|3@Byu_>3 zn&%e~T5Fe8Ab;YUs1J}K)6KP5rq=ot7bYCk!Jfz)8|F##BgdO(-$tD-_v0JLVuG@VCv-|hcRoUWNbS4d z{`yPpDY*^KN6OLs<**Qr*}lf;_{|L^C53=#=^mo<$eN>*?H`RGt&B8gIh#(F3&cCy zVC+wg@&TB>bJsbSVxu5%n^7U~CWQv4pevd5<1yhxuja3eEwW|pLpq?I$gtsI2Mq#d zqZ6ZmJ7;Wus(rx*M5B13a8rlcoSz z&&_|p7m;DmIt^V_E{xCAP_eDIvDm?-2Vn>75@aBIlY>VkDRlIW6Ciz+RM~i_Sb1T# zzUk#RV6bGjj`52|ZLR=YdR=lP7S7=Uw;4)6iwmkRl~;57K-9@%@~t%~H=h*e?1wWf z9^hh9tW>y_C)=Ju0|u>?Nf~7P=ahPf)C1O$!X81^*fz}?`#=?_z-bRZ)bWfF;jWfP z7Ro1ThWL2Ay$YLkbFZ!Io#ych)MCzyPO{+o1=3MwpUao8?T*rb|BWoAMnor*%3bRU z_YxvBn193&1Dxv&i~JpNsQJ$es=`Otn1}l##0K&0WE+9=8|o7)g=-FX@7b%uP^ey@ z>>g6RITot?vo1;bl*s_ucpKJ@uj+9kDQPc1psYLjvLCKEAU})>rtQ^(x$(&Z23LS1 z053q$zu9PIOy|#hHe)s>2wbd<(6(-dUi=3TeY$TH=E$DF&MsT4bg15a(`BOUQQmZK zwuDgVSZr1q`eFNObDInxQjDrCm~l`-7ZjNP#MkkV|j8lo}ytQV0vZ%?5(v z%%*|C*R$I_>QjsGB@xIYmjj}l*8nwDz{qr(TYuVm>BK;~u^Hc9KrB?*I<2 zOtng%of%clM*Q4%3~-bQhvxOTws^k&FoIM7#;- z`df4J1QlJlPVj*9j(~;$7mf@fhvn@XPfeu0Wpa}*ZMyt|$C_Xn=J@?oo*B2a;{d(pgv-2G2a5i3?VYim9YtTsSp7bKbQ>Yi;-30xUzyA?F zLBrb^s}*j=px#|38A>5x)!NAT*Q6pEsaAQ9TR`iT)IQUe4x;G1u5()>UIHfI(g`jr z$KY+k1&nePU<9zIn*+Of_^VmGt>7bzmaFdDY3=V`?+jL9H<<@h%u+|b%d$lkm3%s+ z1vsJY4)H`zP@;U59g|P;D>WHCT`7AHByXDI@n3HZM?_Ll;x9!rf8`F^{rdfG+Nu4;5(YUIW6(b@9){}e_!}xSE3gW0xR*W*~Mr&cvF8E@?m5hqM^ALLiP8{PHz^oBNq>{DY zS$7j!YxomLj4jXVU~*YjR{-g0ZFh6)Tpw#=aad0_=p*fJ*d(o!9+^ls`%VD~JygA( zPfl1rk6xzQdARAO=HI5zR{Nm`zX5{0vzB5*4Vo|ih7R~6B%%R|MZqJKMF^XQH^2wI zWMYf6_Q)o~94uz?9pL2G3#54BX$dPO&b6D`eVZ!6HL~xR;?hVWP#K#&oPxS~Is;5j zrY`C59Re*GeCKgI@MuWN5a4zikv(4&>4X;n2OW%vS;lEd8R28W*-`XB;)qiCHWW)B*j){wITtG5vdnvs4oJq^iI%k1 z3*PZgLRLA68|-;hS~;3%gbbqIT-uo#GdHTqwlxp&w7=n(9igYx`Ba=yw=rvYndv*} zp^$~>u{it#-lz*2i-P+;Oe1e6jZ(_)lUbLr{+MMzaCe`em+8xN*3xeu?)zsLN|+q_ zUG>VepY~uK3ra&=z>KfRvdx;Bf!hj!;6SpWHu|^JX8XT@sJp^)C!(+1^mu>ryj4u( zA?uPkCTcW1M4fL@(Y zo+R;fEgc2VnwPZqF*Xa`b#b~&z@iQm8 zQbyKOslMOc1mz3X9xpgRI4uxk_z!N)3hUCfw(_`wbWDco(c1@qI#okYyGF5&nsPYZSF7OyIqkwp+I3&0$X|P9>A;FT7slke0hJI{E(Dh< zr|q^dw{34F4OJsJ7ehx|^AhG5R*AguRGa1I^$eWGql<)=mB#{6RCmdDq%?u)^}^R=Q|4mHFru%B7DnzMK{bOqk_ zk)b3=4!u`G?h~3O&4h-3=jHC|Jc6268jy@4K5y5d`IW(*jY{n>K~?vWT^Z-1ixCt& z%^s2Q@ylbFKh*|NPsN|d{aSuS03U*|Y6Gs~T^0A&(tM9oPR>`wj0vGE-|{>!9ONFK zg|;GT3OJzv+@(zV)Eg(Q?2lkTo%PwSr?#lJL_?FUcQEI^=SS!+kR;8$cLp%PI9+!0V1W7~Nd z_*y;uDX9!VFhzxyje0&rlqIOabbMS~WA*1~ z(A1?3I5wBS3516!XXAOhE&(;pMIFW2SOGlI)DXN9$DO zm>I?nLM3^?Tt+On-=ojh>m4~Ws!=HCH#QL3+K7B4bTy1caz)9=1A=6e(47pV61@qy z3m5l-E20jmq_2f7fu@>l5@D#-(N*E>h;!-)4R;)RjAZ?Yf`r74ux8N-7YjYf_;*vp z43VAnfLtmgTsGR3*JlxsJ#;fV+73tiq7OUQ!dwJ(?dp1F1j7B=>r{7kqNWolv7J2R&J11q%b%i0>7&8=O!J!&hl6ugZou!61rg4MyUmn0aE-W2#+H$sY6B+WdiHIt z++F+Jwm1wQ%u|hb#6G@;*5t`36l%&Yg|ox7*QGSQD{uCN4+(h=v-^6jH@1bgrB@v} zO%8zZMV~EWB)bEAsI^_|VeQc2E_mKD(r{dN2 zU3TM#F!zO@zB;j11Uv==#|B<6P%*E0?inumo=qB-w?0u9dM%a^;bm}eb@z^vzHA$6 zh1Z0%o00|Y5n%jTVI9H#p(v@<9}~B+&`Sd}b`%9%wQV~UrMNL9qQl|(TT-#;}4*GNH=Fm$>~rA5JXgbqCTM7u8HnU|K*+> z1rQ+mEcaMerRTZXm0`rXcM+r*yWzYOGz`P6$i3CmQ$qRZ9>nGLdQjDbxlwb+^U}pc z+Ed@94%C}CQkccJZAd@00R-o^ghdVt7577Gr0JV75~AyLrN~?Qb)SsG5Yy+%O< zFI^+PQ|o?))(EUvb^}U*6{o0#t20)*bP>*j__GSgaVpbHTv?QB5&SBv#jF`Y35@G?2|qXJ_{tV|#J%H=+|syS*8=!@=SUHsB$-oYV(lVJW% zK9I!!;`cT-)}5x?6?b7$F6)D^xeAn--TCjPy%tOEE|L&go58=FTzo-T6JCZXv6|jk zBbfD_6~nO#*bw}e56&9#MNMg7u#~uXr+eU{#)gF(J<%|5ErK2j1yCWw@RDi|`C<6( zw-#!l2tJs2^;7n^)dPPk?2fEXpiU_riebf49WxkBR|@+~)p3eA=L)2?WNjH&AxMmx zAdCkWn}l88oDE=lChB`~YHoA-nF#q5l?hLQ-EUz}3N`%z0uzV88{S~P&Rn*qgN<7z z3k{3TPS`*;He`2jizXo|LiL+C1RWm}3U4(-PZ6qUk`od>fZTcwwX`>Sb7R|>gBBDn73B73=}nvpr!9vC!*@b250YnDLj%e+0FLd#E$>xL zaf@Uiy{jCm3%uQ;Hbg&_Yz$$2DE9mkR>d&DmmPUhT?1M=$Nt$X!2ILPNFl{wm~BHV z%AaEmCNUYw2wEV5-<3ZFJ$B;A+cS!-TA(5WwPjlYlSldQcz`V!it~XW`_T>X3_q7% z1`9Ey$=qWc3Uy5Hi%SqMO9RNh2$H`3ByOA{LHbO5cVz8&<_Bk3&Ci1G*7liB4EbTp zgrR~&c`z9cG#1r%*r?R)VT`tQ+9WQ~nH-nt*(zMO+nL2nkoX8tGK|gd9Iph?#amt} z=bqsERakYB4CJ#AgXTtGe1r5M$DT|5v8PNMCrC#gFlR$)Azz2%g$ov1Ojem-Y&YAB zhjWygW#F3KIy$($!uuDzj*@e7A2sLQdw6|0aRW%o6@$td1deW%u%w4&>V3m^JH*yX z1wKVn8pZvbFb1JC>>+PDU)2TemN}Yt5?phKyUHWfV%Fn4YGtD#Li6C#qW^8G)IHsA z87w}dzM4Jl-4VCqeFEEPgpS$y(hU_p8Tu#`OzgwNE|Cx;(hw=<;68x*g|xWwIvYGo zaL!gkL3!Naqh&57NkvSjWe?zn=J!6vPALe&x;@z@kj*rHy}Zj!xvmY`Pa}#F+Jev` zEUgq`@NTtZ>)`CAbVxyZocX48ANMTCGE7GcDe)hiWhrrg#DfW&MONf8Gf^+g<#KUQeqm(NVLyJeRoNi$t?Hf^Mf{@U~!pwM<+geh( zmo2pNHowqYd0{oGAuOipSKDI~UAabYQa|#vhO1}7)eR+btI}9bB4L=bAJ)-#*}Xan zUPJ0Ft`H=X6--{9BVlq`YIMF3zH*bjJH}10;@iNSpVM(`;O;(h@wiN)e-MM~)w*Gy zNTurpw*+rJd&tQQ7&oOJtz5e~H$X08cQK&#tV*`X*32CA&_{7$4?fVFdrLbwJ*B_{ zA^}9jUJ0py^rO@{WDwHfW>2fb_%GVxzzDDhAQB<^6#7WBtB+e*AROD|K-rL0DFnSr z;y{=u%42i}szv#k7WT27%~lp&9Wx0rH8Mk&hLz+22msKTbexuy%a6I6A9xUziugU8 zyyPmMk0aLyd?IZu$qQr~AqtwH&BB9urwBb_U=ecO+n}_i$v7~+lPq+(rJdR9dAWyL z5N8{rz76T3mlxn8gm?hFv!l=asTqVJf{Nvc?&n2Jf&@}RRNsguOXBDy#hwB7V&Q+m1OU4((Etvp>^z*p@6i=xb?^P6& z3k`?n-~fA$MY_pFoO7T(+&)R#?dpifd1v3E?`;IE_x1At0dZU38O(;FLz3An_8yyy zF0I=b0JcMGxLrkG+`78C$KyW>T7jL1(gV*g@CoLTysrD-FCCDgyI8n!mnIO*$dtMIbC!&#$~%P52sf za#?ZUeZ)a@zvLwym=ZT7K}y7SaIMicFW^wnwStX&t)lV0lBSOPTO%){ic1i%W2t6;}R^rVn)6F^okqP^! zFJNnL@49*`q(Au8)6N4>U*JhmZjv!_(>6=(pm{O}{eZ3z?PFz;xdD_BCFp*a(k7h3 zO~;AQR1Z%*P>fnk+z!}G*`;cp3$COUVO#~90I6u390umG9;d5OIpPe$3U}?gYQ7^H zM{iz>B$gkaR-@yHoGSto*{G?SNpxXh+J!ejO`WtnF!F@7ES>L zPsTmFU?`zt$Hotr4x_WW@#|r>oSf?w2F`t4GGD)d&Bw1-Cz5vu*{YgAsQyS_=qq#3 zQr7|gbF{)j7$#$|?{lKIS5XUa7t-5K9PGCGD^s7<7M<~QO};S@LjRQ-D2mst zndmX5?S~D+eC3`}a6+FwxkjJaX&R7ycaCH&lB}k!n2|j)&W<{-L5(5ASCY1UmvJ;= z?hiE_?Fp1B#L{w^&V%rs)7YcG1msNStNYP$;&jD&d|@L1+YaG(i(aOkRG0597mIL& zueW*T%cyK$7VUatUw5R?V1AjH&M>h(TWEsV!A(kPf#qjWoXu|pb;*i@;GNceGm>F@ zM&PHfg2v%N{RQ@o)q}w}e5rcm*CSOEdGtd3H!zVBF1KX+xNl2>88gk*W??E($L5kd zs31{wY!M;=9He(_Y<(;;=w&})M%4HGPS3mnc0t3f|> zrA*6_;9<7_o7ZZ~ao6FvaQbq3l7U+cInX)nRO4n^^04*a9YV_T zJTn_&ng)OaA_|H(JFtWRQ|U8KG-pYt;k`D*E9N{eHVfZF?gVGmf8M zN$TENh>640fh+ljFCu=~`e2Kkck75aB}Q`b&yIX<%`;Y`wX48fSew3!6n@GN=H^^7 zOj&NN1#ur>H7i%r7VH%UvEQ<1furKSj|hO_<%nPo^v!``n_oA1%&rAkN@HlA8CjZ7 zl+GogpoVm3GfuPmFNP!~J&_0mdCVd%18SK)oq9_R>G&Cm#2+uTc)s}D<(0m5Dv#9J z2jJt~40sI*ui#n$z)JdNp~-N9)HglP%*p`hbGf-TZ*^E1o6XL^07lN6vpLr(FF@VZ} z95%hRqeFZwd)}h3)Kd6!&Owx+DBfSL^OQ*ex!7*EP1wc6n|cv8DOE1eMsSCm9|jbO zG}-lgWEw|qC{B;J6bf_Py{pB~cVryR?P_r}MpJu?gv8zc&e}2u1WAZ`Q$}an@HU%l z4mDK`f^bPSK*`6}zUPFk{D?BkX6qFMGM5KT z^uRxLjOy4LofbZZSeR)v!wYN}tHq3;09vvp9dpaJ*Ff>RyAS9|D(I~flg#y+77+R|N>p`&GN9TYQN!Qb5lH@CMu zrcUF0FVN+&gi}B#^;maw61Tp}Vn24ku9vXKLvh%JaApN+1`k)_r;m;{k0xW(OtFs> zAm&xhDuC_p)ye#{WYqV9rkmYlf*6MugM};Ta-u*Pi>yUw!dlTOgG->FzA9m2fR01h zhU;bk-B4O=^4Xl4p!O73_yA5YVRQ1?@JU*=Zouwpk5-J39%QSI!K*@x9b*n-8cOx` z4a6ZW!C1UA8&RUpEe(n&bN|?HYCpE`2BxdGZO_rCu6>14E=Dzo=DcXCykFzS@RJkO zC9u9=B-^{tV6u(Zn9Xb{4-o9b%DUnVtbP;X{qYHSote?8ESu;?nT#g`9LK_imK2Hy zp3Jc%VZ+q9Hf=I_&C$QMMuhIrS8~odnN9cemCY9whh^ zBpw$Yla5JlfDMi;z@1(XgO4m&5?SX>&OL=bwBFcf^23bHmb@6jMq2)J(`##2X>&|= z*!gsX5rTP$LFR>93QZ)k39$inoWj(G{dMd5*G4|y(TJEaRl0lhhQfm1S3fcj}*#(HgCk&}s@U_(LWQoKHa2l>v*ipbp+ zJTzH-+`g5({00hpA*Ogg{4yZSk2v7dZU!%d5Nbz*!tPtf14+MdV3ELdd{=GID?!}S z_a8jvQrL_Yq%Rmtrxgy5PtF%02(q}Le?mskIXI?^ z)W|gs1f%ffXaO|vKu!0&FceRL{wF@`apE}Or%`8@QTw?QSmB+T8uN{@)oi1t-I!pw z&9h&x|2tw*p#s?xg=6}7n+d5ud{*jc1o_C8ie!fQL>XxekzHULC^Nf>F@n&c>jdW8 zbq=Zf&R2{VaIwC2W;*&kxL5d2J$;=&LM-mjhC{F^Lv^>^Fp7|aE@McxgvgQDm~~;* z#pqjlnRI`=a5lo+I15$s$y-D77D&!kyW1FB zf|5_`hnHj|T&f0v1tmhF>tbrxvL`+hd*sMzX81rng(O#bG;-B_!3tv?-ukm&?T%A| zqxE5EKX1T1D)~p?c+CmT4tS`8a8eP|_R!1Vo1wpcKx% zdfB4C&gbO7o{~+2y%7j9UZj_rhE5s}H!gW7$z7R&^(FU}byBn0DK4?bo2>4mxvsjz zrqAfub*tgHNO}d^)TZ$yp5GQkjw|F+;$Kw-0S8OQqih> z!SYM#7qA?dpY1-GB{4;A?qm9HK3VzBgU1RWW@TbAJXzwLvtuB`HV_GNz$dgy<{g=g)#JkO2F45pC^|JYJS}1x^EWsXF~883&-TXq z5h!w`KpuH3@xkGTox(Xd8A+RvhU4y2s6hEy#hA}@D&L*v^5nDNP>X1e4UD~r#zbgR zP#h-v832@l8&$}k>%6Bo1|eno2FIQ>BG`-?6#DGYuBXwov|CKcKPaY;Q8lTm>LhQy8%5tWiT z#@5(vjJ|2`j@K#!!#WRC)1X>JPg%GHc=DiM9?!Z0Wxl)dGcJdcOOzjTLg4OdQ;Y2QvP51o=*e2W6m2 zze_J)Tt0Y~rYCyje>k@X(iL4DS}yp!l2yXDU&}zoGJ&f+pF91JAc9sYbn=tm7#Lu| zC6~I-y;7o^J!@ieI8X@FmwIs(IfjR=7;OZM8-L{$@5$pzXlJImd(tO1*5S=h^V_Ii zk?q}E!_0|VQ*(}<0r4#$ZMQMsnMu8_yJds|G4ji1*1m{tryuFNIlYd}1&pHDxU8z4 z)TR8in`kdQAiZH=df01u0+(O|$}ev}sAA+fl;ndEZQ$|QwO@YV*i(0`llcY7lq%Ys z#0 z^Iev2i>{Qod1#h=O*N>6+WD;S(|BXOO@Lnni^JQT0Nd=-;6pb`f13xH=_E`$e4NLb zTqkcXK~oMB6GRB>JRE{71oSZole1Xu(ZS%V_1Na{TqwO;Vc4};XgskKmj$P!< zLpTO8zyyNSd)s7V>bp;(I2ri4b-WpPGm$S=-pAwowFbvs9pW@Fq~Pg1btqzVIMzIx z$RH$duX`vRmT`xlg~WGV>bYf=3e_2{NeLwg8B_jV$1;lLVB+?%8^)-%fDCs~K(`k* zwcSt$nFH|HbcRY+fel<~CjC$;odfoTirDb&kPOi6Mx)i-fc)W|0H2I$WJb$lHfZ0; z&0z0&q1GHe1{v%{Jiy#1z)@5`^PZbqs@_f-#@BKl0M#VBGX2D2yv>){-e{ADnV@a4 za|Y=!JCA-hgcYtfZ}tny$L0mVXFeoX1WX#_;X}T?(0w1$O3sqeXYATX5o(FJ=Q-$c zRLV-{i=}HL+hg}}3aM$#gERG;ON1Mn>I5c@mO+2c3ppg7MhgIH96eV$__8@^(gJbf zbyJZCfI!@1Q@M32<*2?D*X%2M^MLLoJwXaZiij4Wm%CCq0#c{&)!@C(Q^qe654!u- zjgLBzkJU+owy}8=<$ByAQ3jCJL#8$1+vbqG1n*I>5X*dpB!O~?BtwDza%)`9mwTGqq zv~c*`jK!0FOVl!F$XB-wVY~u)_`jtUa6jrN8BV&;rw=I-MmA)|X;AN&}`WUqnaI(OYV+_A+AXr!WT(OWnp7P6;94ZRO7?_p%6 zS3s{6RtL_xp=^oLRoW1G&M~pOu|{3k#SPvKrVzSQlnFbp+s5DOm06=vq+F~c#$3Bx z;fsVyq~U{JgSc9|!IyA0=dqs4l~%9syjK(*^^&jSOtvvp{!DS3CN{z{aB357cY%!5EwN}_N!YMeNmGI#0Uh<@NmMyt0vo{fo{YhSB z2os;<{j6GPpv;ObZ4?=J0it2sEK?I281CgFZH8{%vP|?2xR?XW`3PlWtF9>|Kj!SQ z!E=o5TM?AQH(qP^vk{umg-+b4m@!liu2amTPT^7yE{}f7fbKL4QxnMED#teHH=DOZ zkq4Maz6V8aG;Dpx$ztsKywYwKJ25CN?b}$LdQcpj3(+IOq0BYSD>q;XW|Z#k8N#2} z@3ciQzK3jwD)RWIsT|Dj!F3hC+jiN7yb6^#YtF(%`RMSJE!!4#!Zvt6%$wvP+p^kh zhQcT*6pji#qRjoqdIBTeStVS8$x>3TKIS@U5@=5a9%1CS!lm&IC`Rt!4ihBgak_X= zvgS`#8cH`(E(G%6UJv3Z91bUi*E#d3+M06Mxi55Ij7H%IZtd_zIC5P?yi-AI&jcHI0W#SfKWC_bsBZZ z%0Pj0Vy`Tc=IJ%CRuvlXmji;$LWK-0Ug22_MNYa#C-)Cf{au^@T`N3j`DGD&wP~`{X~N2o;|x~8OI(fx^MUBq&6lM@Z#}gG7ChWpas%Q%MRjA(q zLDkwFG>B0T^mbEI4pkd({Jjh%<;JTxtXD()!4F3?HD} zWgjxmS_%*>+kQc%-1{Xjmkda z5XGcz*=xIN)t(14;z^I70Lemr`aGHzRmXTGA@FqbSTQuH^t=;~^iVvN*Lnq)-Z~PK z`FtJvRkzGaZ?df?gzcoNVEv&NvW1z26mprg%QOxI?3HvY?gl7i7Ck0 zd1HnP)97k%bT8y;W`#nr_^eB{D?Txpkd{My&~n-$618V{pa7Gh5&k42TMRmubIu|- ze3uJIKh3&M^wFo&U7-bl89JE2sMk5{#zynF1j}(k0A}C)To?zqmW$t334OBI*Q$2O zV!w^>4d>T(5?e)c){vJn3m>B%C9_Ju0TzHU4WA^Zf)^F}9O|cAb za&|e1RX_Cf@PJuS}k}ApF&11m*DXohVEyePPJ2vdoo@oVBkil0O(JI&pPp{ zy;BG+o!4Qw5vOxpwmcoFe3Co#5?h_xRn8~sfTQVi^?q5y4v^9=FAypyoZow&&R!>+|I7yb z2Da)?pE16kJSL$!AzT#jTR_^CZh_ROl#u!D5_x1+G{3( zW+jiahjOER$7secCct=oBU`0?p3$HPcgdKlmf99q_zn|F01iHlB8*oqm~I>_h}|zG zRpgm;sjl}qD^unsr>YB@E)QPoGNYjF^f_!c&|>PNj&xA5x!Q_k;!^YBV2(QTBGcS8W^L^% z#+-zi9f>;L1hr8nmWPsuLpH24B6CgPS0>dUC%lEPyAjNW@kj2xY0fV@4*##8!5LVhG7%^8;_{T+9#{t=xmg+R>gR|IP+pN z?GUSHWiK~?umMGfnbqgo8CBn`*kcu$R%9uJ;dd2>PPIwok4NZTXW{+faH40-C_74p zv@kE!xRFr*%8CQ`$^DlLswOXd}U9VG19&)y=88!)#!MEioTON-{o$7W-^@ zMq^_)=brU0*hfukr2r}NSlhiiWI|{WJO_ywqO;~N_&w13Y-V0FouT#ODBU3Gg_0fx9yLUbiwL8_ys5P(P!#foE-?;hHd+k8Ix3 z1WJ|6^@L|<=hA5?8xY*Kx*{Mr-xq-8-eix0N3X}JHT@Bn3Do8`f!OsWdyTHlz-7eB zv_?CRs{#RPq@1@Xk$a;aei|!@V}*R}eN?L3x}^_No}zSC^lU>CwBh3e_Bt!h?#oxp z`2rP^Rva~4U#rQC9AbIdy#q#v*?gO>Q5)kUxBz1@$!115bhRF!NJckm;Gpmqo6cfX z-}~zUrHFD9#Cj;iawziESCZ0yQ!F0qv1YJQ!V?1|YR=Tm*7O|+lDK%H%YuRx1lOY$ zPzLfin|2!A`v7uz(G7|sN4)67D6BL6ZMU{qV8l8=uLgMb@MBI=kvLLF%FT5y2Gqzn zD^&r?Q*EdU!R^X|8VqF=^1TE?_-0Yhhgt+QPIt(C8B6xc8+wy^#K7Kg$JP$a%K`w} z+9c@TOnCzc_0HG1qN3=tAKljqA0y54T|sr$k@{^i6vwXWX`&0nrqWjg@dT znZgRKSI5NJn^DUGd(}(rjak6SpCd59G^%KAKmekcGMLkVRSgld?K zvQ(YrDBP}r4OVfdCWC4~)$(DTc!bAktbjqO7c@7~NMSYhQuoBlEo6>3!gu3BC_$h` zHl#Z4E2{uZjz$!rC|r1CrH^!4oh}5pF+(1MzRulAAKEUghkLVJVE(zYk_EjwiZNMK zDn2wot8{HtR!MgisxL@JK^*PYYr&SaSW5_S^ZE7}mp}#8TV=#~07FsG?^zsuo;W1t z-zZm5Kk{(TI6s$>U5FPotE99AfPvkb%v8A?$kb{{a&_FWbe{zf%U#+#%#gFa{n}!b*XOCpC zIrw!xFft1CzkxWVP@T#~U^IfPpROe3%yPGqWczKu$A+J<$ad1+bmW|MHV zb=N#)LIA4tAMA27>kSIbE!Ub|YftZ)i>l3oJoN~KV}I!Krj5{DYW|l302WTbQ27XhF$h>q7V+zq+uvxTs;EUY_LkH3%(`V2w z@{(-G|MKA-ZfEehA+65ZbY{MFONQzgl-61RjoPMTW>LeCa7&g0xtyG zMG`)bwOFF$%)80yf-oUk&7PfhuyR%qc6GuKXw&yJH%Ln*UFq}b_RS7Ca3O9Rhq1*% zQDb~mPvNw`ACHZu&4~lh>$`#*_sr=uS^s4KHQ43{ngiZe8uxTODr&ddeQ&-SHY!Mr ziX}|)KvOm#$PI%TN76u2f8H?XX_CXJn9x9a(fJ|J=;J8wqBFyyUgz3f8ATw z`dK4ap00&7#(#oFfUr7hSm@q##8}2uU=%;>62VGzqRYntR)7c^HfRiN;@^a6mrg5h z0oWT+z_e-9n6PM@p0;l@4n$+VbrEi!R*1XZKk2uI+!w4b=~(gcN$OT^!bpMk=GR`_ z*?geuS)tw1Va+M76n|%|ImnB?*r(}oBItc_>u9FzLG2RE&~)ANU4im&)K=lt^s>Ne z8>A~=0j_M1Zo_7o%{#hxQo7h;+a1vjK%|DQso>dt8HHX3FA?I7r>FJ7lF3 zZ`*C70BjmG8sD-+WNjrr|D<7ogd1@Pk8OTT*3GP}Y#7VtsXQsglQO%D`+Z9ye#b5| zCLqmox;-Ly0Ac11l$HFLn7h50FJFB0Y0xKf&o^)USPJ*J84G5v4{DgKa9!J`=xTMp ze_?DD3Jg{$8Yr^p(mh1P+=m(l=>hvFY3dA#m4VU!H&kVQ4Y;v^so^<>JK}?(P;Cd!Joe>Jsz-_5NYk&kB`$^q&&L_JZ z=KS@|#vH0vH>h^P7pdvsKdeM7_{)(`+(dtwD@dZe_q2>V8{ty)m@^6^Z9BIz@G*bj zn{q=?b01L<_wo$5!r=`B7r2vl5d6~CS@_!M8UO>L00VbH7%PTQih$OpsV+BYbbCyA z6GP9lUQ3FaMt1<}dAOi2dI9DmpdSBcL6Y5<`KQ@wuU`}NO%F=fjj0y-r8+Ug3Uub1 z3OMejq~dD@)tbc;D`o0gJ&zXCo05wKrld}k7x!$>LKCPSoEr9nHW5ODpXxtd8?~SC z(djSxx!DftPbRvz5~TZsq{eQX!^$g&s*cZ!x_PGrQRrp_qsHERf>ahh2^W`#h}PHY zsvgZtk_P|~@)PFyi0S}i1W7zHO*?aePZv`G$01w#b!gx`5sm9 zx!@!YiJtZ@k4H#oBG{dYw*gRSm1tBh19n6FNKhLOK&!|w=HLg|F5bVxRiO{s?$RMo z5G_9?>#nEgC5kU)?9$l%VJ?}2jzyVP3L{H?*OvzEW7ups*oZm6ApkA=b|!k(5isEc znwHG_9$?)-k5y?qFqPxH=Xv;Sn zvmmUWzfe$W2Adft)jO2-NH(nL#~Ha^T!nqgu5%OUFzV#8`C3jpwMXg&W?9O&BsEOZ1JdzNuE`0fHbTubdB?aE?i zM@)@Sw?FM`SfAm5eV~sw^p~fY1}ScE&(OF#&Zm;^w&S#8QsgmtoDk}4r4g;5_tk+` zazm&>?+M`}ZfM?ng2%kI?z7*^`~^ib7Fa?SJtu2LX#g5cL0Mc~5RTK#on?&+Ssq9( zj~(jJiK=G`#OJ(5=J46EG_JPdyyY-59=`4O4ECFjN1_$Kb;x$~;K0x|m5=Ls#bz3a zHTc6#;Nh$lx~xX~4z8WR9=`#~?LV^AvBPd|b>A5m8g&dDKXsnqhSXU45Xd}ArxuIe zbigMiZW(P0i>HH`sAhQE82djSCwFSk7$J$bl^%GwLuWArNAjU3vQN2ZTo9Cs1~6EZ zH{(f1u2PtW9EzoIc$$_e_!UNz)|a;Ow6UL^T7sr^o z37MvMS5!MerLJeqSl8FRRh<8UZ)ek}Hy)4kaSRZFW3NCHgd<(wF>ecU?}>m=9u(Ak zvb3RoN=9YMLd&X$HIXZa)Xvz4z5{=)0sOqYLGc8yMFInSX7ho-S|uo8)cNpE`9{JCX4e@C5o9H}BT=KmnKMQ$+UhmVvkmNo)3;ws8UILFbD} z*%Ik;^0(ipI^0;~fa#@9J+bR61MTXfBiM$NAus3IoXhwKO0mRHfNJy@<3QAyr~hMjHF@PbLMNRJA>wWKs}kBwm5eCsF-x7L(|y@su7jypfcBL zP%>u30HKsQn8Ea~45m-NNm@@HK&fK>y0&ANV7{D;vIyO>FpS%NMsDbMvavpWr1J`f z!{{3K6c>ABYv$fgq@NuW5OY~T6+yvH2!-u7?2VK=SYkC4wZ92-pR%>&I||78e&Nh6 ze8HGTAJ#mh*wEnicxI<}0SXHLLU{F&bIwP>V}`|=!Sb}t9^&G2md+m%894UYCvnojs1wsW<#DOSoLa%G7dU;*E5zVndn5~AUxK_q=1l}LiT`CDys-l z{yo{^IVJaM4Jlp@-hssPH+53uPv3;;OnW*xZu}4~C{NVWrA<(VRO0S)3Uo1S@@|3# ze=gTBuUs{?zNAO+Wg?bXy9n~2+pW#Utn=y_Y8vH&xOpRt-Tf#E0>5zdpf|&3VZY}> zhP84|UnXozKz#18>^c=#{CG1tnM5-hd<=?e1O;?AmkLZeCvkCl+vdRuP%Ajh zLrXq2DDSbr22bA3ZV5$sY(JVRq!Q%WeKUG4mgF4e&4Ud(eKn>g|sNuhZB5jY(%-!F|<%IQ74KtHHCFgEyE z6Z*fiI9hYQA!qS0D(wc#d3;qJTVwc=RaYuH?;v0$9fWrw?A?ojk3}YY`+WYOGZsro zJ4h!H!-=|OvQ*$Tag3rw0n8^bp!pP2VV{tg=kV-2)ysT`21yx6>Ng%t8k=ZDau!8E zZ>Ce{9eErcS-HQ){#zM?$S6CZ`Mqv&EvMy<`$Hy$pyHjo$jW`yA&_IbvWiD<#FxNS^;ZDvOG!wEiz=fiAe7ewX9D<)? za$q^LpndO!YXB7<^H`=4z4`*vmw+Eq7bTa$lmBv%1#P>t8wMx;yc;gfrK9pbdSl`r zD|v`7r|v3C-<)HHKg3M;ov95lGDVMgT!)x4H`JrhAq%S{BF_b0XYIV)7x&P;&gG$; z?aVWJ15}8{BRNF6lPdxy?vcG~`(}r3?d7Mk(wb~W`p43_Aj`7iNN`JlKtjs_0sCJ< znJdf2=4;(=?med}6Ql@teye0t(a=30a`Wsfs1vY>QFah*gfBOm17pt6M>@f}@{Gc9 zt~Tn;m<@P!*hm5}b06s2io&#-!)8hV?_T1>8#*|eKD-izoa@4$?NI^Ovz)aWGyhOL zG9O(+&V)k9<=DmE7YIz3TioH^vQ{H!Gmwck+FlrEk$Ucq-VojDb*Y&E&TKQWVs$e#k5JZ%7?82m zfjRR=9R#iNMP-Dy3^AO}@@R!?E;bM^LiK09PzDXB$D->JSr9^bryY3rz3U2K+_z-E zx>ri83!f|L5FGMsW2KbFIB%ey=}gR>s8$uqHxIyEB?ku!4wP9}GQluqpXP{z-Y&!Z z14Yz_YF!(V*kU`?p9#0|n}JYB8ptv3hQb7tJL}5p_Bmp{6^;0rpUC;{2HB1*IE|28vlBx9}MZ$}2;k zc=85sP24cd^np=THr{Rn*hYimR$(S{f)9WBS9vF3gVA4yYTNL5K8{p+SEprNcirG= zwWQ{Vn0|sb&}efEgH?kyuhuS4JE(u*>oq%v4zm3dndv>FaJ;&BW<*DoY25C5S)~BJ z16N(|wzwl`4_PI|Szn=O&~T2*3X zX1h;6G6td!2kkK_WYDnPm*{uD6U`PjOP+J9U^K!RxS6kWocG?Yl->nu72VV+QLn{I zN)H8GSfRpK)7}WlengZ@!Iw_ARg#yRzd_#}+p)(!HHtGc%?A?5&)onRkKNehJMWiPPI=K-)8_>mRdEb|?) z=dzOCk|18N-vpNjviU(MtelK!uyM34OkH*@+<05B54o|dBvJU5Q~(E0>$3E$+xHml zR8q}QZuV&NEq{CNem%}>rpgNeEU%aPi=&p+Y9Y>+7KIpKA2T0ns2ri zzH(GK9x2&EGYW*um@tHRX}bY0cr+u5F(s6}bpzTcpj4hq8rY0YRQ?Qj%d-5-URW$5 zMmX&EoibqC2f!p-i(QGch~G1nW$?g-gnOIUp#n`bBop z2LkMOQB+&1yy$zs@xW+9_vM$82#86YY6(Tau?mh38L{ugGy`f1{UQwS2E!s0jln`O zQ0~hs2JwQ;aO#24(8#rm&UvPtxd-Q3z_3QyZbFR5ZAy~yGP4Q35s-th)>GlCgm)Xi z?Ag;uLU5|@f#>M4GEfq*SYIYf=w0FbPh%G3ydNLnnPARO98vN^?fyqtu;D3n{{oBg`wPFF1(smC4Sn3hgsT?NQd)- z%D^6Fp)r6=c&0vKNkxeFpxL||kPN6qKL zrG}?#Gdtsf2XGWEM+0^NAWqJ1gT*;lKxw&; z;JqYq!?`^)LgCYiRX56-4ssi1mb3_{u(IZBv-wZ#x%~S-U$bxGn?) z13Y$sF6Y^JVfj(QfSuKhAI*HZ_h&Nw9u$Vk#^2is_d?T|d6p*_xJ?I zT<$k|wfX%P&JrkJ3yjB_u@+wXIR?X`J7V36_N&xE*8TDeFr@EryBSYKcIKpcm#&bm zCagUv6`$8Wv^~d~m;11bQv^wwG^739H!EUV8jen&q#4xKg>fN_m`|hZGawaK$TPK0 zTO!^)$3|nX8`UidkPp5QX^SqwtJG{E~~p5040z zf)Pz%5Q>#42eqeqNL&)W@rgH&sq8GVlaR}V9fNZXXMI8*Sa%tG5o$vMsy@K3g&+Q| z`0*q|McQY7dnr#+a#D-agr_r)SoAibI-iJ51RuI1oc zXAxMwW`7s&W=x9{@Vcbzhrzu0Oghbq!D_b}0!fb7FI8I<$nJrWGEk$DR-X!Y@j<(U zbV`NTpk%+O_eq%pJTyn$LXe$@S~m_4#Jd#dM%;3eOxhL~I6o|QQ{GS|ziu#yN@}Ms z4Rfunzcc3>$A>>^sihegOX`?ZX4Q@)#Ig{XWEilvpAxY+ZRjN+(J1I_FP9($?_=L& zG-znWkiNZU?LSB(#OSc2Nu{MQlXdCCa@xegIwB8ti)iyM*@f&^VEGr5+QaneUA zJ(R6IgSsOg>Fl6o+;tcCw;XlTYm2OR4*d|jEkv83S#|7HSSQfcf$F>T;wCmqzL#6+ zIP8qpoNXe3Bt-%gH4^%HN2@f=1Yz;;rWC(7zp$gk=SLfKJ(&X;pu6*F5gU_rIIaUO z{bG0QMenRsewPNr&*40*A?$V7cf3>-I=>OwW9H9(#%8qjsyu)52&@okQcFLI5xRO! z)G7~44;!Gh*_ozH+7HJX<8VW8h07V(i^{+&F?v)q<}Dzp_)Vev9am7rOH1(ngP~OR ziS~?NsPwq26C0z>aCH{tJu^=cY(^ML`AZ$wmN#qCAP>8I9F<0htMST!4aN@|M+8mA zOGSgJDA_%C2aOaLYBBlZXq!+DqG};zruPA9EazAl zzIq8nv07)TsHAWoZts@G);xW0fCfI=ouE}3ZC&M&81@P?hdV|}Iw2q^JF#Vz1Zz-l zW;rJw_r?ZRM>~FU#nFVkjd>M_spD-<;3*Z1*GZA@(O+I=$d=ljeId5GKrlmD6M(FK>8v6GOU6Hy4|_a1aznjy;|p* zmD$&a$i8>x^U8ZhNrT<3Ow@o>QR@ zSD``bwgk-(no@FG*yLPZ9HZhTaqO7 zd>FgQmRAbflM8vFVV;n$gKoS(DIv`lm@eqxnwF$(xU$7b9wO`^DwUo4S{BQotOkxU zUD*Jj8e5qZ6A=GN?Ogim;tfH@1C1RT4wei`ssOcfAH1qdh!D9zELsO;ei^lR3F`(yWWPtA42l{N zW0!JjeJpaeyrQh22Tx|Eor@y{XgI^{)gd}*9$$C7LF0+U;~ccXW+N6fo_AUzNDvw? zTMCSi7Qq9AU({EBG zZ!EHBJ4X*#`J4-IA|@*+Fb(j^d1mmpv4u1ybrjya?0MG52pui%D;zNLbPai}R)&zk zf)Mtu2WXl+GA2`8FpR-xe~^$X4mdi)urqh#y_?H`aSzGpcBTNRqddgmnH+<3u+on6yUPL5BZ=$?V}5W4WxjKV|W`fj$|~S2R8zc zJe*cpgXYlz5%A94o5XWKqktJ!ITb=F=2W~XDv49f7p?Yw0evM+vPs2c)W|4k(SnY zc(Y=0NJ*gjMZtJYuo**W$>W=8!^v7NH07`ReWLBo%{<}YfrL%}#zCYcB`x~|>tg|)=%&?@L6%=}i$q zZ&{ab7d>+r{}9+j%!d+@NL`x#~)mdSP=wC0JcE#=>;M^Q^D3ahZg7{vKzQNwnn=_--) za{BDIkPo(tLJ4WDvuY@D$bLn!^8|u6Ik-b z+T`_c?G+Rhk3qO=0s1;n-a6xU!pjg3MF9(VC3c`UT zjh~|(vfK>vc-6eWwqV`QdvYrno+Mrl8gVfU*<@?Cf(~5$q!RGF!XB|D+@kqe+#kc~ z_;Z4`Wj@C92GOs^jlLei@FLI;y5PGd{=`3dBo&(t?VWAJ-Rg}rbqCQ!z_+;Lc0tAV zr9Les$Z4ZHvh2XXZkhqtv7j>(_8X$W|FlJuLI0&ZrrPk#Zlz>B`yAYmP_1NR=wgfF zuuRd4+U6S*U39SBf2^npe6YA7F0w8mIoo_W;3c5$_6wqd294n@TMqq}uoQF22gVb6 zM_#)6=Fg10TNR;4YnDV3G>pNLxy249iukx6Q7NjBiZzDu7^MUR)RS=8;>)IBvxO-q zQ7wp(_xfCXYq`wT)VnarO{DAB1!~^(&jYfr-pF*s2NA4!?TAQf~CA_zfwQyOt z!)#6BI>!J&3S=U<)m5%V+&Vr(HWiMsE8q@>Eo01M>))RPh*c`UdQb;vyaKh6oRV>yB_@>&1 zHeGfl)X51t2GCodXU%PPUL1M61o4)^8e;bq0(V+E0p=4#Y3o&zOM7+JMm!c$o1${; zz1ld;R}?G|TGqTJ+tV(%U;?fQm***?S|X#~hCuw}#CbCr{inTo+4M$7Q*NAtHhrdw zCqsol1bfb2VGg)OotOt*xDwwB(jSQLmc^4^736DPd$2d4&Aq+mnJ<^c}YR7X8}7)cSaScx^K8O9X8VL7lp z2pViLH4ZxB0Pq=JJ56ouWSs{bK!Q0F4w(uIAYLm%`{fvWDX9R{KJ!53#=-%}bv|=X z`mkMWhkO*{MuFp_ggd1KXy3bFMUExc0ijdD5qW1L;wH?kX|wL5WRq}joI$zn zyrXQAL+7yAoST4X89>`a=Axk$J})7#U6zCOJ5B>^bN*uS+dUrmbuUoxZW<-07u>13Cb3WS{(u;qi2UESsaK3xpNLtHrp>{0eU&D+w~Z_ z%nEXzdVQ}Rvucqyij*?A5R3cO*taTBkz!p6nK%c}aQ8SczFC4&EU58FUluvCE#W@= zB05BkpoTEY+mQ33b1DYT!z-%b)13Rk17>ftcbMc`990O0*KSI~L3nKk{&1Y~2C9RM z1Z3qtUnQMg${4NVGR@&)+bwaU2Ra$nE?&|57UE7mf!u~|R!SG@MzVvc?&*}?!O9qX z;~-vFxuX?2ZLiBY2M& zR$EAal=#O5Q)!B7i)jKf(K**>Cr&y|U_sw9SIf}!s)Q!d4uZ3M+D#;kA%!#5j{@%O(oFujpZywSlhS+TJf) zrjz-~NNQ(q%}vdayDe*UBz4WD0UjYAO=L03s^#53cruB2bDoH@`PP?(jidV!)U9Xm z2Y@n*#rYs;y{C;e5P-lhpx$uhUe-c&0sLS3hz2jbaMAacebynzu~s^a4{Yi^q`rQm za>U{T9CN+*G7Ynpv4_|`eo+Ylsb8-Y%;rZ?h|THvv|HI!wlBNdVH{HQe?~_V3!I5WFw$2iv#>1pO4xM&qVL5<C~42M(@@*VF^O`pm2KJ%0zXKE5;Y3D-d64{akwvEVk zLg5b-01os{t?ee2UO0&{WSDe^M8)APztDGhs3l_2^oQG6e*@a-F3VaR7;&_FIX?3l+Np8%@NV!RjlQp&|o`HUoZnMD~*;R^Rb z|Iz|eOg#{|*BTlNC<@SnvHKNtD$6SmpYaSEEFa~g%%d47(RFUK&^SdOQBHkex1)fU zLyel-TDVlt?>r!G>})g2mG~((#4u^Og;;=y;I48}?C23UNq>%!T&g>gTmH)(6L$8Q zGAEcN$gU0H&&7E)mk!>!o0AEv(w!|4J9)xG+j=0R_Xmp6>BX}cbuwA~&>2{kU9K@U z{O}H)i8wA%{s|}ILO{j6x!B`Yi(91j*YXoN%LT|6k0T79IGl6RcjVKN)+yZveOl;; zzJ+@`e!1}jC;p-!lQ_V=cOR(sOy5W>n>b_pH~S?{BYdc^`rLc{(i108zjiF< z9;Md(Z20Ief&Jq7L|zrd4(DDhJBwM2?;WrgnxR|Z9N)=W=%iZL$7bAlWAH6u3|J2A z2S z&|wk-?cgUyM~TNOXL90~QV7`UZ1`YYi@PRecd!X!^$={lcZ1|-#tDJKnrF{?Zqk@= zO*cYv)+xHcyl!`3#Midxz}cRTLA4H10k4NyW?Njth}9c4vSe2g9P|DNeK97k{g^8# z?bcXHPxM$m;-NXuibiSgAz`GVWw;;a#dC-Rhhvru+r+d2Cp0?x5*lHk1Ahu{*% z#1^gSB9Coy=1##F6W~G+wX<&+mrbZIl2`j4LfwgyV{gJ;WKilL_3M1at)7OYW3Lk( z7!zw2o<7=BT5j$VeS!nf#&>9t0m1>y&6Norp)QC-&_BWIv3}aO4&fxfYt@41JA2mU z)~e2IGZ;zCwhoKYutSUT@@8+nlz4YgkHDQ;*I-^kEkKa4oX#I)xyXAR|5}cULwbSr zqya3Qg|n7!jdyP4qO%DetiPG@r2#f-k3J3$XH|M4^Dq3D_P;Jp{1DEp2^jo58zCw!5+GOI z_rST-FUldxf@4>v>!`HPMbpd(H7B#=W?(!FW&$a1FV?j1J|7O-dvvmyqI

    aDa*` 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

      <4{M4a{}y=hX@-tP>Snt| z=C$8%u1`G-Mv&pC6sb)4LNdn2w}bq*S! z@xyLEizIG%67*2A4)cJ$%;FSr!gx-V1+p@9TlK319l=cO^s8_x1LwEfVG=7Q;!I=wX?>+I0U91 z4+qUB65+c?Lu}T$zPV(DKKC@=)C=eXXY9U26Pe~1)P5Odekt;q?uur+wZN@!lW@2l zMi4&bFozIYR)I=-6VcKdApA!oeHQf$*t6bXO@oI5O$6Zx)qC#d;zfI0+r2LG;K84L z=8}$3i2ZVV{fT*g-+J}l>;A$c@-r~mP)5Q{g^X+}?c~k{4Eu3~2d|Q|5vhIGKI;T+ z)g#=r>K+0(dyb(RqP*5l1Q`0@qfk*@rbMvz?sUNgUih!x>$s~2JiIT12|WA?A$i3D zhQ#^Es^Nw+1S;hS#F8!i{YXd*-J5iCLgfHhUB;P>?2rdyxH&Bb)XbrK`b=2HY+ry~ zGZOZWbAfw3mj;p}Ushh zL5I2m>z>`#HQ`c$ALd3Y{;CF97YQ5t-Ui&f&{39Uc&ncb}=rhZrSdsIw#qL+z?AcV;)OjUO^!{z{+AYq~zi# zxkh(0Wc$|!OeU&4R6_iEmi8XQV{FHf)k{)-UfbBNyWq(7fL z=C5tJw_ecqy5;nDTaIWwsM9+yJ#n2~V`I!b=R|>1V1@0X&9yFi0)EE1LCz<0n!_rD zN|FK7K?CdZ(WJ4q+Pr#}4|=Ss$h|zW@28js)LMt*ynIR?H3wF|=R!DM#q^jK6J|!A zbL7Gov&TjpDCo6xXEmsq0ckV0p5w|XbAh~bHi4sOw(b*bJrM*(aA=(6!gh2MM(gg2 z00Vg0eElC@Zn^J2#Qpvo|3}c^?{B|<4O#ZqEBapd-1wG0(+ndLTqAjoy%8V6@5 zdsr*vG6%L>ot_PDV4Ha<)cVd5ePO=c$E#!QGiKjphcGmE9+h6;Ngzl7Ik5@qEh z?hUd%lF)P(XsMx-Bo9jz1k>5f4BO|02-P64&7 zR|-awF?_+RHV@)ydv*1AR35C5WY+|5)*6jn1%yx~kSZbjsJ*;T|Ld0`~z3iU^C3z5%q`Jrf!*AW_PqA-~({ zm^;=P7!9d1|(e9s~E!Tuo`#BLl1o%^c%7B#@D3lxyV>7}=&ea=l;d zw11K1zkO|L`PR$!N)RKf7c*K~^MK{O%eFKqZRSv}?H5Uu<>5Er~frO_H=>aG>vA|K{{rIZT`Bqt@FXE1P%+Uil zaB|6kZllAT3gnR}v@zCe)b>QIDMl(^{7qjnp={yP?-djnu+WT=@ct)Ig%cSFEv?7l z;}B*+@F~r<`NaMpa83n{ba>A$$T9=e>uq=u!M0OY&($R5mDo90pM{he!XW6YoC-)? zk6{?D&|`t&wR>7^@*x)cB-Nc89Ko$w2%1I;(b{*_%7s=?9{4dSjxVHI3M(az!GwUX z%Q^NOjX+@^qXsZ3xHiE`9xvzQfBox^AAf`Fr+@gzZ+`eL^ZWYy`_pUH*;_B;E2DtI zpQ)Dt;69x-d9|OGolLVO5ewT`iD5pGh=eQHvDqmDUGLtjW8Mh}^F{mYsO`f4X#*#H z1dKUU2_+2X)kVM*1y~OI-Y-WReQ`Lk4ut!H;Eile{0mm@%+>Q49e8iJ^nfxrxq)bP z(A$>fxXy|v7~){yBcmmewi)eHC&ReQ6H*&79owjZDjRUgo=wyJEPZLDGldFcLoc7` z`b#%;f_pe->l|835vARj^r;o|M8;Q$4PbX9ft_Y10A~pzwM&X&3EQVEunEZx@(A~0 zW@NU`0kwy%7zl2AS)KjUVfi23X>Yxb?{%mBUY60hcq2DxFQ!CUN}9IzzDOsndZUb;1HO-8>c0Qle};*j$7g zdY^sj!ixaE4BRYmNfXAcSTxC9S=6*;Ui^fG=M&(V655QYTQvVVTREyZ#+dNOPz?LM z`1&)JCA>XHyQI{AfGQqGP@g;=T4V^ zhRrvq;u{z0QRqWhXRJUpIHH+vLb7u2)<)L?Tu91|7o=@Fd=XJQ5xRFk^p*{$)gGGj zZZQrxb)YJ3BP8?4_>|1_KYuFs9RcOWHo!2Syuy)hBD*$#S_1L&9k%2$0OJR3m;FQ> zSa>KIGNKkDRd14-5`G~od7$@mk?9)@59^$}1flmlpfK1_4QuktyKyxb<~ZrcKv?dg zo)Aa1Y_76xV;9vpe(}y<9I>yHsOUww@-wUED4j^ZVQ8StLtP9Jg3og-V>42S0cA&v zYJ?0<3?RvWM__-2llPaO`Hb=5$B*^n$8Y@m53jW}-g-U12IkEHWe$R;R&2yoA*~ak z%gnTG&6|rjPmP)Z_=^@2HyT4eq{g}*1$C%XAt0pz*FOkMi4pF(dGPpsHf(CFu|o-r za2U{tX~zp-o@&LoCYsLsu#dY22KP0zBNfb$wPa7UgnaYOi!Jh@$| zbZ%t#aym+Cwliz^id|cqCfYxF8D&s_1DE%ugU+9JzMMTQCUWS!2`Oj_w_6m!HgXyk z6Eut%T?j4Am;_&=9LTt1`Wly{)?94xp(xEg=18E#P5=tFkBS|4M1WkMM`rj?`~R`w z@~cIM8ZdT)#c-NU$`tC*)r zEJOP@bn@Og8lWyApe6QZNGbun>~*HHp3P8QqgD15d#cf@Mps92qkVQPBfLHB!h#_%tv!nAg~|d6 zzj%OPKrP<;_%J|L9o8?~3r?{Uxy}qnvNw1DjS~D!sNT^7KyMnE47o4gml-Esfaif9 zmB+!=9v$mEnIF00E`qCLmO>kR&IVIxm=@Zy==&RDhtUu~orB0%xK+kc25_7gAKGX+ z*t8iLc8U<&E^}p;pRxYP+4gTf@3dci`0%Um5#@Tn|HqHty?UX(^_sr>O?TkgS3zR@ zAk^N2505(rdW(4CO+8l+&%Hu?0-0dw z8RQj4C(G4!Uq*e0ek%M=l74o?ZnfR2v^?ZODxzNbs8)Yz)BVLCZn|H6ysug}-*`FS z{eF`JrXVtAFs%k~Bt4L5d!&%Ga0cJiYk=E|Yz}9dUWO=xPu1#NyT@MP$Oyj%y5%xd z@n}BLhbp+0HyZ7frnaV| zB}U`gx+y5)1s(JOB;f=R3Wd@Vgyq;gIsFkgRIcu^aq~^8^^&~ZN|4!)?3;K+j+k=l zB9`IIt#x;y)E_qhvzU8ahUsTas94rwLmW(B6{Id#!*jOjknaJBq@Rn_&4hi0wp9Dk zV5!ENgKAp*^0xa|Ujkjf`&d8R-@JxW1E;sIR9y>v0<&{W6oO5Gv6LYlv@?QHdKK{CXsBhx?`}5D=z1Hk~>y>=>TWvW(P_mLw zL8x+Oub^Xxyb(`+3mxUfmb|WryYLvJ35wO}D|Di!-+p*3+)Q(i@+bK#V?bRu8PKoT zI{ENX!X6me5Z1Kw%l_M#%V=zXfEa((xwGm9LVgkQrgx4fk3y>82_DgVzywE{`(~c@ zc_I~Q+~YD@{anJ=pL_I9jT>heIdXYI$56|2Vnj+HzPkU&q0 z*25T*@U>?%O}K{9k?a67@AN;`c>A=|ey;md z{Q8^w{jWZJ|J{A9WP9TUefK+#{P<2C5d_aN%9sf??}bS`#27928!bqzL~LckstgCS zUwP2bAT7zILj+g;^f{K7z&QkQ{k%`08Z?ZD>A|aS80)Xu1{d!os;Z}8v2F5&tZO0U zbn~1>4}lw+p_2e|4p-lDEAH?*eLQ6;Qq|7k851u+V$c<8X;I!GCp8iG7>@_G#6OFv=@TK z(~vo;2hPuEo7j$XH49H2k*=NplRwe2VjBrS^!m zBcQ@33gs*qYJIY>vsODfOf9sB&U8g8I#lm)6dl?FAs5KjF{4%J#zpu!hi<^xOJfjX z$QPZcRK2M-cu!2d@-))S{>b(DY_VUyKHqvF-~CQoI}Ix_!qA*IrG@{dVciHn9>`fr zfmKcBYxIq6J zHR|c$Y=a!;v)u|&H_!^*F&x#*IC@3^_fk*iYJh9)6rphfk}S+{?rvZbEbN}V70U%T z=a4;iCZ_*0>j~2=N3#uZmesRgNI(ASll0?1{tUq5clGz*eE;3Y*VK`3y^61R+TVDn z@kL_v#U&M(KWafpA$Ap^a8RSug~6VcPC*M+xs43D&xXK~4TmD0MYR|EwTWmpkjeIn zz3$B?$LuUO{*qaScDEQ=ma0Ou6gu(c;Y znX9yFkEJYX=ZSLmmsaDQKpyiTTy3^CRP%nvDEzK19bwO&_woJYI7d(9=3eV~oBF+^ zcup?TwF4}cOlYn07V0M&Hb_pWp3Y&4yJ~a+b8V6MmA*XBe)H3JKmYK}XAEEcnDx`E z+w84Z@f8Ehd)Q|GL4JqmUNEbX(HV%n7eUsSf@UOi1cDd92o+-3gNWwUYOoHDtpW7^ z<5CPXzvn(2O`bi^y>qM$ogyIzaII+g;wHj(bM# zW2NFPvk~$|c|_Fr)UjX^^V@+z-JY~Z)@D;|h#ieGdhk{lkr1*Ia8?A*h+&b+ZsD|6 zLVoR6bItfFl(V87)Wo~gZE4FrDsm?H*?J- zcrW{mzXYd<`#d_y))`RT8=t*E>|ccY=s@bH0A6?7&}gv^k9+ghxd2Cr)h@*vA@iJd zF>Tm)L7)O@hqkOmgH0}k^-Xo1M&B`Px_>olzX$`vKeFj;78t{W7LF^ynDVZ5jk+mh zR@aujWrhfR)&?*wL+++v!amet8CT`nLR?N_lj`>7sVIPA9~Fh5ozQ6gi zFFmqP8}5I)zy0_jKK$^T@9SfI_I`e8qkZ$;k3WC+t6#rrKX~ia{kmj>XmcF+MV)*d zUm^4Mjk)z+qlGF9v^oIUl~fc)+Gy#2O{P~o{WcThQZ4p%~m?}N5pB-3*&d_Kz1jT`3zhXJ~Q z_a~2uz$qSJ?CH^52S4zgn!}z-orbrlPJ-MNV*Hdvz)jFgi{7$X_tCgAv^D^qjk%;4 zwtiV^FuC`D_XyDbsL1qTJZ~#GW!R*jiJ-$r9Oo0_ajCb;5V4DL0qyfzsz* zT`m*f%Ke4y_m_XL{eJ%S{i*V`$JYkEb&WA25cHsL&I{Hh90%RI- z-PdXTP=+RU z^QP0wCyz)*&nWMvHFVl99d`fCA0Bo;)z7fL{Nl{utrzv{UDv?Q6|#^mY$Xv|LyW;O z@H#-9dgFGzbDi6Po95z<^$k@WqIG?{ART!k&kw(uY{sbOVe>{poVTR*DZmU>m){j> zF^hfCezEH)P}36FoO7sO??%g>m3u;&XiFN;^E@*bN(u!b$b9S$s{@M3K(WCUU) zx;7$qav$&X+1vII2+oGX48_Nf$GNB!oL)W`{v_f*JOL&@x{(b^j#&d~dymuee4lQ*iM_0!(CNB$Gyfo^?0@;c|Lx!W zS3iIJ@KfdgRzH9E{|0^V9GOPsV>q5Yx;D^XJrcGrNhs5fhE8!B`AZsKl z8Y}@+>$nsQHDAcdhNafWxr1tJbpu^)&d_JXCBf?ue-i<=vV4!BLhF5e1R7#AK>oXM z@a_!0c{jRhvrfl8yN$s_Rt#`h5D=wC66->qlE%Cmfj!B7_&pmr0laN91F1%FZ>De$K97FCbF11Iwnpm znD0ys^XL2c2&}XgIPgHKRRe}p`zFyoeL3*Ov?Dx*r-F`(tXv%7g*0(}f<$EV1lg%& z%*L~SC^JZdW_Tor(@Zf1jjf0w7oKv(mmqfGeSCzwgasL?_)4yMegNl@nn} z0R;;V?$(-TJ=SZc+(-#S)#-wNEXv*d8wN*J+`#dsL=MV5h8 zh~fcSo-(MWgn+?(7PIH!g0*lXRV8}u?nCEsBMiOkAY8p{bbw(sH>AUU#o>-cmK9B#4XwC?ELo6! z0P?}qEYvmP45@&R$7_`ILSOh8$~$DW&8wcEhU+rFz8IKqGy?aT)@*Da?=& zX6<-4%pnvuZZ>!CM|UzidLt8*=$@q)75!dq;Pn~w-Ogi%=2^!L`R~(KOD^#Tm zMsn1`GrRWX03NldW?AQbew1W$A{m|@0r@_KOdqwg_5yNRd{*#~=DBBNQ}MyzV++!N zz~VzhM#}VKE()TmN{qK*jLl-0fmTi41a!hbsf?MXo<%pP-JVQ0OV6+hBV;*QkxWP zR~vE&AE9-(2H%2?)t$U&dQfU`{ z5`p9mmPAKw3twtlUa=(^ev7h=#F2HYk2o0W#@@Bb4pw186tg5is1w7e^bG7w(K>mS z;o+HxuVI@2W1F9wa-r>7okPN+_nqZ^9={y&V8Af67)4-yE}`~%ZYGM7dA8r&*VFpW zDOd%FXE&Ww8RBLsp_ginL03EZZfQ&PJn_9LyttBEIK%=R3|asDDYW6gl12nzkQLNH?^&=^rH zNJbPOW>d2eG~ghj7Ou-#3l?^tQEY?!LfStH6Cg)lFF?B;!4YF$*itaQYQ2&c3t8FF z%{fB_49ioG1NSE?)rzHa_vyw+cOIgs6MYmuz7c5U_=RELAax@kT63T$R?H%D5fN%U z;FU)_UIdQ|HqvVBh2%tth_8uJQ(pF%ibP)C!MCwS1(#Gw()M1_xhPj@LdtnEh zv9X&^n(T}I8k9G=cdh*pFBVj}jSZ1o7&_j)#dPCb;N*P`4}65$9Z&R^p4(akfh<7 zg7X5AV`youMd!HJnRB65Xs~=DRgCvO%@c=(IHY}Z!#lKB3ft9C@hggIMDV3`>f?YIw+2WG$si7sO?+=>c29k(Emr|y&_ z^?;QSAq402ZCn}+`$J#^rMZ061{7_boNIdSMHce}LSk}glhRW=b|GZg1tBYR4c!nO zyx0d+?Z`CXaCG8;D^I+J3*1u|f?Cf7_UlHx3>c!wr8PW8r?&_ZGK!GH zV=8zk8+jqmYs%s|OQtZq(vuSj5yPCY-%-TerFuMI(y43iD%(y*!*I)Uu!vn4xrKe> z8wT$SutJDZdk??}9e>5JkrU1&lxkBu@`+le~xiy#oBj7AQ|F}HhEZDZ0dnYNxEt*aEw7qIUA~=RTp`fh&Icxb&d~!j4@a|Q=xrye^^NBVgXMcf&h;fGsKapJU)xk1MOWs9D`HeDrd?0BU2ZWS23yOJ^nsNz z#n(OI5a3w4CC03!>MI@|FZYP$bni*1r*!dQEv0^@S(CuEzshkMWm|!ZgUfQ(4kON~* zlMr9Y5QXNpJzF(n3*jn2_C?q2YvZ!5b@x0FR4q!YQcyf5ok1uPAF=|@g#-J^tVYyt zt&NvJJ%;x=wxC0jJ0s7&a?gVY#VETBkI7MaEe9wxMF(E1T!IT`E*xR5Q-&pBm{aqD znkYp$dgqMuWQy&2JYIX-twI=9A3%F++mRMzOw@NZ&K>SOo2}4#o$xHGK4X=paHys#euK)Q{FT<4w&lMm_**%vW>`2BZi?+jPe z3)bc%Y9Ufbrp|2>ASQ+EK>*HKidzy-c!{QSYmGtDnB=0i*^+Ysf^!1VVCHI2C*KaS z%;JRP+O^rwhR4+h!Lf^_T$=zS zQ{sGGXW*OZiO@efjBzwfo1j|Qwj9%s!yy1rDdVtVB%i4p&xu#zfb1Cubk96JVG8#y zNiYXJ*2u$)CQI8iLqm7KT z32mR3R?$er(-}InjZ6 z4rl~4n+M7_2&vryvZR>%oTCUqu@fthTB$4L+?+O@Hkxg^xIrWsF%Pxj(R7QZsSpg8 z2W(h8^xPXki6UiVSjx7|b!XYac0@+xb=1z|TwsW#`W`(!Xo=t`cBIM`Du0j#CIVU^ z&FwRo>Irt3j;dkhgJFiaMtQj)(FK_fh+97oMTQlDnxH-&o{;dKjdMXBqNiOni-GEo zi+9Qu+*39XX1$jhvJdc@Zoh$dORVj&h67QUCPZ5={wWFLJ?7OsnP)6p2NQ18*`pE* zHIRbcF_;6hGkQ+P3<_wbx)|pWpyYV9A~8m5v-Se}d?1`uX@nY>PX8B?|mR0y_x=ZFOC zZPhsA7Ixgw1m6M4yo@i^1E#Jlfc{s4o!gLAnW75m+R0`7JnkhAGU>JgaN*ggNAx0SLJuCmm$yG$PP9+y5q?DGV*


      O+g%(fbq=vXq^(P#vS$2zT_21B7cA6~N$m~4uamO^)S zx7`HkkDq-SOQV4GYDBCzetpfb(b<450%bp;v?rITl5SSG5-%oY4Gu1!wE-?ngl`0P z?Vk4ufkdZg2RY2}LJ_6+E_`b)QEPyN%Kl_(;kVhCC7`(nP}{u+x()3aHkNTMrEwA7 zh$EC*?*tr#QV7+V^|N~k!(4XN$bpZ5@&9ZPa#64gPxOQ?!6~)t!T(QUUFqhS8E&6E zG4PrfhD+Wf^@dDcK%5U0*u8iY&I7zWl_PEp+_I1%?1MA)jF~{7Oq$q^PDdMjM%+$l zFHW$UQZRzGG~{{ck*6LVi18sf*SkeG4cdJadE~RjC$JQt!Uk(FauxN#-BlxJm_@o# zlP2UIA>_dF^z)9W%FQFu7bMYf4 z4+NO1o##pAXQ91fPS66%{Z3(gcHvt!Vw-~qa+MedgHrf3I@Msh^t3z3??sHlYlZuK%49V z=FU|^T8uN0UuBPi>(*R}Sk;m5_c5S@cZ_7=iK5(Gj z+c*r?8RO_=JuG7nEB0!V8jfNYvQs(8uxlRh#$g16josBt-p5Bs`1z<{EE0G$A)6)L zDg`N%Th$?67f6tUWAUIO4%b?K2Zpfvcz462kn>Wqiehf(BD7QeXn}=a1EU*TBo4y? zuPK78WqKbU;Yq_p#xinnYC+6~Yagn?wtX?=b7%-J@jf)55dsLO9|)hAJr> z(18|are%04W2Z`xj>}1Bb<#;ET^A)TN+z<(P`SPvUkZl3D9X6^nK!8S|I6GNCCQTF zN_0y?0s+gBKmN)vC;8hG<)87zp?he{|HT2ENQt1jcP#gzcjlx0rFrc z?p`~bY@hoRdd|2Zz6tR6`Vvx?8!sLnP|s$P7dF@68{X`^KC7+v#MfZwG6#zvvA&2N zjKA>_Ry&<%1%>LdJ~EHTb|Ae{_B!?Ey;g@`a)!6rsV`)hgi0_M+!b&T){a}W!(jB} z)`PBxcEM9^+H%mF#9yknudDb)-+$#J(5tP!v#4*nG$!=* z>8@3mS!M2P`fKurDr`N#9tuW@l=T9yaPw)_*suy;!ip9nHyNI zj5%A}6Yw5b8jF21rK6lPkbToi9v8dzhe2cC#!h3i(cQ zNMp2k4_toq!JUPk@Tx=nyA7Ooo-14zg5H*B=l+e~0w)jXJsQmU7UgV_U*U9D!5h(Y z;kB9#bb{)n!?0w28O(R@IeX8z=LyK3IU7`pXI8LqD`qUL*W>P+lY_2#OwW#mVhq>u z5o_klo2~6^=8Y+5^)DWfyOTt)(VE_4@AW*IOhYn8kq>`Eb3P9$na4aB1H_`Yb1fc@ zhojRtXUC3)tlajedO$AO`W{l$_ktEyVvy!~1-`F?4qyXE3lqsx8*E*Y*?8|oAQTyb zxb}F)6kO+`{Kd|p*luREIf*5VdNsxX5m_2g$16^@=PJnem}i#6{%ew*~cUdjx`f8}Ad%;AejGuHtNCEJm7 z*P1v@mHjR&j`@ZJi@)NH5vOx{9|{KUJ^9v)9M*cwF{hkWS2E-te;JFf*}G70^nR6> zXZZFB>9)N%W3ZgYx)4}BhR_UJ>;t!Mnlt2Ece%s;Z~G*2MGLC)Y($*9-{3bqM(w0x zGx5DcXC8tWRvwK=ZPM2o*k^>9;gl_Bd;2Xs5Xg>_!v z@hN)Cg+dt$<5i$4p*5}z==ZjE?j2*KUu{RIl2_3THVK`dOA(px%lmnp(!HjN9B_l(b;7S(x-Pj-+sR4TUnGA zdB*1e*4bARWGDRp!@Eu_m5$FZ+&?_uM7i2FKhx|T+$rqdNf1Zkp~Y<>4aGgWv+W%h z4_&z23z8iM)Mz9DZbx3SQ!lRd+t{+8BI7VQTY0G1?&b6L&WsogT`|{!HM18BEd)7) z_bWm@!nOG!g@C=t<8^ZKL%Q_4+JtdBh_l^}Fp#YiS+G?Q)iMfx8{Y-Iv0>&|OKmef zMs}b#9h=yDgM7_>4RiCjM*Yn4g{L<$7xmp2vU%fqnjs!N)Np=2zw*&E@C~rIz<9WG zV-SU6Kd5(L?+9CS#eCU6x2iGRf@ZzkS(R~)TM8M-d@NmY&B|*yp>8Hy_w4PhlWUPt zqcjsM^eH2o!B+FM223Ae=;)@g{xg{z=XgFJf`3-7tCOm3_bwgxZ)4Hy^ZQq<$}LXF z)QOCZYkKxKZrZ^HrF)<3-~f`s5eF-pi}s6)Q@*}L1x-IUpM9tk@)$W+#{6DQKs5H< zho4BWjr$W`RVr2ydY1EgjWI&6Z_hxztTZ=F)gJ2duriL*UOukNIR%L=wdS{X zv^8{g)(drJ*A?z#kUM^|Hw6EvK5aJa+J)OEVj8iad^`rugXohVgv-laC5vtAqOTl( z(E@&PPZT%9KJUg`5#k&9`!gFJ%%Qm(XR!$!YHg0ZSZ$2%E@^vU;-J$B8}6h*6=*0{ zhF-yAOYV8ebqm~+tvAk8%5UC6_6u-T3Hi29-6r?Z3dFkEzDs=BY@CFA;sa4pr*M`A zZy3b5-A?;nI)#Pc1k%Jn`_LN#exWY%0`~bzRmxQaw!CiU;WaH)t~v-HL8v|uv`za2DRQk8I5c(dU2Hv5Lp z{kHWP+{t;RHJC`AS3D$d=aPO}1=)x3Xp`^>r-COUY4YB4zIH>O zO|EUJ*I}2xiEjf9v4m_lNv=LVa;2Zr&8jMOX??|l|#A?+k~ z>s}ctdtdiw_Z#S9CZCs7Mk$ZLW#44^q3I^2C0zKLjDo$SJnlO7?HZp_2ZT^tm+d1T z2IR&>qdvRr_s;h+xr1+VmxUQ>4#}Z!CDECxX)js=O8t8YwI^C`*YO3;90eika zJ8P#%knqmOW156I@6O^~$rGVm3A0@~1qH;Zi6xP(n~Q+KdH&s4iou58Y7@zE1$_Ul zM?K?5uM?*Hp6Ykg3(VyLbgnO~Q4!;=`0iBmau0N*^fmLnzcEKpJpRzb)?9jmIA4)t z>2fimchtRh)pJYbPKCeL+XsM|HPy&dg7Ix^3IAHy4N^Ge4G>1T}B z3Hp7`*iRVx1D^Pn#!eqNM2#D>8cuc$uyqKFJv=tl{`G_$^pg&1O#uw&n`h<{NNE(= zl)(fP?Cvax-!rTclX?SUAT!cT;e^q{acBzpBOhV;cXk^sx-QJUD4jOrW5RLeAD5vf1f!6DQ63I6eCLfx!vq9F#9rO=nBxc)9b8pM~Px zW}bAMd+f=L5ewH2U!vr>H;z_W^$MD2O&s{QIj*s>Kq(vk(wn=jYtG=a7r&sjiwm60 z*YBMw*XU;Xl9c9X@5yHWr^<|HUT-zGyGN%df&U?1&VUtaSo-7T@DHina*gZvfWUP- z^siuXkneX#WacI_TamqQ>y|GWFy6j0)VM11v;P(u%B%C+xY?%jXW}d&ouQ|RVk3^U z-bq1ala`%cY#QKob|Iv{>tKX$LmPIwF_aAXg=4;CGE(-<4t zO?f|?-DZ?(k2|KXh8;TNJqLXIjLW-q27!~dm(<(2UkEm>O&c{S?l}mxy@rYRz8!;D z>uBu^Ve}gi!8(mb&uIaXp8g{P^!G_3f8Zl52h@%AJd_8G#@@L7-Pv#L_;vzJgpCzr z`;w}?le6q)q`C|=5tFEr&vY2aqECZq|$GOD&T*mDb zhUH))dW2GWna^mh^PJ54a`fo?wz>LszmoUk`5s9C?gVlnhs@9a{qA&nGZvVk`f$zD zx{!?ZyeRlQJF5mZcP?&fq(b(Nu~;J)Vop&!L}RM@h;I*t8G5ykT+(9EZoY!8T@t_A9e`)Q<8yZrt*N$iNF4UPxmhV<;i|?h zd~-S#Mpq2nqen#9d4^{bI;iWREA~^Mm2U5ScDu$6)%tuCLaz)N<5t*_1#UMllM*ax zzK$xGrjbbfY^#k?=nnXDV;o=C=3#@*R%^;S3-G8ky2@qH3Kt3)kYY5V3P>cbPLm3f`+;r#CHsM=zK9 zC{}w+dDQC>xMK}IBuMF0_#^2EGbYw!VH5s%5O%gFv6$9q^b^^<+qpse*&qTopbsM6 z!)u;sRtvW>jWGOQo;-c-!`rh>XGC#NI*NSn#=vX(*6-wF>17j1$5F#C*z%V zs|k6BE4AJdUtb%AV?m~pNy3jcVoRbh+c82YUisz?OcX3=>tA2e>gnq=l|7*d?yCM% z4>wn=(Y7DcR*-2RJr4E+K%!4iQUy29l1te3vrvSokGrJrMpS~G1c`*Sju+aG_Vc=D zE{_?qT7;i@Elm=H)A{*Q7c}R4ug8=dcFuey1%3=ap9~**9iNuoKC1 z-|hP@h8)K^ z#C}=Zwsg@)x3YD7I4>o**=64aG3x9Itn)04kQPgwXz4?>I`ip=1Nj3VVMkp*=z6@@ z=E-$v8n9h~!+Aad$aDidfn{4|I@x>C^S!sNE7R9%jS`!;3Xsuhb50y4;}|}HLdL1j zXk#jCgf?q!zXdJ+Z%k9zPH9SL6Hzb9)sD({c^B$)n%xTVm(`288LZruqmVHyH`vS_ypRGc2y}nyr zCr?q6Mw$U`g9bZl4-H9b&JOUD9Y3|T03&SOdzcx_YWR~X{suk3ga(&3b^5RU`Qezt z=yJRQttAmMK$7*daRc9n(_T>L{SkJhh9xlOwsFBPo?W^wlHA!1sx%U4#D24H7JVI` zy0vkR@Gn{D#*-g8-%_G@cYaR4+_osy<9_L{yKv&W^cu<=(RM2$4*R`*bbfe^jS!PT zkfz_(ytcoV2^pd(I?QZy8Wv)I-XEa|BPaA4cd#0Y!BUsq{=F9*8@D(#41#O-ko3PP zjT)IYDsJ0CqBBlWY4Qe9X<8pBniPluXHRteHQs&TP#Ru3zuonQHQ&DFzLp?T1lVAb z&Y2gKp#F`IAlL-yHt7z-tVVjiBqw)mu_eM9pKlN$oP^vDmtoa`@o;`jne!OeprKTK zi68a%K^NH&y~*X>Nl)}0iKBsO?|L?^_@dr_;3KrPpxT_HI&CwwFFY0?$cg9OH_t(M z6dAY#>D0Bl?en26qO3=hlsSKZIisIua8C&hrVi8d8T0zrROm;Z(H4e~du4RFA90SHsub#2ibLdv5k_d4-GiV`!EQ1Q*>r}GxBfj1s`;8NA?RV+v zA_KUHRgPedb}g3lpsivh83m^!nK|RC8z!Y$du12#+(Wm29yflc(jI6NHYV-fPG10t zGEBi$gbR|vF>f7iu~XtZSg7vki%uM%m9c!zjhD#07HOq37)}*oFzosrSdzwUi6ekF zhGqLOL37WqK-kC3rV^Ns~dw-}@P6PXC7Kpby~&UmI=L(>gi+_xTq-Isvqk?anQw zP2`@T`wE$U%`+f%ld!zH+j8#&iZDpTzCuTF6Fe$8xy32De|hy~t{{4!xs`prpGkU` z0drCc)mrPHa<4s;6ei!gjw{!Vr;K&TZ~nER5Fpyep1w`%;1NP}^kamC+xa5{ z{7V!bZ=1DxRf^OBy+H(uaX#hVT%5wo#uxvH>t&xgR(SZyU98r4*SGKJ zA0E2}=sz?CA`feKa=kz+D(Q(B)kz=w0RX=y9SNKp%Bx|03f%6rf}uyp(4Qea{N-cn z8J$*B(#-ULF9T#F&<=&9VMon6tP|Qk z^9jH|+27yITV9~4wh8l|0S+VW&hS1$pd*$o<6ri{k|GLLjreDvpM6et@!#F#T7NOx z`-bJwK3CY}pC%1!6uC*18k)Dd-j;oL)&iZQWGxQ7Sw^*32PeeA`B+F$X+{Z2+1 z0RB}q`3g`=W{n519$As^`#5!%-kDSt^A?iC9`{ z1|^8dy}LJO_c{|%i-lyzAndE_W*!cbKDu7hJ6%O?U(+a)dVk|1_!oYsabf7=P!lW; z*m~y`oi$z^PGIh7-VeORlM9s8ZMeKoobLuL6LyF$`S8@_S$AfO9zyPpQPh-DcUmYk zTY`$e4({Qz8MbXEpeWKlvtTaWa7RXLz3+7MQUrx~YQht|F{X*csnhQ4Jd~82icf3pS5K~ww_%_UrFt(; zV_t>$rD86ji0K2t+#TX{xD9>{B*{=8Dcxwg+m~N|;6*=?p6a;}yTWA->(u5t(C3~X z0^-=A_bwsRsRq*;U&d=Ct=*ffE9x5oqo(fyX>p`!s0kFqzVU`1g3phVjK)?guRdB? z4~&trgIk=_7|P%lCX#RDZCwN~b`TMU zF-%OTIzVp`T!8>+`cvB=WseW|lB!C6r%vjZ5jw37JAoy6n^ezS_Z%CL1zu;H67||x zV5b4G&rd21DojY}Eg7S8#EeI`C9i}X2L*tTgrrs0%G0J;vt9Rv=-X$F=6A_x>$T70 z3vyxZS6l6S*~PeVYnOjl;pf{s|w2lgc38X=oHL2D28oqHmu3-18KotCnzu`U=K;<<+n7mDKTd0l^Q)4p67383%)P|foI}XjwtUGRhpq1&_ zIBSp}1sb^4d!pm|?0d%9ZEmRBG>E#7h<+hG>47@*tvJxTwcyKB3dp2H@^18x5NxeJr|Jq?AC-Aza6s+o=3I=u21(-`UW zE8-bTMhrA|+n_G|qjBO6li^EmKZed50e@PZ{p{y02(j^KLRVToh!E~wz&?Tq7u$`N zLR<9_%HAM~TxuVn||1mu&a>H-BRWHfzXyXA;qx8#@_fIPQ;_wmtMva=t& zaeD6Ow$QD5=%8dJj7Tj^E}L+%?(6{$2)NOT4~QG#6B6&WTpwv(vk+*C3Fe#p`@m>7 zF8+d<|BNJqKe8f-Z8el2q{U-_e#7PUwc(>!j><*9zEnMOwf$6Z!d0?O;I3h@p`-xX z+9S<)tKbaD>bWqDW0U8Sc0P}no^K8Q2R;H6cXi?xS>fBCBrjU6*}}kfVnR%tBx+h3Ka2je+Sx%m5k)0x~tZlW;Fp3<9Tr#M9G9&1lt! z++jP|b{VXx$)bXTVAHDiIr??v0W@1rbpi@E?hCCFMl)E=uLm1Ed9W`|n)iGq84%gm z$J(qH*I4V^?j`ai18z+StD81z5vtNVir3Smb{+VM#~c-)lj?lFs^I)x8U3Eo&aKWA zyNEI^=I1%q{-QmLzzY=^FV;9@6>oudLb7Kiwly`s{>WueXpVC#Kx14NPOY{MHx6(W zy^qbI!smnk{3bQsj~7S>zd_55uwx+2ar(MEEXkCg)^+KKNN0mjvb|G zQeuAzPu2RE{931t-bPA4;a_hr(y`7MgHQnVO!fOJv(($)-SKsR4{)@>06##$zoP^r z%`-g-$hDBH!HvC6z#Wa6e|*!%Gc;a(SNyse7MQBm}6@7FWoezzc_DP zq*m&1w_fZn9}jx?nbe|S@Zh3Ay0lY-0vLHTX%Zd73a#>{+0$m<7tsy#%G=kOJmBTQ zRKSEZh#Txe9H3uMlO2?<`VN|@ge;&|j(tBuy4-$KnAXC?+V}0I$(L?S;s(Y-ZOrMO z5B~1GvX9)xYnkoGIdIaTd=Hm)=ffofls|&HC9d8&zpyF``o<{cRd?$-@ap&9*u+!& zi^jF#8c;49x;AJ(kYfc2#5z%-++0P#U|vGEOndW`Zmj7NZ^PnT=V&o7VIzX~uiO+0 z-#53)@nxvB9JQk1gRIZdlk59=DCKNF=Iouu+C^zV(N$VDjE1jPXCalJ_x#dt{Jx}> zbJf88$@AAf|IX`(Ve66H+>Jnfs4x-7xGrQ0Q2zF0xA`NPzVt zvdj-y!B_sfxS_vL1v_+Nfslf3B~NO6wGFFHTSh(nLQ%l}2S{oQ_VOTW#sp9)!zUHA zNKBQ2i+`ZBT6SIfh1?7sB}UsHsy0ONu`x$%XSvy)<^H-4?64bwcSzVwF`aNA-Gy(D zW0uX=A(UdcjVH-^l+XI^_d)_@6^T?KXEJ*djSyKVcP>k=j>;>V1ui@ma)9a&9jG=@iW?k$3Mf*_cPTFj$<9K1u z&)1g#c6_g|zU;|&XCKqJB?UH4jAjm28coclfHG1C8{NS9k*sR^K88IJ#WAWmJLsa6 zqNp`;LaT@}U0RB)?i`s;6rR3=*;`fggo5!gFd&xm*W?ld+)VBx!-(LnH~T{bN?jgnG3<`7=Pp-63tU}& z-C>{WlY}I-B-eVoJsxf-H#cjN+u^}q7E0BYapv@Wd&}^g(f!Gza?n>N&WT%AbRY7^ zMp7)3G(9(vGy7fpP}RQE*S=Ju-uv0?yzeRXc)#+UIq#F*CgH(jxrlp>C>)Aw#0;!G zx4E5OI=~R9#$(euxAzVXf>#e~edm_G214eCJd8zQA&R94mi&8~ZEauE5__=*JD2=r zJ7@BcVN8Qu&ibK(TH&A%^fB=Vurbw*1+tJ1&Rut*nIPNJ7rSYdohw35nYKCQt%&YF zOg9c8LPFK&7gQ1G$m~JvlgVSlDC2f93B}cBhrb7Yc*N8ggC4D3(?E_}wtk;g;-WWw zn{YBI914JMziWCuXi!PSADwl*U0>VV0HdGPKi8);10jcIzLA$$HsXBuTK*;mm$S$j z`S1<X z^0p(S$PZxSuCHz?*P`BcQQtBJ5N@B)yysS-#3ZV7i)A0hR)GGB$-Q_k!6?R8y{uwj zsQ9pg)5K~SNlG?!#_JIHTkEBtmCd=p;%@M+JqE*;mkRgP#s7y7`HvAE31buUDq%N^86%C3lm;NZ=7&95=Eah`z1F( zvq?Yxos{%!;NLv_$7gvQZyZF6;M}AUmKDT6LpiNb^zBK+dLn%ccE>z<#ti~f!?~Ah z5w$O4p6Ctl(Ch>nfxRhlVN<*iCsxld{g zyCuLTwLW*!_D7sTG!9; z`BA61p4WOvC7*0gT@x^OftT-DK7%&6NH`^vmDfE%7NgUqy1w&GNBb6{2N@+W6Y=O8 zK4m*NoU(GAmtaiBn%b6b{N|_&{d3Zo5J~+2yxtf4bU6Dvum$S!xyRNC`5Nn-O#=P> zaLhJ90>fCuVsHmi1%IqlL3M*XKsMr;p)1#xh&f|+Y-2O=QYuDlg9>KrDe+g%hz*(P zkv^J;DZT0B;xBi9GjiQ`gAMYd;tu;7Tfi4A_qg`AM#$YqI8tBp5N)I1Ie*{grdJS6 zZj1LQ17JJh=a718?Zx{V*k1c^DCfEX1_3T!C5ngb8>a$WRMEipx^!GL_TV|)yG}qb zJ71)|aWQ1`SQ%eCV}GNpq3ZBLO`%}QyU-Mcbx3?dz5e38#x?^Ok-j3E9vPI~JzXf1 zy+4b!rS-*a$2uiZnlqHU9rMTT+HSY+WS&@9ZTg;?`?C(wRZT$`=yRROSoVUBxewgd zcp{PrXrsE3)ia2OMh+?I)o~gJ`q%aMD&hKk{Z3(-0=(s*dcY-hf{h)UJj zuV+(Zy)#-PEHVgy1pJYp<}~ao0E*9f$4sHc?`vh8yeg~h>&-f9)ZKXE z>00FqYdukAzEUFu7lR)GQopDmnL;wcACxIVzK|~vpt)&Rma`7oHDsrq3N?<)yOVC& zRg3A|v(c<7oxZvUzyh#LLS}yb0fZu#_BAu!NBwTq7;B7SlXNj|(vwtAleMJuHLT>M zjskYXuJm-9k4~O@jpR>lFYXHuS0){WRi*`(5`Bi~6$#|tE{ zL6H_=G)zz=0ug-bE7=6WDXuh#LICW9zoVUv)i0pQbeRT*t=kCp-P~^5!$4*S>j<`m zZnM!M#`Qf>)jMre-@1#nFTorS2)$@$_@3L!l|+%bm`k>=?fC_@ie2MMDTNVPZ18&r zpk%~o^;`sJJiMQwv0GP^c$yKYW+DzSm(adTd(_vW@ika&gpqZnBZzTRT$DjjY1Lm+ zf&)$>E9gY?iC19L0b!$2*t@9lyM*dI-=uJdsfdLNE+A*$Hdkf8G6svcouiZ#5dS_7 z>rGF=VUbVfQs%=x4)!XLeI~#W%T+QqC9RxPwCoxQ2vZ4CbrDK?$DuNJbnYUwO}2(d z)(HN8UA&9hAksV)Iaq#d*Y6U)?QH2+xftLYz-vjUnaVtg)$QBqTu(n+q8|$JPDc?_ zg!O~dw1M&xC76i^h62v6^APxheG*OmyMOEtu>ipfM$pLGX~^f66nT@ zj9%w8=r1PE-2*s0tpc0+3!hi!N-Q{3fie*B2_UMF0WqflXK*xQHc?%P&p^ZTk zlyS1(BNH{Ya?gk5Lr&&I6Ymlihyiq+?-$9{&O z#5ubu%dlDFenS_(bYt?iXz3vQ+^P zP~)@A6L2;)a6?pH9A0o#Kb(zQ=W}ixI`EXP$-=b*66{Lxzy{>QadIW)QtFmc6>)j!wjb4%w-vZM(#nu$p0sAn!b7JiGA$ zc)?a;dW+n{u{Vw0f;woWdiGnuGgPF#kMg#BG|ECS(riNCJ@z-xY?7t4chS<`T-xde z_pGh&>x{|j*As?4AG52Z>HC#8@R&Bz;vZP@(-mirO~<+c8nQurLucrvgq-*HX#RmgCu#dx|64zcqtCGq+hG|9UI>hP1J}%5(4?API;!D!iJE>*OTeIrt;}<< zWYP*hr7N4SuTfd?1b*CsZau$_HW0}65r`N39q_1O6J+U>+wwp~nHSF1ef!QwC-x&l zx%YT-88VV0FQA9^%S{EQE8?-6zCR%}77s@h>}EsJd4c;?#|-{UW%&U!4$kKc?>PIu5fXiJ?&HOKR{0ost?|}Y#K0RY|KM6){TWh znMsu`67Dac-M%h1E1$Mz_(f`*xZ20HxV;0`X%W3z_zrgNV}d3_LG1%* z_N*7OXwWXu4qIeOz+HyFJB9fAXFzj~tVgGqk-%?0ak8xaTYYj*Zc09tKPvT6*kaMSb9lLWedY;7@!DUG3tI@O|jcY|C>lBWFk}crQgE z!cfNzdQ+30zTXGZJcP0Jqf{CB+NWlQjj4<4K$i4xeMF2kFq_@}Hr1U_t9ni^j)igH z%dYPaMHLYj6kg^p2P|vpxxEy7?bl)KfM(v8>UASg53sKW7)zcv5*DZ7j*FFK@VTeQ z)WwvKibko85)#W-qk6sg(syL~7kCXKF^dq4io8LvXE!ehIdXUM5vcRR$^Gf4w2lE( z-wQUa635h{Whe$EN}NvEwzfFF1pHu&(>$gWM=*?;*0>@b*3IGm4vS2#J7w=cRCMmQ zZybdhsC|BsPQC(ca4xQFmUWmmVCD)Q+eUL=yE~uc=mm#8dC7*rCp5NewHJS~&woHM z@!q4gB_?&07J!_tC%_l)V4dz*a~>B+srVxwLH5xb^BfTFY}591qKP4sR}mrqQkogE z8H{hDeK6Yy_s))zL0Rrb)xd87BIk_TFo&K=ruG~fEC|6Ppg&195lE9x*~Q0e!Ztoh z(Nw<7LvS@3YhQ=UY1GGLu)#-{)YYQSIC~j@+egdc=gsXo{YAKf(6G zc_FFRXH7p844k)$!pJ;b!yX-3(aF@^ckdpWXOm=}d>zmA&AR%~fm@S4zWO$kfVBMk zOOr!EiCzcR$Z35`7Lhz+MAdgHEbb7-II7o?zVZ+v7A8%kku{!B;3ItCIAcNQXMz5e zNgoh6GzgdHkYapNzw1k6J=TOk!YMpuPjl#L>Wlq#KMPVdW*sQPpJDK-IF-RH=3bxH z_E=q&L)ku?K0j`ZN8#j~r>*)Uz9ximUTSf_E&{$bHFDx{ocpjb&`V+H8t4|?g#v4$ z=JOU3ajUVwj^rZ0jfG&`LhC}`sJW0#HrPa3+I1-)c`+k( zf^Z;&BEOz{{hCoX&~f4RP10hvy0XMUP7_Uf7gndpM}d-r{L?XfzIFEL{Zq-V!0aomn4EUmi=vX!j|}s>?q(D8AhEc!1Z+|faT!dz53#F-P_)*30Z)K#gSj3 z5nc#1y!1oh?|Sd&o2*&t#C}%n3%#He5vV3d9-|fzrZG0Q$8lpkJgyCY(D!pz;YU-l{Kwq1W(DayuLtdyVN@Xc$y_I8fboVB=`8JLh*y zjq6*KkYr!1+if_MCThd(oDSfYgaMiB1ILbhHV|?Q?-PfRvi;(11wB(JuWO?|6!(&k zEPf9S5m4=Ru9n-sVjY!!_V;zXT=|kFcl6)_#vwEp(!NfNpLIkpV0aJQ1g|@z)K1KC ztd>HXx!Yk9}t+)p*oQgMnqlS&^ z=N#?7e8g=O>}Ji6CzYAvdl#Tor?UA2I@4yHvgwrZtBi42G~kVu3_a(z0dUN7tv7ws zcH@DmK&(^B+%14$*LGvd-NX&;N@5)Ma_cIkG88&}&BXAF2ZxHA{Y4IPezyXaSRIPZ{CZ`G0a)t!FpW41 zL+QyFn>X%9s|BOT)qh){4Kh{_y0#CXT&`~9U)l0q0>U)zzTT1A_~zsMRkm=%2rQ?z zL|+e<=xhtyXD|bC316${LZ~$bYnn=hHL%JRuXTEYeT~-l*m=33nXQ^O&Ps}g8gH9= zgDnSJ!$Wy_-Lf4I?RA`sy#W`^V}mbv5gmW{mny|(BHclLNjp#P*=z|8&W45ZA85v*3M7;8#fC!W1%6tBl&DmZ%xevjAeXTNQx zV$984;OIc<(3!aZv21r&lvW^>^GnCDB_(@7&LK!=6g43HNPhdg<`*U4YvkMe+sW2v zX6)J4>`nWdM{ZzbYL6XsNgnUKN3}H`Uh36%qX3GcbY$q-d$08?|7~-Gfl6GJfKEPq*voMdvTkc_V@5PM6bX3$ zc3TaW)rSD+9LOLhy{#y`hAayoAy!)7c^$6jYmN^se>z}Pl;I~GaPmE!bD>S5H62c{ zj+9@>`2z%|Q%tdmtwcAO>@L?cwx}SkVy+$37WZ+60gB zs;6j&c9M)MC-~KVH0qYWPAQL15}}-XZkk8296y?;30z8gx_m4TvOG}LP)pXBgFft_ zS({K7mOv;uUp-b9baxwyo_4&Y%kH<|4~F0fdJL^lkT|Mn2>J|W_V`ocn1X^Yg)Ju9 z$Ee&xr7cs}ORykZYgrt!COJ*l&6uRD>7lBj;;irOZXRZ0V{#;LwvmAGbs+6_f`+y3 zUd-&N1kX*%^ze2}f2ZF`WyJ+?eqZ(nY?HUR5SraIb-cFoVP10ZIjmeMGv5sNZzEyc zuT=7UWh~%~UbMOImq7s*(#a*e#r)ENu-DL_^o#e3V}5lJSJHd2VIP2W>eJyketXe_{Y7H^lMBMw|T_g5h@J z)==(&!%!#AcU4)22deOCDk2Q=>N(0$CDfSu`PLz!8Hd>|s%fC_hpitgVju)67)3TQ{@T@aZ- zMzGb|r!A!o2#3f51B?rZWiX5Yf?SdvAOid*j$5L4`H`ToWIeaP@e$&zdOoH?X6yJ~ zZ(aPZR6dH$uhoaR@7rjLvU5;5$fW=hG9gOVY z%dr-lZ0NXO$oUU^gw==B)9`$g^5hzP0bN7KHVQ`WtcOgC;Oar^5+*w|Bw!|1OK*Ea zY{}TouCzy)f_`NbV+Kv7kV67reXiBnB9PF;sod<3d;~H+`*edkUcvurb#ualm{{?UWKjk>jgR+0%c3G0ZJL@P zTXWoZS2IV)?!pF3DKhF~_#IAtU5vls;$T3dSOncA2{q!OqJS``tY|O>lqua0``-q>48xr9wvVYZ~JnY_$Br z_~8T&>AsIkw|~b}+MKd67ajqgqqpkP>;n50%O~=Cw;cD_dJB*JQ?f4nhKJt06!1Hi z;={_}aS+GG)AaKB0(a+Ipe5-k7??)#-WqDWeosU|k95?1zoRcBj^me3Osy=TLSRz{ zn9IW8P%};1SWtawN<}2Bmo|^rcl|XnQieyt`~c215NWYw0kfwCKJo)7wcmTep+1|h z;IN`u?k37*u0urQ4R)!Nu<8eeW18f81BH`-7}}GTO|$xd|mFFidmWz^uY^-8df-gA&Ek&(Fjq z6;KJyZ4VRq^fmgq^zwdcvz_;K1fHs>#vgg_rV4UcPK>4bO;h<^$d1vz@5?qJ`HQGd z1dl!smX>|-x&VZ?`sfD3b$tkvmf-0aOKB}O+C|4LnYhHw>1LhqZ-QmVfP&O)kNP!D zkCPv%h-}ar>ek@3WTVrGzwe9QH)ch0b!ceTKM_@1b)63}NY~e58N%h?vRd0;K0v^_ zV5d5qZ(`chul4C0Md9=d-GoI0-ILH60q5> zub4yuC`^Lr^U3C{>X@_E9m&MgH|U6=*S}W*g4iM_`_bh7=RgLqZbD73vyo4_G};yz>}A zR*X&YybTBro|ooC9B&WS=!6v2=2u;Oi0}>gg^R7PZyUWcR!}iV#_&KDY z+GS2Q&X@08@f2|RYAA>!4he$=vU4RcsRcD3zF=X9CsypABm#4qdjLhoB5NF1OfQAK1S%!U}h&L3yg!* zvDq6x=qk*tRD2x!(lS2O)qmh7xH2d6AL~V~d38l@W8r__c1?#}B=MF^ye|t*{#e$H1EpP^wa~DHcCx#mFx$ z*!rcu5{xYjyEu_t?8|0KddX1^h~QfUuG2(EwZuJ=JC9IMWzOFI+rGXCFe)5JN&dv9 zjFte}fV*_MKcwYNmPo{*A7$t3F;)yyb|cK)U(tmn@^DcKnOT+QgYosz@awa>U&-pkmiwhyhc}BvHgE$rY3!nWw8aoy zj~o@3nBk;0c(L!%{qfopb>~ww7NnVB%YMA3!(oG^@%ns|w7GzU;Ra2ot^m`9wVxB( z^)eqg;RNGAf5d=kumYS6+^Fekiw5`vL_2OrDZ&x?j>Q{wTaa~LXg$xr*uUOu^prD^ zj35%TB-$1-_OvxS#UFqi!J~aaTj0PkhctU%unGGi*ov7%pwCXp+eg0oJZ7X)DVbxf zoU9=EzC*E*B%kyF`U7jcgzzsh6rYKUhE`S-yQVC9yGchw1X}Dl zfxZ`lbslT+5rK91&hA|2l8Nr)(dHLK06X)3_&QKkpEXTeQt;lhPycL+z&Gr*&t|6t z1A7@G3gzrdY;<)S`@?eF&fF1{jI;HN_|S(-Kmj$KNfAMtZKIBn=jIutsexDFSSLHd zivx$r$e->!S26@1Is@?M?pm=HqYc^goOXbE5_~>}dhtj;63u1t=0{yE0s3WMLVs*s z5%6^gxGTF{SUKuA9k z->5j5eS8C;XJkSb3Q4DW>zzx-c93{bzM~!p%^(h+v!ZzI`#NrrE&QV=;xmtR z?P(gdz%C{QNL!xt#%NW9oT(}fI2N!_+t}<=r+#!D>f*s*>i?KKw=79k7+X#Wgpgo3 z;-UEup_bt}hl-DTSO0XMtjq{^koGpCso&ts7TZ#fuOcKnAS9>In2y$D_-hh2Z^-Oy z@bq_kKRL3@QK<21tnCpY7zweFl{P8a_StmdDo2BG0imEXpsO8s`r+Kt!%0#fS*TO- zoU|tr81D+E++gQ?Gic7c6WTM>FJ=F^>30q1>&^Q}w=JO;2q9*0$UQ;uN%5~nx$>g74W!_)N}DM?n4-qDLRA=Jp|erp6`gD|*h0)a&s~-E+!wh_ z+l$T<0SIt3i$6r(65th1R&8dq`h7J=Zlly_#-(}{gqaVL3x**4&pi&y%SJC7iA#bX zo-lDK1rXqtfiK$M(R*@Wee#AQ1)J{Gi)jmIAtGP=O?Y7;M(Ut~RlHMGU9n3j6!kWI z+sYSK(^Z<2`LlF>$suQpvKb1^y$hB3a^b=3hH;=)n5OZBfKg4)11+2&jK4X1cf<_u97KuC9D;pl*ylz!oOs8sGpdasj6pK+t(*T_{tG18yA@UElKfLif%&xn*JQ z-0P`riLd*=xwO=JuA z1C4puO<)}>?gXsN9r(A`I(u;>JFg!Rbgjr5j2nEW2D(sqF1PP&pb8(=Xu(%OSYH_v zP49bV@7538*gJQMv`6IX-igJ$=ThKsDWGXNzLnFLbObGT6(u6?uGJB-vTvw(q7f&CH6q$sA3K8hI-?Y4wD(+0OM9%#1Le>a1bLz!v{iNRYprja+k>5C{>G2c)|Q6w z46Nl;jw=o17g5ctz(*Ep)k+BBfgn4cFp@6y;`}J%n3cBUu0h0{Od4PBve`mDG%)ae zZ7{`cynaUm;n}YDcFu472pv^H_fyzjW?8%NtS;9Ih`uRA5N?NQc_?h(C@^GV!l2Ge z$`+ht&4h@_O&aE7$B@h3Ms+fI$~N|}tQ&~Z9WvL!^vxykH*(Mm^W?+gq2wLhXmO2$ zN2y$+BN~$w!~}SFr*!xjvqIV+aawo!h{BkW`d}Zehzt4RRUEqxl>J~ZDCmyn8O4d1 zK~3T$_!~*TT2yO+r*Z1GO~H-x7=1VGsv;%p?(BVutq2vs4lV%>)H(!sWVDHYuIx4X z0JvNVFAdxK7Wx=Np;H5>(Kir;d&Q3@CFl1etcMu$2v4!AepKN%bF1eVcKZa1iQ(8B z&P=r?a}aHs@q+8u5gZrTCBf`<%QVm4AW5G~gZgqw;`-L0>%9=+Lu9Xq38KWv+xX!3 z^}V7jdPOzQ@UEcsUWA|W$H04I#Sf{PXz_UNw}F2cMK&S7ODm_eCsOnN%rk6-H7+q& zqmUwO;=|7y?!S-Y1h69s6lN~StYy3iLaSSCPitgg`P{t18jNgUWEr3~&zXrNjpIsR zfHW_QB4JmPDbtxy!JeH5L(puPA73hMugLg=Aq3!Q-$U5I|-s=6acAX_JVVkov(X2O=DAJp^YPFP2{iAyJQ8tP;+l^$O=S zq}c3j58UTukpw*VPKft8N!!*n4$|N3iW;`7raUobDj#gm7))+hAu#1kSSZkqd2F7G ztoO*`FCgA0m55xYb))w#rrWiX?|;=TKrCT}f*;Ty zSEi1u@D(#8d-o)Hu19%@g_EoAIIPvbAc7Omf1bR$@W;n$s6Qg^eH z>K9{gc8S`;KMcxjx37Lqzhsz^KHn!K9sKpas`sOer1`|f(b`AuGqS1XyRNurPATpz zF~NntM;XG%#0z`OL^lQ;@4QhAiy}nNjL zp*7~GZ7%OlRGYHKedDf#S;=+4MEl~sURp5D*wk4ef&u{B6*!IsKgXo9yqH?}@pUdR z_gn|wbD<>&HQnz^iTK`}cur-be>$9rmQ;7>lCb=HGiaOQE^{21;j8v2J5*xcQ}%A9 zt^KBa#%-xDcpdc2P)1}y7O;!rYINA?v5`qoguNa>WlA2_?1JI zvHZ*8*~=9@S3sR;Rafq*kZg#%@557sbHbe4WYbF6PFalqR5v#2d~N3rYzR;&Wqs)*6R}lf`xFzu+H%@0# zz1+6gFwtWl*Qy$sY2sM|J*?dh9C5G}lnx>`ycSnT(~Rn)ulID+^$bss<*tDa+|FLp ztN|vTo!Y7(OgXJ%emAnf)2Q4sR0Nez?5)ks!GXQ9OhoJ;K6fo=RBk7G;(a;=;@#N? z#+vL`pXCoR4@^F~pL|iO_r6unBo1C-1VTn?k74HzD1Z7Ez-)6e_c(y-P->%NU}J3H z0#0+XvLH?2M!;+oXajkw@X^rVd5A&4{?c8vG>ncp^7yNV+6NY*!eNg?1JGJolTgM1 z6v%V=LWZMwx1hX2Xx(ItVbwA8s!R=MZWm9s6@m!ncKA+q^}<(7wjVs2vYe$cXd~RW z9XA+&?W$~uA;(oJ6lHik3*JHT9S#1Hx2ZE)>x+lp@h!}W^wwm3K7E6L1G+&)X0VsE z+D*`$8t(`?=JyGN?P6r2d2vgYMf%*z4CbNT`%dVE!a)K_PUR+0Vco7Nn>tvtXGlcX z1Zv{+eNNfSefi#ClTYblIJg}CkfG{{wJv|=ceyF_^7rYp()7<%N68>&o=> zmCU563j~Jcn2D5lK$Q_LdN+mUbzP|wv=8|!W(lAQUn$}AOPQS4+vbfC%iBWcxo-AV z_PUSK&YJ>&&(6qrF~*PSSF$fHi=1#>t5*z4HKL>aUX5%1Xrhg%H@^v-2bQ;IYQ-VF zB_YAv3`s}H0TD5s)}P?dL9==Jmw z9+MwoW50$Cfyv}n^p=cmc9q_;*D7#z?sMLr`AC*NF@28q>@sCULrF%trYkz9QD!5C zxE{osS}3#Hk*|!N%;X$I29VV0?G;td!^luH>8GvM%NdurA^MfO_UVB2qQ?Sgz2&*H zkBMK$Nm4S@-|d}1A+5!6cNU$E5MoohZWj)swp+ymXx=wQ>twqE%jo`TAG4thDaS>9>W)?$i*fd!W%Pa3oSl=OFKX>+u0$#Wzv zxvq|Y9W^I+)+)2dWv|S7b#EfntY+b<^^z1`*xVEG;k!f2U`w^i6BZgcuAvqyWH_*k zG&ze^%~84$^A=ern25MG$qTq{9=O}tTARV;m3+mb6<(o&gm;A!l2~%-i zT}mlZ6FOq-tK4IFiXRf&Se58HsWHJCb&NBiR2EpAa1BZf0$%Xt784Q8yT${;H6K!f z@^cpDIYsBa@JHA?0?!Ut87oC;o0O1Q@6B=top$t?Mi=fd|M)Ah?NWMlB90tcRjV}A4oC~hm~I*QiF86QOL9-bAumYj1;FNemBk1M;6 z+u+aQe!Feamz+!tA2^o*eGA;>TFuAgu*v>7r z9(TcThI_aVi7i0ugY!r`6RNYU>3)u*eVqHyHmnnXE|ISxl?tH)jJf8p zH#s490{l;r$-Ib&pp|E`yk%ahyL}9LuCR1DjdMSh1~MIG>M?e=!%oIh%hAVGEEJqN zBbguSWn9l0^dwoi1N!}NnDVwQX<&<*YXPtj2%sOrzK@V-O zbg6cc$HP@`x(FdJr0ncR|ChZTW+>LzIaX3PR^x7dE zbAcM2!Z?qlvKlJ&r5!2f{Z?eIo26OBy32#S>z!{;8F2TvcqwdYAsgs|_mx25$lLEl z<|2mVSz78FX|MK-Uz=r1A|}b+5zUOFCyNvPyE4vRjwTxT<^mKu#H3G9 zARbjO5P(>%PbAwuKxY7i{f!?%9zsxwP80vTW`&zHvxUPGR8oymEru)utn76|>s!I< zy_-cN8aT(faar5nE`HAQsSb2%*eB6(o|tFNtT0j;gDw{8F3%a@FUaC^-r)@h!=UA6 z6B5|QlvyTIA<*u?BiI|^c@lambSnGA1G!-(aS28nz&YiR!+LK|M7xxi$%HcS(_8L2 z3|&h55D>NPAWyUv(ZO=Ceflm{#PQZO2onJar9!0Fx*iu`aJ>ZXS?47I#_y0#14K?p z$^Lro(fC)axJDgaWcB?Rw4jIv!X!qYyVkP$m}XD3*s$qBG-f`Q_eGWO@#3*bYhdBy&)936$6wgHAiFu*aRk|1trgV{@V}r-17h}Y z*>Coe#&U)DE^)1#>E20v9UGY>wH8FW;HXolgaZl~Y08q*YYZZqW_;!8h(%#fx|7*+H#O1{d8WSR36W1VO6BwI+(6exnlV!(a*MHb}1^oL5rGKO`Z) zSreihNF2zK5C(O^{URHx5GiSW_p=Sna%!Q`y(kpULG*X?Ka}Mgg#fFaMc}CmR5ON& zLNR3Y=}cEy*)TRE6u=}(Ux5uiacW&{-C@YB|H%S`OO_04Z%JOs~7a&_w2m~ z<@@GX28J_>Ekurn%}iR#1U?or``>CdQc822o#Pj5LUAj^F_bS<_t+D zE!APq*vgSFK*$eh6g)uYrXY%AtNDGug(576d7?^F@OgsVl|%cp@daqDi1H2wtEA_7>Kq3Kpsc-E2cZ`4vrM+g{YjESjx~axg*Sv%Em#tP zHN*70VQA|T0H!r8=QQ0qIf8wp^tB-~=KB$#X$Lh}ss#W)#waf(ic9pe6bEZTzo=4C zST1PGF4E-H8+Z*^axzB0)C;L(kP;)bJlY@&LFGM5()!!GUbI-Aka!`k@TFX^RfRQc zIi0EMZcWKfVo8p3*J9Lu65SGkuXhg5W^hYJjxG>gao9p)tPmt8@vX&wvB<^lVGRTa zYc*kdSPEEWCQ)E9-p(5FipIkPU8osRu^;5x%M)u}?6JoUt3xC!a-2Gi^Jbr&J9a*# zJ?8aFOwnXNAEEH+LMGdUZ8)%E$$h=hI^Ybl(H_4C^mCSE)4iwo1w|i67uEsGARXr&AiMg|5xioP*-U~dQ@(o^ zr@FACa8}-fQ0^x814I7&H3Jquq*0r_&+)-O2jvLFrUFD@3#$vxjZw}{&uJvE*SR`i zybd;4IR;<~=tFwTV@$lj^LS$yL1lfa>cDEEFvZVPc)vTP6OYTiSJ6j9GQAfs62wCx zWR8wzUmq)$6|QMeFNTckp^f^}3MO(ko47dK9YTrTA;u}n_Zl7UHK0wH)w1~acPu{T zB<~0qG(eq!^_o|M)Jq1Bfa8mPB$_|0%M?TkQqSHF_?&5Iq$V&9K>mZU&Wt%afp_P@ zgD$2OzLg9ib~`!26Utmx2_~8K5>rSL8_3pbaZgIY;O$+;5vRlk1LA*8r!@Zc9t(=B624mo% z3dki(yY%+Hl>8`)6^Z|^mod7g#I1_~&~7m&vS6xoAl~;YQ_Vf_TR}xYB@pZGb8qdg za6#cB3^V|&N;yDLJFUYXpj54V(IaVSS9S`zk8RrsC^>`h!t~VF^s*8iI)n`=6Tyq2g z;==oj^qvQoYq}KUae?kv&FU4*3)P&*u~*RR(U(2;GL5fcS$3G>IY~WEPSlZg%CLvL)LNl1|h<} zxucB>BYm%V?qwB!dW|pVURlP}t3}b}(m$GR=%(Pw^2iZrUl~M+PEV4_xSe9H{btik+U`5bQw^cZ2@kj|e(i+8c-=XOf$duOl1~5FuU@5WOL3Ga(g)b>nLj2;S6%6a?oY9I*D7zyxiCdkAhPCcOa3!#tM*9sF16Z@(Geg8)B!b)!@^o$ zs|IIgdfO`R62yi#;AcqE+_75pqu&ljz;`~csxdXJo240+HbTGAAHF;;$C{@RnvBt( z&=NGq_TUZD-8-g)zIUO|Odmrp*}|TjG7(dA6mFubM6>#e(ka4d zp|8@z?z}Haqf}a3>jxnhG5=xM`Vf)Eh>Zn44d$ z4#NF&5zoh=<(A1+eQZidEoY9?SUNV`4a$1(jyh|`p|~G=ZvJGA%ly+Q|A6M`2Y!SX zIdei8T~{7CK`)HLbj7Jmanj!=dJw7-;s|3RALu1?NTK*c^IgzreI zrU7kz)wg}8lhOn31U$EgG?^We%0{38`!Vj@*8aec&}__(DhD~C!zySt8cPQ*h0r(J z<(?_>=y-e6G{%O(B61ce-Ii@%4#M{?toDVnbWA%A=4Wu1T1A2voHKEU;kdp) zdUwu=thh$*@Uywr@)2hgIO~M6nhW=M@PexC(&6XFtL+Kmf(^EI4%M`=YG;kk%XXAv zrPjs3F?W8;bFa5jP%AHY$#0=xhhiAIy_x__J>&|t)+w9%@Ev81SYDbvUiA$x&SYE9ZvsjUOirz3&f%JNrqwSg>*O3`RvsiNs4869~cj_8j~SnLUetT zvAdu3>}|56 z(Z$#)Rn|l&bi(By5a+zgZo443)m19)9TKNf+O>^Bqja;^94*B z(U*Z;z08Y#nMwE}3+1)dTBU$un6xk^OzGDc;x;Z>C|X`f&+^-9$o@ zBYC;lwwbgX+?z!@<6Y(`^UPUB*=^MVs0hJr&`r|RGPUSEa%Hc=kUjj`sQQ`#d?X&= zz8eJG*ExinfDrR*c%os(1VS($P5X)wjajis5rek4!25%@{*Z z$+JpZK{}?qEhvxMe38p#qp_$03pQ&`geL3W$G9$QN6d$g=9MgT$4XZ6F^{aj^Sn-K zWtTyFm&owGtUQ~KyodC1lK_B1o3WxBtOtiM=f2iogyIMK5v-!MDRcFWA)q4Fn=NKR zv~K80gcZ%~2qeutmCsY-lzLZNIA>0Q@l~R3SyV*=8dKh)0&)vWYp$H5B`05X>T%a5 zIe@6Y@gvZ=17jG^C@NH*&Mc?*=fE|f-Vd8WQ+syeXI2am?)~Kld#*e_>O#~G%u_IUL71}pYn;-|_3 zDGNo@e)ZrhT8-4tPECyC^!`ST%8X>a;GEL)!*P2CuF1`SOn0u;CJ|WQzwskz=UPju zobBbr2)HkgfO+d6El)^lEa*dsdr{4ENgIv-TkY;PCg>YIwc2w;wOXuW1C)G}+XS~K ztY}xf(c@)dXJhX>UGH!F2tOc={ed5Wu~F|ED1)~)>RDFR$)|W?n0xXptG*jMgPx7{ zB_#(=l=_f%`=&BHpS%J10ME|Z5vSZJgDHM9nY0ZF-|wK_v3w{_g7q6e0(+8_pWmXqi2dCcwWGPrXY%75eD-pilewjt6^qiRE+vp$fJ>jzQ81f2_R_2?RB6{gn1U_;?c%2kvS5AvW;QxfPzTPNAU+D~m%dkcB&oZ_#9=k37D zmngTt+Z5|q{s>H9&~54kQTise7TK#_hvFn49UD%DxwXLUt~=`BdNF#Z+BI?A)g+i` zAqIfWTJ;R_DFSiUDjS`PI1Wa%6WaTgAHk*BHFl~{aN%K;F{3x3fe3F>U?Ztw++;<@ z)@It$;1<6Oa)F}Ba%W}jgprOQyd*#d;E*k$cpr1kgTmn412)J$$mwtV2!Pgzo!ZJ6 zHe_9B;w9$N$Eu92rx!c7G@iQ*t@>*dui2?bvn$asx0DX@ZS$JnXDui;7t-zVmmcO# z=mt?9{vIuq>$+c=Q4YYFTtU5o>X>f&+YqoAJmW8~;c9H9r^?=s7{TGJ7Q+23izrgRLX4+WEMz1VSp5H|?ayk8CAtO%C_GTCdVi zAVKxS2-O;|*xkLY+WwiRq8>m)n;(aUCjW24fx<4J%k(;cd^dq(9{5TaRtz z^J_FIdghz6&Q|**?+EO4QC8DV%e?`r@x$un4u(n~K}lss&V47L#SZ-u`A^wtEhgOf zP2ddd#q4LI;E>`*X=auAZq^{5? zKTD5!LsEUz#$<|(e-}LhL1^nThwV9VHWod)R$6v1(J|z``~tyVZi4rcI;r%lm~{3H zy2BhG&u|?e)u3bSIgJ5rg0d(G!EnpfXM1dLFP9H?7L*v8sc7ICvxqB)N zDSJrjB3$M$V~r!;$joYytm{yx4$Ub~V{^5xas=*tt(2(nVsNG!Q95a;wh6ZM8D|Y` zb1l@y``HUg2+l!n4K!`RFYx{|>yeNT9|Z_}=oPLGU+M(xH;+WB7=^CPw&R8YV8+aB@9e)cgTMS@i19ckeM|KH*03mBln4gEBVS1 zqg`&v38n4T@UQN6`ST;EOrl4n%ON=oORn90)GBTbyOq>BYGA@5`A$vR%WTu7 z!F|+{2}8lNhT=(yL(w)m+^S83o0wQxWlCtbwyq3L)3iQ1Vwn@PD|Xo=`=7?((KJp- z>m+&54JD9d9dwcUcjcv`|u+=d!GnS})K3%{*RCmrd z14nk^z+#JD9jqxtO;EfkZ9FzDV&U27^_MBlkhZ+n)DPSvDz+-nOG!0VL@HnRUfbE? zq&}{LyU$e#3x#=dgrnjPE*zn^0O!wmIKF(mDF&~IH?uZ6SA0fpWv^2hDGD0XqOYs^V?z&H-%-pPjiij7jH-xqEH2U}imB({99XG>j)0gBqLh#u$OJ zJ2-lej5bEx@iAew>tvU32;;qj3NL7=+thNjG(9!eg`KkcUSoS-MiL|~iwR7=X1-p> zZ}g;QI}5(?-}n)5Feo1fUCl0Y@~WVh95g(J=2HiCzRJXp8!CN{GO@zo)~-Ntn4b^Z z1u*4q9wXQOHVjG08^XoSG=WC+J+@_n^T<(X6E}t-+;A zDG|+Uot)PA`*4BwhxuZ9XV_{JK|r{cTLMYF`Al|4gDSZjb|#)=zwskv@vX5UCd@k- z^)!ky5T_#k<~;OLrQ=Lxn}3ct3<7#f-s*8KQVO_}2*Knrd}ha}6?=AIcb$q!MO12- zD0~{n{V6b5e&a_F=cQ8?r1w~rt_Sx?g6Je?3oDYj9!_|%`6M_uNkL+h^^*d#N(z_o zt~PPXYBUFL#oi2vQ9X$zPiy5g1HHN2acDc-=MwpWAK_q$Ewo$Q=z8?I?wU}y3g}M$ zI}aG#y(g+2gy!}PKuq{(gWl)zVm!KON@UhT@+1nKBrOLE+_)>R60tm03;Rbf=|`V+ z>j!>>dgtcdbOSD`Thu08IIez#pl@r;3{|o7jWgH5Q3J%LwwRaROGm5{sN$8baZNBs z^j`s3^#{<%amlC`&pcgr+tlReYZ(8)k1(&6`;0V9CHMKExFueWXo6-`u9BTnE>Y!tlk^|CpB>? zgZnfET+V(~YJC>^z!U1f@gq#{=QKW#d+e_J&V6OGLP)Whqi%FtsQZZJ;7TfIrYwow zp`J1;W5VehcJI+0j@9!daAR1w;IMWRxgD5nJ#d%cEU-M4r$76FA0cL8feQ#|&^4%W z(`J8UsA>=&xS2w$fpLgWsYT#JqK>ues9GihSEd_BuOf`jUI9&@pb~A`l*)CBV{oBM zhd7ip3ZjSn#*e@+d9S)Vx)A`+clQUY>nwxs)o;zzFF_Fpu`Tr|#VXv6D8=x|fU4d&xKxgoM`w5u+vhVQq8$ZH{L5c>qF&n&XCxKkZX>JSWk<4_i z*H-tV>Hx6lN2V^Q`-X`RpkS8^Saj~Nc9E3_UteV;o+Nl-!G=VfdYI^n(Y=>9`uu?( zL68@gWiw1Tqk$kO0F5qeD8u`xNL5f?DGN*UN=dd7hfBrSA6&Tl}7Ojyw;LLoa?71QpN% zrA8=5%KVt4S%La6TPS!zF@)|q}54K#=sS;6jqxC7^CyZ>|O2M!im2ETQ zNTQS*_YohF^V(x1Hvs5(=O$}wlDC|2L$uCfm2nN9fLo61W&N?Y9Ns_T9g88C{zi`o zl6z%rFa2>SAqwKUWDlXM7r{B>x{>u9MzvyJhYtNJiQEPisM@9DeG%SkLF5O?E2i~fU z?)T2Ih*L-IWf!cbD&8nBIS%cuKCm4@shz-F8J||l`}yE>u8<=|a%qwAi2aLvv)rQq zWhz5wT0wkNs{mw!FZ%isc52;g2Z$X8lT^N}(OD<0MP$+QzW9LFDG&@E;g_y#8A~bN z1!&e?%6`k%gif~69f3@yBDo+o(yLf>YMWT!q3g!#?@kHUlpz-iQXtW*-2{Erc#^H~ znR~43O*j0h7`NUEZU)*LlN;nylYkWuKy8g;O5Jr%ApTPuqmf$(>EWT^;d(I`3>xO8 zzt>b>TVLG_|8dh>*)P{Uvd@_Z;jcEIm$+U#ZR`zzjZDUIw?~)16>ejRgssLGoxAn{?HySKl4iq;hhB>!@oK^46U!|?oI!RFE2jGUvB)XS zXzYx(eKkIVj+;;mY%9w_i-m2`a>q?BF|KU_fcH{`Ip3))_x769R5~`q+vmm1cj)Xb zk#&|EkSasb=ui+awx4=X zjvLlmd~DUyC+o9zxH5=IjK&J&Z&v)8`DJaJuv28CPoJ+>`+2!n3X=Gs^%)1L) zoVPZo)jpa*(jV4fj?Dck1*$j^R4$A;HF?-U!CMt1+v=@Y5h<#^#N)bwfFOVL!a56?`Iv>oMv(0Ikks6MkA|6 z<@rpeZKF8P)m@)A5$hk&Ct>wH0U}gl2e{*D?}87lOF862^#WJ?k=XZG(iB&ucyo!+|@>y8|WW5^hBuz%~p-c9*l)-G(lL-oPH% z?RL;p#--^&+U=OB(cW-l)~?ZR9pE@=+?U(EWZ$VoKKhd?aKSd_J4~jGJ z1Uprt7M*6H!|Eh^bobdJt=$ivwsbCnp*;9%dRsCU@lxR+(soxgs4>PkZD+}qTA{KnXkTJKc=P;h=D0wway?aocKm~U=+VlxD1D$}=O2%XAXA|!vv*F0xMn7m9 zu|AEFwa??-;30iy%{?bhXsklrk@v1nXENWRkJm51g|?ot#>1k5R*FdLZ5O_lnfY)D z1alW*WF_K$WtRxE+J>H;os>hJFh*``A@D8BETEUAFRji+l~-z136$@AJ6Y78BIEfZ zib8eLJ;V0h{p`gUr`29^(M&(aiW7Fqf@E|j#tbEE%G{>CI0RWGm}FxiJA3J1Ku=bt z)~lV2ZhIBc>3DW7Q3q=XyWjM6dbOx%p~oUE0Ba#M9+-3mq71AZfK$k6ADgx>kCh6R zx))^Kezk7tb0aKm3**^1mu6L4I!B{v(tVL-QJbr;wofDYR?0&_(AuB9@>Fc6RJgGU zd`i5GY(53ZpVo(QS{Nv1ym>MAT&k*I7_XLgj2qstBp?X-aGzOlcC>M|q#t>3nGvJ4 z$V!SG-rTpLI|Yh>0W~hkUpvYiAzOP{o%DwmOseqOL4fKmgSd6M(B;d)PdH2NiIBAC zgTdsZ%*oycy3g-~(~u7~$nUKt;AUg)|8CZ_BGE3<7?W^ zu-lcXSl>}+$~cWry4CC3(zx9@`5~zv;|wx_z7U$i;O8tmPWLpdBgEIg$i=y$xljatgt2R@wuy%~Cde zN4oKgpwoJRXVmm_ld-of0Z(OL2$^_eD9!TOe|O5Umd$zb&)V&%z7adhY&zDS0uZY% zZEcV!oO=!w@MFD#6p>+zdl#o#!S2#qDRP)fV0MwDwR;#(I#jH%+Jfq5=PykIP0nX{ z=i@c~!Yb~R1V^Pxp(^#HHSI@VBc4VD7uDW|(qYEr^XzpwRY8I8$hJ0bd?i~^;G$G& z^nJkGU-7i-un09RU80=!7(KjlHT~qEkZG|X-oC>dA)np&TA#C6;CCSHEw*DsSW41` zjD5vb3q5g=ZK34Mlaf<)ucVoZK&`!dmV?bth}MoHqqXr^9C|5;_SKgo_H1pHHYQZL zdz&EQTkT4Rsp`(3mZ)3usAoWm;idHK45+R=Pf;EY2^H}up$Tfr3_uaV@mDFZ^L^~O z-XQ3)!Ko>MIX5%I$D<1WlK{UQZ4GXA>DUBjlEKwxq-QVLlUDYt7-Mp=q_@<&mg^ zEf0f*`No48MM8Hi4Jb#&t~nT}pX$qDgyIKlkZ6*gz*i`jP)*}Th$ z^rD5YYpUWT$FTz2w%O^U-MVoSP8UF5HswTpO~Pp8w5iLr?7ks9ZrFckqVcImc=g5_ z<&L;h%-ORXGZUy`MhCMw^yS;_XhEl$Tr;czc|ij?+FEA2RcG3)Wz;q}k#sq>zXx=L z@oMOX5+1$GzDp1cKDm?K4hx$K5JiuU2>w1|spLa$?tkm<XPrEutSn;VDMW^02K6qsk#@bt(0<~}Ga-UbQV6#q$8pZt+nXQ*sbk;5VNnJg zGDsTAMVdfZ$5A#MXb;~&VIWg259-+-=eG5nWsdxMFz`k^KEhiZ{#EPg)%Eg1e~7Ee zmG~m9VgF-u43LK55BGefcK{rb3PB65;LN*hFVdF~aBh!XaX+neT+M)J#csBN^GhtN z^k)~nJvk?zz27|olC&uoUFbaJz-~|mQfF)>d84S|VXoH+uf*#Z{Y-ptMx`nmRt>cg zwdE;&7}Jl*|DrQcZ@$_ceU3XtYNzhF*zqV&%y*&N1yc8VkR0bg(+bzJ?VE7~Q|+=e ztq6coJlLLPd8PzWkozEw<+j`Zi`g5NyAS`bmnS{g)?km%JqOgY?-E!$8< zj%J%|7X@R43;mAF74Ku7Z~9tFKV>4ry_rS-KcaY=~Gip`Tx6I1Ac#$+A7lDOV@JyxID-td&T;u0ltcN+jzGjK*ZA8oajS8+a|Ttu_rek{ zTf4!p2_+-&&(d)xiOJ3YHrCs6-RSHDKqnQT?4~Hj_t(0n#6MW>0!_ zbO&u-qv-Xruf_TL>|6)r-mVmp1!I1-%F9R4NnLPnh{ADVC{ z;}N=)`>lX?zUxm@e?~{*y+ee>a?N|sQ1oC z`M7((!Tzo|Pq>lmv-5z?hyux%4{Yrm2B#-8lk1!3BiH)e9MQ>W?z6RTeuU}}l-}ZP zjrTOTg>emZT^3T?sc^}G7$b}oWY|Ux;D?pk#&U4HPd&nwvdL{TN9qZmP=gazpc zVVZvX0cS`P#V`nz3BJi!D{@@76Z+q0j|I|Yj^FqZbjLg8O+}8nmFX{|dxfdt60FMckr%Wvogb?`<+#vg|$)P(>$*BJ8R(8j6!dO2RH>Zf6DjQbSbz(AK4JW1pAB2HE$sQ=6H@a zw4eK)@N8BJI+VzXzPc4gDhW`OBI^=+@xa__xFI@RTMicrI_)4WG1AeNEjE1pQ#yVX z_elRz9CHI7ZYmWMA@pe4>HOQNH7;|0z1(S#RVDkC;rvpLj_VuxX7472K*7a;bj5es zMLv=NWSzOhSp5ON<>TL$SDb-fIWv6Nn9;pT~mmdLV12CquAqqAAXh#U)s=l9cBI-~xUNhc|fj zAX0(qC~e_OryIN2FdzOHa3wBSL%?3%jU8{Rh(e?J4SQ{Ej+S7>*T~3amI@;DYB6iA zDK3&so7T(|VP7E3dVh#FxY%le$<)|do3I}BF%U8sQKAuTbY{}~OP$Jq6vq*6g;gR1 zZ54cIb_IwOI;q?8vewq1|4Q%<^xvIpWpci_vx~r3dZYJy;uF_N8UW!0^!iMFG+Uo6WG0HOGu5n|$gB$p^WK+KDJU*Yp;}VhD zhzY4QaeU>(!vrO^4Z**h_?kv3RK~%g^dKRxXsOc5D5DOdID{qQ95~j4)h85DDPYF~Wsx#nT-K3bo(&hgg@*nkTZNb(fqy1Z(wfwz|vAxTP%P$EuL< z*eDuSpGS*3%r*AAAl6#=1tv@ z6Qd0gD=zLG!Sz$;QdfkfdsNjHoofMxt*V{I3bB1<_ZZwdWBEC}UDjx6CtS?iI+Q(~ zzV{1+vHdU2cCUwf{0JYu(J~a?L$;VHB8tT#(cc(6?|%OCfW3+gBQau|k6@}N%%@%D z!oP(%UgQXU|Er79)2{w@89aamDFE9?QdVo0WNAO;8Hm_$JbM#S7F3=ZqxM&LkJ}sA zjk$9i2egm!6wy>6iiDV+wc$QFNQL$DO5rRpmiflcU_27h4i+8MP#+e+Q@h&e1N z_Wwvm$C{moPchovt>&v}RAJ+AIRh|3<@mXuD?a=7Ui9#Ps4(WDMG+b9T(AZVh=+C7 zH18KEbVSDs?wfu2oJA{kYf8M9VTHHF%!5La6GV^?dc3AlOB`lZ$_F^eiuiLAG3YjO zKVq0|&^hcW{a&IcdAhAiIWa0lY;TiE15-3L4<+Yy8WJ0#$t9r468_}tq=bKbG0ChP z;_nK)=8SZT@ZR$*(RL|;smaLH^$tMccAi!a%9i+%?|XRXHSWBv@GSxszYOy$TiJ}! zhVVryb?@ zWpsh^d5-s?tgxKTZK+w$>be_>8hj68z4AA%JQyLRFu=esf7^H$IyzHJ*N`&`<|0_J zrHxY=1vjivfCY|hzLTvsl-rrL4vz+@7fm^Wb;Qsfw~U&%oYrIw?o!!>u({1T!OZwt zgOxRxh_b!3ccHu2$8=u{a7{a1)ZJRObCoyIBI1S1;oQ*@7Zd1mq@1fM>zX)J8g{O} z;4DqeBC~I2rqNp?E{yCjXvfQr2rQplru#fHzR_pa_eprxBBC&PAB`qLk>zCNuC%I8 z)(xu(R_R-1+%i}1Q&%jm2chq>ZV=RantKdUGAtx{u!-m?o2B0>^^mh2U4ULbM$aJh zU9g-mBgk!AN*y{dqozW_f%kewnDL8`47-QkBTo*#ZB5WKa)mSON@GVMvI{88N?#43 zq~EeI_ux^yte8tBRpRfnz;tomRe-td>8I5RoOd_QjvzX2sK_CCkbDCd;yZz*F93sk zodg6X7H6%-u>0nd;26XDa_@j;U}qdVen!XgCu_FVqPNf3Iwa=gE)Q2=LwK@z8K4j( zW(%L2SgoPEyU`6Vn@98r2GV7MCavh5>l5GYu`+4I3RVu&!1k1bD?=Wz*atTpqvW!e zJ-FfzyeaGPa;&H27~;;h-slZ%K3vooxxK%R#8eDs7;&xN2{3%~zj1uj3pH18P@`Dd z7WKi)CRMgu;IyVwhF!dB6o2iMz3|GvJ|({82>hJV{xNqpHqzuewseW2s6TTgQu5z~ zMljomdJDW=;LhCnrn@RrBF~AC3YnA79Vzbo5OLs0-92Ue8fD?b1v9c2oH_&iuu|bh z{?^kFz;%~^jat7P&tE+aO%WCCTW=jmjJ0i~A^CJH?7tLJQ#{|0We_T99tF5%N8fO> z?-bN}wuu*CJ*>jrETaqUBo6^`3nkesi-(PE(m*urH`>znd))AOd_G zVa*J#jH!l!|I?qjFfCm)r z$I6bRV!ghc3Ri_Jn+agNSZ@~L4=0RJV%|$3pSOaOz+ZOqQ2&N;9*W@;a&9FBP-XAh zhzO4tUKfBAz`c)v6p67%FW80!j|_ewM{;pJRP>OgWLvu+L&|EmaSI0)q}fe&=?0F-ForkD zFD0n@hN9+R^;-oIp#`Y^vnPw$CEf|UpqvG;!r70r;3k?**tubMUGPK*&+kn%IN;B)Gn4&}OH*?np>M1gj9VA%Oc-SMYFMVgKu7td?!)%I-3nEv4j(vO zi8ppG(Le|hbdl_@eB9wxIcY@N8?!hkNOHrQ@aoQ+A&whvNT1c4%2cL6w?Y@9-c)<* zYk;0!yvJcl`(aQa1DI%MPf&P^N1ho7P}MW>h!ZvE68+3qXX4DorZaroY(~7$@J=t= zkin-W4e#Agvl*po@wbAQ0KVH^eDM(OhgBVFv)5<21SiAQdys9AyKt@d{qVzad?(kjvoj<1i_ey=Ph33i79$Nj@gMQZFMAW42IHzaqMd=}%?Su6X}vh#=rS4}%waZ9U#FAB zto1|xEyy`fkE-AKOW6)lCLK2grenJSP1c!JnEy9rHzFsnlHvc<8+fb4AzF`hA z+m@z{>J0xOP}#x1oRXShB`No+82>~rdz(6ig%k{=45mAo*h}8pxr`k3*t41C@s+0z z=WP_At6Tfz)K4GHENDOgCHX*ui|;;okn=e6V&|cIxRodJse~W;K$A>W!MRcagN^k1 z3@GJoy+?q%VH>mY*33gZ%r2?t0zT%$)wwgAc}N4s2*qgE^KT~pMh1BTuk4pVFlY_I z%X!yApEsN!6%uJmaa@32g@)EyM)$f)OS=Q1=uVI?6FtHzxijByoRDw3GRV9!@dHzc z*SvNTe>!&=1cw=H$Y;AH;|%|V=C2lr)?D;@ls2N_a1ND)O1tx!G#hv>G$eo{9KDH> zqYr87XoGmt)>-qopv&`KE(FTX;!w|N&`D1k*elZN(hD`icfxQ(bUZ6Iv^!t?5j@r- z@RV^c2AXFbT($Q=PaolhML#j8qc33 z6k0kfXd7vVUKB-F+J-yx!?*GjCkNbE>{H5qVm1FR1IPdmxZj6;8h-MH*9O z*Y6#H#D`>AVS{a~!-<1L8B8hW*}99z2A0J+#QJ<4Iro@Fc;vB&oCG zhAjjXZNG{1_fXb*Kr#m!-Z8Fn~j$l`tt(BxvxD4 ze>TyE?GLVYDVN(6%?lcgooFZ~wPm+8UUmjhJ7&)NYQS4^T)13tt6aBrf}1C@X)d&U z1a_2H*FJVBlhipT!&Z30D;ZcZ*$k1O6tE{nZysN}9aaAFIx}n6cN>>>ItV-Pa~a~` zJ_LU{TmVM2!Y;t%9jQ*SbR(Nv@_#H#L$ER3R->{?=ZvKrn-8kc=9CFp( zHl*n`;$;cQjTltw=GaV=AzHK|PKP_zUtN%{J>D2MdU<`I`>SK1=jmwiS!vHs@q$gv6ZMc&bW?z8!v%EJJ ze7W6QjSy5x{goSJVJ~;yGH_x5-uz6IgkNTgXf>Y55fZW4ryOszavzdWsF=e`847F- zt$MSSYNTo0_e;UU)9yy@1Rk3n7G9_Bw*jy|-g=+8uT-|vYhkBH8r$o;qtsW!d-F!W zKUyg_DHM3NuY+zRiZ?he@5Yz?P;mq2Scf@Mm}+hDRqFRa(LJP+wJ}w8C-V~CL1mr6 zh-z_Zib5NxQ1}_lTd04QUiH%W-EEfFGETFiLT8%X;3;?NnCYgwoIkB`KNWe{Dyiu< z_@kR5UtNhNNC5jrgG;)G8cfibx&qbbJ?W=9uYk+W2Wy0kG6^}LyUA{CFHUU<|KtXk zH7VF728hep=?^e*c7j-ckACG=Cs;bB71VcV3%Fe_fsT)41JRcK>4z}^Uo)_ zZ#;L%kQm*umDifW$XD57h>%fccw|1fc zV3rqF?kY1T@$9>>!ym0d#Fvvp&<*Fjt<04o8$&<{CfrG8TiYNlBI+1-0zO)0`X&GZBUg~xxwZ7*)O5gIa&fw!k38W5x1JiQL&qArH zB;>AA9Xjr{@xK`I;LDpLMDw7OBDJ2*6+n zug{_WW8Cq?L~>_+l+XDiz`Ri*Fqrt;?)(AxWk09ukHjtAf0NTj%GXZErwZlzM32>{ z7Rv265S=mg?!1MWEtJ|yhp0!NX)=xx;i^0mDkx({u0(7W62ko6?=sez0KC*%&^_bC zPNS#m>TN_Av0vpLfRu<-Zz->d)XDl<8Y=9TGZF}!Zz!?HK{IDl0P{mGo@1p14ZBY= z|0YBr%+CI36nlAyOnOLty?3U;80MUA3e{pVLDkWvbGM!go`DjLS|LV1L*r%es!WfV zC+1VQ6U9zB#v5d|rzI*q?2iF_Z8kl$O%>NE{ltrRn}6dr`tPsr&b7RkykSa=3# zbaos2krm9OW2{b0jp`{rU?(-rB7x7fgLcFYPLg^M|COP})*PSR?GX{OZ0ClgE=<<8MXN`Lq5d+OZX zn4~bFaU8#t?s$YvY7|fEooDeQ$q+JaO2_y`9gR_H^(H~3hCRqDOgBQ`+C|IMl6?&x zyFr`hm^Wd<1e8|?qry||k}F3ziVR2w4lTEF?>piBp5cbDD~#SrmYnzWV^5j8adeV? z4~5!m1Qftx_sSd43n7);^tOnWT!HIGi*mw2#`nGHbI{jo`o_=!2}Tvku?;27->N)n zkP{bueSM$&IM)3L_ifwA6U-BU@n3h>B{UYbI{9%qb8=CPX4(T<#n!`EhYD%f!CI) zUAYwKU-$m9$6HQ=bWb}7KzN~oah#QW0rK5iyFDhgB2UG^He-{xMv+af=?-#l{=`PsGV zBU&S+uw0SV-CM)GgC&K((qE#fQ7g_t%aNg0c zpI68lf_qVs1Hq$@8;9;$!8Dy>ab%ALtPyI`b_7ObIRFratQ$?f#+dz(IArds#(NB@ z^jNeI+ZvN#?_2XSRXZ$}a%naWv9lWXdcWCX<6}=YL(e6v!*S%}xEbzoVc^s^c%aeF z;hjw?Lt#jKIS}g|)XgIr;k4qb$6aPe8FWrv%u0aTDD7u-+D{spv;BxWDp*vZDGFu6 zS43%+ZS#AM13>ZjaFn%JrB8D2y}f1cV7<_(Y1i3{aBk!Y8)_X!-=;b*;3I*vQ`!4VTX|!NRSo+)L9O$_P zyJQ!RJDlK&GZzfNAvsUqtkcyZqA7+R!eAbmbLQ?GC)ghI+^_lqy0BqOFb zFUp*vLO8BxyBlvOJdIVL?@L`2f8iY&wY#~vRZz1>XUiU_uZiN%=RKB6PL{H#S?blz z`0)^Trt^C1rMbf50zRy!ZN+)yb}yZ|AB#D^8`*Jt6te_+O1X5*b}=%b4$HfYt)PUs z_JZ0(e+CBN=JAp#jxsvpr{LY!8Lw8)!tw+9E&}6&p~wP=^C;+fzXU*Af{EfP+CoZ) zbu+0)Za!BlH-A5Tx2T9*hzy*h5fReorPzd4RcQlTtb~gy)LP;Ict<%Xgi#v z*_%@1ZyfL|4)P3`UXpq?;u>P~V98mbI3+G~L8IeJ9ei;XYqaQZRpu1LpTLAETrbQo z^kv$CD^YRv4KrsnL$>K64tx6jBJTEbmHsq2clZ@sUuk^*PLOozvy(jmQbEwY_gx)D z1XR7p{I&J&SfZFA5%FGSxIBal{b8P#TOdEsJM0t|`KI2=&2nbX+6rBoDT`^=DVM3M z+*>Q6>%NX=wg&aF9#28coNGT7aA|AndEP7c|1#RH%zc96-O8(tw-*zP#lr{WDBai$ zTok+3ZfyxyJP-2<49urd8LhO*4!}-l8GNqSW*Bdr+xQ)3ue;?(Fx=a!@I?BUplA^$ zl5wD%x?CPIA*Rb@H%dF}?Z+2o@p2Y^o=K-cU)?dXhBM*LdlyGDz(2RXw=?(*jRvI) z$g+y86hoUv?uu?^02Y7qdoE-L$I8A( zWl3Rzv>sCMxA+&lr}MUMMAQh^i1{1b)Sz#jwj&1==lB$iBTu|9oDcc*syA8$Ey~yK z-WGeS0f%W3*wRvGg05}ZGo!>>kw@^E7w{@8A$C#e%<_Tjkx4Z&Jzd}ExlZG$%ybk? zmHP|~kEgIx@Fs@vbs@EG*I2N3cKmZNQnkerBu`C9-HGi86|xm^g!;3!LxI-s)!EM} z^Bli@J+^3A)^BZ{$ZhSw_m{>RLhi<(GS9(gwH)a|vD+*A>muS(+Q;m)Ev-zFBb*m@ zJ_$CwpDUmg`&))T;!Zu-kz1cHFgfoFv97TN-i&{E2vdA({q3ye-%Xv=SSS*n+O$&B z4h%J=g87&X+*YG9ao^Ps6GUQRqo|R6J|e7J<#5MnSF}=D{)YNzUu$5AQjF8vsQ@Nd z{+al6ve=rN6KmHe+Y(RGoh|MHnN#@2V#Z{L)?;5~&6;IK^HLq<2+)$9pEvaM9tPi~ zj?PZcYU9#Q^m6cM1Z%bdhA*FDH0u`TF^DoSsoK!gzrXi1H>5wn|%Qx#))* zko%yH$$?t)<*cxFp_%q&bdKX12F4n4$qk=LH)RFjo*3Zv}|c$iFy$Oz;)v zgTO_h@StPS^y($Z;H+8*;ML#wBe1Qay%O&(s15Cr*&*L_+U8NCmM*)<93Rv1SE5ZH z=9NT5Fpb3TzIl%`4&2Bupk^W+Yn3q1LP_>`Wp*-s{9lE+-At_D5Bw3L#Jg3Wb_r)} zFnO)vppSacXhF|onY`oF8#CKDq$Jchj8DtSDfkkJez$Xtt~8^ zgRlPy-W+1rpgKv{lG~ivyAYK#z?hxG$mwUz=91l7M!$f5-W`4DdjLttWy1boeY#)2 zZmyvv zqOhA+8M^kwu4$3hQ8)t-9ZRPhTgrN*;A1lo`%NP9`~z)qO;@m*4m4R8mP57%O4T2+ z1+|g64Me2)c`JAMZ!k)A!h)bAcv*AQql_2$QJJTjoGR0RdlrnkS0Le>zz!hO-=+#{ zfjR0;3b9}INZIea%=VT`T80qD?K0>QL0etJWjTvN$f4DDW-vHALiT89LS8em#=8z0 z^;SEj2Hk+?qd_LxyS-5Dm)#aw zYAKApr@bt&k#(zPg|s5!2iji2fL-az4xzmPD{CNa_A9eC<9Wx8QFRXHWK^B>Gdk2UB38pdnfxziw+Ato{Wy&bG_D(x(upl|MQP1zJXF{{@?dFt)aBy#{ zqK4MqK%^psD~bi!z~J+AM>hiRxQ#2T?r5A4uRinwpu&or61PxwA4X8}*-ZB_PN}j> zHrD)3btrW`Df`SM^QT~2EMx=Cfe~=Num%5P|$(q9lFth^9Ehbet z+EbH3{V7k^YGe#|FUVjz!*8jTbvABaWM}^Nj6h77{)oa>mpiM98Iy1zF%o)sQ*0hK zXU4u`nfInnS4_!MSB-W|OKGW}9#`lVF~47%@7}rK*al8QnvnOw?6DzF#$FmnDb9WO zhyv2Vz)m}LK?7IGSs5ALZDqnJsu&&4dx=g~DjR)V13XdetV5d)gy)qu*|AK9~S;lfVahz`9WgeR` z9v=Z(zsQ>S|8AR82{|&4pBQ|RJ%gicuic5P_N~ql5TD#UmOllrM{!UH0C|TFQ=jF(P4F0vU1st9f z;>x`DD}C&7nA+((3J(QOXmZWS<6V%wW2_nou&L?r^?8#Pq4GI;8)ebGyp6D=^HV*( zqlqx`d!upi$Or|pFCGXwd(#6)f~KAl?@iVST_^T3chp3ok)d1+mkn;~t(B((KN=XZ zr|Ugu-Um8q&pRwt<6BQqhPdlcRIJVAmchjEGcy(&qzzRT6(EF#GJO&hx?T#$okgta zO;0DC&DsX^4nsximqQoz31K9UHy-t6?9@-VLTkGLe583@tvsM+3`);3F3^utlXpr^ ztS>v6)WMbW9`O!&@CFSC)sjco*h|-gO6#Q_^s;^ROa{`hVG9__?B!6Yh9`1^UjW0H zOK&cGZW?5rSyPN7Dmy#(k5UX)HBMTE&FWNNtm3FnA}mmI0jI1C*(`PQ z8-bBH!vO%!{ggQ->HSvwn3cZhw$V=G2V#xgEvS=fHlOdRt*9Q3JWCoHrZ#5@1`D?5 z*2f&QJZ1F7_Zi2*VP`qHUE z*)32i7(r6sUW`W&v$8If&BfUc@I*G1E_N;`Dmc_Y$@u<3nHuLu{s=mndjts`ksu${ zkQ2h*1Oy8M-XdQmwp_81zfIz921lr_Pnf@>7Dm29J!0QE3}piXWaWUB6np4 z;Ds(i)80m~`ys+vYz9AteN?&5BV-12z_mLhu~RqyHFgIxOlN7_%K1}zo1F3Q7Mk9d z8ryrVol34?JBF9{q&#DG-vMEsKHHl~#(rH+8|?ZUT&hG;NA4IJ8^#MF4ZviDSx^qw z)qAPS@UX4Sb?15GmABadzeE0_QG8>ZqHMq>726BFcJBnGetqRyAXX~H68Pb#qb=dD znpyiN!P57NM(<3B%0(M}45_U-Yj9zgLLDcqI)i_x;Y2vDRvA2=RY?MFdi*sEu|3*e zO6%4fJUDF)(4NNIDJwVQUTz!QBY;spsEMo0ph0tpTu(gMeXp{Rm+O&qn_CR^#Pi4~)pgOB zV(zQN0oLnVxAis#O3^YsfvdQ>+a~!4iuiR@08m)SP*d4@r;w>2v@LDng_C1F5U8!| z)I@oAM*?yRtt=P?q=y)}a<@(P+ao#FS_6&(K7=odvITDiNl=?M!l{_Ecv!T)$$dVO zmv?#a&Akcve@p9p6CFyNyXa3f+)J)wXWr2QSr=6Z#t3lGO)5{+QFbq9D9xCu#%`>JV+agKA;+4`7;j?r{2`wG=sXTq**GYmM^@ z0!P?sd8`sgu|7dUO-RpSqE%W0u~ZGKASGwOO?)XS4^(Phk9!$As452&hF&3_TDc++ z90Il;R3xQfDL6S9(nV60@hb2GBv`APT()VPHMExKvr?*>7MDa#34 zW!&2)1hY}dffLUJOG61NxZ9PG+Z%|!zNv;mR$gq<`PcD6`-p2b7$TjwW zmtF?sr}cS&b2atd*z%T@O~ROzP0rnqA=}`368^n1r;SVY<(xN05!Ua?v=+vsaFT@&>qe}t-VUFTD_5_{YWAoVe| z;Px}mxk_}Qz#|MWb*(ljm~SkNQ817mf%jBa<(8Bxxyf<_n)2=n7XOz$))|82LU%uX zEM_V-5tE}ciyA8x72HZv29udt@mX2TvtG4Dm5Tm1u~G<%^=%AXWDCN*mU-u!M0ad} z;sQ3Te1ll&l=bi;1E=Fma3g{xPxh?cxPi^>gkel?IrtmrW*Z);_HB*t*>Cmu--WoLsMrG`f{{$xH-@w zOZ!Q6SX=Z!+pc;QJl}~4A-%qmZHB$>aibr;?u05cMK{yS*L72|!d-T1#E{2vAWfdXp08A(eyN0SPGeE>cdO-kC&dfLEW&{-kv17B?hEhzVmaX7852QCNr&<8o z=yYj3EhBG=Dn?TycJ9^PGeL;!|2kTP|^o0+1VCzwjed!xjX)So?jta31f zV!M@IHTnLdzPlQ5jK&7O-XPY(qndA*6v}-o_=+ua;bz zv@o|Bc|+P#`pC#7#j`t}08GaqLg=2bQ(8)o{6>Uux zgYz92{6;g0A|Bu9BKHnb+yQXezyY2P-Im{XSSm8HGwsRfA55c-X*rj;%ND7J0@J(; zp%J7NZ}y=R=CyUM2+y`qES@c3YhnJe!exb}W21c7h3HT9g`bR1`J6-HsA;?|d7CPe zM6tJ9LUtGEW!BHm42RzCuikSDct}R)0IjSA$>w8?=}MsvstjI-D`n-v1%351@4WEp zbJEva?JeFTNPmZiDxL(-_$_F;(+gv4fc(OjL0;r?Vh7zZ5v~HayKl2jC z+i3x1Cd+@W99SN!kk;)#1J1KYKVx83Z*ahUdE(l$l>4TULtlB z{t9><2yv6*8fDI9%R%}cfZcr!X*`-XZS?N9W&zGe7uw)CEW zc{MNyoW_{sR}pI|yV#Rsm+q62A;55bGuG%v+IjB7H|dPk_VN}@(;0x$>_QVoy9ctV z5QtDf-ms_6x%>?kh&0)#=bSwILHk)K@jT@txoXFI_Qou;ft$rlNFtuW0eGctNrf!2 zwT`vTqvV8{Lp%W~yKS*zP^FYz#b=ZHvb(sHBnF}4=(Xwa0;6T|po6}P+=0|BY+q<}CG zt^lX*!aKToU&x!90SK&uQZq0_@EQwBqop*UKUR#=HQJfo8sPFbhvTZL_!U^8HEju5 z-s^IKn8X+h_q4%DILF}5Mp59KE3+6YW!XsC&$-n5kKIm$%qz$T4lj6}kYN<=PUvi4 zabU4HVNI2lVb7uK8Ln~t=Xn#l%l2%9Tf zqM?~ko?(x^u`;EN5F%_PkAXe*>vJya_TDaBsQTcUb@05{0o5&)y^UN&W43`K<~~BJ z`D&Wg4p>$+u1q>V(pwF92w&{88aF&eNx=!S-D zXCot~6-S$CMuTvB2!hq5VxN*MJ{5<8D@yTbjJl9>XMAO1{X6ym<_>b51dBGl0b`U+jd(d z7>DE~CWOZwq>=1ylx%woLVNUr-_i%j-Wd`rvGF+bQ&!=h!^tI$pQ zjX#29pZ?)f;m$%E+50p(YW(n&Se+tz7%;{7#5FK!G8vwWoVT-=)ksgT($t^sJDUMa zmuF)$q|Scn);&`X01AuQI#0{`Q7EL;hJWD<3MnT`D^=h|h?E;M%Pv8*V+NnU*GZkt z_3UXQC~jmbu9hYhc%-i$X9u8O0#%sda3n$J#bM%Phi|`{awWc$mXZ}PDf~WgI3K^K zGlH8?m}!ji@PD&pOGo;F@ic92snMto;KN*p@&Og633nhpo0DE7)TT6^ae|prxDQ6@ zmmvS@_am55Fvn^3IhiznaXd?eC%_oqTDp(Q9Mt{5l+kg7MLXMzv8tK9%YY>7L3|4t zn6QQd(t_X*K~`1HT_biaup1aPc`k;$tXo(Xz1%;rdL4ZJsLKcosccEj;>-ruZmkfN z>pW$Ojf#PR;b}#gSDAXwMVpc!C;}$X5Yx&4akDz8o4c10zHvdK+7h~oc0CaVyfvT~ zFZA7I6mNvmxX+Xa(}^`Gu*xTVX;coNbaGxPoRXH!Bp-XM#(Dj0;<49lV-Pf{%KNB> z<5`i(e{;)g?c+UIIM>kUVU+ZOqmQp9eHh5SPfUke%$AH^;yJ{ zyJf@MeB*GXz+2f*fEhj7n7s@wT7b0&Gjoo9f8<0%uTY z%(hXMN>-f6IW7kefl^tMWyOP--ETvdf zU)lWE^EqRdX|ye#ifU|2g%LY8<# zZ@X55fL@NfNKC_Kc}ysXHU_l3HJ^=gyWpgLL=rk}<%XD(OpFVRw+T5+k|?^2dqG#6 z;1~fLGlf1$ZAiC5Km)-aZ}iIa(u9C*E(1DFh3Vw?rEpgygL*=X*KEqk0?vm2XpfgEfJT-OgG|MgemwE1yfM0FE4&}ZVj_akYV-pk(5RPeU6_Xk{A&@ul-NDB6}mW`(aG*jC8?hV z*{$suTzw2nO@*po3Kz#~ids=@o8zeV9*JzkcIw$483i`vLB!3uC>i!A=Zd!(IuWX*vfl+c`Ne{Z&nM1r*mXb!t64|ONRavPI7e|Ie#CRj-^d$s;H}fw zp4yxyU34((tY3;- z+#aU$1&G;e-RQc7Hfxw1x163TO0dwOe8?#YDXaaC2tz7g-zcp0tMoM<)c$+69$S5M zrUzs`Yd(PjoJQ^`>p5ro8wKMBz|oo4iAR6E_Tcz4Zz-7i2tCe-0FG^zE?F=)hmHl^dg>YLsV2s{lrE3d=G6L{utG0)8~E&Kr=y?8*-W1m4WmtvX@l56BV(6p zYLIpim|QzOZpbQpDES0;jZ5{zzi#aVCEGaMQAWW2EPH`kHlS}O4cA784~%~2GP@>v zbez~1*^=GLAmYX4IIu2Q6e?gd)Yj`4Q_>W6_Hw~h5sktN4rzx+6L<)sMoi-?xg#!= z{nL5@cL!-sS}O=#&#vd_dCDBk*^dm_tM8UZq6nddN)mjBvmcS* zkHL2^#FqD^B|4b!49O=$D{^J7G4fAs60q$ zHg`yXq{L<$SycIf+f>^ZB+g)71gbytpJAoNWfO{($pip&?)eijDNTD`IoJh(3LockizqDS^S9UTwC)fqFXCgbIz)c0DrZYgl)ZPl8KM+bqkwJY*9C!8TH1!Uufm-%{gi_) zf9>SGFOsWv&@gDuUG=d3t?BSW>a6ZvgH(p(9R_v{!MUJtYd!Q2VWOFnIv!Ljl6`I$CtsF9` zMRqNBbBL%H6dmawV=j41th!hd8G2TdOWf;FhzlTwn;yFMylrwi4SW?GH1OV2Px4jU z#wizd1nRH?0>dyf@DnNAOcs%%Rdi>c-3@;h7SWpz(XtiNIHQ)gYd6Z@Gi?j%Lbbh= z#DN?~XZK>(?7yrwSkTevS@In{0534(XfUaxpISZkJ`HNj166h!D5LB9wj^TS)z@nh znTge17C=Q6){AwsMVW1`gNt60T2;w8PWnJ3W!R9yiMjihyG$lJ9iBn42Ka>AZI(HO zPTdg1)-DF~(X#taguB41-NQ1(HfmEJPM(7^!eAgviq2#yBV7*h=oow!u&Jm%9c*P+ zc<^%g)p562OH+_m0dBymbNZKj&|GG%Y~A#pVBp^6q8_uJ&iDzx;xPW*o4Fz!r~|gN zb#-E^8Aumk{cTqp54b=dd2v}IZzJB!*1|kSkjw#oGkd7P<+LncqXHW(0t~;{STHF9 zf9ZO@Ote=QxG{M32D^TGEA%?2i{E)~(r@pxpxm=4z8)pssepkz^EC+x-0qEwPIZRm zJV2BV7h%hWq~bybTP*6A!nV6h|fqcQs-c96jn$NlCo_jTDD4GYyzsz0vbEU zB<(GZ&3;8KRYr4k(S^?2-Ip0i@U4ZY#pVWjsMeOK)q|}7p%s5IpOdncl=I{I&8y&D zGH~^=?Lc^!7rMy>b~ngw9N*`Cd~z8?>=%^UDM+wh2yupt^n^_A<(u1sJHDLN`+ zbjfEh%O8Lt_1yVs)mm?@frD8O+6ErF;1-vUCbX0T8~371F^DR3POPQ!@a-$pRE2nq zH4O4PXE8RScUk^(stQPu+|U;nt0DYi3_7-wn31|pMc7vl;~@6>it%je@{D48vaas{ zcR%!C%WBL=uIrXcFCgYQy9;OFh1-r-`y8Admh8A2&(dao6 zR{jZlSNF}-ohTNHyc~n;kXBhFV@i8`8y=nuyhbI*+r(%O*36zO@|D|}ZV*CNJcEjw z4~EPD);h4DD`KF!4@SpB4vGf^gYpu}RlRcqW;gpAtsta~SNN@VD*CAudTe|HDS-6&dd9pSoXX}3y^ zasZKEf^JVmoFE0s1V0^y+bRlK)h9VGft2`G8@6ibxa}~iJEL#e6)uC&3RVt%tjiR1 zYn%Jd*>B;zGdNRM4%(O1Kcw>t^*(p%S;TS{8 z(F*I|^u0+^mZG%XQ#j1j~l3@_R2ONUsF6WLv(5>xCAdL}#d+CmJ zi5LI6Wnij2psa5L&O)W9M zLwZ8UG>?Y#?AC6^=U2yAr#i;*`OXpCXn>*v;+P$?{RAa>buK(w`{l<)v2+CLPkMs{5L>ou_BNgIs#NeA_RBt4C8xV^y_2az<%RxC3yeyT>->YVHKQq+H*nCK zE4WcvWG^gqZU}7dfJTh;hHKHWdwt!3jzC7XyCz=C zejlN-&U~EpMJYvtaWY?xB7^x0)Z<<}X8_AbUj((IWPzdv{15NL4W zhP(Bz z$d6;GHkj@#gmhrJm$w0x%K#5oCH67lmXSQ_LQklVRu~j$zg~@p(=;5Comy~g#AnZ1 z0Xo_iC4^LdQ+%S!zSkt7fd1Q(cv^5q5!>jyalisWeHBhkr7_IfnB!tW$3o0tm_wDM zBCGfkA{MoCxcW3Yw#|B&_eZZe0d9~d{H@*(O_)~ZYKNDBgP+Pl4>^AnnIqGDkg-}D zi+x#DEaG4u7a_syI136iw|i;3pto<*ySIb-9rE>lO!@9=ch*Jn4Ps9|0znO!EC+I0%x}^OQ^L4A_RVH80XzZ;S-V z|DQ$B;_-DpHvj{-}6I@ffCcvD12SISXk6PRu55Bt4 zx41A_R~2S%De{oVK5wnb&$bMy=q*b|pPz7Xd$W$4&$qP}W_VR(lZ)Upqg@s$cgPWf z5WL%kTx9P-gO*Ke{@k%4EcmwEW#Kt4WBRaugZmn^u1<>Kuuj=N*e&k1HepBYJH}-q z4UAN;a;G`nz%syURSaCZl&$n4x*P$Zkxn`j*@hvg4F0EH*^eIcIh%c4VO&t(=d*qX z#{9jIr%MNQy<0VSWlS(g0N+Vn8?PrBrPgX3A#*x#zECnO?hD`+!&aWe3J(rU@fA#X z$Bec*4PzKqyli$XQf4DdODe%tHaV0-mQMO%WZ$`f88LV++5`vNtOV7lEe@3ij+5M5 z14h9F7%LZ3Btq~~8S2X0tKs-%AYDfr;p@yU{9Kfr%J;IaSUFW$>~Xqp4yfrJ=(bXJ zHX#Y+yg0Z@U~P0#DO`@giaVyii6UW8s6zt>e0u|l-pqOt(11C`T3N73v{yG5o(-4o zE4DeDXU{h>`ce> z8tOKL8GG4XYjfT#ayQveK1L_)y;b!XByZTF`MpHe%BVOuOUR#!!7E3BGRZ^N*wyNs zXU09qUzjGGJA&f;Ve!v|LP);tb8q7*4?h9?>MUkXrg3Op*`44*2TrgfmOZp?57%nT zsut|^0mSmQf&YhK>^+0OIHjUGnY|)!F3({6)y+qZ&BKVxD$y}OR7luxhe!~*ErHVo ziw=EY0{fZY3!HvxBZSVSa^V)|ZY#O38(;ZrXjDwD zku)*jryGd_W522I-Dl?f8LXoW3IZPh>4K;@XP>?wu0TG2H4%)o=H7$Ivd4C z%IqR%(5s9I6{S+@sHsv&yJqgk8{>nLXJT?`ppF!ZPmY~*YPwiYZ4lve13PHHITyG-XW3lsz z%Ux#a1bpqVx?9JT)i`QQ+!=>;*WKW#A2Wc2^EgKf>Z}wz$|inch`@4wwjzHjbc>OS z@;a>$e(LOBM|U5M%aLWxDe5oiIl2Sj@e~ChFcQ0>AnTKT)am$;M}ZZbG&K601D0YH)UZgsdY|@xUlp}_kL&%ws$%K zJ<{`>R@(xy?S*dxYm0#{`R!n7>WXrG4rE)LEkK$cKQXV-iP1i&6|4e{?ZnAnj#%CM zBc5V=W#oZywTcv;V#x+4(N3ew7TIV!IlS)LLQ3f%aq$*HB;D&?lz>b)AnT0A#h)hA zgJ}Rr)oUqdRKZY(=I}N)K3VT=b&YGvaji9IA3U+y4WGqNnv|>%i>`B`H4Z!ok9`TZ zEd!FFj|ER611=bLMwj+{Fgr8?IF*FZyzP?i(H1ooiV?~FNykv7`HI`Q>?TyK-5ZMV zVmHWclCeZoL?;%Xob*+gD_8PEhcISj#%KY=ZLZW-P%+Y&F0ZhcfA1_GC;9U&((lYn zvFX>XZL+w25o#jzIU7?8R)w$38q(0%_NUc5pA+1ZxSSOd2Vz1aVRl~IrFF_FKs#2s zAuVIba}?Crt!j3GI{NnB>Cy44dij8M#-96)MUDB0-hu*yHBOIwJdSg70OUSip9WI2 z1NJcb#E-mjV-fKpifq)Vk0K~@XnM|vESk^JZX;ejzWwv@;2+s?JAlr-ldmNJ?p1k7777o@}ooy=kI4T z2<<-Sf)I0(Y)A)0#~IM!E2DbW95ZddD+U6{GoE(Z18YWWY;OWYY~4a|q13j{c_iqy zh7b0@#T(7PwKp&w-qD#~c!)I>-0pkEW;%o=1|zaHOL>w?V&3&= zsJth^$mVWS-RE?41SjZruE%zJmMBnNoh3i(X{~#QE?h>WN;;oT93Z#k`7bkWWW5C~ zLSjVtGPne&nPmS1Bbu1GE)vOi2WA>)KWE>j4l^G-ZLOPy$TFh6kd(>IH^#^Ysv;oX z+*$Lo!tu3%ScB1Wm+?^@Ps;yo^Iq|98*nJT!mfkI({>>bf1A$3Y2xj|G3KS4rh? zR5}L1pZCnBRnD3N_tymIas^IOj#DgUE3F=kw_Rn>90w?Q7lN z_#^nZoSWX(%ID);1_IG&x$WS-bC1@Q_4F<6Ffv$_{Dw3l6x~e(w(}s+QycmX57ukq zLp&eZH{$i(L3|G0gI@dytCQl{xi2t1_B(fxzp2<(Ayyw!kU*?BF)&%tdPpvFn451C zq32rLq#MnUAn{cEB7=IUT~3EE!!xQE7kH^>DCL>Ti#Z;2Hr^$9YSQcjaVR;$1eHsC z^w#1a;~+rB7uug}XOlixj5%YLn-sJw>zLKyArE z7W;0gZzO=%#)*1229oD^6p^w|jhQ}x!OJPieT689kQN|+wgv4I;(&I9m6|s~O2OE@ zE@QA$7j0bl|2kQg5_cTn=faZ?y8`WX@Qvt?DxMD7P}t?3qadquv2kHr19JhY3N9b# z9DP~jTk8qca>u*35C&!KP^E3PGysX3rJ@alZ+$E2Zo?l+z`F!h$k&+*>#xvZ#jCM^D
        yB~QdDTDd0pG>X-y64!0KvdP?`umQZoR`<;6gVG*#!o7@98BeD|oS;kR zYuzLd)mN1&SD_X1fo}Iq>Oh-Y&>h^nnX)YWYbl1%a9Br`4P|mooXOEjSN;n$FtYM} zv)ATUv-#n+RpW%ex|JCdG1shZj;0Or*Wh++zHD#&h<--t@cNaQ96c)KN1#uBD`knb z*1esA*Mt!`A$oMy+NT<$qKNhYG)ScFN7dAGuSiFatKav z{AC5xox{2Leen~(^o^MtwB7(T+6Tcj*QZOZdx*VQ{x;zh$c7xshG7ht7_8WZ&0RL4 zK?gH5$uW7c%iy}9Gp*2@KopATq1=+Kah89Ig1rshc|)o}m;N_3wC*qj#TlOPvSzia|$bwLF=&4tc2m;jTv94?mu5Cg6YUm^Fa#KWWDEt4D2xlickgnw zvut%g;pKHM`V(o%eh4=95-p*Qwpz*qhj86`t&$-O)8~>};>;WEtwflVFS_Y<6_%4H zvXJGC#S#fSa~X>}E`VUFBFivbcCr{F>AQPe?c=nScDHziXf@`;NQPFhuz0u8mOW_6 zs`M^+FzU&|h=U~i%;5d;Xthm*mf%FH0oAo(an(BEs*@8?sT?d%xjaG_13diT3P~Kq zNFp9I!8(r1FIs(Lb(_1QAx2TI#835fZE@^LV|Oi4Ba(6at}cXj)Lt6)5T2c_;KyP; z$EX#xwv!FO3;`KWV`y84{>+XGc56J3Is2y_wCH&XRaEB80XbUO1?>kx-(HiD-teLJ zqOaiNE0~0qlGe#G)yPi4T!M|7K_Fomb>Jfnff`8Sa1sTEEsG6~D$N#`T%{n9G3Q8f ziHU7*VrJBkW0=0|D<%tIyoNFh2H2IYr{jnR)xeYwnb5s+y#Nt$}Z3b*70{#C$6{ z#h^hk%Sgo@aY~kEyD_nnlk3rj*RC@HypWa0wV_i-D36xOIqmXMqn;?NuQ_b`8vYqo zNVJx@Ep8>TjnXI)GtjLf968g*y1YeYS5?2YFHm6fHmpLN%_Y!%)i#L2i_~)gvT=Om zv{BA1FLCiOW5SFKT}A~j_&$!>Q>25UArUcRjRpPNmuMB9&TvlagFbuhP%kMZ2;1^4 zoJ)oM$sQ#0+)$d_g_|h&ow43?!3E+6ST|CWbHRhr>z^l~ zLl;hNyNn_mDY=_6ppsJY!&Gx_p67q|VTbAA1?t-FF#h^fI4}+KK$sJyQ*fTIjWm0n zcz+11EYB{fRhh;;?t?AVg~XW zS`xn>Zd{!XKV@6I&H)|QdJyz@&VaSa1KI+l4q&P$d$$Qld39!`#V=w!AyXJ7M{Art zV1Y#iAM!AvWjx&!6XxLV$`M(yb?3qhLjw{cqDHPXZWDbFtLbcImX}9lA06=sM0PbF zDx`QERacQywr{L6r8X)pJ7OU8n|)nJb8)f^0%>dBH7Kcgn=Y+eT~m;nlf&LIJb_Vj zT5YQ%5Hfq=fx;oCp)e=NL9a^SD^g+TmoX6Zn~jPPtr0lTsq2gfG6clUoPT)DIgV7` zjPEzKJ-|Yu5fzT+WSs}9J~AM@ zi9Q{km2Fc5(|H*Zp0^p}>$Dl2MeGNCyTo~i_-RcY{`@&0$O-@|x6IgH9`_Xt@z!i- zrR~qdIq1C9I~+P+u&^dBtQRT7Bg}L4E!PRk8V3%^*ztzD!>b>qDhO{;``J5<*vo1Q zL)y$!A6$fI#Pa({MT9mPJF;HB9H0+l>ekR^GtI=Gd1z$C^jp!j@E2`;?;zKOKdQ38 zCD?%jF76w703Ur>ZG^X_&nWYW=F`@zwPdX^KG0@AWxoQ`wu1_FmUcVr5d@h0X&@&x$fN*r>M!|V6Odw4+S zc=V|YePV0#f;T;d3-oy3Mocb@@oopZS6e!)@zyDWl}EH=%>_7lmay%RHlddH(q(U5 z_YI?@0=P#1RSPqeat>v?&(i6$LSM6R)=sUw*zD-Wob#R;MV`5RaSW>5k(~fXj8>yA z?CT9u+2JUcWAlt$i!7KQoVuJi?s%2p0O}Z}nap`lM$`KyZdkX-UkC;(%kOG!8^~6f z#_5ivZyAOHh`8cmFvYhI4-!C4J`zNJhzO8&Bz!pMTm#Bh+e1#H(jg~`!=|f!XB0b= zK-5cjacLtNOOr&B%?(1B^eeRCE$ zJclXx5nSd58V1T|uMO#usLzR+_M+H+hi6=U*Mu2+gIAmNlDO!AqkT26k)^3~?}f*9 z410R&w)UnfWpJ!MMTis8TL&cS&W*$9R`x{rr`WT+4(kc<{b2Mwk5sfI@vnmO;Za&= z(Sk~?;|u8z`>%jyN1;XhC;)4;?u7U3=~cVU!=}5(ER%Fby}&PZBl$t4O|gNcH$MQd zrNT*@PQHC=8<_k}~#8cyRPiGuc!WwkpY!Z}npZEGQOb zUNfE2G*>7H&Z|?t#Y%8nY{qUve6eij{;aQ0Igz$;JR;y%P6h)C)_vsSk*bGsBGK7f zH{4OTLgmg4KS)fv+_$5FJbR!!wR>={HrJc9ycT6O45WRvP-=INCq&9iUTNtvpF2Z+ zfISYKP7Y0WTnvh4YcIDj3%{II@o>S0 z?iXs19BecU8WFW1!o?y$TAZQZraO=Y?*j+soy-oGb``=MI-nTF+=M7&%eGA}#Y&ra zD291Etbw~V{u|O1SZZ7p0fO;tc+Bb+b#}aCKJSHP&n9MCd8!mxsdgr0_?r_iF-(MAZsTjS2~6VK8Ggd# zP!bh81e-g~)xg6mBjd!xF>xS4BP1B;GntOw z^ryG$rJYeKOEWxi?4pO0sWSzAz4xQp+3bsoZkd-{n2}S3BzW7AcR7Pxsqd=`58c!n zFh^1X7{ySP0?1p3NgQvynUvmr2?+E;v3zAVq>lt*I?q+1_qvO(lIv| zQ&Mqz&-2py3?)x*+)K%K&I2fue2$NSJd z5<2I*kIm!b*3Z&exYg>*ul7atBS>A&N<`ln|1$4NCA#hCo%_ovn<5$xwlPkYxP&I~w z&)#E3iH|(5*Kl9@;6m(j^w-%WwKY_P|lvSyZo9qWGfcCM<2)dw{H* zqkC+tXO~sqkKmp*# z<=pB#ImWylk_&lf9%Tmylvq^9i&S(JZNul;w=*z$Z%SlxJY5VD6q}KIgsRl+(=wQlf_wqZK~32PXuC9W=PcLaU(k#?}L$tNTsk#T5cUS?g-= z7|3p;H#lkIsa*}qmAIc?-vb(Z`k5zqx^VChqK9}nHk;8kG5)j>bAiMH1aS(ny~Z$^ zTLSyy?HhA4CyhPN&}RG}{0`)AS^#7%$2T7xhzU$deRh~2JROV4mebtJlBTe>D?d@I zowiOx+;^E|Rzi_m1QoVLumP zkoV4+@mL(eQwke#ry6$I#mlAov~C@nT08xAo;8A_RB5FmgFOAbEh{7(;!ZbvQ&P|+ zS)%7ucDWRIY~05RYMFIaVaeL9FJFG%e4!fqz;aLS(pcH=o`n`w^=N=|rtUch@hh1g z-s7?F5UFkk>l}!=JI#h+E1)9FuiT7pK)#_9e1gi!D58#Y|IFj*&=g=bL%q9Lgd!}Lc2hF3wfNn87Hai{r)se|ITK5iEV z?dX^7jaPVNn2alA|MBQFXQdQE>9L`K(8=lOOVAAuMmDv+C2XV)bi`v<0yB1$-Z84G zmpW;8>bM>v-0c7v$Cz459A%k*a2v7v9{aGlLBQH}jW5?k&=tn*KD|U8xuMfKvyGw+ z_gASn_y`wiM@?ET$;-Op%9G((uy;b~Fc9>teTZbD;cC=l-vsmeLzuue82sDbLk|I* z;`2>)La!H%_n`?&z8|K@a2g2|sIF($)1GdsEef^T9I8l<>hr`+ZfTsY=*V1l0?{|& zBrj=pVaLSV-T0h73bP!Wc7XRkOJ`?N*zqA3+nCErgp!DUN^b9%$l>U#R`@ecPmZAc8RC_9#HXO za`?B#4C=YZXhDpqB5ZTI$rHL(##fBWD*y5@*@A^ec^;yMO)Q_Lw6=<|AqkSF<}K(C zSi%*sRqyVzhfro#Maw9Z?fc@z=B*7~>?tSzM1rJfUiK|?VG{dAxqvO+FF)8+v?NVh zChi6w)S?!*7gD)~rN}XGO}z9QC>pa)j95G^gG#tlj!=@nAYe8qvALgUYOAe5ym=wyQ7c!|m^U}+U*$c@*&qwPwo{F4Zxd;=jZ(m=_O9Ifk7#Ri3LhNM z0$mQ96KkEV^Hls+45FF;FvgVvMT>eUUN{Xz)W7i~VCfyS_5sk*MdUK_KwMHV3e}M1 zX<4>1aymdZqbZGy1CWxjj}FiiP-HG=gza9q4zkUM=eLglSt2@)%#oVptSt-edES&) z2TmlMlNE4muG zMzBYmh95ZSwL`JRrfuWQ{;Fnd8W?Ndy$6`B7K~W7?{>F5#N=Z0cojgyV z`yB-GB+y|*rK@wa=!B^0oit{=?uEd)^8zIjw5pc^NYI4NBTr~u7MXC8_B-N#&USE05_9_8Pa7`ORy+cNK#g>JisDp921OVr_@3X)KBIlU`?(6^x zsjr7j8-x02&|g$4H#4Y3gKZ1dnvNc?B34R!6{Zz^ol zoY`J?d?MrN@Ry$3raYA9N@t)byys>sn7e1nw7E(p=#qS|tI|;B_D8$sMX|@~YYX+t zQQJ^TT;qv7{Yoyr{Xr3$o-TLpNMbY;6n5iHNIJfpxew+@ZuK1fkLNwZS#!10=a6nd zmYsdsGFG#-;)g!F*}m8=h}jZr&C!FQf_ew!?PId&%Y`m+~+1Pz64*R`B)rB z;S%27LZmi1aUWE>w?-DY)rRRFpu%N`0fxf2f`R1zKN-7$Nz*OWU=}sCm1`yU(|f^j zY<7#?L0q?L&M9rNvjyrqp2$Oq7PEbBZ)e`u1=WUSl1o2)0^1FqQcHSYeb(Ac*xbJA z@G+joq~!cAdS6j>b7JVV!s~gY0}Q{N|30seV};>QrRw)iTNTA++;bUbN|K)-nAu+ub61DmT1!!X>~KZSlFta<&OVy3n~4Op(ef zN`~$YCvR6znskR$ebqNPJ}+aYMoNYsVLjWG^RLIhLh|$u5@EDKCKU@>Qe4@6JDSkK z6N=j&7(U2{XYh07^*yM}0b3Zz#_k!gK}Tgl7-c+eFwuXc-q0tpX!D0SVPz!OljDtySBS^1$&5z}<$s#o7oJw2$&T_KGOOewmnJYkj1{}e_gDpUL$QtqK-E_(V_77K5 zu!^0jKm(qBx@>O@$Rx*HPNSa1zb>p-+?n zZB6*Y>&`v#Xj@9VWU)37+Y5b+<-wFy>^?@%5Sv}`G46qTH5UKxsO!;1BNAVRIOJzK z*JsBdBdBe!N@sK(@Dj?l;xQiv1nt*(4)l4t=tRPAEtoRL6-tlLl$k76&GOb`eMk

        @hK;~^Eim3J+o*--vI^#1L7+4>DJPR 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 MU)}qWeeb6<0G}6UApigX literal 0 HcmV?d00001 diff --git a/packages/docs/README.md b/packages/docs/README.md new file mode 100644 index 000000000..812eeb9d0 --- /dev/null +++ b/packages/docs/README.md @@ -0,0 +1,25 @@ +# EmbeddedChat Documentation + +This is the official documentation website of EmbeddedChat + +### Installation + +``` +$ yarn install +``` + +### Local Development + +``` +$ yarn dev +``` + +This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. + +### Build + +``` +$ yarn build +``` + +This command generates static content into the `build` directory and can be served using any static contents hosting service. diff --git a/packages/docs/babel.config.js b/packages/docs/babel.config.js new file mode 100644 index 000000000..e00595dae --- /dev/null +++ b/packages/docs/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: [require.resolve('@docusaurus/core/lib/babel/preset')], +}; diff --git a/packages/docs/blog/EmbeddedChat-2022.md b/packages/docs/blog/EmbeddedChat-2022.md new file mode 100644 index 000000000..973a329ba --- /dev/null +++ b/packages/docs/blog/EmbeddedChat-2022.md @@ -0,0 +1,157 @@ +# GSoC-2022 + +

        + google-summer-of-code +
        + +

        + Create a ready-to-go easy to embed mini-chat React component. +

        +
        +
        + +

        + + Project Abstract    + Deliverables    + Demo    + Contributions    + Blog    + Mentor    + Links + +

        + +I got a chance to work on a project called [EmbeddedChat](https://github.com/RocketChat/EmbeddedChat) which is an in-app chat solution to web applications needing a chat component to increase user engagement. + +From just an idea (proposal) to a complete product - 3 months of Google Summer of Code passed. + +I intend to maintain this repository as a final report summary of my GSoC work and a quick guide for all future GSoC aspirants. + +## ⭐ Project Abstract + +**EmbeddedChat allows users to integrate RocketChat into their React web-based applications easily also providing an amazing developer experience while introducing in-app chat solutions.** + +## 🚢 Deliverables + +The following are the deliverables of this project: + +1. Creation of UI using RocketChat Fuselage design system. [NEW] +2. Providing real-time chat functionality using RocketChat node.js SDK. [NEW] +3. Authentication using RocketChat’s Google SSO with an additional choice for `` login (if the user already has an account). [NEW] +4. Adding EmojiOne Emoji Picker to the component to ensure cross-platform functioning of emojis.[NEW] +5. Using Rocket.Chat’s REST API to: [NEW] +- Get channel details +- Get the channel’s pinned messages +- Get the channel’s starred messages +- Get the channel attachments +- Send a message to the channel +- Get messages of the channel +6. Providing the functionality to pin/star/react to any message and mention users. [NEW] + +**All of the above deliverables were completed within the GSoC period. Yay! 🎉** + +## 📺 Demo +### Sneak Peak +![randomgifec](https://user-images.githubusercontent.com/73601258/189498365-90bcc80a-4fb1-461b-a89e-99f1f8d31d95.gif) + +### Providing real-time chat functionality using RocketChat node.js SDK + +https://user-images.githubusercontent.com/73601258/189498385-1346c5af-ec75-42a9-b864-f6f3b1e49d88.mp4 + +https://user-images.githubusercontent.com/73601258/189498400-942f337a-0ee8-48e5-b539-70dc49d1e3e7.mp4 + +### Authentication using RocketChat’s Google SSO +https://user-images.githubusercontent.com/73601258/180390437-b28ceacb-7f3f-4b80-84c1-4e1709b6cd35.mp4 + +### Adding EmojiOne Emoji Picker to the component to ensure cross-platform functioning of emojis. +![image](https://user-images.githubusercontent.com/73601258/189498628-119c0417-a8cd-4775-acdf-41fdd3b7bc62.png) + +### Using Rocket.Chat’s REST API +Took an object-oriented programming approach to build this. Created an API wrapper that is super simple to set up. +[Here](https://github.com/RocketChat/EmbeddedChat/blob/main/src/lib/api.js) is the code. + +### Providing the functionality to pin/star/react to any message and mention users. + +https://user-images.githubusercontent.com/73601258/189498498-602ddade-2883-43ac-91b7-9f63dc41cf84.mp4 + +https://user-images.githubusercontent.com/73601258/189498502-1310fb1c-293e-4bb4-a208-7b523dfdd23f.mp4 + +## 🚀 Contributions + +### PRs + +
        + +| PR Link | Description | +| :-----------: | :------------------------------------:| +| [PR #1](https://github.com/RocketChat/EmbeddedChat/pull/1) | [NEW] initialize project and base setup | +| [PR #4](https://github.com/RocketChat/EmbeddedChat/pull/4) | NEW: issue and pr template | +| [PR #5](https://github.com/RocketChat/EmbeddedChat/pull/5) | IMPROVE: Responsiveness | +| [PR #7](https://github.com/RocketChat/EmbeddedChat/pull/7) | NEW: sending and receiving msgs (the oop way) | +| [PR #11](https://github.com/RocketChat/EmbeddedChat/pull/11) | Parsing emojis in message box | +| [PR #12](https://github.com/RocketChat/EmbeddedChat/pull/12) | NEW: AUTH (google SSO) | +| [PR #15](https://github.com/RocketChat/EmbeddedChat/pull/15) | NEW: Development documentation | +| [PR #26](https://github.com/RocketChat/EmbeddedChat/pull/26) | [IMPROVE] UI/UX improvements | +| [PR #40](https://github.com/RocketChat/EmbeddedChat/pull/40) | FIX: when host is https set useSSL as true | +| [PR #41](https://github.com/RocketChat/EmbeddedChat/pull/41) | [IMPROVE] more options to be present whether or not its fullscreen | +| [PR #46](https://github.com/RocketChat/EmbeddedChat/pull/46) | FIX: when cookies are there assume user present | +| [PR #47](https://github.com/RocketChat/EmbeddedChat/pull/47) | CHORE: remove tech.co.html | +| [PR #48](https://github.com/RocketChat/EmbeddedChat/pull/48) | Handling attachments | +| [PR #44](https://github.com/RocketChat/EmbeddedChat/pull/44) | NEW: react to message | +| [PR #42](https://github.com/RocketChat/EmbeddedChat/pull/42) | NEW: Pin and star messages +| [PR #39](https://github.com/RocketChat/EmbeddedChat/pull/39) | Add format to all files +| [PR #29](https://github.com/RocketChat/EmbeddedChat/pull/29) | NEW: CI/CD Pipeline to deploy the package + +
        + +### My overall contributions at Rocket.Chat + +Besides my GSoC project I have been contributing prolifically to other Rocket.Chat projects - [RocketChat.js.SDK](https://github.com/RocketChat/Rocket.Chat.js.SDK), [RC4Community](https://github.com/RocketChat/RC4Community), [fuselage](https://github.com/RocketChat/fuselage), [Rocket.Chat](https://github.com/RocketChat/Rocket.Chat). + +## 😎 Blog + +I have been writing blogs regarding my progress in GSoC. + - [My journey with open source and lessons learned](https://dev.to/sidmohanty11/my-journey-with-open-source-and-lessons-learned-30e7) + - [[PART-I] GSoC 2022 | Rocket.Chat | EmbeddedChat](https://dev.to/sidmohanty11/part-i-gsoc-2022-rocketchat-embeddedchat-3njh) + - [[PART-II] GSoC 2022 | Rocket.Chat | EmbeddedChat](https://dev.to/sidmohanty11/part-ii-gsoc-2022-rocketchat-embeddedchat-15g3) + - [Final Part: GSoC 2022 | Rocket.Chat | EmbeddedChat](https://dev.to/sidmohanty11/final-part-gsoc-2022-rocketchat-embeddedchat-37g8) + +## 🎓 Mentor + +A big big thank you to my mentor for the guidance before and throughout GSoC. 🙏 + +I learned beyond GSoC from him and am forever grateful to be mentored by him. + +- **Rohan Lekhwani** - [GitHub](https://github.com/RonLek). [LinkedIn](https://www.linkedin.com/in/rohanlekhwani) + +## 🔗 Links + +- Read my EmbeddedChat project proposal that got me accepted to GSoC [here](https://docs.google.com/document/d/1YeAz-hzv-7NY5HApraz0lOCNj2_Vc-ys_w2qp3qd-nQ/edit?usp=sharing). + +- I also complemented it with Figma designs. Check them out [here](https://www.figma.com/file/hj0BqzAvB15zBv7A8fMYc9/RocketChat-ReactJS-Component?node-id=0%3A1). + +- My GSoC Presentation can be found [here](https://docs.google.com/presentation/d/1hNO-iGlA0nnyHS5o6XlgwGaYP7IgOtcHdg--HCFNABY/edit?usp=sharing). + +- Watch the above presentation in video - [here](https://www.youtube.com/watch?v=gcB5c6cvg9w&t=6s) ! + +## ❤️ Support +Learned something new today? Reciprocate the love. ⭐ this repo for good karma. + +## 💬 Connect With Me +Want to discuss about GSoC / Rocket.Chat / Open-source ? Let's connect! +
        + +| **Student** | Sidharth Mohanty | +|:--------------------|:-------------------| +| **Organization** | [Rocket.Chat](https://rocket.chat/) | +| **Project** | [EmbeddedChat](https://docs.rocket.chat/contributors/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2022#rocket.chat-reactjs-fullstack-component) | +| **GitHub** | [@sidmohanty11](https://github.com/sidmohanty11) | +| **LinkedIn** | [sidmohanty11](https://www.linkedin.com/in/sidmohanty11) | +| **Twitter** | [sidmohanty11](https://www.twitter.com/sidmohanty11) | +| **Blogs** | [sidmohanty11](https://dev.to/sidmohanty11) | +| **Website** | [sidmohanty11.github.io](https://sidmohanty11.github.io) | +| **Email** | sidmohanty11@gmail.com | +| **Rocket.Chat** | [sidharth.mohanty](https://open.rocket.chat/direct/sidharth.mohanty) | + +
        \ No newline at end of file diff --git a/packages/docs/blog/EmbeddedChat-2023.md b/packages/docs/blog/EmbeddedChat-2023.md new file mode 100644 index 000000000..80e5f66a0 --- /dev/null +++ b/packages/docs/blog/EmbeddedChat-2023.md @@ -0,0 +1,237 @@ +# Google Summer of Code 2023, RocketChat + +
        + google-summer-of-code +
        + +

        + Create a ready-to-go easy to embed mini-chat React component. +

        +
        +
        + +I worked on a project called [EmbeddedChat](https://github.com/RocketChat/EmbeddedChat) which is an in-app chat solution that utilizes the RocketChat chat engine through its REST and real-time APIs to support powerful chat features like reactions, online presence, typing status, threads, and much more. + +I would maintain this repository as the final report summary of my GSoC 2023 project and a quick guide for all future GSoC aspirants. + +## ⭐ Project Abstract +The goal of the project is to make a ready-to-use chat solution that could be integrated into any website, web app, or app. This project was a major refactoring and enhancement for the EmbeddedChat 2022 project. + +## 🚢 Deliverables +- Improve authentication - support all OAuth services +- Move to a mono repo - auth, api, react, react-native, HTML embed +- HTML embed feature +- Theming +- Improving API +- Support for slash commands +- Migrating from the fuselage to our own minimal components + +## Demo + +### Sneak Peak +EmbeddedChat integrated into my esportsweb.in website. +![EmbeddedChat Reac component](https://github.com/abhinavkrin/GSoC-RocketChat-2023/assets/15830206/e42fd503-c7f7-4f30-abbb-9123d9c87257) + + +### Moving to mono repo +EmbeddedChat's new mono repo structure +![structure](https://github.com/abhinavkrin/GSoC-RocketChat-2023/assets/15830206/ae7593e1-5479-465a-ab9a-e73c6ee85cd6) + +- *auth* - The auth package includes functions to easily log into a Rocket chat server. Though it is used by embeddedchat's react and react-native client, developers can use this package for their own use cases. +- *api* - The api package includes functions that are all required to create a chat application using the Rocketchat server. It has functions like connect, login, sendMesage, pinMessage, starMessage, deleteMessage, triggerBlockAction, etc. to perform various operations. One can listen to new/updated message events by attaching event listeners using `addMessageListener`. There are other event listeners which could be added using `addMessageDeleteListener`, `addTypingStatusListener`, `addActionTriggeredListener`, `addUiInteractionListener`. +- *react* - The react package includes the react components to integrate EmbeddedChat. +- *react-native* - The react-native project aims at using EmbeddedChat in react native mobile apps. +- *htmembed* - With this project EmbeddedChat could be integrated into any web app by simply embedding an HTML snippet. + +### Storybook setup +![Screenshot from 2023-09-25 12-09-07](https://github.com/abhinavkrin/GSoC-RocketChat-2023/assets/15830206/5e7e6f05-6ead-4d3b-bb0e-22befacf3cf1) + + +### HTML Embedd Feature +Simple integrate embedded chat by pasting html snippet into your website +``` +
        + + +``` +HTML Embedded in action +![htmlembed](https://github.com/abhinavkrin/GSoC-RocketChat-2023/assets/15830206/8e803ef2-e4a0-48b9-a931-cb1e778d794d) + + +### Theming +We can customize EmbeddedChat by passing a custom theme object. Hence, it could take the look and feel of the app or website. We can also customize components by custom stylesheet or passing custom class names through the theme object. +![Customizing using theme](https://github.com/abhinavkrin/GSoC-RocketChat-2023/assets/15830206/96c191c5-a27f-4999-8fd4-96b0b5035493) + + +### Improving API +Our `api` package exposes the `EmbeddedChatApi` class. It comes with a bunch of APIs that could be used to login, send, pin, edit, star or delete message, attach listeners for realtime events. It has the following structure: +``` +class EmbeddedChatApi { + host: string; + rid: string; + rcClient: Rocketchat; + onMessageCallbacks: ((message: any) => void)[]; + onMessageDeleteCallbacks: ((messageId: string) => void)[]; + onTypingStatusCallbacks: ((users: string[]) => void)[]; + onActionTriggeredCallbacks: ((data: any) => void)[]; + onUiInteractionCallbacks: ((data: any) => void)[]; + typingUsers: string[]; + auth: RocketChatAuth; + constructor(host: string, rid: string, { getToken, saveToken, deleteToken, autoLogin }: IRocketChatAuthOptions); + setAuth(auth: RocketChatAuth): void; + getAuth(): RocketChatAuth; + getHost(): string; + googleSSOLogin(signIn: Function, acsCode: string): Promise; + login(userOrEmail: string, password: string, code: string): Promise<{ + status: string; + me: any; + } | undefined>; + logout(): Promise; + connect(): Promise; + addMessageListener(callback: (message: any) => void): Promise; + removeMessageListener(callback: (message: any) => void): Promise; + addMessageDeleteListener(callback: (messageId: string) => void): Promise; + removeMessageDeleteListener(callback: (messageId: string) => void): Promise; + addTypingStatusListener(callback: (users: string[]) => void): Promise; + removeTypingStatusListener(callback: (users: string[]) => void): Promise; + addActionTriggeredListener(callback: (data: any) => void): Promise; + removeActionTriggeredListener(callback: (data: any) => void): Promise; + addUiInteractionListener(callback: (data: any) => void): Promise; + removeUiInteractionListener(callback: (data: any) => void): Promise; + handleTypingEvent({ typingUser, isTyping }: { + typingUser: string; + isTyping: boolean; + }): void; + updateUserNameThroughSuggestion(userid: string): Promise; + updateUserUsername(userid: string, username: string): Promise; + channelInfo(): Promise; + close(): Promise; + getMessages(anonymousMode?: boolean, options?: { + query?: object | undefined; + field?: object | undefined; + }): Promise; + getThreadMessages(tmid: string): Promise; + getChannelRoles(): Promise; + sendTypingStatus(username: string, typing: boolean): Promise; + sendMessage(message: any, threadId: string): Promise; + deleteMessage(msgId: string): Promise; + updateMessage(msgId: string, text: string): Promise; + starMessage(mid: string): Promise; + unstarMessage(mid: string): Promise; + getStarredMessages(): Promise; + getPinnedMessages(): Promise; + pinMessage(mid: string): Promise; + unpinMessage(mid: string): Promise; + reactToMessage(emoji: string, messageId: string, shouldReact: string): Promise; + reportMessage(messageId: string, description: string): Promise; + findOrCreateInvite(): Promise; + sendAttachment(file: File, fileName: string, fileDescription?: string, threadId?: undefined): Promise; + me(): Promise; + getChannelMembers(): Promise; + getSearchMessages(text: string): Promise; + triggerBlockAction({ type, actionId, appId, rid, mid, viewId, container, ...rest }: any): Promise; + getCommandsList(): Promise; + execCommand({ command, params }: { + command: string; + params: string; + }): Promise; +} +``` +Demo playgroud for api package +![playground_api](https://github.com/abhinavkrin/GSoC-RocketChat-2023/assets/15830206/af0952dd-d9de-4ab4-9a12-baaea9b19c6f) + + +### Support for slash commands +We have worked on supporting slash commands along with any UI interactions they perform. + + +https://github.com/abhinavkrin/GSoC-RocketChat-2023/assets/15830206/b4c0dd2e-e77f-49d5-8eb5-f27b1e011817 + +### React Native +![react native](https://github.com/abhinavkrin/GSoC-RocketChat-2023/assets/15830206/2d7e84cc-747d-4a23-acef-8a79363c12bd) + + +### Improving Auth +We now support token-based authentication for EmbeddedChat. An app can pass the access token of the services that are configured in RocketChat to EmbeddedChat. It would be useful when the app does not want to show any additional login UI for EmbeddedChat. + + +https://github.com/abhinavkrin/GSoC-RocketChat-2023/assets/15830206/8c36b974-927f-4b12-bd62-2830763ec681 + + + +## 🚀 Contributions +### Pull requests to Embeddedchat +| PR ID | Title with Link | +| --- | ----------------------------------------------------- | +| 217 | [IMPROVE] Project-restructure [Link](https://github.com/RocketChat/EmbeddedChat/pull/217) | +| 218 | React bootstrap [Link](https://github.com/RocketChat/EmbeddedChat/pull/218) | +| 222 | Theming Foundation Set up [Link](https://github.com/RocketChat/EmbeddedChat/pull/222) | +| 223 | [NEW] Button replacement for fuselage [Link](https://github.com/RocketChat/EmbeddedChat/pull/223) | +| 224 | UI refactoring/box [Link](https://github.com/RocketChat/EmbeddedChat/pull/224) | +| 226 | Improve/auth + ActionButton/Icon/Input Component [Link](https://github.com/RocketChat/EmbeddedChat/pull/226) | +| 227 | New/added apis [Link](https://github.com/RocketChat/EmbeddedChat/pull/227) | +| 228 | New/slash commands+UI kit+theming [Link](https://github.com/RocketChat/EmbeddedChat/pull/228) | +| 229 | New/html embed [Link](https://github.com/RocketChat/EmbeddedChat/pull/229) | +| 230 | New/message component+avatar [Link](https://github.com/RocketChat/EmbeddedChat/pull/230) | +| 232 | React Native Project [Link](https://github.com/RocketChat/EmbeddedChat/pull/232) | +| 233 | Fix/new icon components [Link](https://github.com/RocketChat/EmbeddedChat/pull/233) | + +[View all PRs to EmbeddedChat](https://github.com/RocketChat/EmbeddedChat/pulls?q=is%3Apr+author%3Aabhinavkrin) + +### My overall contributions to RocketChat +Besides EmbeddedChat I also contributed to other RocketChat Projects [GSoC Community Hub](https://github.com/RocketChat/GSoC-Community-Hub/pulls?q=is%3Apr+author%3Aabhinavkrin), [RC4Community](https://github.com/RocketChat/RC4Community/pulls?q=is%3Apr+author%3Aabhinavkrin), [RC4Conferences](https://github.com/RocketChat/RC4Conferences/pulls?q=is%3Apr+author%3Aabhinavkrin). + +## 🎓 Mentor + +A big big thank you to my mentor for the guidance and support before and throughout GSoC. 🙏 +I learned beyond GSoC from him and am forever grateful to be mentored by him. +- **Sidharth Mohanty** - [GitHub](https://github.com/sidmohanty11), [LinkedIn](https://www.linkedin.com/in/sidmohanty11/), [Twitter](https://twitter.com/sidmohanty11) + +## 🔗 Links + +- Read my EmbeddedChat project proposal that got me accepted to GSoC [here](https://docs.google.com/document/d/1N6oySFsLxA9fSooTp8pHlCjnJwzVYfC8Cbems-z_uMY/edit?usp=sharing). + +- My GSoC Presentation can be found [here](https://docs.google.com/presentation/d/1be7EnIjVjPN1vx11I06GeNqkDlWuynKZRKRYX9_ePOA/edit?usp=sharing). + +- Watch the above presentation in video - [here](https://www.youtube.com/watch?v=Y5bbkxRyu4o) ! + +## ❤️ Support +Learned something new today? Reciprocate the love. ⭐ this repo for good karma. + +## 💬 Connect With Me +Want to discuss about GSoC / Rocket.Chat / Open-source ? Let's connect! +
        + +| **Student** | Abhinav Kumar | +|:--------------------|:-------------------| +| **Organization** | [Rocket.Chat](https://rocket.chat/) | +| **Project** | [EmbeddedChat 2023](https://summerofcode.withgoogle.com/programs/2023/projects/sUXGt89N) | +| **GitHub** | [@abhinavkrin](https://github.com/abhinavkrin) | +| **LinkedIn** | [abhinavkrin](https://www.linkedin.com/in/abhinavkrin) | +| **Twitter** | [abhinavkr_in](https://www.twitter.com/abhinavkr_in) | +| **Website** | [avitechlab.com](https://avitechlab.com) | +| **Email** | abhinav@avitechlab.com | +| **Rocket.Chat** | [abhinav.kumar30](https://open.rocket.chat/direct/abhinav.kumar30) | + +
        \ No newline at end of file diff --git a/packages/docs/blog/EmbeddedChat-2024.md b/packages/docs/blog/EmbeddedChat-2024.md new file mode 100644 index 000000000..60a244aaf --- /dev/null +++ b/packages/docs/blog/EmbeddedChat-2024.md @@ -0,0 +1,204 @@ +# Google Summer of Code 2024, RocketChat + +
        + google-summer-of-code +
        + +## 📘 Introduction + +During my GSoC period, I worked on EmbeddedChat, a lightweight chat widget that uses the RocketChat engine's REST and real-time APIs to deliver comprehensive chat features, customizable options, and attractive theming capabilities. + +## ⭐ Project Abstract + +The goal of this project was to develop a ready-to-use chat solution that could be integrated into any website, web app, or mobile app. In EmbeddedChat 2024, my focus was on enhancing the UI by making components modular and providing pre-built themes. The project also sought to ensure security through HTTP-Only cookie-based authentication, using RC-app as a bridge. I also worked on improving configuration capabilities, enabling the instance to be configurable through RC-app, and developed a real-time layout editor with drag-and-drop features, among other enhancements. + +## 🚢 Deliverables + +- Redesign Embedded Chat for consistent CSS, logic separation, and monorepo component management. +- Upgrade theming system with prebuilt themes and enhanced customization. +- Boost security with HTTP-Only cookie authentication in Embedded Chat via RC-app. +- Enable admins to easily adjust all Embedded Chat settings in Rocket.Chat Workspace. +- Offer a drag-and-drop editor for admin UI configuration without coding. +- Enhance UI-Kit integration. +- Fix bugs and improve documentation. + +## 📹 Showcase + +Explore a demonstration of the latest features and improvements. See firsthand how the updates enhance functionality and user experience. + +### Sneak Peek + +Here's a brief preview of EmbeddedChat integrated into a website, designed to demonstrate the functionality of RC apps without the need for local setup. + +

        + EC Integration +

        + +### Code Refactor: Separation of Concerns + +Key updates to the EmbeddedChat repository include: + +1. **Separation of Components from Views**: Standalone components have been moved to a `ui-element` monorepo with its own Storybook. + +2. **CSS Styles Separation**: CSS styles are now in a `component.styles.js` file, providing a clear separation from core logic. + +3. **Markup and UI-Kit Separation**: Markups and the UI Kit are organized into a separate library (monorepo). + +

        + CSS styles in component.styles.js +
        + CSS styles are now in `component.styles.js` +

        + +

        + Separation into monorepo +
        + Separation into monorepo for `ui-elements`, `markups`, and `ui-kit` +

        + +The video below illustrates the development, usage, and setup of the ui-elements monorepo, and it also shows that EmbeddedChat functions as expected following this separation: + +[UI-Elements Storybook](https://github.com/RocketChat/EmbeddedChat/assets/78961432/a399defd-cae7-495a-9f88-11f4b518df00) + +### UI Theming Upgrade: Prebuilt Themes and Style Variants + +The theming system has been enhanced with several prebuilt themes, ensuring a consistent use of theme colors across the repository. This replaces the previously inconsistent and varied color schemes. + +Once the Storybook is running, you can explore and experiment with various designs within the `Design Variants` folder, including `RCVariant`, `Bubble Variant`, and `Modern Variant`. These options enable you to either use the prebuilt themes or draw inspiration to create your own. Below are images and videos demonstrating the different variants; note that the videos also highlight fixes introduced with these PRs: + +[RC Variant](https://github.com/RocketChat/EmbeddedChat/assets/78961432/d9fea331-fa32-44df-8322-36c9fb2baa6c) + +[Bubble Variant](https://github.com/RocketChat/EmbeddedChat/assets/78961432/06d61e66-8f17-423b-a339-1728323661b3) + +

        + Automatically generated colors in usernames in dark mode + popup instead of sidebar +
        + Automatically generated colors in usernames in dark mode + popup instead of sidebar +

        + +

        + Automatically generated colors in usernames in light mode + popup instead of sidebar +
        + Automatically generated colors in usernames in light mode + popup instead of sidebar +

        + +The theming system follows a convention similar to the ShadCN theming system. Users can generate themes from the ShadCN website or other sites that follow the same convention, then use the `packages/react/tools/theme-generator.js` to convert the theme into a supported format and apply it via the theme prop. + +A demonstration video is available here: + +[Theme Converter](https://github.com/user-attachments/assets/9078260f-1933-4be6-b019-61e9ac54be7d) + +For further details on theming, you can visit the [documentation](https://github.com/RocketChat/EmbeddedChat/blob/develop/packages/docs/theming.md) or check out the [technical guide](https://github.com/RocketChat/EmbeddedChat/blob/develop/packages/docs/theming_technical.md) for insights on how theming is implemented in the repository. + +### Enhanced Authentication with HTTP-Only Cookies + +EmbeddedChat authentication security has been enhanced through the use of HTTP-Only cookies for re-authentication. This approach adds an extra layer of protection by preventing access via inline JavaScript, thereby reducing the risk of potential attacks. To use this storage method, the EmbeddedChat RC app must be installed on the RC server, which acts as a bridge for saving and retrieving tokens. Once installed, you can test the feature using the Storybook `SecureAuth` option or by setting the `secure: true` prop during EmbeddedChat setup. + +A video demonstration is available here: + +[Http-Only-Cookie Auth](https://github.com/RocketChat/EmbeddedChat/assets/78961432/24fdf4bf-34b5-4e66-b045-802d6fc428dd) + +For more information on authentication, refer to the [authentication guide](https://github.com/RocketChat/EmbeddedChat/blob/develop/packages/docs/authentication.md). + +### UI-Kit Improvement + +I enhanced the UI-Kit integration within EmbeddedChat by migrating it to a monorepo as a separate library. Key improvements include: + +- **Modularized Structure**: Reorganized the UI-Kit folder structure for improved modularity. +- **Action Processing**: Added state and view update logic, along with parsing methods. +- **Contextual Bar Support**: Implemented support for the contextual bar. +- **Component Enhancements**: Added support for static select and multi-select elements with custom components and new component stories. + +Testing was conducted across three distinct RC apps, with video demonstrations provided: + +1. **Reminder RC App**: + +[Reminder App UI-Kit Test](https://github.com/RocketChat/EmbeddedChat/assets/78961432/eeb17fd6-68f2-4113-8ef1-dc0faf32ca05) + +2. **Notion RC App**: + +[Notion App UI-Kit Test](https://github.com/RocketChat/EmbeddedChat/assets/78961432/71d9baa1-a54d-4077-9fbd-f7e005742f77) + +3. **News Aggregation App** (tested multi-select functionality): + +[News App UI-Kit Test](https://github.com/RocketChat/EmbeddedChat/assets/78961432/d3f611b0-3205-483f-b00a-9800893b98fb) + +### EmbeddedChat Remote Configurability + +I have added support for remote configuration of EmbeddedChat props, including themes, via the EmbeddedChat RC App. The app can also validate CSS dimensions provided in the settings. To try this feature, set up the RC app in your Rocket.Chat workspace and use the Storybook option `WithRemoteOpt` or pass the `remoteOpt: true` prop during EmbeddedChat setup. + +The following videos demonstrate its usage: + +[Remotely Configure EC](https://github.com/RocketChat/EmbeddedChat/assets/78961432/8f2e5027-2a8d-4723-8c2b-33ae7cbf9336) + +[CSS Validation Test](https://github.com/RocketChat/EmbeddedChat/assets/78961432/2eaa4e50-ad38-4ac8-8cc7-d8eebd875f26) + +To set up the EmbeddedChat RC App, follow this guide: [EmbeddedChat RC App Setup](https://github.com/RocketChat/EmbeddedChat/blob/develop/packages/docs/ec_rc_setup.md). + +### Layout Editor + +I also worked on a new sub-project called `layout-editor` during GSoC to enhance EmbeddedChat customizability. This tool enables users to customize the EmbeddedChat layout in real-time with drag-and-drop features, color configuration, and more. Once satisfied with their design, users can click the `Generate Theme` button to create a theme object, which can be applied by passing it into the theme prop during EmbeddedChat setup or by configuring it remotely if EmbeddedChat RC App is properly set up. + +A video demonstration showcases the features: + +[Layout Editor Demo](https://github.com/user-attachments/assets/3f846616-bf33-49ca-95c7-3a6e98685476) + +To learn more about the layout editor, visit the guide: [Layout Editor Guide](https://github.com/RocketChat/EmbeddedChat/blob/develop/packages/docs/layout_editor.md). + +## 🚀 Contributions + +### GSoC Contributions to EmbeddedChat + +| PR ID | Title | +| ----- | -------------------------------------------------------------------------------------------------------------------------- | +| 576 | Refactor, Restructure, and Fix Bugs ([#576](https://github.com/RocketChat/EmbeddedChat/pull/576)) | +| 579 | UI Theming Upgrade and RC-like Redesign ([#579](https://github.com/RocketChat/EmbeddedChat/pull/579)) | +| 581 | Add Curved Bubble Variant Styles ([#581](https://github.com/RocketChat/EmbeddedChat/pull/581)) | +| 584 | More Customization: Popup/Sidebar and Username Color Options ([#584](https://github.com/RocketChat/EmbeddedChat/pull/584)) | +| 589 | Fix ChatInput Bugs, Improve Experience ([#589](https://github.com/RocketChat/EmbeddedChat/pull/589)) | +| 590 | Enhance Security with HTTP-Only Cookies ([#590](https://github.com/RocketChat/EmbeddedChat/pull/590)) | +| 591 | Remove Unused Files ([#591](https://github.com/RocketChat/EmbeddedChat/pull/591)) | +| 593 | UI-Kit Integration and Action Processing ([#593](https://github.com/RocketChat/EmbeddedChat/pull/593)) | +| 594 | Auto Login Improvements and Loading Screens ([#594](https://github.com/RocketChat/EmbeddedChat/pull/594)) | +| 599 | Remote EmbeddedChat Settings Configuration ([#599](https://github.com/RocketChat/EmbeddedChat/pull/599)) | +| 601 | Add CSS Dimension Validation ([#601](https://github.com/RocketChat/EmbeddedChat/pull/601)) | +| 602 | Documentation Improvements ([#602](https://github.com/RocketChat/EmbeddedChat/pull/602)) | +| 604 | Separate Component Monorepo (UI-Elements) ([#604](https://github.com/RocketChat/EmbeddedChat/pull/604)) | +| 606 | Reduce Package Size of Component Monorepo ([#606](https://github.com/RocketChat/EmbeddedChat/pull/606)) | +| 607 | Add Real-Time Layout Editor with Drag-and-Drop ([#607](https://github.com/RocketChat/EmbeddedChat/pull/607)) | + +[See all PRs for EmbeddedChat](https://github.com/RocketChat/EmbeddedChat/pulls?q=is%3Apr+author%3ASpiral-Memory) + +In addition to working on EmbeddedChat, I've made contributions to several other RocketChat projects. Check out my pull requests for [Apps.Notion](https://github.com/RocketChat/Apps.Notion/pulls?q=+is%3Apr+author%3ASpiral-Memory), [Rocket.Chat](https://github.com/RocketChat/Rocket.Chat/pulls?q=+is%3Apr+author%3ASpiral-Memory), and [Fuselage](https://github.com/RocketChat/fuselage/pulls?q=+is%3Apr+author%3ASpiral-Memory). + +## 🎓 A Special Thanks to My Mentor + +Thank you so much to Sidharth Mohanty for being an amazing mentor during GSoC. He’s been incredibly receptive to ideas, always available to help, and provides great guidance during our meetups. His encouragement to explore new areas has made this experience really rewarding. I’ve learned a lot from him and truly appreciate all his support. + +You can connect with him on [GitHub](https://github.com/sidmohanty11), [LinkedIn](https://www.linkedin.com/in/sidmohanty11/), and [Twitter](https://twitter.com/sidmohanty11). + +## 🔗 Links + +Download and read my EmbeddedChat project proposal, which led to my GSoC acceptance, [here](https://github.com/Spiral-Memory/GSoC-Proposal/blob/main/Embedded%20Chat%202024%20GSoC%20Proposal%20%5BWinning%5D.pdf). + +## ❤️ Support + +Enjoyed what you learned today? Show your appreciation by starring this repo. ⭐ + +## 💬 Let's Connect + +Interested in chatting about GSoC, Rocket.Chat, or open-source adventures? I'm all ears! + +| **Role** | **Zishan Ahmad – GSoC Participant** | +| :----------------- | :--------------------------------------------------------------------------------------- | +| **Affiliation** | [Rocket.Chat](https://rocket.chat/) | +| **Project** | [EmbeddedChat 2024](https://summerofcode.withgoogle.com/programs/2024/projects/eVxOuKT2) | +| **GitHub** | [@Spiral-Memory](https://github.com/Spiral-Memory) | +| **LinkedIn** | [@zishanahmad72](https://www.linkedin.com/in/zishanahmad72/) | +| **Creative Space** | [spiral-memory.netlify.app](https://spiral-memory.netlify.app/) | +| **Email** | [zishan.barun@gmail.com](mailto:zishan.barun@gmail.com) | +| **Rocket.Chat** | [zishan.ahmad](https://open.rocket.chat/direct/zishan.ahmad) | + +## 📌 Closing Notes + +This repository contains the final report and serves as a guide for future contributors to the EmbeddedChat project, which was developed and improved during Google Summer of Code (GSoC) 2024. The final report details the solutions implemented during the project, while the guide provides insights and instructions for new contributors to effectively engage with and build upon the project's foundation. \ No newline at end of file diff --git a/packages/docs/embeddedchat_dev.md b/packages/docs/docs/Development/dev_launch.md similarity index 79% rename from packages/docs/embeddedchat_dev.md rename to packages/docs/docs/Development/dev_launch.md index 445039da9..6627ae1ee 100644 --- a/packages/docs/embeddedchat_dev.md +++ b/packages/docs/docs/Development/dev_launch.md @@ -1,23 +1,10 @@ -

        Embedded Chat: A staple in excellent customer service

        - -![image](https://github.com/RocketChat/EmbeddedChat/assets/78961432/574be6b4-d2f7-4bea-a7b1-4c6e840d8e22) - -An easy-to-use, full-stack component (React.js + backend behaviors) for embedding Rocket.Chat into your web app. - -_EmbeddedChat is a full-stack React component designed to integrate Rocket.Chat into your web app. It is fully configurable, extensible, and flexible, offering various preconfigured designs, multiple login options, and more. The component is tightly integrated with the Rocket.Chat server using the Rocket.Chat SDK, and its entire UI is built using custom components._ +--- +title: Dev Launch +--- + ![ec-demo-image](https://github.com/RocketChat/EmbeddedChat/assets/78961432/b85c7b8a-65e2-4a90-a843-f4072c942ac0) -
        - - - -
        - -## Installation and Usage - -Installation and usage documentation could be found here [EmbeddedChat installation and usage](embeddedchat_setup.md) - ## Development ### Local Setup diff --git a/packages/docs/theming_technical.md b/packages/docs/docs/Development/theming_technical.md similarity index 96% rename from packages/docs/theming_technical.md rename to packages/docs/docs/Development/theming_technical.md index 20a608c1f..a2d37a8d3 100644 --- a/packages/docs/theming_technical.md +++ b/packages/docs/docs/Development/theming_technical.md @@ -1,11 +1,10 @@ -# Embedded Chat: A Staple in Excellent Customer Service - -An easy-to-use, full-stack component (React.js + backend behaviors) for embedding Rocket.Chat into your web app. +--- +title: Theme insights +--- +# Technical Details on Theming ![ec-demo-image](https://github.com/RocketChat/EmbeddedChat/assets/78961432/b85c7b8a-65e2-4a90-a843-f4072c942ac0) -## Technical Details on Theming - This guide dives into the technical aspects of how themes, styles, and configurations are implemented within the application. ## Understanding the Theming Approach diff --git a/packages/docs/ui-elements.md b/packages/docs/docs/Development/ui-elements.md similarity index 86% rename from packages/docs/ui-elements.md rename to packages/docs/docs/Development/ui-elements.md index cdb6c8a4b..ea9cc1ead 100644 --- a/packages/docs/ui-elements.md +++ b/packages/docs/docs/Development/ui-elements.md @@ -1,12 +1,11 @@ -# Embedded Chat: A Staple in Excellent Customer Service - -The Embedded Chat component is an easy-to-use, full-stack solution for integrating Rocket.Chat into your web application. It combines React.js with backend behaviors for a seamless chat experience. +--- +title: UI-Elements +--- +# UI-Elements ![Embedded Chat Demo](https://github.com/RocketChat/EmbeddedChat/assets/78961432/b85c7b8a-65e2-4a90-a843-f4072c942ac0) -## UI Elements - -This component is part of a monorepo, specifically within the `packages/react` project, which houses the main EmbeddedChat Component. +This component is part of a monorepo, specifically within the `packages/ui-elements` project, which houses the main EmbeddedChat Component. ![image](https://github.com/user-attachments/assets/2fd76929-ce43-4bb3-8ea8-3a7318468923) @@ -15,7 +14,7 @@ This component is part of a monorepo, specifically within the `packages/react` p To develop and view the components: 1. Clone the repository. -2. Navigate to `packages/layout_editor`. +2. Navigate to `packages/ui-elements`. 3. Run the following commands: ```bash @@ -92,4 +91,4 @@ background-color: ${mode === 'light' : lighten(colors.background, 1)}; ``` -This hook allows you to dynamically switch modes or themes as needed. The `theme` object must adhere to a specific format, as outlined in the EmbeddedChat `react` project [Readme.md](theming.md). +This hook allows you to dynamically switch modes or themes as needed. The `theme` object must adhere to a specific format, as outlined in the EmbeddedChat `react` project [Readme.md](../Usage/theming.md). diff --git a/packages/docs/authentication.md b/packages/docs/docs/Usage/authentication.md similarity index 96% rename from packages/docs/authentication.md rename to packages/docs/docs/Usage/authentication.md index 7bbba4a02..95c3c3e7b 100644 --- a/packages/docs/authentication.md +++ b/packages/docs/docs/Usage/authentication.md @@ -1,10 +1,10 @@ -# Embedded Chat: A staple in excellent customer service - -An easy-to-use, full-stack component (React.js + backend behaviors) for embedding Rocket.Chat into your web app. +--- +title: Authentication Guide +--- +# Authentication Guide ![ec-demo-image](https://github.com/RocketChat/EmbeddedChat/assets/78961432/b85c7b8a-65e2-4a90-a843-f4072c942ac0) -## Authentication Guide ### Various methods for enabling login functionality @@ -72,7 +72,7 @@ auth: { This method leverages the OAuth configuration established in Rocket.Chat, ensuring a streamlined authentication process. -For instructions on installing the EmbeddedChat RC app on your Rocket.Chat server, refer to the [EmbeddedChat RC App installation guide](ec_rc_setup.md). +For instructions on installing the EmbeddedChat RC app on your Rocket.Chat server, refer to the [EmbeddedChat RC App installation guide](../Usage/ec_rc_setup.md). Certainly! Here are the instructions to enable OAuth login in the EmbeddedChat RC app, without using sub-bullets: diff --git a/packages/docs/docs/Usage/ec_rc_setup.md b/packages/docs/docs/Usage/ec_rc_setup.md new file mode 100644 index 000000000..35a3ae137 --- /dev/null +++ b/packages/docs/docs/Usage/ec_rc_setup.md @@ -0,0 +1,35 @@ +--- +title: Quick Control Guide +--- + +# Quick Control Guide + +![ec-demo-image](https://github.com/RocketChat/EmbeddedChat/assets/78961432/b85c7b8a-65e2-4a90-a843-f4072c942ac0) + +EmbeddedChat provides 'Quick Control' to simplify remote configuration of its settings, including themes, via the RC app, which can be installed in your Rocket.Chat workspace. It also aids in implementing secure login by storing the resume token as an HTTP-only cookie and integrating Rocket.Chat's OAuth login capabilities. + +### Installation + +To install this application, follow these steps: + +1. Clone the repository to your local machine: + + ``` + git clone https://github.com/RocketChat/EmbeddedChat.git + ``` + +2. Navigate to the `packages/rc-app` directory. + +3. Open a command prompt and execute the following command: + + ``` + rc-apps deploy --url host_url --username your_username --password your_password + ``` + +Ensure to substitute `host_url`, `your_username`, and `your_password` with your Rocket.Chat server's URL, username, and password respectively. + +Note: A Rocket.Chat server setup is required. If you haven't set up one yet, refer to this [link](https://developer.rocket.chat/open-source-projects/server/server-environment-setup) for instructions. + +### Usage + +Once the Quick Control RC app is installed, navigate to App Settings, select EmbeddedChat, and you can configure EmbeddedChat properties remotely and access the other mentioned features. diff --git a/packages/docs/embeddedchat_setup.md b/packages/docs/docs/Usage/embeddedchat_setup.md similarity index 97% rename from packages/docs/embeddedchat_setup.md rename to packages/docs/docs/Usage/embeddedchat_setup.md index 27794abb2..3300e62ad 100644 --- a/packages/docs/embeddedchat_setup.md +++ b/packages/docs/docs/Usage/embeddedchat_setup.md @@ -1,6 +1,8 @@ -# Embedded Chat: A staple in excellent customer service +--- +title: Installation +--- -An easy-to-use, full-stack component (React.js + backend behaviors) for embedding Rocket.Chat into your web app. +# Integrate EmbeddedChat to your React application ![ec-demo-image](https://github.com/RocketChat/EmbeddedChat/assets/78961432/b85c7b8a-65e2-4a90-a843-f4072c942ac0) diff --git a/packages/docs/layout_editor.md b/packages/docs/docs/Usage/layout_editor.md similarity index 89% rename from packages/docs/layout_editor.md rename to packages/docs/docs/Usage/layout_editor.md index 5a587f0a5..bc3fbdac9 100644 --- a/packages/docs/layout_editor.md +++ b/packages/docs/docs/Usage/layout_editor.md @@ -1,11 +1,11 @@ -# Embedded Chat: A Staple in Excellent Customer Service +--- +title: Layout Editor +--- -An easy-to-use, full-stack component (React.js + backend behaviors) for embedding Rocket.Chat into your web app. +# Layout Editor ![ec-demo-image](https://github.com/RocketChat/EmbeddedChat/assets/78961432/b85c7b8a-65e2-4a90-a843-f4072c942ac0) -## Layout Editor - ![image](https://github.com/user-attachments/assets/a42a66af-d8c0-4d3a-aa1a-71f91b07310e) We offer a layout editor that lets you customize the design and appearance of the EmbeddedChat component in real time. Features include: @@ -54,5 +54,5 @@ yarn preview # Preview build ### Additional Resources -- For installation instructions of the EmbeddedChat RC App, visit [this guide](ec_rc_setup.md). +- For installation instructions of the EmbeddedChat RC App, visit [this guide](../Usage/ec_rc_setup.md). - For detailed prop usage, refer to [this guide](embeddedchat_setup.md). diff --git a/packages/docs/theming.md b/packages/docs/docs/Usage/theming.md similarity index 97% rename from packages/docs/theming.md rename to packages/docs/docs/Usage/theming.md index a4e3a4fd9..147f489e5 100644 --- a/packages/docs/theming.md +++ b/packages/docs/docs/Usage/theming.md @@ -1,11 +1,11 @@ -# Embedded Chat: A Staple in Excellent Customer Service +--- +title: Theming Guide +--- -An easy-to-use, full-stack component (React.js + backend behaviors) for embedding Rocket.Chat into your web app. +# Theming ![ec-demo-image](https://github.com/RocketChat/EmbeddedChat/assets/78961432/b85c7b8a-65e2-4a90-a843-f4072c942ac0) -## Theming Guide - EmbeddedChat supports various styling, customization options, and different variants. This guide will explore these aspects in depth. ### How to Theme EmbeddedChat @@ -319,6 +319,6 @@ These components can now appear as popups instead of being displayed in the side Feel free to explore and customize these components according to your project's needs. If you have any questions or need further assistance, please don't hesitate to ask. -For those interested in delving into the technical implementation details, please [click here](theming_technical.md). +For those interested in delving into the technical implementation details, please [click here](../Development/theming_technical.md). Happy theming! diff --git a/packages/docs/docs/introduction.md b/packages/docs/docs/introduction.md new file mode 100644 index 000000000..4f5dccfb3 --- /dev/null +++ b/packages/docs/docs/introduction.md @@ -0,0 +1,27 @@ +--- +title: Introduction +--- + + + +![image](https://github.com/RocketChat/EmbeddedChat/assets/78961432/574be6b4-d2f7-4bea-a7b1-4c6e840d8e22) + +An easy-to-use, full-stack component (React.js + backend behaviors) for embedding Rocket.Chat into your web app. + +_EmbeddedChat is a full-stack React component designed to integrate Rocket.Chat into your web app. It is fully configurable, extensible, and flexible, offering various preconfigured designs, multiple login options, and more. The component is tightly integrated with the Rocket.Chat server using the Rocket.Chat SDK, and its entire UI is built using custom components._ + +![ec-demo-image](https://github.com/RocketChat/EmbeddedChat/assets/78961432/b85c7b8a-65e2-4a90-a843-f4072c942ac0) + +
        + + + +
        + +## Installation and usage + +Set up and start using the product in no time. Dive into our installation and usage docs [here](Usage/embeddedchat_setup.md) + +## Development + +Ready to build something amazing? Start your journey with our development guide [here](Development/dev_launch.md) diff --git a/packages/docs/docusaurus.config.js b/packages/docs/docusaurus.config.js new file mode 100644 index 000000000..f9073bfa8 --- /dev/null +++ b/packages/docs/docusaurus.config.js @@ -0,0 +1,133 @@ +// @ts-check +// `@type` JSDoc annotations allow editor autocompletion and type checking +// (when paired with `@ts-check`). +// There are various equivalent ways to declare your Docusaurus config. +// See: https://docusaurus.io/docs/api/docusaurus-config + +import { themes as prismThemes } from "prism-react-renderer"; + +/** @type {import('@docusaurus/types').Config} */ +const config = { + title: "Embedded Chat", + tagline: + "An easy-to-use, full-stack component (React.js + backend behaviors) for embedding Rocket.Chat into your web app.", + favicon: "img/favicon.ico", + + // Set the production url of your site here + url: "https://rocketchat.github.io/", + // Set the // pathname under which your site is served + // For GitHub pages deployment, it is often '//' + baseUrl: "/EmbeddedChat/docs/", + + // GitHub pages deployment config. + // If you aren't using GitHub pages, you don't need these. + organizationName: "RocketChat", // Usually your GitHub org/user name. + projectName: "EmbeddedChat", // Usually your repo name. + + onBrokenLinks: "throw", + onBrokenMarkdownLinks: "warn", + + // Even if you don't use internationalization, you can use this field to set + // useful metadata like html lang. For example, if your site is Chinese, you + // may want to replace "en" with "zh-Hans". + i18n: { + defaultLocale: "en", + locales: ["en"], + }, + + presets: [ + [ + "classic", + /** @type {import('@docusaurus/preset-classic').Options} */ + ({ + docs: { + sidebarPath: "./sidebars.js", + }, + blog: { + showReadingTime: true, + feedOptions: { + type: ["rss", "atom"], + xslt: true, + }, + }, + theme: { + customCss: "./src/css/custom.css", + }, + }), + ], + ], + + themeConfig: + /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ + ({ + // Replace with your project's social card + image: "img/docusaurus-social-card.jpg", + navbar: { + title: "Embedded Chat", + logo: { + alt: "My Site Logo", + src: "img/EC-Logo.png", + }, + items: [ + { + type: "docSidebar", + sidebarId: "tutorialSidebar", + position: "left", + label: "Tutorial", + }, + { to: "/blog", label: "Blogs", position: "left" }, + { + href: "https://github.com/RocketChat/EmbeddedChat", + label: "GitHub", + position: "right", + }, + ], + }, + footer: { + style: "dark", + links: [ + { + title: "Docs", + items: [ + { + label: "Tutorial", + to: "/docs/introduction", + }, + ], + }, + { + title: "Community", + items: [ + { + label: "Rocket.Chat", + href: "https://open.rocket.chat/", + }, + { + label: "Twitter", + href: "https://x.com/rocketchat", + }, + ], + }, + { + title: "More", + items: [ + { + label: "Blogs", + to: "/blog", + }, + { + label: "GitHub", + href: "https://github.com/RocketChat/EmbeddedChat", + }, + ], + }, + ], + }, + prism: { + theme: prismThemes.github, + darkTheme: prismThemes.dracula, + }, + }), +}; + +export default config; diff --git a/packages/docs/ec_rc_setup.md b/packages/docs/ec_rc_setup.md deleted file mode 100644 index 51523fa54..000000000 --- a/packages/docs/ec_rc_setup.md +++ /dev/null @@ -1,31 +0,0 @@ -# Embedded Chat: A staple in excellent customer service - -An easy-to-use, full-stack component (React.js + backend behaviors) for embedding Rocket.Chat into your web app. - -![ec-demo-image](https://github.com/RocketChat/EmbeddedChat/assets/78961432/b85c7b8a-65e2-4a90-a843-f4072c942ac0) - -## EmbeddedChat RC App - -This monorepo hosts an RC app designed to enhance EmbeddedChat functionalities. It facilitates remote configuration of EmbeddedChat settings, implements secure login (storing the resume token as an HTTP-only cookie), and help integrates Rocket.Chat OAuth login capabilities. - -### Installation - -To install this application, follow these steps: - -1. Clone the repository to your local machine: - - ``` - git clone https://github.com/RocketChat/EmbeddedChat.git - ``` - -2. Navigate to the `packages/rc-app` directory. - -3. Open a command prompt and execute the following command: - - ``` - rc-apps deploy --url host_url --username your_username --password your_password - ``` - -Ensure to substitute `host_url`, `your_username`, and `your_password` with your Rocket.Chat server's URL, username, and password respectively. - -Note: A Rocket.Chat server setup is required. If you haven't set up one yet, refer to this [link](https://developer.rocket.chat/open-source-projects/server/server-environment-setup) for instructions. \ No newline at end of file diff --git a/packages/docs/package.json b/packages/docs/package.json new file mode 100644 index 000000000..f14a34ce8 --- /dev/null +++ b/packages/docs/package.json @@ -0,0 +1,44 @@ +{ + "name": "docs", + "version": "0.0.0", + "private": true, + "scripts": { + "docusaurus": "docusaurus", + "dev": "docusaurus start", + "build": "docusaurus build", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy", + "clear": "docusaurus clear", + "serve": "docusaurus serve", + "write-translations": "docusaurus write-translations", + "write-heading-ids": "docusaurus write-heading-ids" + }, + "dependencies": { + "@docusaurus/core": "3.5.1", + "@docusaurus/preset-classic": "3.5.1", + "@mdx-js/react": "^3.0.0", + "clsx": "^2.0.0", + "prism-react-renderer": "^2.3.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "3.5.1", + "@docusaurus/types": "3.5.1" + }, + "browserslist": { + "production": [ + ">0.5%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 3 chrome version", + "last 3 firefox version", + "last 5 safari version" + ] + }, + "engines": { + "node": ">=18.0" + } +} diff --git a/packages/docs/sidebars.js b/packages/docs/sidebars.js new file mode 100644 index 000000000..1451557e6 --- /dev/null +++ b/packages/docs/sidebars.js @@ -0,0 +1,46 @@ +/** + * Creating a sidebar enables you to: + - create an ordered group of docs + - render a sidebar for each doc of that group + - provide next/previous navigation + + The sidebars can be generated from the filesystem, or explicitly defined here. + + Create as many sidebars as you want. + */ + +// @ts-check + +/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ +const sidebars = { + // By default, Docusaurus generates a sidebar from the docs folder structure + // tutorialSidebar: [{type: 'autogenerated', dirName: '.'}], + + // But you can create a sidebar manually + + tutorialSidebar: [ + "introduction", + { + type: 'category', + label: 'Development', + items: [ + 'Development/dev_launch', + 'Development/ui-elements', + 'Development/theming_technical', + ], + }, + { + type: 'category', + label: 'Usage', + items: [ + 'Usage/embeddedchat_setup', + 'Usage/layout_editor', + 'Usage/theming', + 'Usage/authentication', + 'Usage/ec_rc_setup', + ], + }, + ], +}; + +export default sidebars; diff --git a/packages/docs/src/assets/EC-Logo.png b/packages/docs/src/assets/EC-Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..03f189175adb6d134af29aa88d9bc0a300fa6d99 GIT binary patch literal 157851 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 WDZUSkA_0wk0MK>=ReHxF`2PT2T6C=d literal 0 HcmV?d00001 diff --git a/packages/docs/src/assets/easy.png b/packages/docs/src/assets/easy.png new file mode 100644 index 0000000000000000000000000000000000000000..350cd62b7a0115bf1ae6388a5045f2856801d5ec GIT binary patch literal 18625 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 HDWM4fdYVAS literal 0 HcmV?d00001 diff --git a/packages/docs/src/assets/pencil.png b/packages/docs/src/assets/pencil.png new file mode 100644 index 0000000000000000000000000000000000000000..ee41dcd5c1c8b04c231b0a9070ad8a5ad958d831 GIT binary patch literal 9796 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 + Embedded was developed to easily integrate Rocket.Chat with your React + Application. + + ), + }, + { + title: "SDK Driven UI", + src: App, + description: ( + <> + The component uses the Rocket.Chat SDK for tight integration and + features a fully custom-built UI, ensuring a cohesive and integrated + user experience. + + ), + }, + { + title: "Customization", + src: Pencil, + description: ( + <> + Tailor the chat window's appearance and functionality with pre-built + designs, login options, and extensibility features. + + ), + }, +]; + +function Feature({ src, title, description }) { + return ( +

        + ); +} + +export default function HomepageFeatures() { + return ( +
        +
        +
        + {FeatureList.map((props, idx) => ( + + ))} +
        +
        +
        + ); +} diff --git a/packages/docs/src/components/HomepageFeatures/styles.module.css b/packages/docs/src/components/HomepageFeatures/styles.module.css new file mode 100644 index 000000000..b248eb2e5 --- /dev/null +++ b/packages/docs/src/components/HomepageFeatures/styles.module.css @@ -0,0 +1,11 @@ +.features { + display: flex; + align-items: center; + padding: 2rem 0; + width: 100%; +} + +.featureSvg { + height: 200px; + width: 200px; +} diff --git a/packages/docs/src/css/custom.css b/packages/docs/src/css/custom.css new file mode 100644 index 000000000..8fa55b551 --- /dev/null +++ b/packages/docs/src/css/custom.css @@ -0,0 +1,30 @@ +/** + * Any CSS included here will be global. The classic template + * bundles Infima by default. Infima is a CSS framework designed to + * work well for content-centric websites. + */ + +/* You can override the default Infima variables here. */ +:root { + --ifm-color-primary: #1f3e05; + --ifm-color-primary-dark: #29784c; + --ifm-color-primary-darker: #277148; + --ifm-color-primary-darkest: #205d3b; + --ifm-color-primary-light: #33925d; + --ifm-color-primary-lighter: #359962; + --ifm-color-primary-lightest: #3cad6e; + --ifm-code-font-size: 95%; + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); +} + +/* For readability concerns, you should choose a lighter palette in dark mode. */ +[data-theme='dark'] { + --ifm-color-primary: #a0c680; + --ifm-color-primary-dark: #21af90; + --ifm-color-primary-darker: #1fa588; + --ifm-color-primary-darkest: #1a8870; + --ifm-color-primary-light: #29d5b0; + --ifm-color-primary-lighter: #32d8b4; + --ifm-color-primary-lightest: #4fddbf; + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); +} diff --git a/packages/docs/src/pages/index.js b/packages/docs/src/pages/index.js new file mode 100644 index 000000000..ecda18b9e --- /dev/null +++ b/packages/docs/src/pages/index.js @@ -0,0 +1,48 @@ +import clsx from "clsx"; +import Link from "@docusaurus/Link"; +import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; +import Layout from "@theme/Layout"; +import CodeBlock from "@theme/CodeBlock"; +import HomepageFeatures from "@site/src/components/HomepageFeatures"; +import logo from "../assets/EC-Logo.png"; + +import Heading from "@theme/Heading"; +import styles from "./index.module.css"; + +function HomepageHeader() { + const { siteConfig } = useDocusaurusContext(); + return ( +
        +
        + + + {siteConfig.title} + +

        {siteConfig.tagline}

        +
        + + See Tutorial + +
        +
        +
        + ); +} + +export default function Home() { + const { siteConfig } = useDocusaurusContext(); + return ( + + +
        + +
        +
        + ); +} diff --git a/packages/docs/src/pages/index.module.css b/packages/docs/src/pages/index.module.css new file mode 100644 index 000000000..9f71a5da7 --- /dev/null +++ b/packages/docs/src/pages/index.module.css @@ -0,0 +1,23 @@ +/** + * CSS files with the .module.css suffix will be treated as CSS modules + * and scoped locally. + */ + +.heroBanner { + padding: 4rem 0; + text-align: center; + position: relative; + overflow: hidden; +} + +@media screen and (max-width: 996px) { + .heroBanner { + padding: 2rem; + } +} + +.buttons { + display: flex; + align-items: center; + justify-content: center; +} diff --git a/packages/docs/src/pages/markdown-page.md b/packages/docs/src/pages/markdown-page.md new file mode 100644 index 000000000..9756c5b66 --- /dev/null +++ b/packages/docs/src/pages/markdown-page.md @@ -0,0 +1,7 @@ +--- +title: Markdown page example +--- + +# Markdown page example + +You don't need React to write simple standalone pages. diff --git a/packages/docs/static/.nojekyll b/packages/docs/static/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/packages/docs/static/img/EC-Logo.png b/packages/docs/static/img/EC-Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..03f189175adb6d134af29aa88d9bc0a300fa6d99 GIT binary patch literal 157851 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 1 < 3" + checksum: 030695bf692021c27f52a3d4931efed23032796e326d4ae7957ae91b51c36a10dc2d885fb043909e853f961c994b8e9ff087f50bb918cfa075370562251a199f + languageName: node + linkType: hard + +"@algolia/autocomplete-preset-algolia@npm:1.9.3": + version: 1.9.3 + resolution: "@algolia/autocomplete-preset-algolia@npm:1.9.3" + dependencies: + "@algolia/autocomplete-shared": 1.9.3 + peerDependencies: + "@algolia/client-search": ">= 4.9.1 < 6" + algoliasearch: ">= 4.9.1 < 6" + checksum: 1ab3273d3054b348eed286ad1a54b21807846326485507b872477b827dc688006d4f14233cebd0bf49b2932ec8e29eca6d76e48a3c9e9e963b25153b987549c0 + languageName: node + linkType: hard + +"@algolia/autocomplete-shared@npm:1.9.3": + version: 1.9.3 + resolution: "@algolia/autocomplete-shared@npm:1.9.3" + peerDependencies: + "@algolia/client-search": ">= 4.9.1 < 6" + algoliasearch: ">= 4.9.1 < 6" + checksum: 06014c8b08d30c452de079f48c0235d8fa09904bf511da8dc1b7e491819940fd4ff36b9bf65340242b2e157a26799a3b9aea01feee9c5bf67be3c48d7dff43d7 + languageName: node + linkType: hard + +"@algolia/cache-browser-local-storage@npm:4.24.0": + version: 4.24.0 + resolution: "@algolia/cache-browser-local-storage@npm:4.24.0" + dependencies: + "@algolia/cache-common": 4.24.0 + checksum: f7f9bdb1fa37e788a5cb8c835e526caff2fa097f68736accd4c82ade5e5cb7f5bbd361cf8fc8c2a4628d979d81bd90597bdaed77ca72de8423593067b3d15040 + languageName: node + linkType: hard + +"@algolia/cache-common@npm:4.24.0": + version: 4.24.0 + resolution: "@algolia/cache-common@npm:4.24.0" + checksum: bc1d0f8731713f7e6f10cd397b7d8f7464f14a2f4e1decc73a48e99ecbc0fe41bd4df1cc3eb0a4ecf286095e3eb3935b2ea40179de98e11676f8e7d78c622df8 + languageName: node + linkType: hard + +"@algolia/cache-in-memory@npm:4.24.0": + version: 4.24.0 + resolution: "@algolia/cache-in-memory@npm:4.24.0" + dependencies: + "@algolia/cache-common": 4.24.0 + checksum: 0476f65f4b622b1b38f050a03b9bf02cf6cc77fc69ec785d16e244770eb2c5eea581b089a346d24bdbc3561be78d383f2a8b81179b801b2af72d9795bc48fee2 + languageName: node + linkType: hard + +"@algolia/client-account@npm:4.24.0": + version: 4.24.0 + resolution: "@algolia/client-account@npm:4.24.0" + dependencies: + "@algolia/client-common": 4.24.0 + "@algolia/client-search": 4.24.0 + "@algolia/transporter": 4.24.0 + checksum: 059cf39f3e48b2e77a26435267284d2d15a7a3c4e904feb2b2ad2dd207a3ca2e2b3597847ec9f3b1141749b25fb2e6091e9933f53cb86ab278b5b93836c85aad + languageName: node + linkType: hard + +"@algolia/client-analytics@npm:4.24.0": + version: 4.24.0 + resolution: "@algolia/client-analytics@npm:4.24.0" + dependencies: + "@algolia/client-common": 4.24.0 + "@algolia/client-search": 4.24.0 + "@algolia/requester-common": 4.24.0 + "@algolia/transporter": 4.24.0 + checksum: 17540315bc7ed2ed962fe343129ffe6dcd535cd37d4893765b5b3306a5a2b0a32260d116e77c13541bbc932480b14e24cc640eeecae338bebe7b57bc2cf9cde5 + languageName: node + linkType: hard + +"@algolia/client-common@npm:4.24.0": + version: 4.24.0 + resolution: "@algolia/client-common@npm:4.24.0" + dependencies: + "@algolia/requester-common": 4.24.0 + "@algolia/transporter": 4.24.0 + checksum: 19c6615f9e1b0bbda7dd8ecd285c5bdf48d7067223b06e385a6c69a20a6d6500086619fa0f9e63403cf33220d5d7a288360df55452fdf00f5feca8ca9852758a + languageName: node + linkType: hard + +"@algolia/client-personalization@npm:4.24.0": + version: 4.24.0 + resolution: "@algolia/client-personalization@npm:4.24.0" + dependencies: + "@algolia/client-common": 4.24.0 + "@algolia/requester-common": 4.24.0 + "@algolia/transporter": 4.24.0 + checksum: 9c569c6d846f7c9cf3056b83f2c67d9e796b5afa7e7aa55b1e125a2cf5a7342c96d94e7e2005931145698a1d1fc9a56d692f56a5b09fc4a4291bcc83b73addba + languageName: node + linkType: hard + +"@algolia/client-search@npm:4.24.0": + version: 4.24.0 + resolution: "@algolia/client-search@npm:4.24.0" + dependencies: + "@algolia/client-common": 4.24.0 + "@algolia/requester-common": 4.24.0 + "@algolia/transporter": 4.24.0 + checksum: 2d19823994e92490885115188d75994fbcc7a407fbe14f52034b191607a51081ed476e367a65c889666f6b337b00d700203204d55666f182809f01fbd29fd1fb + languageName: node + linkType: hard + +"@algolia/events@npm:^4.0.1": + version: 4.0.1 + resolution: "@algolia/events@npm:4.0.1" + checksum: 4f63943f4554cfcfed91d8b8c009a49dca192b81056d8c75e532796f64828cd69899852013e81ff3fff07030df8782b9b95c19a3da0845786bdfe22af42442c2 + languageName: node + linkType: hard + +"@algolia/logger-common@npm:4.24.0": + version: 4.24.0 + resolution: "@algolia/logger-common@npm:4.24.0" + checksum: 668fb5a2cbb6aaea7648ae522b5d088241589a9da9f8abb53e2daa89ca2d0bc04307291f57c65de7a332e092cc054cc98cc21b12af81620099632ca85c4ef074 + languageName: node + linkType: hard + +"@algolia/logger-console@npm:4.24.0": + version: 4.24.0 + resolution: "@algolia/logger-console@npm:4.24.0" + dependencies: + "@algolia/logger-common": 4.24.0 + checksum: 846d94ecac2e914a2aa7d1ace301cca7371b2bc757c737405eca8d29fc1a26e788387862851c90f611c90f43755367ce676802a21fa37a3bf8531b1a16f5183b + languageName: node + linkType: hard + +"@algolia/recommend@npm:4.24.0": + version: 4.24.0 + resolution: "@algolia/recommend@npm:4.24.0" + dependencies: + "@algolia/cache-browser-local-storage": 4.24.0 + "@algolia/cache-common": 4.24.0 + "@algolia/cache-in-memory": 4.24.0 + "@algolia/client-common": 4.24.0 + "@algolia/client-search": 4.24.0 + "@algolia/logger-common": 4.24.0 + "@algolia/logger-console": 4.24.0 + "@algolia/requester-browser-xhr": 4.24.0 + "@algolia/requester-common": 4.24.0 + "@algolia/requester-node-http": 4.24.0 + "@algolia/transporter": 4.24.0 + checksum: 426468452186cbcf0653c3a8c8a4f911def6232dc262f0a310c4583939c6efc5a1c567dbff99b6c99a93f2ba05f9336a60d3fc6c9a74ad2d8d13f4c4fa55d3d8 + languageName: node + linkType: hard + +"@algolia/requester-browser-xhr@npm:4.24.0": + version: 4.24.0 + resolution: "@algolia/requester-browser-xhr@npm:4.24.0" + dependencies: + "@algolia/requester-common": 4.24.0 + checksum: 7c32d38d6c7a83357f52134f50271f1ee3df63888b28bc53040a3c74ef73458d80efaf44a5943a3769e84737c2ffd0743e1044a3b5e99ce69289f63e22b50f2a + languageName: node + linkType: hard + +"@algolia/requester-common@npm:4.24.0": + version: 4.24.0 + resolution: "@algolia/requester-common@npm:4.24.0" + checksum: 8f4a49ef0fb4aca42fa3703ddf97ff7f6e9c8492928aa66704ca2f54d3785d2338b64917860a01a42dedb1621279558ca7d549c5b1eb5b7f2742f952fb9865e5 + languageName: node + linkType: hard + +"@algolia/requester-node-http@npm:4.24.0": + version: 4.24.0 + resolution: "@algolia/requester-node-http@npm:4.24.0" + dependencies: + "@algolia/requester-common": 4.24.0 + checksum: 387ee892bf35f46be269996de88f9ea12841796aa33cb5088ba6460a48733614a33300ee44bca0af22b6fded05c16ec92631fb998e9a7e1e6a30504d8b407c23 + languageName: node + linkType: hard + +"@algolia/transporter@npm:4.24.0": + version: 4.24.0 + resolution: "@algolia/transporter@npm:4.24.0" + dependencies: + "@algolia/cache-common": 4.24.0 + "@algolia/logger-common": 4.24.0 + "@algolia/requester-common": 4.24.0 + checksum: 2c026a777de5dcb6f3cc94a0cf5f4650fbc7067f56eb98a1ae9b5750815179a73eb2b1d8ae75853a99823afd13584b62430d7649c65a456b2623123f355955b1 + languageName: node + linkType: hard + +"@ampproject/remapping@npm:^2.2.0": + version: 2.3.0 + resolution: "@ampproject/remapping@npm:2.3.0" + dependencies: + "@jridgewell/gen-mapping": ^0.3.5 + "@jridgewell/trace-mapping": ^0.3.24 + checksum: d3ad7b89d973df059c4e8e6d7c972cbeb1bb2f18f002a3bd04ae0707da214cb06cc06929b65aa2313b9347463df2914772298bae8b1d7973f246bb3f2ab3e8f0 + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.24.7, @babel/code-frame@npm:^7.8.3": + version: 7.24.7 + resolution: "@babel/code-frame@npm:7.24.7" + dependencies: + "@babel/highlight": ^7.24.7 + picocolors: ^1.0.0 + checksum: 830e62cd38775fdf84d612544251ce773d544a8e63df667728cc9e0126eeef14c6ebda79be0f0bc307e8318316b7f58c27ce86702e0a1f5c321d842eb38ffda4 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/compat-data@npm:7.25.2" + checksum: b61bc9da7cfe249f19d08da00f4f0c20550cd9ad5bffcde787c2bf61a8a6fa5b66d92bbd89031f3a6e5495a799a2a2499f2947b6cc7964be41979377473ab132 + languageName: node + linkType: hard + +"@babel/core@npm:^7.21.3, @babel/core@npm:^7.23.3": + version: 7.25.2 + resolution: "@babel/core@npm:7.25.2" + dependencies: + "@ampproject/remapping": ^2.2.0 + "@babel/code-frame": ^7.24.7 + "@babel/generator": ^7.25.0 + "@babel/helper-compilation-targets": ^7.25.2 + "@babel/helper-module-transforms": ^7.25.2 + "@babel/helpers": ^7.25.0 + "@babel/parser": ^7.25.0 + "@babel/template": ^7.25.0 + "@babel/traverse": ^7.25.2 + "@babel/types": ^7.25.2 + convert-source-map: ^2.0.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.3 + semver: ^6.3.1 + checksum: 9a1ef604a7eb62195f70f9370cec45472a08114e3934e3eaaedee8fd754edf0730e62347c7b4b5e67d743ce57b5bb8cf3b92459482ca94d06e06246ef021390a + languageName: node + linkType: hard + +"@babel/generator@npm:^7.23.3, @babel/generator@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/generator@npm:7.25.0" + dependencies: + "@babel/types": ^7.25.0 + "@jridgewell/gen-mapping": ^0.3.5 + "@jridgewell/trace-mapping": ^0.3.25 + jsesc: ^2.5.1 + checksum: bf25649dde4068bff8e387319bf820f2cb3b1af7b8c0cfba0bd90880656427c8bad96cd5cb6db7058d20cffe93149ee59da16567018ceaa21ecaefbf780a785c + languageName: node + linkType: hard + +"@babel/helper-annotate-as-pure@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-annotate-as-pure@npm:7.24.7" + dependencies: + "@babel/types": ^7.24.7 + checksum: 6178566099a6a0657db7a7fa601a54fb4731ca0b8614fbdccfd8e523c210c13963649bc8fdfd53ce7dd14d05e3dda2fb22dea5b30113c488b9eb1a906d60212e + languageName: node + linkType: hard + +"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.24.7" + dependencies: + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: 71a6158a9fdebffb82fdc400d5555ba8f2e370cea81a0d578155877bdc4db7d5252b75c43b2fdf3f72b3f68348891f99bd35ae315542daad1b7ace8322b1abcb + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.24.7, @babel/helper-compilation-targets@npm:^7.24.8, @babel/helper-compilation-targets@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/helper-compilation-targets@npm:7.25.2" + dependencies: + "@babel/compat-data": ^7.25.2 + "@babel/helper-validator-option": ^7.24.8 + browserslist: ^4.23.1 + lru-cache: ^5.1.1 + semver: ^6.3.1 + checksum: aed33c5496cb9db4b5e2d44e26bf8bc474074cc7f7bb5ebe1d4a20fdeb362cb3ba9e1596ca18c7484bcd6e5c3a155ab975e420d520c0ae60df81f9de04d0fd16 + languageName: node + linkType: hard + +"@babel/helper-create-class-features-plugin@npm:^7.24.7, @babel/helper-create-class-features-plugin@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/helper-create-class-features-plugin@npm:7.25.0" + dependencies: + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-member-expression-to-functions": ^7.24.8 + "@babel/helper-optimise-call-expression": ^7.24.7 + "@babel/helper-replace-supers": ^7.25.0 + "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 + "@babel/traverse": ^7.25.0 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: e986c1187e16837b71f12920bd77e672b4bc19ac6dfe30b9d9d515a311c5cc5a085a8e337ac8597b1cb7bd0efdbfcc66f69bf652786c9a022070f9b782deec0d + languageName: node + linkType: hard + +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.24.7, @babel/helper-create-regexp-features-plugin@npm:^7.25.0": + version: 7.25.2 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.25.2" + dependencies: + "@babel/helper-annotate-as-pure": ^7.24.7 + regexpu-core: ^5.3.1 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: df55fdc6a1f3090dd37d91347df52d9322d52affa239543808dc142f8fe35e6787e67d8612337668198fac85826fafa9e6772e6c28b7d249ec94e6fafae5da6e + languageName: node + linkType: hard + +"@babel/helper-define-polyfill-provider@npm:^0.6.2": + version: 0.6.2 + resolution: "@babel/helper-define-polyfill-provider@npm:0.6.2" + dependencies: + "@babel/helper-compilation-targets": ^7.22.6 + "@babel/helper-plugin-utils": ^7.22.5 + debug: ^4.1.1 + lodash.debounce: ^4.0.8 + resolve: ^1.14.2 + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 2bba965ea9a4887ddf9c11d51d740ab473bd7597b787d042c325f6a45912dfe908c2d6bb1d837bf82f7e9fa51e6ad5150563c58131d2bb85515e63d971414a9c + languageName: node + linkType: hard + +"@babel/helper-member-expression-to-functions@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-member-expression-to-functions@npm:7.24.8" + dependencies: + "@babel/traverse": ^7.24.8 + "@babel/types": ^7.24.8 + checksum: bf923d05d81b06857f4ca4fe9c528c9c447a58db5ea39595bb559eae2fce01a8266173db0fd6a2ec129d7bbbb9bb22f4e90008252f7c66b422c76630a878a4bc + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-module-imports@npm:7.24.7" + dependencies: + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: 8ac15d96d262b8940bc469052a048e06430bba1296369be695fabdf6799f201dd0b00151762b56012a218464e706bc033f27c07f6cec20c6f8f5fd6543c67054 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.24.7, @babel/helper-module-transforms@npm:^7.24.8, @babel/helper-module-transforms@npm:^7.25.0, @babel/helper-module-transforms@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/helper-module-transforms@npm:7.25.2" + dependencies: + "@babel/helper-module-imports": ^7.24.7 + "@babel/helper-simple-access": ^7.24.7 + "@babel/helper-validator-identifier": ^7.24.7 + "@babel/traverse": ^7.25.2 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 282d4e3308df6746289e46e9c39a0870819630af5f84d632559171e4fae6045684d771a65f62df3d569e88ccf81dc2def78b8338a449ae3a94bb421aa14fc367 + languageName: node + linkType: hard + +"@babel/helper-optimise-call-expression@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-optimise-call-expression@npm:7.24.7" + dependencies: + "@babel/types": ^7.24.7 + checksum: 280654eaf90e92bf383d7eed49019573fb35a98c9e992668f701ad099957246721044be2068cf6840cb2299e0ad393705a1981c88c23a1048096a8d59e5f79a3 + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.7, @babel/helper-plugin-utils@npm:^7.24.8, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": + version: 7.24.8 + resolution: "@babel/helper-plugin-utils@npm:7.24.8" + checksum: 73b1a83ba8bcee21dc94de2eb7323207391715e4369fd55844bb15cf13e3df6f3d13a40786d990e6370bf0f571d94fc31f70dec96c1d1002058258c35ca3767a + languageName: node + linkType: hard + +"@babel/helper-remap-async-to-generator@npm:^7.24.7, @babel/helper-remap-async-to-generator@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/helper-remap-async-to-generator@npm:7.25.0" + dependencies: + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-wrap-function": ^7.25.0 + "@babel/traverse": ^7.25.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 47f3065e43fe9d6128ddb4291ffb9cf031935379265fd13de972b5f241943121f7583efb69cd2e1ecf39e3d0f76f047547d56c3fcc2c853b326fad5465da0bd7 + languageName: node + linkType: hard + +"@babel/helper-replace-supers@npm:^7.24.7, @babel/helper-replace-supers@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/helper-replace-supers@npm:7.25.0" + dependencies: + "@babel/helper-member-expression-to-functions": ^7.24.8 + "@babel/helper-optimise-call-expression": ^7.24.7 + "@babel/traverse": ^7.25.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: f669fc2487c22d40b808f94b9c3ee41129484d5ef0ba689bdd70f216ff91e10b6b021d2f8cd37e7bdd700235a2a6ae6622526344f064528190383bf661ac65f8 + languageName: node + linkType: hard + +"@babel/helper-simple-access@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-simple-access@npm:7.24.7" + dependencies: + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: ddbf55f9dea1900213f2a1a8500fabfd21c5a20f44dcfa957e4b0d8638c730f88751c77f678644f754f1a1dc73f4eb8b766c300deb45a9daad000e4247957819 + languageName: node + linkType: hard + +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.24.7" + dependencies: + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: 11b28fe534ce2b1a67c4d8e51a7b5711a2a0a0cae802f74614eee54cca58c744d9a62f6f60103c41759e81c537d270bfd665bf368a6bea214c6052f2094f8407 + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-string-parser@npm:7.24.8" + checksum: 39b03c5119216883878655b149148dc4d2e284791e969b19467a9411fccaa33f7a713add98f4db5ed519535f70ad273cdadfd2eb54d47ebbdeac5083351328ce + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-validator-identifier@npm:7.24.7" + checksum: 6799ab117cefc0ecd35cd0b40ead320c621a298ecac88686a14cffceaac89d80cdb3c178f969861bf5fa5e4f766648f9161ea0752ecfe080d8e89e3147270257 + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.24.7, @babel/helper-validator-option@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-validator-option@npm:7.24.8" + checksum: a52442dfa74be6719c0608fee3225bd0493c4057459f3014681ea1a4643cd38b68ff477fe867c4b356da7330d085f247f0724d300582fa4ab9a02efaf34d107c + languageName: node + linkType: hard + +"@babel/helper-wrap-function@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/helper-wrap-function@npm:7.25.0" + dependencies: + "@babel/template": ^7.25.0 + "@babel/traverse": ^7.25.0 + "@babel/types": ^7.25.0 + checksum: 0095b4741704066d1687f9bbd5370bb88c733919e4275e49615f70c180208148ff5f24ab58d186ce92f8f5d28eab034ec6617e9264590cc4744c75302857629c + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/helpers@npm:7.25.0" + dependencies: + "@babel/template": ^7.25.0 + "@babel/types": ^7.25.0 + checksum: 739e3704ff41a30f5eaac469b553f4d3ab02be6ced083f5925851532dfbd9efc5c347728e77b754ed0b262a4e5e384e60932a62c192d338db7e4b7f3adf9f4a7 + languageName: node + linkType: hard + +"@babel/highlight@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/highlight@npm:7.24.7" + dependencies: + "@babel/helper-validator-identifier": ^7.24.7 + chalk: ^2.4.2 + js-tokens: ^4.0.0 + picocolors: ^1.0.0 + checksum: 5cd3a89f143671c4ac129960024ba678b669e6fc673ce078030f5175002d1d3d52bc10b22c5b916a6faf644b5028e9a4bd2bb264d053d9b05b6a98690f1d46f1 + languageName: node + linkType: hard + +"@babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.3": + version: 7.25.3 + resolution: "@babel/parser@npm:7.25.3" + dependencies: + "@babel/types": ^7.25.2 + bin: + parser: ./bin/babel-parser.js + checksum: b55aba64214fa1d66ccd0d29f476d2e55a48586920d280f88c546f81cbbececc0e01c9d05a78d6bf206e8438b9c426caa344942c1a581eecc4d365beaab8a20e + languageName: node + linkType: hard + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.3": + version: 7.25.3 + resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.3" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/traverse": ^7.25.3 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: d3dba60f360defe70eb43e35a1b17ea9dd4a99e734249e15be3d5c288019644f96f88d7ff51990118fda0845b4ad50f6d869e0382232b1d8b054d113d4eea7e2 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.25.0" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: fd56d1e6435f2c008ca9050ea906ff7eedcbec43f532f2bf2e7e905d8bf75bf5e4295ea9593f060394e2c8e45737266ccbf718050bad2dd7be4e7613c60d1b5b + languageName: node + linkType: hard + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.25.0" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 13ed301b108d85867d64226bbc4032b07dd1a23aab68e9e32452c4fe3930f2198bb65bdae9c262c4104bd5e45647bc1830d25d43d356ee9a137edd8d5fab8350 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 + "@babel/plugin-transform-optional-chaining": ^7.24.7 + peerDependencies: + "@babel/core": ^7.13.0 + checksum: 07b92878ac58a98ea1fdf6a8b4ec3413ba4fa66924e28b694d63ec5b84463123fbf4d7153b56cf3cedfef4a3482c082fe3243c04f8fb2c041b32b0e29b4a9e21 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.25.0" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/traverse": ^7.25.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: c8d08b8d6cc71451ad2a50cf7db72ab5b41c1e5e2e4d56cf6837a25a61270abd682c6b8881ab025f11a552d2024b3780519bb051459ebb71c27aed13d9917663 + languageName: node + linkType: hard + +"@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2": + version: 7.21.0-placeholder-for-preset-env.2 + resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d97745d098b835d55033ff3a7fb2b895b9c5295b08a5759e4f20df325aa385a3e0bc9bd5ad8f2ec554a44d4e6525acfc257b8c5848a1345cb40f26a30e277e91 + languageName: node + linkType: hard + +"@babel/plugin-syntax-async-generators@npm:^7.8.4": + version: 7.8.4 + resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7ed1c1d9b9e5b64ef028ea5e755c0be2d4e5e4e3d6cf7df757b9a8c4cfa4193d268176d0f1f7fbecdda6fe722885c7fda681f480f3741d8a2d26854736f05367 + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-properties@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 24f34b196d6342f28d4bad303612d7ff566ab0a013ce89e775d98d6f832969462e7235f3e7eaf17678a533d4be0ba45d3ae34ab4e5a9dcbda5d98d49e5efa2fc + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-static-block@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3e80814b5b6d4fe17826093918680a351c2d34398a914ce6e55d8083d72a9bdde4fbaf6a2dcea0e23a03de26dc2917ae3efd603d27099e2b98380345703bf948 + languageName: node + linkType: hard + +"@babel/plugin-syntax-dynamic-import@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ce307af83cf433d4ec42932329fad25fa73138ab39c7436882ea28742e1c0066626d224e0ad2988724c82644e41601cef607b36194f695cb78a1fcdc959637bd + languageName: node + linkType: hard + +"@babel/plugin-syntax-export-namespace-from@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-export-namespace-from@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 85740478be5b0de185228e7814451d74ab8ce0a26fcca7613955262a26e99e8e15e9da58f60c754b84515d4c679b590dbd3f2148f0f58025f4ae706f1c5a5d4a + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-assertions@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c4d67be4eb1d4637e361477dbe01f5b392b037d17c1f861cfa0faa120030e137aab90a9237931b8040fd31d1e5d159e11866fa1165f78beef7a3be876a391a17 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-attributes@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 590dbb5d1a15264f74670b427b8d18527672c3d6c91d7bae7e65f80fd810edbc83d90e68065088644cbad3f2457ed265a54a9956fb789fcb9a5b521822b3a275 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-meta@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 166ac1125d10b9c0c430e4156249a13858c0366d38844883d75d27389621ebe651115cb2ceb6dc011534d5055719fa1727b59f39e1ab3ca97820eef3dcab5b9b + languageName: node + linkType: hard + +"@babel/plugin-syntax-json-strings@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bf5aea1f3188c9a507e16efe030efb996853ca3cadd6512c51db7233cc58f3ac89ff8c6bdfb01d30843b161cfe7d321e1bf28da82f7ab8d7e6bc5464666f354a + languageName: node + linkType: hard + +"@babel/plugin-syntax-jsx@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-syntax-jsx@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7a5ca629d8ca1e1ee78705a78e58c12920d07ed8006d7e7232b31296a384ff5e41d7b649bde5561196041037bbb9f9715be1d1c20975df87ca204f34ad15b965 + languageName: node + linkType: hard + +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886 + languageName: node + linkType: hard + +"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1 + languageName: node + linkType: hard + +"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1 + languageName: node + linkType: hard + +"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9 + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30 + languageName: node + linkType: hard + +"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b317174783e6e96029b743ccff2a67d63d38756876e7e5d0ba53a322e38d9ca452c13354a57de1ad476b4c066dbae699e0ca157441da611117a47af88985ecda + languageName: node + linkType: hard + +"@babel/plugin-syntax-top-level-await@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e + languageName: node + linkType: hard + +"@babel/plugin-syntax-typescript@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-syntax-typescript@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 56fe84f3044ecbf038977281648db6b63bd1301f2fff6595820dc10ee276c1d1586919d48d52a8d497ecae32c958be38f42c1c8d174dc58aad856c516dc5b35a + languageName: node + linkType: hard + +"@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.18.6 + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: a651d700fe63ff0ddfd7186f4ebc24447ca734f114433139e3c027bc94a900d013cf1ef2e2db8430425ba542e39ae160c3b05f06b59fd4656273a3df97679e9c + languageName: node + linkType: hard + +"@babel/plugin-transform-arrow-functions@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 707c209b5331c7dc79bd326128c6a6640dbd62a78da1653c844db20c4f36bf7b68454f1bc4d2d051b3fde9136fa291f276ec03a071bb00ee653069ff82f91010 + languageName: node + linkType: hard + +"@babel/plugin-transform-async-generator-functions@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.0" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/helper-remap-async-to-generator": ^7.25.0 + "@babel/plugin-syntax-async-generators": ^7.8.4 + "@babel/traverse": ^7.25.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: cce2bab70ad871ac11751bede006bd4861888f4c63bc9954be38620b14cc6890a4cbc633c1062b89c5fe288ce74b9d1974cc0d43c04baeeb2b13231a236fba85 + languageName: node + linkType: hard + +"@babel/plugin-transform-async-to-generator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.24.7" + dependencies: + "@babel/helper-module-imports": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-remap-async-to-generator": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 13704fb3b83effc868db2b71bfb2c77b895c56cb891954fc362e95e200afd523313b0e7cf04ce02f45b05e76017c5b5fa8070c92613727a35131bb542c253a36 + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoped-functions@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 249cdcbff4e778b177245f9652b014ea4f3cd245d83297f10a7bf6d97790074089aa62bcde8c08eb299c5e68f2faed346b587d3ebac44d625ba9a83a4ee27028 + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoping@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-transform-block-scoping@npm:7.25.0" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b1a8f932f69ad2a47ae3e02b4cedd2a876bfc2ac9cf72a503fd706cdc87272646fe9eed81e068c0fc639647033de29f7fa0c21cddd1da0026f83dbaac97316a8 + languageName: node + linkType: hard + +"@babel/plugin-transform-class-properties@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-class-properties@npm:7.24.7" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 1348d7ce74da38ba52ea85b3b4289a6a86913748569ef92ef0cff30702a9eb849e5eaf59f1c6f3517059aa68115fb3067e389735dccacca39add4e2b0c67e291 + languageName: node + linkType: hard + +"@babel/plugin-transform-class-static-block@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-class-static-block@npm:7.24.7" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-class-static-block": ^7.14.5 + peerDependencies: + "@babel/core": ^7.12.0 + checksum: 324049263504f18416f1c3e24033baebfafd05480fdd885c8ebe6f2b415b0fc8e0b98d719360f9e30743cc78ac387fabc0b3c6606d2b54135756ffb92963b382 + languageName: node + linkType: hard + +"@babel/plugin-transform-classes@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-transform-classes@npm:7.25.0" + dependencies: + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-compilation-targets": ^7.24.8 + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/helper-replace-supers": ^7.25.0 + "@babel/traverse": ^7.25.0 + globals: ^11.1.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ff97f168e6a18fa4e7bb439f1a170dc83c470973091c22c74674769350ab572be5af017cdb64fbd261fe99d068a4ee88f1b7fa7f5ab524d84c2f2833b116e577 + languageName: node + linkType: hard + +"@babel/plugin-transform-computed-properties@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-computed-properties@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/template": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0cf8c1b1e4ea57dec8d4612460d84fd4cdbf71a7499bb61ee34632cf89018a59eee818ffca88a8d99ee7057c20a4257044d7d463fda6daef9bf1db9fa81563cb + languageName: node + linkType: hard + +"@babel/plugin-transform-destructuring@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/plugin-transform-destructuring@npm:7.24.8" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0b4bd3d608979a1e5bd97d9d42acd5ad405c7fffa61efac4c7afd8e86ea6c2d91ab2d94b6a98d63919571363fe76e0b03c4ff161f0f60241b895842596e4a999 + languageName: node + linkType: hard + +"@babel/plugin-transform-dotall-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.24.7" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 67b10fc6abb1f61f0e765288eb4c6d63d1d0f9fc0660e69f6f2170c56fa16bc74e49857afc644beda112b41771cd90cf52df0940d11e97e52617c77c7dcff171 + languageName: node + linkType: hard + +"@babel/plugin-transform-duplicate-keys@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d1da2ff85ecb56a63f4ccfd9dc9ae69400d85f0dadf44ecddd9e71c6e5c7a9178e74e3a9637555f415a2bb14551e563f09f98534ab54f53d25e8439fdde6ba2d + languageName: node + linkType: hard + +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.25.0" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.25.0 + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 608d6b0e77341189508880fd1a9f605a38d0803dd6f678ea3920ab181b17b377f6d5221ae8cf0104c7a044d30d4ddb0366bd064447695671d78457a656bb264f + languageName: node + linkType: hard + +"@babel/plugin-transform-dynamic-import@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 776509ff62ab40c12be814a342fc56a5cc09b91fb63032b2633414b635875fd7da03734657be0f6db2891fe6e3033b75d5ddb6f2baabd1a02e4443754a785002 + languageName: node + linkType: hard + +"@babel/plugin-transform-exponentiation-operator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.24.7" + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 23c84a23eb56589fdd35a3540f9a1190615be069110a2270865223c03aee3ba4e0fc68fe14850800cf36f0712b26e4964d3026235261f58f0405a29fe8dac9b1 + languageName: node + linkType: hard + +"@babel/plugin-transform-export-namespace-from@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-export-namespace-from": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3bd3a10038f10ae0dea1ee42137f3edcf7036b5e9e570a0d1cbd0865f03658990c6c2d84fa2475f87a754e7dc5b46766c16f7ce5c9b32c3040150b6a21233a80 + languageName: node + linkType: hard + +"@babel/plugin-transform-for-of@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-for-of@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: a53b42dc93ab4b7d1ebd3c695b52be22b3d592f6a3dbdb3dc2fea2c8e0a7e1508fe919864c455cde552aec44ce7518625fccbb70c7063373ca228d884f4f49ea + languageName: node + linkType: hard + +"@babel/plugin-transform-function-name@npm:^7.25.1": + version: 7.25.1 + resolution: "@babel/plugin-transform-function-name@npm:7.25.1" + dependencies: + "@babel/helper-compilation-targets": ^7.24.8 + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/traverse": ^7.25.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 743f3ea03bbc5a90944849d5a880b6bd9243dddbde581a46952da76e53a0b74c1e2424133fe8129d7a152c1f8c872bcd27e0b6728d7caadabd1afa7bb892e1e0 + languageName: node + linkType: hard + +"@babel/plugin-transform-json-strings@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-json-strings@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-json-strings": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 88874d0b7a1ddea66c097fc0abb68801ffae194468aa44b828dde9a0e20ac5d8647943793de86092eabaa2911c96f67a6b373793d4bb9c932ef81b2711c06c2e + languageName: node + linkType: hard + +"@babel/plugin-transform-literals@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/plugin-transform-literals@npm:7.25.2" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 70c9bb40e377a306bd8f500899fb72127e527517914466e95dc6bb53fa7a0f51479db244a54a771b5780fc1eab488fedd706669bf11097b81a23c81ab7423eb1 + languageName: node + linkType: hard + +"@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3367ce0be243704dc6fce23e86a592c4380f01998ee5dd9f94c54b1ef7b971ac6f8a002901eb51599ac6cbdc0d067af8d1a720224fca1c40fde8bb8aab804aac + languageName: node + linkType: hard + +"@babel/plugin-transform-member-expression-literals@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2720c57aa3bf70576146ba7d6ea03227f4611852122d76d237924f7b008dafc952e6ae61a19e5024f26c665f44384bbd378466f01b6bd1305b3564a3b7fb1a5d + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-amd@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-modules-amd@npm:7.24.7" + dependencies: + "@babel/helper-module-transforms": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f1dd0fb2f46c0f8f21076b8c7ccd5b33a85ce6dcb31518ea4c648d9a5bb2474cd4bd87c9b1b752e68591e24b022e334ba0d07631fef2b6b4d8a4b85cf3d581f5 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-commonjs@npm:^7.24.7, @babel/plugin-transform-modules-commonjs@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.24.8" + dependencies: + "@babel/helper-module-transforms": ^7.24.8 + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/helper-simple-access": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: a4cf95b1639c33382064b44558f73ee5fac023f2a94d16e549d2bb55ceebd5cbc10fcddd505d08cd5bc97f5a64af9fd155512358b7dcf7b1a0082e8945cf21c5 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-systemjs@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.25.0" + dependencies: + "@babel/helper-module-transforms": ^7.25.0 + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/helper-validator-identifier": ^7.24.7 + "@babel/traverse": ^7.25.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fe673bec08564e491847324bb80a1e6edfb229f5c37e58a094d51e95306e7b098e1d130fc43e992d22debd93b9beac74441ffc3f6ea5d78f6b2535896efa0728 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-umd@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-modules-umd@npm:7.24.7" + dependencies: + "@babel/helper-module-transforms": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 9ff1c464892efe042952ba778468bda6131b196a2729615bdcc3f24cdc94014f016a4616ee5643c5845bade6ba698f386833e61056d7201314b13a7fd69fac88 + languageName: node + linkType: hard + +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.24.7" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: f1c6c7b5d60a86b6d7e4dd098798e1d393d55e993a0b57a73b53640c7a94985b601a96bdacee063f809a9a700bcea3a2ff18e98fa561554484ac56b761d774bd + languageName: node + linkType: hard + +"@babel/plugin-transform-new-target@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-new-target@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3cb94cd1076b270f768f91fdcf9dd2f6d487f8dbfff3df7ca8d07b915900b86d02769a35ba1407d16fe49499012c8f055e1741299e2c880798b953d942a8fa1b + languageName: node + linkType: hard + +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 4a9221356401d87762afbc37a9e8e764afc2daf09c421117537820f8cfbed6876888372ad3a7bcfae2d45c95f026651f050ab4020b777be31d3ffb00908dbdd3 + languageName: node + linkType: hard + +"@babel/plugin-transform-numeric-separator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 561b5f1d08b2c3f92ce849f092751558b5e6cfeb7eb55c79e7375c34dd9c3066dce5e630bb439affef6adcf202b6cbcaaa23870070276fa5bb429c8f5b8c7514 + languageName: node + linkType: hard + +"@babel/plugin-transform-object-rest-spread@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.24.7" + dependencies: + "@babel/helper-compilation-targets": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-transform-parameters": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 169d257b9800c13e1feb4c37fb05dae84f702e58b342bb76e19e82e6692b7b5337c9923ee89e3916a97c0dd04a3375bdeca14f5e126f110bbacbeb46d1886ca2 + languageName: node + linkType: hard + +"@babel/plugin-transform-object-super@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-object-super@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-replace-supers": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f71e607a830ee50a22fa1a2686524d3339440cf9dea63032f6efbd865cfe4e35000e1e3f3492459e5c986f7c0c07dc36938bf3ce61fc9ba5f8ab732d0b64ab37 + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-catch-binding@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7229f3a5a4facaab40f4fdfc7faabc157dc38a67d66bed7936599f4bc509e0bff636f847ac2aa45294881fce9cf8a0a460b85d2a465b7b977de9739fce9b18f6 + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-chaining@npm:^7.24.7, @babel/plugin-transform-optional-chaining@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.24.8" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 45e55e3a2fffb89002d3f89aef59c141610f23b60eee41e047380bffc40290b59f64fc649aa7ec5281f73d41b2065410d788acc6afaad2a9f44cad6e8af04442 + languageName: node + linkType: hard + +"@babel/plugin-transform-parameters@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-parameters@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ab534b03ac2eff94bc79342b8f39a4584666f5305a6c63c1964afda0b1b004e6b861e49d1683548030defe248e3590d3ff6338ee0552cb90c064f7e1479968c3 + languageName: node + linkType: hard + +"@babel/plugin-transform-private-methods@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-private-methods@npm:7.24.7" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c151548e34909be2adcceb224d8fdd70bafa393bc1559a600906f3f647317575bf40db670470934a360e90ee8084ef36dffa34ec25d387d414afd841e74cf3fe + languageName: node + linkType: hard + +"@babel/plugin-transform-private-property-in-object@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.24.7" + dependencies: + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-create-class-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 8cee9473095305cc787bb653fd681719b49363281feabf677db8a552e8e41c94441408055d7e5fd5c7d41b315e634fa70b145ad0c7c54456216049df4ed57350 + languageName: node + linkType: hard + +"@babel/plugin-transform-property-literals@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-property-literals@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 9aeefc3aab6c6bf9d1fae1cf3a2d38c7d886fd3c6c81b7c608c477f5758aee2e7abf52f32724310fe861da61af934ee2508b78a5b5f234b9740c9134e1c14437 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-constant-elements@npm:^7.21.3": + version: 7.25.1 + resolution: "@babel/plugin-transform-react-constant-elements@npm:7.25.1" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 6126abf8bc3980c1e27fd217f8b2f226b20cce9be300eaf9d30548556dd1e906b7daa4580d9ae1dae35eb5ed5c98e7222e0cb91efb0a232d05aae5875dcfe55c + languageName: node + linkType: hard + +"@babel/plugin-transform-react-display-name@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-react-display-name@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: a05bf83bf5e7b31f7a3b56da1bf8e2eeec76ef52ae44435ceff66363a1717fcda45b7b4b931a2c115982175f481fc3f2d0fab23f0a43c44e6d983afc396858f0 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-development@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.24.7" + dependencies: + "@babel/plugin-transform-react-jsx": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 653d32ea5accb12d016e324ec5a584b60a8f39e60c6a5101194b73553fdefbfa3c3f06ec2410216ec2033fddae181a2f146a1d6ed59f075c488fc4570cad2e7b + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx@npm:^7.24.7": + version: 7.25.2 + resolution: "@babel/plugin-transform-react-jsx@npm:7.25.2" + dependencies: + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-module-imports": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/plugin-syntax-jsx": ^7.24.7 + "@babel/types": ^7.25.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 44fbde046385916de19a88d77fed9121c6cc6e25b9cdc38a43d8e514a9b18cf391ed3de25e7d6a8996d3fe4c298e395edf856ee20efffaab3b70f8ce225fffa4 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-pure-annotations@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.24.7" + dependencies: + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d859ada3cbeb829fa3d9978a29b2d36657fcc9dcc1e4c3c3af84ec5a044a8f8db26ada406baa309e5d4d512aca53d07c520d991b891ff943bec7d8f01aae0419 + languageName: node + linkType: hard + +"@babel/plugin-transform-regenerator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-regenerator@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + regenerator-transform: ^0.15.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 20c6c3fb6fc9f407829087316653388d311e8c1816b007609bb09aeef254092a7157adace8b3aaa8f34be752503717cb85c88a5fe482180a9b11bcbd676063be + languageName: node + linkType: hard + +"@babel/plugin-transform-reserved-words@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-reserved-words@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3d5876954d5914d7270819479504f30c4bf5452a65c677f44e2dab2db50b3c9d4b47793c45dfad7abf4f377035dd79e4b3f554ae350df9f422201d370ce9f8dd + languageName: node + linkType: hard + +"@babel/plugin-transform-runtime@npm:^7.22.9": + version: 7.24.7 + resolution: "@babel/plugin-transform-runtime@npm:7.24.7" + dependencies: + "@babel/helper-module-imports": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + babel-plugin-polyfill-corejs2: ^0.4.10 + babel-plugin-polyfill-corejs3: ^0.10.1 + babel-plugin-polyfill-regenerator: ^0.6.1 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 98bcbbdc833d5c451189a6325f88820fe92973e119c59ce74bf28681cf4687c8280decb55b6c47f22e98c3973ae3a13521c4f51855a2b8577b230ecb1b4ca5b4 + languageName: node + linkType: hard + +"@babel/plugin-transform-shorthand-properties@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7b524245814607188212b8eb86d8c850e5974203328455a30881b4a92c364b93353fae14bc2af5b614ef16300b75b8c1d3b8f3a08355985b4794a7feb240adc3 + languageName: node + linkType: hard + +"@babel/plugin-transform-spread@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-spread@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 4c4254c8b9cceb1a8f975fa9b92257ddb08380a35c0a3721b8f4b9e13a3d82e403af2e0fba577b9f2452dd8f06bc3dea71cc53b1e2c6af595af5db52a13429d6 + languageName: node + linkType: hard + +"@babel/plugin-transform-sticky-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 118fc7a7ebf7c20411b670c8a030535fdfe4a88bc5643bb625a584dbc4c8a468da46430a20e6bf78914246962b0f18f1b9d6a62561a7762c4f34a038a5a77179 + languageName: node + linkType: hard + +"@babel/plugin-transform-template-literals@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-template-literals@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ad44e5826f5a98c1575832dbdbd033adfe683cdff195e178528ead62507564bf02f479b282976cfd3caebad8b06d5fd7349c1cdb880dec3c56daea4f1f179619 + languageName: node + linkType: hard + +"@babel/plugin-transform-typeof-symbol@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.24.8" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 8663a8e7347cedf181001d99c88cf794b6598c3d82f324098510fe8fb8bd22113995526a77aa35a3cc5d70ffd0617a59dd0d10311a9bf0e1a3a7d3e59b900c00 + languageName: node + linkType: hard + +"@babel/plugin-transform-typescript@npm:^7.24.7": + version: 7.25.2 + resolution: "@babel/plugin-transform-typescript@npm:7.25.2" + dependencies: + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-create-class-features-plugin": ^7.25.0 + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 + "@babel/plugin-syntax-typescript": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b0267128d93560a4350919f7230a3b497e20fb8611d9f04bb3560d6b38877305ccad4c40903160263361c6930a84dbcb5b21b8ea923531bda51f67bffdc2dd0b + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-escapes@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 4af0a193e1ddea6ff82b2b15cc2501b872728050bd625740b813c8062fec917d32d530ff6b41de56c15e7296becdf3336a58db81f5ca8e7c445c1306c52f3e01 + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-property-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.24.7" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: aae13350c50973f5802ca7906d022a6a0cc0e3aebac9122d0450bbd51e78252d4c2032ad69385e2759fcbdd3aac5d571bd7e26258907f51f8e1a51b53be626c2 + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.24.7" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 1cb4e70678906e431da0a05ac3f8350025fee290304ad7482d9cfaa1ca67b2e898654de537c9268efbdad5b80d3ebadf42b4a88ea84609bd8a4cce7b11b48afd + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-sets-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.24.7" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 08a2844914f33dacd2ce1ab021ce8c1cc35dc6568521a746d8bf29c21571ee5be78787b454231c4bb3526cbbe280f1893223c82726cec5df2be5dae0a3b51837 + languageName: node + linkType: hard + +"@babel/preset-env@npm:^7.20.2, @babel/preset-env@npm:^7.22.9": + version: 7.25.3 + resolution: "@babel/preset-env@npm:7.25.3" + dependencies: + "@babel/compat-data": ^7.25.2 + "@babel/helper-compilation-targets": ^7.25.2 + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/helper-validator-option": ^7.24.8 + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": ^7.25.3 + "@babel/plugin-bugfix-safari-class-field-initializer-scope": ^7.25.0 + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.25.0 + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.24.7 + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ^7.25.0 + "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2 + "@babel/plugin-syntax-async-generators": ^7.8.4 + "@babel/plugin-syntax-class-properties": ^7.12.13 + "@babel/plugin-syntax-class-static-block": ^7.14.5 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 + "@babel/plugin-syntax-export-namespace-from": ^7.8.3 + "@babel/plugin-syntax-import-assertions": ^7.24.7 + "@babel/plugin-syntax-import-attributes": ^7.24.7 + "@babel/plugin-syntax-import-meta": ^7.10.4 + "@babel/plugin-syntax-json-strings": ^7.8.3 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + "@babel/plugin-syntax-top-level-await": ^7.14.5 + "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 + "@babel/plugin-transform-arrow-functions": ^7.24.7 + "@babel/plugin-transform-async-generator-functions": ^7.25.0 + "@babel/plugin-transform-async-to-generator": ^7.24.7 + "@babel/plugin-transform-block-scoped-functions": ^7.24.7 + "@babel/plugin-transform-block-scoping": ^7.25.0 + "@babel/plugin-transform-class-properties": ^7.24.7 + "@babel/plugin-transform-class-static-block": ^7.24.7 + "@babel/plugin-transform-classes": ^7.25.0 + "@babel/plugin-transform-computed-properties": ^7.24.7 + "@babel/plugin-transform-destructuring": ^7.24.8 + "@babel/plugin-transform-dotall-regex": ^7.24.7 + "@babel/plugin-transform-duplicate-keys": ^7.24.7 + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": ^7.25.0 + "@babel/plugin-transform-dynamic-import": ^7.24.7 + "@babel/plugin-transform-exponentiation-operator": ^7.24.7 + "@babel/plugin-transform-export-namespace-from": ^7.24.7 + "@babel/plugin-transform-for-of": ^7.24.7 + "@babel/plugin-transform-function-name": ^7.25.1 + "@babel/plugin-transform-json-strings": ^7.24.7 + "@babel/plugin-transform-literals": ^7.25.2 + "@babel/plugin-transform-logical-assignment-operators": ^7.24.7 + "@babel/plugin-transform-member-expression-literals": ^7.24.7 + "@babel/plugin-transform-modules-amd": ^7.24.7 + "@babel/plugin-transform-modules-commonjs": ^7.24.8 + "@babel/plugin-transform-modules-systemjs": ^7.25.0 + "@babel/plugin-transform-modules-umd": ^7.24.7 + "@babel/plugin-transform-named-capturing-groups-regex": ^7.24.7 + "@babel/plugin-transform-new-target": ^7.24.7 + "@babel/plugin-transform-nullish-coalescing-operator": ^7.24.7 + "@babel/plugin-transform-numeric-separator": ^7.24.7 + "@babel/plugin-transform-object-rest-spread": ^7.24.7 + "@babel/plugin-transform-object-super": ^7.24.7 + "@babel/plugin-transform-optional-catch-binding": ^7.24.7 + "@babel/plugin-transform-optional-chaining": ^7.24.8 + "@babel/plugin-transform-parameters": ^7.24.7 + "@babel/plugin-transform-private-methods": ^7.24.7 + "@babel/plugin-transform-private-property-in-object": ^7.24.7 + "@babel/plugin-transform-property-literals": ^7.24.7 + "@babel/plugin-transform-regenerator": ^7.24.7 + "@babel/plugin-transform-reserved-words": ^7.24.7 + "@babel/plugin-transform-shorthand-properties": ^7.24.7 + "@babel/plugin-transform-spread": ^7.24.7 + "@babel/plugin-transform-sticky-regex": ^7.24.7 + "@babel/plugin-transform-template-literals": ^7.24.7 + "@babel/plugin-transform-typeof-symbol": ^7.24.8 + "@babel/plugin-transform-unicode-escapes": ^7.24.7 + "@babel/plugin-transform-unicode-property-regex": ^7.24.7 + "@babel/plugin-transform-unicode-regex": ^7.24.7 + "@babel/plugin-transform-unicode-sets-regex": ^7.24.7 + "@babel/preset-modules": 0.1.6-no-external-plugins + babel-plugin-polyfill-corejs2: ^0.4.10 + babel-plugin-polyfill-corejs3: ^0.10.4 + babel-plugin-polyfill-regenerator: ^0.6.1 + core-js-compat: ^3.37.1 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 9735a44e557f7ef4ade87f59c0d69e4af3383432a23ae7a3cba33e3741bd7812f2d6403a0d94ebfda5f4bd9fdc6250a52c4a156407029f590fde511a792e64e2 + languageName: node + linkType: hard + +"@babel/preset-modules@npm:0.1.6-no-external-plugins": + version: 0.1.6-no-external-plugins + resolution: "@babel/preset-modules@npm:0.1.6-no-external-plugins" + dependencies: + "@babel/helper-plugin-utils": ^7.0.0 + "@babel/types": ^7.4.4 + esutils: ^2.0.2 + peerDependencies: + "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 + checksum: 4855e799bc50f2449fb5210f78ea9e8fd46cf4f242243f1e2ed838e2bd702e25e73e822e7f8447722a5f4baa5e67a8f7a0e403f3e7ce04540ff743a9c411c375 + languageName: node + linkType: hard + +"@babel/preset-react@npm:^7.18.6, @babel/preset-react@npm:^7.22.5": + version: 7.24.7 + resolution: "@babel/preset-react@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-validator-option": ^7.24.7 + "@babel/plugin-transform-react-display-name": ^7.24.7 + "@babel/plugin-transform-react-jsx": ^7.24.7 + "@babel/plugin-transform-react-jsx-development": ^7.24.7 + "@babel/plugin-transform-react-pure-annotations": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 76d0365b6bca808be65c4ccb3f3384c0792084add15eb537f16b3e44184216b82fa37f945339b732ceee6f06e09ba1f39f75c45e69b9811ddcc479f05555ea9c + languageName: node + linkType: hard + +"@babel/preset-typescript@npm:^7.21.0, @babel/preset-typescript@npm:^7.22.5": + version: 7.24.7 + resolution: "@babel/preset-typescript@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-validator-option": ^7.24.7 + "@babel/plugin-syntax-jsx": ^7.24.7 + "@babel/plugin-transform-modules-commonjs": ^7.24.7 + "@babel/plugin-transform-typescript": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 12929b24757f3bd6548103475f86478eda4c872bc7cefd920b29591eee8f4a4f350561d888e133d632d0c9402b8615fdcec9138e5127a6567dcb22f804ff207f + languageName: node + linkType: hard + +"@babel/regjsgen@npm:^0.8.0": + version: 0.8.0 + resolution: "@babel/regjsgen@npm:0.8.0" + checksum: 89c338fee774770e5a487382170711014d49a68eb281e74f2b5eac88f38300a4ad545516a7786a8dd5702e9cf009c94c2f582d200f077ac5decd74c56b973730 + languageName: node + linkType: hard + +"@babel/runtime-corejs3@npm:^7.22.6": + version: 7.25.0 + resolution: "@babel/runtime-corejs3@npm:7.25.0" + dependencies: + core-js-pure: ^3.30.2 + regenerator-runtime: ^0.14.0 + checksum: fb23e5afc7b9077f7cec3f17b58d63154a9f329b6746f8296e7b60ade07b4d7d67a90b23bd7196e7d207e8105dd1b847d1b22a0af5a1c681365004cd63244f63 + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.3, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.22.6, @babel/runtime@npm:^7.8.4": + version: 7.25.0 + resolution: "@babel/runtime@npm:7.25.0" + dependencies: + regenerator-runtime: ^0.14.0 + checksum: 4a2a374a58eb01aaa65c5762606e90b3a1f448e0c637d42278b6cc0b42a9f5399b5f381ba9f237ee087da2860d14dd2d1de7bddcbe18be6a3cafba97e44bed64 + languageName: node + linkType: hard + +"@babel/template@npm:^7.24.7, @babel/template@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/template@npm:7.25.0" + dependencies: + "@babel/code-frame": ^7.24.7 + "@babel/parser": ^7.25.0 + "@babel/types": ^7.25.0 + checksum: 3f2db568718756d0daf2a16927b78f00c425046b654cd30b450006f2e84bdccaf0cbe6dc04994aa1f5f6a4398da2f11f3640a4d3ee31722e43539c4c919c817b + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.22.8, @babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.24.8, @babel/traverse@npm:^7.25.0, @babel/traverse@npm:^7.25.1, @babel/traverse@npm:^7.25.2, @babel/traverse@npm:^7.25.3": + version: 7.25.3 + resolution: "@babel/traverse@npm:7.25.3" + dependencies: + "@babel/code-frame": ^7.24.7 + "@babel/generator": ^7.25.0 + "@babel/parser": ^7.25.3 + "@babel/template": ^7.25.0 + "@babel/types": ^7.25.2 + debug: ^4.3.1 + globals: ^11.1.0 + checksum: 5661308b1357816f1d4e2813a5dd82c6053617acc08c5c95db051b8b6577d07c4446bc861c9a5e8bf294953ac8266ae13d7d9d856b6b889fc0d34c1f51abbd8c + languageName: node + linkType: hard + +"@babel/types@npm:^7.21.3, @babel/types@npm:^7.24.7, @babel/types@npm:^7.24.8, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.4.4": + version: 7.25.2 + resolution: "@babel/types@npm:7.25.2" + dependencies: + "@babel/helper-string-parser": ^7.24.8 + "@babel/helper-validator-identifier": ^7.24.7 + to-fast-properties: ^2.0.0 + checksum: f73f66ba903c6f7e38f519a33d53a67d49c07e208e59ea65250362691dc546c6da7ab90ec66ee79651ef697329872f6f97eb19a6dfcacc026fd05e76a563c5d2 + languageName: node + linkType: hard + +"@colors/colors@npm:1.5.0": + version: 1.5.0 + resolution: "@colors/colors@npm:1.5.0" + checksum: d64d5260bed1d5012ae3fc617d38d1afc0329fec05342f4e6b838f46998855ba56e0a73833f4a80fa8378c84810da254f76a8a19c39d038260dc06dc4e007425 + languageName: node + linkType: hard + +"@discoveryjs/json-ext@npm:0.5.7": + version: 0.5.7 + resolution: "@discoveryjs/json-ext@npm:0.5.7" + checksum: 2176d301cc258ea5c2324402997cf8134ebb212469c0d397591636cea8d3c02f2b3cf9fd58dcb748c7a0dade77ebdc1b10284fa63e608c033a1db52fddc69918 + languageName: node + linkType: hard + +"@docsearch/css@npm:3.6.1": + version: 3.6.1 + resolution: "@docsearch/css@npm:3.6.1" + checksum: 313ca5a0394485d73b8be73ab2119913b68cf8f446e22a4b1a965123c34aba5a130f4dc5af7ec6880126a220d6040439bb95c11b163c4569f6e2ae18d89b4c3d + languageName: node + linkType: hard + +"@docsearch/react@npm:^3.5.2": + version: 3.6.1 + resolution: "@docsearch/react@npm:3.6.1" + dependencies: + "@algolia/autocomplete-core": 1.9.3 + "@algolia/autocomplete-preset-algolia": 1.9.3 + "@docsearch/css": 3.6.1 + algoliasearch: ^4.19.1 + peerDependencies: + "@types/react": ">= 16.8.0 < 19.0.0" + react: ">= 16.8.0 < 19.0.0" + react-dom: ">= 16.8.0 < 19.0.0" + search-insights: ">= 1 < 3" + peerDependenciesMeta: + "@types/react": + optional: true + react: + optional: true + react-dom: + optional: true + search-insights: + optional: true + checksum: e3ad0a77932f99126933316b010a6bed30b9b3547a60269708482eea792856843c80df4b8476afb8a99e3b22a0bb37a6bd684992dccc3d277ad261a0bb27473a + languageName: node + linkType: hard + +"@docusaurus/core@npm:3.5.1": + version: 3.5.1 + resolution: "@docusaurus/core@npm:3.5.1" + dependencies: + "@babel/core": ^7.23.3 + "@babel/generator": ^7.23.3 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 + "@babel/plugin-transform-runtime": ^7.22.9 + "@babel/preset-env": ^7.22.9 + "@babel/preset-react": ^7.22.5 + "@babel/preset-typescript": ^7.22.5 + "@babel/runtime": ^7.22.6 + "@babel/runtime-corejs3": ^7.22.6 + "@babel/traverse": ^7.22.8 + "@docusaurus/cssnano-preset": 3.5.1 + "@docusaurus/logger": 3.5.1 + "@docusaurus/mdx-loader": 3.5.1 + "@docusaurus/utils": 3.5.1 + "@docusaurus/utils-common": 3.5.1 + "@docusaurus/utils-validation": 3.5.1 + autoprefixer: ^10.4.14 + babel-loader: ^9.1.3 + babel-plugin-dynamic-import-node: ^2.3.3 + boxen: ^6.2.1 + chalk: ^4.1.2 + chokidar: ^3.5.3 + clean-css: ^5.3.2 + cli-table3: ^0.6.3 + combine-promises: ^1.1.0 + commander: ^5.1.0 + copy-webpack-plugin: ^11.0.0 + core-js: ^3.31.1 + css-loader: ^6.8.1 + css-minimizer-webpack-plugin: ^5.0.1 + cssnano: ^6.1.2 + del: ^6.1.1 + detect-port: ^1.5.1 + escape-html: ^1.0.3 + eta: ^2.2.0 + eval: ^0.1.8 + file-loader: ^6.2.0 + fs-extra: ^11.1.1 + html-minifier-terser: ^7.2.0 + html-tags: ^3.3.1 + html-webpack-plugin: ^5.5.3 + leven: ^3.1.0 + lodash: ^4.17.21 + mini-css-extract-plugin: ^2.7.6 + p-map: ^4.0.0 + postcss: ^8.4.26 + postcss-loader: ^7.3.3 + prompts: ^2.4.2 + react-dev-utils: ^12.0.1 + react-helmet-async: ^1.3.0 + react-loadable: "npm:@docusaurus/react-loadable@6.0.0" + react-loadable-ssr-addon-v5-slorber: ^1.0.1 + react-router: ^5.3.4 + react-router-config: ^5.1.1 + react-router-dom: ^5.3.4 + rtl-detect: ^1.0.4 + semver: ^7.5.4 + serve-handler: ^6.1.5 + shelljs: ^0.8.5 + terser-webpack-plugin: ^5.3.9 + tslib: ^2.6.0 + update-notifier: ^6.0.2 + url-loader: ^4.1.1 + webpack: ^5.88.1 + webpack-bundle-analyzer: ^4.9.0 + webpack-dev-server: ^4.15.1 + webpack-merge: ^5.9.0 + webpackbar: ^5.0.2 + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + bin: + docusaurus: bin/docusaurus.mjs + checksum: b9a973899dffb7aa0b40712cbb348d082943709347058200a43e1a4c8320050160f43efa759605341f3181e5dccb642fb7f2ebda7a1802044a3b3e8c80dc7aeb + languageName: node + linkType: hard + +"@docusaurus/cssnano-preset@npm:3.5.1": + version: 3.5.1 + resolution: "@docusaurus/cssnano-preset@npm:3.5.1" + dependencies: + cssnano-preset-advanced: ^6.1.2 + postcss: ^8.4.38 + postcss-sort-media-queries: ^5.2.0 + tslib: ^2.6.0 + checksum: e7393f345c559e72eeaff18035f63668becb244ac0c2ed11e8c4524b8b3a910a2910ef86935f2cc1d91a80eba601e0bffbd365f762b285fc8d82fad20ba6797e + languageName: node + linkType: hard + +"@docusaurus/logger@npm:3.5.1": + version: 3.5.1 + resolution: "@docusaurus/logger@npm:3.5.1" + dependencies: + chalk: ^4.1.2 + tslib: ^2.6.0 + checksum: 4cb4c8f22c695dd060bde11f45ac5e7b0239273f9c29dfcc6635a57fa33add34423184bb6aa7c23ff36d4f946d84835e8f8f5e679f4a4f8e9a2ab43b45293861 + languageName: node + linkType: hard + +"@docusaurus/mdx-loader@npm:3.5.1": + version: 3.5.1 + resolution: "@docusaurus/mdx-loader@npm:3.5.1" + dependencies: + "@docusaurus/logger": 3.5.1 + "@docusaurus/utils": 3.5.1 + "@docusaurus/utils-validation": 3.5.1 + "@mdx-js/mdx": ^3.0.0 + "@slorber/remark-comment": ^1.0.0 + escape-html: ^1.0.3 + estree-util-value-to-estree: ^3.0.1 + file-loader: ^6.2.0 + fs-extra: ^11.1.1 + image-size: ^1.0.2 + mdast-util-mdx: ^3.0.0 + mdast-util-to-string: ^4.0.0 + rehype-raw: ^7.0.0 + remark-directive: ^3.0.0 + remark-emoji: ^4.0.0 + remark-frontmatter: ^5.0.0 + remark-gfm: ^4.0.0 + stringify-object: ^3.3.0 + tslib: ^2.6.0 + unified: ^11.0.3 + unist-util-visit: ^5.0.0 + url-loader: ^4.1.1 + vfile: ^6.0.1 + webpack: ^5.88.1 + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: e26cad969bdb6d243ccd11a2cc87effda0b46f3a153143e03760d4c5b8c3bdba08288f450597bd94c60006de21853d1872deb3429c806f240b8be8d7f06edf51 + languageName: node + linkType: hard + +"@docusaurus/module-type-aliases@npm:3.5.1": + version: 3.5.1 + resolution: "@docusaurus/module-type-aliases@npm:3.5.1" + dependencies: + "@docusaurus/types": 3.5.1 + "@types/history": ^4.7.11 + "@types/react": "*" + "@types/react-router-config": "*" + "@types/react-router-dom": "*" + react-helmet-async: "*" + react-loadable: "npm:@docusaurus/react-loadable@6.0.0" + peerDependencies: + react: "*" + react-dom: "*" + checksum: 3095a989debea978c29de7a4320f1b4da86e8b5db84305e53370b7ef41318960aa3f41d78f9db3269fbf0a698e5b30234bd2e0e197513bc1049cb97340d1259f + languageName: node + linkType: hard + +"@docusaurus/plugin-content-blog@npm:3.5.1": + version: 3.5.1 + resolution: "@docusaurus/plugin-content-blog@npm:3.5.1" + dependencies: + "@docusaurus/core": 3.5.1 + "@docusaurus/logger": 3.5.1 + "@docusaurus/mdx-loader": 3.5.1 + "@docusaurus/theme-common": 3.5.1 + "@docusaurus/types": 3.5.1 + "@docusaurus/utils": 3.5.1 + "@docusaurus/utils-common": 3.5.1 + "@docusaurus/utils-validation": 3.5.1 + cheerio: 1.0.0-rc.12 + feed: ^4.2.2 + fs-extra: ^11.1.1 + lodash: ^4.17.21 + reading-time: ^1.5.0 + srcset: ^4.0.0 + tslib: ^2.6.0 + unist-util-visit: ^5.0.0 + utility-types: ^3.10.0 + webpack: ^5.88.1 + peerDependencies: + "@docusaurus/plugin-content-docs": "*" + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: ca99e928aadf4faa48857a4837b4713ce8ab1a502bc1c5c189e119e7f98afe2e5f9099865a1fb5bb596865c318e774136cf4f834e598e1f2f74191190842de94 + languageName: node + linkType: hard + +"@docusaurus/plugin-content-docs@npm:3.5.1": + version: 3.5.1 + resolution: "@docusaurus/plugin-content-docs@npm:3.5.1" + dependencies: + "@docusaurus/core": 3.5.1 + "@docusaurus/logger": 3.5.1 + "@docusaurus/mdx-loader": 3.5.1 + "@docusaurus/module-type-aliases": 3.5.1 + "@docusaurus/theme-common": 3.5.1 + "@docusaurus/types": 3.5.1 + "@docusaurus/utils": 3.5.1 + "@docusaurus/utils-common": 3.5.1 + "@docusaurus/utils-validation": 3.5.1 + "@types/react-router-config": ^5.0.7 + combine-promises: ^1.1.0 + fs-extra: ^11.1.1 + js-yaml: ^4.1.0 + lodash: ^4.17.21 + tslib: ^2.6.0 + utility-types: ^3.10.0 + webpack: ^5.88.1 + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: 0be1897fbbc3f239b8dd5fdd10f3e76a9bee6b1b932225a64881818f7f2f6cde5544f9ac6ed59885d9d38201ab93c8563671dab9f0422eafc0124fcdc6a2e35a + languageName: node + linkType: hard + +"@docusaurus/plugin-content-pages@npm:3.5.1": + version: 3.5.1 + resolution: "@docusaurus/plugin-content-pages@npm:3.5.1" + dependencies: + "@docusaurus/core": 3.5.1 + "@docusaurus/mdx-loader": 3.5.1 + "@docusaurus/types": 3.5.1 + "@docusaurus/utils": 3.5.1 + "@docusaurus/utils-validation": 3.5.1 + fs-extra: ^11.1.1 + tslib: ^2.6.0 + webpack: ^5.88.1 + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: 7ca4dfa6cf5817433185e00b72689c2a1e3cb74e6a72075db5f1651ee0d6e9ca34a90bf0a359c94063d238737716061e2796a8c18a1aff5692391b145db93bfc + languageName: node + linkType: hard + +"@docusaurus/plugin-debug@npm:3.5.1": + version: 3.5.1 + resolution: "@docusaurus/plugin-debug@npm:3.5.1" + dependencies: + "@docusaurus/core": 3.5.1 + "@docusaurus/types": 3.5.1 + "@docusaurus/utils": 3.5.1 + fs-extra: ^11.1.1 + react-json-view-lite: ^1.2.0 + tslib: ^2.6.0 + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: a91bdff2724f4a85283612758682ff5850e99f0e54ac1f227c87e63d7ae5f5030240e05e6508d29bbfc73c55b4d33928323f322932c3516523289661435d82f2 + languageName: node + linkType: hard + +"@docusaurus/plugin-google-analytics@npm:3.5.1": + version: 3.5.1 + resolution: "@docusaurus/plugin-google-analytics@npm:3.5.1" + dependencies: + "@docusaurus/core": 3.5.1 + "@docusaurus/types": 3.5.1 + "@docusaurus/utils-validation": 3.5.1 + tslib: ^2.6.0 + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: 62eb73700bb01cf13e210a998dd5b7015e6dcc6d3080aadf8aef23225db96c4f3da34dac06bc952aa2f63f750140e04d51d42dcecf63f57833f22ea89fc9a529 + languageName: node + linkType: hard + +"@docusaurus/plugin-google-gtag@npm:3.5.1": + version: 3.5.1 + resolution: "@docusaurus/plugin-google-gtag@npm:3.5.1" + dependencies: + "@docusaurus/core": 3.5.1 + "@docusaurus/types": 3.5.1 + "@docusaurus/utils-validation": 3.5.1 + "@types/gtag.js": ^0.0.12 + tslib: ^2.6.0 + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: 1eb33eec211a44fb1284ebc4e164864a1957cc45b378dbeb81ecac26576c1e7236e4d508c4bdc3f61c955440e01af23c4f7756e36b6ff5eefa024b0c165ee995 + languageName: node + linkType: hard + +"@docusaurus/plugin-google-tag-manager@npm:3.5.1": + version: 3.5.1 + resolution: "@docusaurus/plugin-google-tag-manager@npm:3.5.1" + dependencies: + "@docusaurus/core": 3.5.1 + "@docusaurus/types": 3.5.1 + "@docusaurus/utils-validation": 3.5.1 + tslib: ^2.6.0 + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: 81b4ff624f50fdda31fa8f71e1cee3187e9d37bd581b1a8f27864d95d956ec580a96f32320627ed649cd1b1758414452f5b3da7588d45e8c48fd99b186d47e70 + languageName: node + linkType: hard + +"@docusaurus/plugin-sitemap@npm:3.5.1": + version: 3.5.1 + resolution: "@docusaurus/plugin-sitemap@npm:3.5.1" + dependencies: + "@docusaurus/core": 3.5.1 + "@docusaurus/logger": 3.5.1 + "@docusaurus/types": 3.5.1 + "@docusaurus/utils": 3.5.1 + "@docusaurus/utils-common": 3.5.1 + "@docusaurus/utils-validation": 3.5.1 + fs-extra: ^11.1.1 + sitemap: ^7.1.1 + tslib: ^2.6.0 + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: 5251ee2453fa5de5063d0af6a46ed893ae809fde497d86bd029b51ca2fa5bf4d6869b77f72c7bd0d5daf09682ded2814353617e66771e6b8b856a78489de9568 + languageName: node + linkType: hard + +"@docusaurus/preset-classic@npm:3.5.1": + version: 3.5.1 + resolution: "@docusaurus/preset-classic@npm:3.5.1" + dependencies: + "@docusaurus/core": 3.5.1 + "@docusaurus/plugin-content-blog": 3.5.1 + "@docusaurus/plugin-content-docs": 3.5.1 + "@docusaurus/plugin-content-pages": 3.5.1 + "@docusaurus/plugin-debug": 3.5.1 + "@docusaurus/plugin-google-analytics": 3.5.1 + "@docusaurus/plugin-google-gtag": 3.5.1 + "@docusaurus/plugin-google-tag-manager": 3.5.1 + "@docusaurus/plugin-sitemap": 3.5.1 + "@docusaurus/theme-classic": 3.5.1 + "@docusaurus/theme-common": 3.5.1 + "@docusaurus/theme-search-algolia": 3.5.1 + "@docusaurus/types": 3.5.1 + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: 83eb42ac4a53c1c29f0e5f60be1d3de16b025bb0f5b1bf6904fb9810d2692619b6e838d33694c2644efa887ee7245f8de37f995d31483c41f5481628fe0699e1 + languageName: node + linkType: hard + +"@docusaurus/theme-classic@npm:3.5.1": + version: 3.5.1 + resolution: "@docusaurus/theme-classic@npm:3.5.1" + dependencies: + "@docusaurus/core": 3.5.1 + "@docusaurus/mdx-loader": 3.5.1 + "@docusaurus/module-type-aliases": 3.5.1 + "@docusaurus/plugin-content-blog": 3.5.1 + "@docusaurus/plugin-content-docs": 3.5.1 + "@docusaurus/plugin-content-pages": 3.5.1 + "@docusaurus/theme-common": 3.5.1 + "@docusaurus/theme-translations": 3.5.1 + "@docusaurus/types": 3.5.1 + "@docusaurus/utils": 3.5.1 + "@docusaurus/utils-common": 3.5.1 + "@docusaurus/utils-validation": 3.5.1 + "@mdx-js/react": ^3.0.0 + clsx: ^2.0.0 + copy-text-to-clipboard: ^3.2.0 + infima: 0.2.0-alpha.44 + lodash: ^4.17.21 + nprogress: ^0.2.0 + postcss: ^8.4.26 + prism-react-renderer: ^2.3.0 + prismjs: ^1.29.0 + react-router-dom: ^5.3.4 + rtlcss: ^4.1.0 + tslib: ^2.6.0 + utility-types: ^3.10.0 + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: bafa84ed827f19560104d899ecf524ab66baf8269bfb4b6e34f77b99d799b8c4e773fe62ad866e46a7ae430f33e88fbd47a9d51adac5aa0abe71e749f354bd5d + languageName: node + linkType: hard + +"@docusaurus/theme-common@npm:3.5.1": + version: 3.5.1 + resolution: "@docusaurus/theme-common@npm:3.5.1" + dependencies: + "@docusaurus/mdx-loader": 3.5.1 + "@docusaurus/module-type-aliases": 3.5.1 + "@docusaurus/utils": 3.5.1 + "@docusaurus/utils-common": 3.5.1 + "@types/history": ^4.7.11 + "@types/react": "*" + "@types/react-router-config": "*" + clsx: ^2.0.0 + parse-numeric-range: ^1.3.0 + prism-react-renderer: ^2.3.0 + tslib: ^2.6.0 + utility-types: ^3.10.0 + peerDependencies: + "@docusaurus/plugin-content-docs": "*" + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: bef96010a3d059c18131965de286f1cdf7335ec99f79dee2ef232a77d982a24d124246d5dbc62e46d4e55d193dc4ad4646ad74d7135028ccf748b26695a5efaa + languageName: node + linkType: hard + +"@docusaurus/theme-search-algolia@npm:3.5.1": + version: 3.5.1 + resolution: "@docusaurus/theme-search-algolia@npm:3.5.1" + dependencies: + "@docsearch/react": ^3.5.2 + "@docusaurus/core": 3.5.1 + "@docusaurus/logger": 3.5.1 + "@docusaurus/plugin-content-docs": 3.5.1 + "@docusaurus/theme-common": 3.5.1 + "@docusaurus/theme-translations": 3.5.1 + "@docusaurus/utils": 3.5.1 + "@docusaurus/utils-validation": 3.5.1 + algoliasearch: ^4.18.0 + algoliasearch-helper: ^3.13.3 + clsx: ^2.0.0 + eta: ^2.2.0 + fs-extra: ^11.1.1 + lodash: ^4.17.21 + tslib: ^2.6.0 + utility-types: ^3.10.0 + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: 6f452106c1c55e0a32517f500864bf301bc0207d3ac788fda094a0bfbe099cd05722fadbbe05f36b46dcde35833a166b31c42fb2c4b8719f3161752af8aea936 + languageName: node + linkType: hard + +"@docusaurus/theme-translations@npm:3.5.1": + version: 3.5.1 + resolution: "@docusaurus/theme-translations@npm:3.5.1" + dependencies: + fs-extra: ^11.1.1 + tslib: ^2.6.0 + checksum: c76b8d80845547c989b6945278201f2000924ec4a306af0d71f6ed5e276eb4c4fac05719fdde077e3e884b3e8ab119173a315f34f674ec24ef6784d6e68932f4 + languageName: node + linkType: hard + +"@docusaurus/types@npm:3.5.1": + version: 3.5.1 + resolution: "@docusaurus/types@npm:3.5.1" + dependencies: + "@mdx-js/mdx": ^3.0.0 + "@types/history": ^4.7.11 + "@types/react": "*" + commander: ^5.1.0 + joi: ^17.9.2 + react-helmet-async: ^1.3.0 + utility-types: ^3.10.0 + webpack: ^5.88.1 + webpack-merge: ^5.9.0 + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: 133b38e485e247b625635c4be06b0c3803560a2c14b18bc6dbe400e060946b34475936389f9cdd77fe8806cd139a7d51fbce6f45780fa3ad92369fb1324fa793 + languageName: node + linkType: hard + +"@docusaurus/utils-common@npm:3.5.1": + version: 3.5.1 + resolution: "@docusaurus/utils-common@npm:3.5.1" + dependencies: + tslib: ^2.6.0 + peerDependencies: + "@docusaurus/types": "*" + peerDependenciesMeta: + "@docusaurus/types": + optional: true + checksum: cdec56977c75049abfecc2ed13a895f98d5911b1caea4e99ef7b514b25a18c49a81dbc1a5a9db155d01caf31e450adb99c7693f5c061c223c4ee80c7135674a1 + languageName: node + linkType: hard + +"@docusaurus/utils-validation@npm:3.5.1": + version: 3.5.1 + resolution: "@docusaurus/utils-validation@npm:3.5.1" + dependencies: + "@docusaurus/logger": 3.5.1 + "@docusaurus/utils": 3.5.1 + "@docusaurus/utils-common": 3.5.1 + fs-extra: ^11.2.0 + joi: ^17.9.2 + js-yaml: ^4.1.0 + lodash: ^4.17.21 + tslib: ^2.6.0 + checksum: 29786298abd4e438577e0f9d59efc192e18a8a3d58c310426afbb8c5991284e306d0882d722ed9f42165202d660ba7602931a56f9dd95029258414d69b62190a + languageName: node + linkType: hard + +"@docusaurus/utils@npm:3.5.1": + version: 3.5.1 + resolution: "@docusaurus/utils@npm:3.5.1" + dependencies: + "@docusaurus/logger": 3.5.1 + "@docusaurus/utils-common": 3.5.1 + "@svgr/webpack": ^8.1.0 + escape-string-regexp: ^4.0.0 + file-loader: ^6.2.0 + fs-extra: ^11.1.1 + github-slugger: ^1.5.0 + globby: ^11.1.0 + gray-matter: ^4.0.3 + jiti: ^1.20.0 + js-yaml: ^4.1.0 + lodash: ^4.17.21 + micromatch: ^4.0.5 + prompts: ^2.4.2 + resolve-pathname: ^3.0.0 + shelljs: ^0.8.5 + tslib: ^2.6.0 + url-loader: ^4.1.1 + utility-types: ^3.10.0 + webpack: ^5.88.1 + peerDependencies: + "@docusaurus/types": "*" + peerDependenciesMeta: + "@docusaurus/types": + optional: true + checksum: f605a8207a1c7a1916764cc0ecda5d247d257e8da6a179b0db32b0cfb42333326d727524c3608491e236b48d22a7607c0a42418054324f951788e2158ab2a4df + languageName: node + linkType: hard + +"@hapi/hoek@npm:^9.0.0, @hapi/hoek@npm:^9.3.0": + version: 9.3.0 + resolution: "@hapi/hoek@npm:9.3.0" + checksum: 4771c7a776242c3c022b168046af4e324d116a9d2e1d60631ee64f474c6e38d1bb07092d898bf95c7bc5d334c5582798a1456321b2e53ca817d4e7c88bc25b43 + languageName: node + linkType: hard + +"@hapi/topo@npm:^5.1.0": + version: 5.1.0 + resolution: "@hapi/topo@npm:5.1.0" + dependencies: + "@hapi/hoek": ^9.0.0 + checksum: 604dfd5dde76d5c334bd03f9001fce69c7ce529883acf92da96f4fe7e51221bf5e5110e964caca287a6a616ba027c071748ab636ff178ad750547fba611d6014 + languageName: node + linkType: hard + +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: ^5.1.2 + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: ^7.0.1 + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: ^8.1.0 + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 4a473b9b32a7d4d3cfb7a614226e555091ff0c5a29a1734c28c72a182c2f6699b26fc6b5c2131dfd841e86b185aea714c72201d7c98c2fba5f17709333a67aeb + languageName: node + linkType: hard + +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" + dependencies: + "@sinclair/typebox": ^0.27.8 + checksum: 910040425f0fc93cd13e68c750b7885590b8839066dfa0cd78e7def07bbb708ad869381f725945d66f2284de5663bbecf63e8fdd856e2ae6e261ba30b1687e93 + languageName: node + linkType: hard + +"@jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" + dependencies: + "@jest/schemas": ^29.6.3 + "@types/istanbul-lib-coverage": ^2.0.0 + "@types/istanbul-reports": ^3.0.0 + "@types/node": "*" + "@types/yargs": ^17.0.8 + chalk: ^4.0.0 + checksum: a0bcf15dbb0eca6bdd8ce61a3fb055349d40268622a7670a3b2eb3c3dbafe9eb26af59938366d520b86907b9505b0f9b29b85cec11579a9e580694b87cd90fcc + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.5 + resolution: "@jridgewell/gen-mapping@npm:0.3.5" + dependencies: + "@jridgewell/set-array": ^1.2.1 + "@jridgewell/sourcemap-codec": ^1.4.10 + "@jridgewell/trace-mapping": ^0.3.24 + checksum: ff7a1764ebd76a5e129c8890aa3e2f46045109dabde62b0b6c6a250152227647178ff2069ea234753a690d8f3c4ac8b5e7b267bbee272bffb7f3b0a370ab6e52 + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 83b85f72c59d1c080b4cbec0fef84528963a1b5db34e4370fa4bd1e3ff64a0d80e0cee7369d11d73c704e0286fb2865b530acac7a871088fbe92b5edf1000870 + languageName: node + linkType: hard + +"@jridgewell/set-array@npm:^1.2.1": + version: 1.2.1 + resolution: "@jridgewell/set-array@npm:1.2.1" + checksum: 832e513a85a588f8ed4f27d1279420d8547743cc37fcad5a5a76fc74bb895b013dfe614d0eed9cb860048e6546b798f8f2652020b4b2ba0561b05caa8c654b10 + languageName: node + linkType: hard + +"@jridgewell/source-map@npm:^0.3.3": + version: 0.3.6 + resolution: "@jridgewell/source-map@npm:0.3.6" + dependencies: + "@jridgewell/gen-mapping": ^0.3.5 + "@jridgewell/trace-mapping": ^0.3.25 + checksum: c9dc7d899397df95e3c9ec287b93c0b56f8e4453cd20743e2b9c8e779b1949bc3cccf6c01bb302779e46560eb45f62ea38d19fedd25370d814734268450a9f30 + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": + version: 1.5.0 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" + checksum: 05df4f2538b3b0f998ea4c1cd34574d0feba216fa5d4ccaef0187d12abf82eafe6021cec8b49f9bb4d90f2ba4582ccc581e72986a5fcf4176ae0cfeb04cf52ec + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": + version: 0.3.25 + resolution: "@jridgewell/trace-mapping@npm:0.3.25" + dependencies: + "@jridgewell/resolve-uri": ^3.1.0 + "@jridgewell/sourcemap-codec": ^1.4.14 + checksum: 9d3c40d225e139987b50c48988f8717a54a8c994d8a948ee42e1412e08988761d0754d7d10b803061cc3aebf35f92a5dbbab493bd0e1a9ef9e89a2130e83ba34 + languageName: node + linkType: hard + +"@leichtgewicht/ip-codec@npm:^2.0.1": + version: 2.0.5 + resolution: "@leichtgewicht/ip-codec@npm:2.0.5" + checksum: 4fcd025d0a923cb6b87b631a83436a693b255779c583158bbeacde6b4dd75b94cc1eba1c9c188de5fc36c218d160524ea08bfe4ef03a056b00ff14126d66f881 + languageName: node + linkType: hard + +"@mdx-js/mdx@npm:^3.0.0": + version: 3.0.1 + resolution: "@mdx-js/mdx@npm:3.0.1" + dependencies: + "@types/estree": ^1.0.0 + "@types/estree-jsx": ^1.0.0 + "@types/hast": ^3.0.0 + "@types/mdx": ^2.0.0 + collapse-white-space: ^2.0.0 + devlop: ^1.0.0 + estree-util-build-jsx: ^3.0.0 + estree-util-is-identifier-name: ^3.0.0 + estree-util-to-js: ^2.0.0 + estree-walker: ^3.0.0 + hast-util-to-estree: ^3.0.0 + hast-util-to-jsx-runtime: ^2.0.0 + markdown-extensions: ^2.0.0 + periscopic: ^3.0.0 + remark-mdx: ^3.0.0 + remark-parse: ^11.0.0 + remark-rehype: ^11.0.0 + source-map: ^0.7.0 + unified: ^11.0.0 + unist-util-position-from-estree: ^2.0.0 + unist-util-stringify-position: ^4.0.0 + unist-util-visit: ^5.0.0 + vfile: ^6.0.0 + checksum: 82221662279c39a755b88f63b031a30b9bc04365e5bfc3e45590f4fa7bf6bff12364f4caee31c768ae588145eed74fda10c327d53f9272b1a2cffbc8bd537ce6 + languageName: node + linkType: hard + +"@mdx-js/react@npm:^3.0.0": + version: 3.0.1 + resolution: "@mdx-js/react@npm:3.0.1" + dependencies: + "@types/mdx": ^2.0.0 + peerDependencies: + "@types/react": ">=16" + react: ">=16" + checksum: 1063a597264f6a8840aa13274a99beef8983a88dd45b0c5b8e48e6216bc23d33e247da8e2d95d6e1874483f8b4e0903b166ce5046874aa7ffa2b1333057dcddf + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": 2.0.5 + run-parallel: ^1.1.9 + checksum: a970d595bd23c66c880e0ef1817791432dbb7acbb8d44b7e7d0e7a22f4521260d4a83f7f9fd61d44fda4610105577f8f58a60718105fb38352baed612fd79e59 + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": 2.1.5 + fastq: ^1.6.0 + checksum: 190c643f156d8f8f277bf2a6078af1ffde1fd43f498f187c2db24d35b4b4b5785c02c7dc52e356497b9a1b65b13edc996de08de0b961c32844364da02986dc53 + languageName: node + linkType: hard + +"@npmcli/agent@npm:^2.0.0": + version: 2.2.2 + resolution: "@npmcli/agent@npm:2.2.2" + dependencies: + agent-base: ^7.1.0 + http-proxy-agent: ^7.0.0 + https-proxy-agent: ^7.0.1 + lru-cache: ^10.0.1 + socks-proxy-agent: ^8.0.3 + checksum: 67de7b88cc627a79743c88bab35e023e23daf13831a8aa4e15f998b92f5507b644d8ffc3788afc8e64423c612e0785a6a92b74782ce368f49a6746084b50d874 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^3.1.0": + version: 3.1.1 + resolution: "@npmcli/fs@npm:3.1.1" + dependencies: + semver: ^7.3.5 + checksum: d960cab4b93adcb31ce223bfb75c5714edbd55747342efb67dcc2f25e023d930a7af6ece3e75f2f459b6f38fc14d031c766f116cd124fdc937fd33112579e820 + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 6ad6a00fc4f2f2cfc6bff76fb1d88b8ee20bc0601e18ebb01b6d4be583733a860239a521a7fbca73b612e66705078809483549d2b18f370eb346c5155c8e4a0f + languageName: node + linkType: hard + +"@pnpm/config.env-replace@npm:^1.1.0": + version: 1.1.0 + resolution: "@pnpm/config.env-replace@npm:1.1.0" + checksum: a3d2b57e35eec9543d9eb085854f6e33e8102dac99fdef2fad2eebdbbfc345e93299f0c20e8eb61c1b4c7aa123bfd47c175678626f161cda65dd147c2b6e1fa0 + languageName: node + linkType: hard + +"@pnpm/network.ca-file@npm:^1.0.1": + version: 1.0.2 + resolution: "@pnpm/network.ca-file@npm:1.0.2" + dependencies: + graceful-fs: 4.2.10 + checksum: d8d0884646500576bd5390464d13db1bb9a62e32a1069293e5bddb2ad8354b354b7e2d2a35e12850025651e795e6a80ce9e601c66312504667b7e3ee7b52becc + languageName: node + linkType: hard + +"@pnpm/npm-conf@npm:^2.1.0": + version: 2.3.1 + resolution: "@pnpm/npm-conf@npm:2.3.1" + dependencies: + "@pnpm/config.env-replace": ^1.1.0 + "@pnpm/network.ca-file": ^1.0.1 + config-chain: ^1.1.11 + checksum: 9e1e1ce5faa64719e866b02d10e28d727d809365eb3692ccfdc420ab6d2073b93abe403994691868f265e34a5601a8eee18ffff6562b27124d971418ba6bb815 + languageName: node + linkType: hard + +"@polka/url@npm:^1.0.0-next.24": + version: 1.0.0-next.25 + resolution: "@polka/url@npm:1.0.0-next.25" + checksum: 4ab1d7a37163139c0e7bfc9d1e3f6a2a0db91a78b9f0a21f571d6aec2cdaeaacced744d47886c117aa7579aa5694b303fe3e0bd1922bb9cb3ce6bf7c2dc09801 + languageName: node + linkType: hard + +"@sideway/address@npm:^4.1.5": + version: 4.1.5 + resolution: "@sideway/address@npm:4.1.5" + dependencies: + "@hapi/hoek": ^9.0.0 + checksum: 3e3ea0f00b4765d86509282290368a4a5fd39a7995fdc6de42116ca19a96120858e56c2c995081def06e1c53e1f8bccc7d013f6326602bec9d56b72ee2772b9d + languageName: node + linkType: hard + +"@sideway/formula@npm:^3.0.1": + version: 3.0.1 + resolution: "@sideway/formula@npm:3.0.1" + checksum: e4beeebc9dbe2ff4ef0def15cec0165e00d1612e3d7cea0bc9ce5175c3263fc2c818b679bd558957f49400ee7be9d4e5ac90487e1625b4932e15c4aa7919c57a + languageName: node + linkType: hard + +"@sideway/pinpoint@npm:^2.0.0": + version: 2.0.0 + resolution: "@sideway/pinpoint@npm:2.0.0" + checksum: 0f4491e5897fcf5bf02c46f5c359c56a314e90ba243f42f0c100437935daa2488f20482f0f77186bd6bf43345095a95d8143ecf8b1f4d876a7bc0806aba9c3d2 + languageName: node + linkType: hard + +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: 00bd7362a3439021aa1ea51b0e0d0a0e8ca1351a3d54c606b115fdcc49b51b16db6e5f43b4fe7a28c38688523e22a94d49dd31168868b655f0d4d50f032d07a1 + languageName: node + linkType: hard + +"@sindresorhus/is@npm:^4.6.0": + version: 4.6.0 + resolution: "@sindresorhus/is@npm:4.6.0" + checksum: 83839f13da2c29d55c97abc3bc2c55b250d33a0447554997a85c539e058e57b8da092da396e252b11ec24a0279a0bed1f537fa26302209327060643e327f81d2 + languageName: node + linkType: hard + +"@sindresorhus/is@npm:^5.2.0": + version: 5.6.0 + resolution: "@sindresorhus/is@npm:5.6.0" + checksum: 2e6e0c3acf188dcd9aea0f324ac1b6ad04c9fc672392a7b5a1218512fcde066965797eba8b9fe2108657a504388bd4a6664e6e6602555168e828a6df08b9f10e + languageName: node + linkType: hard + +"@slorber/remark-comment@npm:^1.0.0": + version: 1.0.0 + resolution: "@slorber/remark-comment@npm:1.0.0" + dependencies: + micromark-factory-space: ^1.0.0 + micromark-util-character: ^1.1.0 + micromark-util-symbol: ^1.0.1 + checksum: c96f1533d09913c57381859966f10a706afd8eb680923924af1c451f3b72f22c31e394028d7535131c10f8682d3c60206da95c50fb4f016fbbd04218c853cc88 + languageName: node + linkType: hard + +"@svgr/babel-plugin-add-jsx-attribute@npm:8.0.0": + version: 8.0.0 + resolution: "@svgr/babel-plugin-add-jsx-attribute@npm:8.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3fc8e35d16f5abe0af5efe5851f27581225ac405d6a1ca44cda0df064cddfcc29a428c48c2e4bef6cebf627c9ac2f652a096030edb02cf5a120ce28d3c234710 + languageName: node + linkType: hard + +"@svgr/babel-plugin-remove-jsx-attribute@npm:8.0.0": + version: 8.0.0 + resolution: "@svgr/babel-plugin-remove-jsx-attribute@npm:8.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ff992893c6c4ac802713ba3a97c13be34e62e6d981c813af40daabcd676df68a72a61bd1e692bb1eda3587f1b1d700ea462222ae2153bb0f46886632d4f88d08 + languageName: node + linkType: hard + +"@svgr/babel-plugin-remove-jsx-empty-expression@npm:8.0.0": + version: 8.0.0 + resolution: "@svgr/babel-plugin-remove-jsx-empty-expression@npm:8.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0fb691b63a21bac00da3aa2dccec50d0d5a5b347ff408d60803b84410d8af168f2656e4ba1ee1f24dab0ae4e4af77901f2928752bb0434c1f6788133ec599ec8 + languageName: node + linkType: hard + +"@svgr/babel-plugin-replace-jsx-attribute-value@npm:8.0.0": + version: 8.0.0 + resolution: "@svgr/babel-plugin-replace-jsx-attribute-value@npm:8.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 1edda65ef4f4dd8f021143c8ec276a08f6baa6f733b8e8ee2e7775597bf6b97afb47fdeefd579d6ae6c959fe2e634f55cd61d99377631212228c8cfb351b8921 + languageName: node + linkType: hard + +"@svgr/babel-plugin-svg-dynamic-title@npm:8.0.0": + version: 8.0.0 + resolution: "@svgr/babel-plugin-svg-dynamic-title@npm:8.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 876cec891488992e6a9aebb8155e2bea4ec461b4718c51de36e988e00e271c6d9d01ef6be17b9effd44b2b3d7db0b41c161a5904a46ae6f38b26b387ad7f3709 + languageName: node + linkType: hard + +"@svgr/babel-plugin-svg-em-dimensions@npm:8.0.0": + version: 8.0.0 + resolution: "@svgr/babel-plugin-svg-em-dimensions@npm:8.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: be0e2d391164428327d9ec469a52cea7d93189c6b0e2c290999e048f597d777852f701c64dca44cd45b31ed14a7f859520326e2e4ad7c3a4545d0aa235bc7e9a + languageName: node + linkType: hard + +"@svgr/babel-plugin-transform-react-native-svg@npm:8.1.0": + version: 8.1.0 + resolution: "@svgr/babel-plugin-transform-react-native-svg@npm:8.1.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 85b434a57572f53bd2b9f0606f253e1fcf57b4a8c554ec3f2d43ed17f50d8cae200cb3aaf1ec9d626e1456e8b135dce530ae047eb0bed6d4bf98a752d6640459 + languageName: node + linkType: hard + +"@svgr/babel-plugin-transform-svg-component@npm:8.0.0": + version: 8.0.0 + resolution: "@svgr/babel-plugin-transform-svg-component@npm:8.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 04e2023d75693eeb0890341c40e449881184663056c249be7e5c80168e4aabb0fadd255e8d5d2dbf54b8c2a6e700efba994377135bfa4060dc4a2e860116ef8c + languageName: node + linkType: hard + +"@svgr/babel-preset@npm:8.1.0": + version: 8.1.0 + resolution: "@svgr/babel-preset@npm:8.1.0" + dependencies: + "@svgr/babel-plugin-add-jsx-attribute": 8.0.0 + "@svgr/babel-plugin-remove-jsx-attribute": 8.0.0 + "@svgr/babel-plugin-remove-jsx-empty-expression": 8.0.0 + "@svgr/babel-plugin-replace-jsx-attribute-value": 8.0.0 + "@svgr/babel-plugin-svg-dynamic-title": 8.0.0 + "@svgr/babel-plugin-svg-em-dimensions": 8.0.0 + "@svgr/babel-plugin-transform-react-native-svg": 8.1.0 + "@svgr/babel-plugin-transform-svg-component": 8.0.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3a67930f080b8891e1e8e2595716b879c944d253112bae763dce59807ba23454d162216c8d66a0a0e3d4f38a649ecd6c387e545d1e1261dd69a68e9a3392ee08 + languageName: node + linkType: hard + +"@svgr/core@npm:8.1.0": + version: 8.1.0 + resolution: "@svgr/core@npm:8.1.0" + dependencies: + "@babel/core": ^7.21.3 + "@svgr/babel-preset": 8.1.0 + camelcase: ^6.2.0 + cosmiconfig: ^8.1.3 + snake-case: ^3.0.4 + checksum: da4a12865c7dc59829d58df8bd232d6c85b7115fda40da0d2f844a1a51886e2e945560596ecfc0345d37837ac457de86a931e8b8d8550e729e0c688c02250d8a + languageName: node + linkType: hard + +"@svgr/hast-util-to-babel-ast@npm:8.0.0": + version: 8.0.0 + resolution: "@svgr/hast-util-to-babel-ast@npm:8.0.0" + dependencies: + "@babel/types": ^7.21.3 + entities: ^4.4.0 + checksum: 88401281a38bbc7527e65ff5437970414391a86158ef4b4046c89764c156d2d39ecd7cce77be8a51994c9fb3249170cb1eb8b9128b62faaa81743ef6ed3534ab + languageName: node + linkType: hard + +"@svgr/plugin-jsx@npm:8.1.0": + version: 8.1.0 + resolution: "@svgr/plugin-jsx@npm:8.1.0" + dependencies: + "@babel/core": ^7.21.3 + "@svgr/babel-preset": 8.1.0 + "@svgr/hast-util-to-babel-ast": 8.0.0 + svg-parser: ^2.0.4 + peerDependencies: + "@svgr/core": "*" + checksum: 0418a9780753d3544912ee2dad5d2cf8d12e1ba74df8053651b3886aeda54d5f0f7d2dece0af5e0d838332c4f139a57f0dabaa3ca1afa4d1a765efce6a7656f2 + languageName: node + linkType: hard + +"@svgr/plugin-svgo@npm:8.1.0": + version: 8.1.0 + resolution: "@svgr/plugin-svgo@npm:8.1.0" + dependencies: + cosmiconfig: ^8.1.3 + deepmerge: ^4.3.1 + svgo: ^3.0.2 + peerDependencies: + "@svgr/core": "*" + checksum: 59d9d214cebaacca9ca71a561f463d8b7e5a68ca9443e4792a42d903acd52259b1790c0680bc6afecc3f00a255a6cbd7ea278a9f625bac443620ea58a590c2d0 + languageName: node + linkType: hard + +"@svgr/webpack@npm:^8.1.0": + version: 8.1.0 + resolution: "@svgr/webpack@npm:8.1.0" + dependencies: + "@babel/core": ^7.21.3 + "@babel/plugin-transform-react-constant-elements": ^7.21.3 + "@babel/preset-env": ^7.20.2 + "@babel/preset-react": ^7.18.6 + "@babel/preset-typescript": ^7.21.0 + "@svgr/core": 8.1.0 + "@svgr/plugin-jsx": 8.1.0 + "@svgr/plugin-svgo": 8.1.0 + checksum: c6eec5b0cf2fb2ecd3a7a362d272eda35330b17c76802a3481f499b5d07ff8f87b31d2571043bff399b051a1767b1e2e499dbf186104d1c06d76f9f1535fac01 + languageName: node + linkType: hard + +"@szmarczak/http-timer@npm:^5.0.1": + version: 5.0.1 + resolution: "@szmarczak/http-timer@npm:5.0.1" + dependencies: + defer-to-connect: ^2.0.1 + checksum: fc9cb993e808806692e4a3337c90ece0ec00c89f4b67e3652a356b89730da98bc824273a6d67ca84d5f33cd85f317dcd5ce39d8cc0a2f060145a608a7cb8ce92 + languageName: node + linkType: hard + +"@trysound/sax@npm:0.2.0": + version: 0.2.0 + resolution: "@trysound/sax@npm:0.2.0" + checksum: 11226c39b52b391719a2a92e10183e4260d9651f86edced166da1d95f39a0a1eaa470e44d14ac685ccd6d3df7e2002433782872c0feeb260d61e80f21250e65c + languageName: node + linkType: hard + +"@types/acorn@npm:^4.0.0": + version: 4.0.6 + resolution: "@types/acorn@npm:4.0.6" + dependencies: + "@types/estree": "*" + checksum: 60e1fd28af18d6cb54a93a7231c7c18774a9a8739c9b179e9e8750dca631e10cbef2d82b02830ea3f557b1d121e6406441e9e1250bd492dc81d4b3456e76e4d4 + languageName: node + linkType: hard + +"@types/body-parser@npm:*": + version: 1.19.5 + resolution: "@types/body-parser@npm:1.19.5" + dependencies: + "@types/connect": "*" + "@types/node": "*" + checksum: 1e251118c4b2f61029cc43b0dc028495f2d1957fe8ee49a707fb940f86a9bd2f9754230805598278fe99958b49e9b7e66eec8ef6a50ab5c1f6b93e1ba2aaba82 + languageName: node + linkType: hard + +"@types/bonjour@npm:^3.5.9": + version: 3.5.13 + resolution: "@types/bonjour@npm:3.5.13" + dependencies: + "@types/node": "*" + checksum: e827570e097bd7d625a673c9c208af2d1a22fa3885c0a1646533cf24394c839c3e5f60ac1bc60c0ddcc69c0615078c9fb2c01b42596c7c582d895d974f2409ee + languageName: node + linkType: hard + +"@types/connect-history-api-fallback@npm:^1.3.5": + version: 1.5.4 + resolution: "@types/connect-history-api-fallback@npm:1.5.4" + dependencies: + "@types/express-serve-static-core": "*" + "@types/node": "*" + checksum: e1dee43b8570ffac02d2d47a2b4ba80d3ca0dd1840632dafb221da199e59dbe3778d3d7303c9e23c6b401f37c076935a5bc2aeae1c4e5feaefe1c371fe2073fd + languageName: node + linkType: hard + +"@types/connect@npm:*": + version: 3.4.38 + resolution: "@types/connect@npm:3.4.38" + dependencies: + "@types/node": "*" + checksum: 7eb1bc5342a9604facd57598a6c62621e244822442976c443efb84ff745246b10d06e8b309b6e80130026a396f19bf6793b7cecd7380169f369dac3bfc46fb99 + languageName: node + linkType: hard + +"@types/debug@npm:^4.0.0": + version: 4.1.12 + resolution: "@types/debug@npm:4.1.12" + dependencies: + "@types/ms": "*" + checksum: 47876a852de8240bfdaf7481357af2b88cb660d30c72e73789abf00c499d6bc7cd5e52f41c915d1b9cd8ec9fef5b05688d7b7aef17f7f272c2d04679508d1053 + languageName: node + linkType: hard + +"@types/eslint-scope@npm:^3.7.3": + version: 3.7.7 + resolution: "@types/eslint-scope@npm:3.7.7" + dependencies: + "@types/eslint": "*" + "@types/estree": "*" + checksum: e2889a124aaab0b89af1bab5959847c5bec09809209255de0e63b9f54c629a94781daa04adb66bffcdd742f5e25a17614fb933965093c0eea64aacda4309380e + languageName: node + linkType: hard + +"@types/eslint@npm:*": + version: 9.6.0 + resolution: "@types/eslint@npm:9.6.0" + dependencies: + "@types/estree": "*" + "@types/json-schema": "*" + checksum: 7be4b1d24f3df30b28e9cbaac6a5fa14ec1ceca7c173d9605c0ec6e0d1dcdba0452d326dd695dd980f5c14b42aa09fe41675c4f09ffc82db4f466588d3f837cb + languageName: node + linkType: hard + +"@types/estree-jsx@npm:^1.0.0": + version: 1.0.5 + resolution: "@types/estree-jsx@npm:1.0.5" + dependencies: + "@types/estree": "*" + checksum: a028ab0cd7b2950168a05c6a86026eb3a36a54a4adfae57f13911d7b49dffe573d9c2b28421b2d029b49b3d02fcd686611be2622dc3dad6d9791166c083f6008 + languageName: node + linkType: hard + +"@types/estree@npm:*, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.5": + version: 1.0.5 + resolution: "@types/estree@npm:1.0.5" + checksum: dd8b5bed28e6213b7acd0fb665a84e693554d850b0df423ac8076cc3ad5823a6bc26b0251d080bdc545af83179ede51dd3f6fa78cad2c46ed1f29624ddf3e41a + languageName: node + linkType: hard + +"@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^4.17.33": + version: 4.19.5 + resolution: "@types/express-serve-static-core@npm:4.19.5" + dependencies: + "@types/node": "*" + "@types/qs": "*" + "@types/range-parser": "*" + "@types/send": "*" + checksum: 72076c2f8df55e89136d4343fc874050d56c0f4afd885772a8aa506b98c3f4f3ddc7dcba42295a8b931c61000234fd679aec79ef50db15f376bf37d46234939a + languageName: node + linkType: hard + +"@types/express@npm:*, @types/express@npm:^4.17.13": + version: 4.17.21 + resolution: "@types/express@npm:4.17.21" + dependencies: + "@types/body-parser": "*" + "@types/express-serve-static-core": ^4.17.33 + "@types/qs": "*" + "@types/serve-static": "*" + checksum: fb238298630370a7392c7abdc80f495ae6c716723e114705d7e3fb67e3850b3859bbfd29391463a3fb8c0b32051847935933d99e719c0478710f8098ee7091c5 + languageName: node + linkType: hard + +"@types/gtag.js@npm:^0.0.12": + version: 0.0.12 + resolution: "@types/gtag.js@npm:0.0.12" + checksum: 34efc27fbfd0013255b8bfd4af38ded9d5a6ba761130c76f17fd3a9585d83acc88d8005aab667cfec4bdec0e7c7217f689739799a8f61aed0edb929be58b162e + languageName: node + linkType: hard + +"@types/hast@npm:^3.0.0": + version: 3.0.4 + resolution: "@types/hast@npm:3.0.4" + dependencies: + "@types/unist": "*" + checksum: 7a973e8d16fcdf3936090fa2280f408fb2b6a4f13b42edeb5fbd614efe042b82eac68e298e556d50f6b4ad585a3a93c353e9c826feccdc77af59de8dd400d044 + languageName: node + linkType: hard + +"@types/history@npm:^4.7.11": + version: 4.7.11 + resolution: "@types/history@npm:4.7.11" + checksum: c92e2ba407dcab0581a9afdf98f533aa41b61a71133420a6d92b1ca9839f741ab1f9395b17454ba5b88cb86020b70b22d74a1950ccfbdfd9beeaa5459fdc3464 + languageName: node + linkType: hard + +"@types/html-minifier-terser@npm:^6.0.0": + version: 6.1.0 + resolution: "@types/html-minifier-terser@npm:6.1.0" + checksum: eb843f6a8d662d44fb18ec61041117734c6aae77aa38df1be3b4712e8e50ffaa35f1e1c92fdd0fde14a5675fecf457abcd0d15a01fae7506c91926176967f452 + languageName: node + linkType: hard + +"@types/http-cache-semantics@npm:^4.0.2": + version: 4.0.4 + resolution: "@types/http-cache-semantics@npm:4.0.4" + checksum: 7f4dd832e618bc1e271be49717d7b4066d77c2d4eed5b81198eb987e532bb3e1c7e02f45d77918185bad936f884b700c10cebe06305f50400f382ab75055f9e8 + languageName: node + linkType: hard + +"@types/http-errors@npm:*": + version: 2.0.4 + resolution: "@types/http-errors@npm:2.0.4" + checksum: 1f3d7c3b32c7524811a45690881736b3ef741bf9849ae03d32ad1ab7062608454b150a4e7f1351f83d26a418b2d65af9bdc06198f1c079d75578282884c4e8e3 + languageName: node + linkType: hard + +"@types/http-proxy@npm:^1.17.8": + version: 1.17.15 + resolution: "@types/http-proxy@npm:1.17.15" + dependencies: + "@types/node": "*" + checksum: d96eaf4e22232b587b46256b89c20525c453216684481015cf50fb385b0b319b883749ccb77dee9af57d107e8440cdacd56f4234f65176d317e9777077ff5bf3 + languageName: node + linkType: hard + +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0": + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 3feac423fd3e5449485afac999dcfcb3d44a37c830af898b689fadc65d26526460bedb889db278e0d4d815a670331796494d073a10ee6e3a6526301fe7415778 + languageName: node + linkType: hard + +"@types/istanbul-lib-report@npm:*": + version: 3.0.3 + resolution: "@types/istanbul-lib-report@npm:3.0.3" + dependencies: + "@types/istanbul-lib-coverage": "*" + checksum: b91e9b60f865ff08cb35667a427b70f6c2c63e88105eadd29a112582942af47ed99c60610180aa8dcc22382fa405033f141c119c69b95db78c4c709fbadfeeb4 + languageName: node + linkType: hard + +"@types/istanbul-reports@npm:^3.0.0": + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" + dependencies: + "@types/istanbul-lib-report": "*" + checksum: 93eb18835770b3431f68ae9ac1ca91741ab85f7606f310a34b3586b5a34450ec038c3eed7ab19266635499594de52ff73723a54a72a75b9f7d6a956f01edee95 + languageName: node + linkType: hard + +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 + languageName: node + linkType: hard + +"@types/mdast@npm:^4.0.0, @types/mdast@npm:^4.0.2": + version: 4.0.4 + resolution: "@types/mdast@npm:4.0.4" + dependencies: + "@types/unist": "*" + checksum: 20c4e9574cc409db662a35cba52b068b91eb696b3049e94321219d47d34c8ccc99a142be5c76c80a538b612457b03586bc2f6b727a3e9e7530f4c8568f6282ee + languageName: node + linkType: hard + +"@types/mdx@npm:^2.0.0": + version: 2.0.13 + resolution: "@types/mdx@npm:2.0.13" + checksum: 195137b548e75a85f0558bb1ca5088aff1c01ae0fc64454da06085b7513a043356d0bb51ed559d3cbc7ad724ccd8cef2a7d07d014b89a47a74dff8875ceb3b15 + languageName: node + linkType: hard + +"@types/mime@npm:^1": + version: 1.3.5 + resolution: "@types/mime@npm:1.3.5" + checksum: e29a5f9c4776f5229d84e525b7cd7dd960b51c30a0fb9a028c0821790b82fca9f672dab56561e2acd9e8eed51d431bde52eafdfef30f643586c4162f1aecfc78 + languageName: node + linkType: hard + +"@types/ms@npm:*": + version: 0.7.34 + resolution: "@types/ms@npm:0.7.34" + checksum: f38d36e7b6edecd9badc9cf50474159e9da5fa6965a75186cceaf883278611b9df6669dc3a3cc122b7938d317b68a9e3d573d316fcb35d1be47ec9e468c6bd8a + languageName: node + linkType: hard + +"@types/node-forge@npm:^1.3.0": + version: 1.3.11 + resolution: "@types/node-forge@npm:1.3.11" + dependencies: + "@types/node": "*" + checksum: 1e86bd55b92a492eaafd75f6d01f31e7d86a5cdadd0c6bcdc0b1df4103b7f99bb75b832efd5217c7ddda5c781095dc086a868e20b9de00f5a427ddad4c296cd5 + languageName: node + linkType: hard + +"@types/node@npm:*": + version: 22.2.0 + resolution: "@types/node@npm:22.2.0" + dependencies: + undici-types: ~6.13.0 + checksum: 63724799337bfb57719a1992690e738341d824e1744a2ac52c5278a008fbfadf99765519c19858feb80418cc7da0d5c8bdf7ea4d82973869b3882bd602c48ade + languageName: node + linkType: hard + +"@types/node@npm:^17.0.5": + version: 17.0.45 + resolution: "@types/node@npm:17.0.45" + checksum: aa04366b9103b7d6cfd6b2ef64182e0eaa7d4462c3f817618486ea0422984c51fc69fd0d436eae6c9e696ddfdbec9ccaa27a917f7c2e8c75c5d57827fe3d95e8 + languageName: node + linkType: hard + +"@types/parse-json@npm:^4.0.0": + version: 4.0.2 + resolution: "@types/parse-json@npm:4.0.2" + checksum: 5bf62eec37c332ad10059252fc0dab7e7da730764869c980b0714777ad3d065e490627be9f40fc52f238ffa3ac4199b19de4127196910576c2fe34dd47c7a470 + languageName: node + linkType: hard + +"@types/prismjs@npm:^1.26.0": + version: 1.26.4 + resolution: "@types/prismjs@npm:1.26.4" + checksum: ae33fa6be38b15b11d211806c2ad034bb2d794ca4897bed4eff574114d9d0ae99c89a7489fc04b2655472413ba430e30deb5c26b190261218928cf2ee9f414d1 + languageName: node + linkType: hard + +"@types/prop-types@npm:*": + version: 15.7.12 + resolution: "@types/prop-types@npm:15.7.12" + checksum: ac16cc3d0a84431ffa5cfdf89579ad1e2269549f32ce0c769321fdd078f84db4fbe1b461ed5a1a496caf09e637c0e367d600c541435716a55b1d9713f5035dfe + languageName: node + linkType: hard + +"@types/qs@npm:*": + version: 6.9.15 + resolution: "@types/qs@npm:6.9.15" + checksum: 97d8208c2b82013b618e7a9fc14df6bd40a73e1385ac479b6896bafc7949a46201c15f42afd06e86a05e914f146f495f606b6fb65610cc60cf2e0ff743ec38a2 + languageName: node + linkType: hard + +"@types/range-parser@npm:*": + version: 1.2.7 + resolution: "@types/range-parser@npm:1.2.7" + checksum: 95640233b689dfbd85b8c6ee268812a732cf36d5affead89e806fe30da9a430767af8ef2cd661024fd97e19d61f3dec75af2df5e80ec3bea000019ab7028629a + languageName: node + linkType: hard + +"@types/react-router-config@npm:*, @types/react-router-config@npm:^5.0.7": + version: 5.0.11 + resolution: "@types/react-router-config@npm:5.0.11" + dependencies: + "@types/history": ^4.7.11 + "@types/react": "*" + "@types/react-router": ^5.1.0 + checksum: 4b72d9b71e0576e193c11e5085bbdac43f31debfa3b6ebc24666f3d646ef25c1f57f16c29b1ddd3051c881e85f8e0d4ab5a7bbd5fc215b9377f57675b210be7c + languageName: node + linkType: hard + +"@types/react-router-dom@npm:*": + version: 5.3.3 + resolution: "@types/react-router-dom@npm:5.3.3" + dependencies: + "@types/history": ^4.7.11 + "@types/react": "*" + "@types/react-router": "*" + checksum: 28c4ea48909803c414bf5a08502acbb8ba414669b4b43bb51297c05fe5addc4df0b8fd00e0a9d1e3535ec4073ef38aaafac2c4a2b95b787167d113bc059beff3 + languageName: node + linkType: hard + +"@types/react-router@npm:*, @types/react-router@npm:^5.1.0": + version: 5.1.20 + resolution: "@types/react-router@npm:5.1.20" + dependencies: + "@types/history": ^4.7.11 + "@types/react": "*" + checksum: 128764143473a5e9457ddc715436b5d49814b1c214dde48939b9bef23f0e77f52ffcdfa97eb8d3cc27e2c229869c0cdd90f637d887b62f2c9f065a87d6425419 + languageName: node + linkType: hard + +"@types/react@npm:*": + version: 18.3.3 + resolution: "@types/react@npm:18.3.3" + dependencies: + "@types/prop-types": "*" + csstype: ^3.0.2 + checksum: c63d6a78163244e2022b01ef79b0baec4fe4da3475dc4a90bb8accefad35ef0c43560fd0312e5974f92a0f1108aa4d669ac72d73d66396aa060ea03b5d2e3873 + languageName: node + linkType: hard + +"@types/retry@npm:0.12.0": + version: 0.12.0 + resolution: "@types/retry@npm:0.12.0" + checksum: 61a072c7639f6e8126588bf1eb1ce8835f2cb9c2aba795c4491cf6310e013267b0c8488039857c261c387e9728c1b43205099223f160bb6a76b4374f741b5603 + languageName: node + linkType: hard + +"@types/sax@npm:^1.2.1": + version: 1.2.7 + resolution: "@types/sax@npm:1.2.7" + dependencies: + "@types/node": "*" + checksum: 7ece5fbb5d9c8fc76ab0de2f99d705edf92f18e701d4f9d9b0647275e32eb65e656c1badf9dfaa12f4e1ff3e250561c8c9cfe79e8b5f33dd1417ac0f1804f6cc + languageName: node + linkType: hard + +"@types/send@npm:*": + version: 0.17.4 + resolution: "@types/send@npm:0.17.4" + dependencies: + "@types/mime": ^1 + "@types/node": "*" + checksum: cf4db48251bbb03cd6452b4de6e8e09e2d75390a92fd798eca4a803df06444adc94ed050246c94c7ed46fb97be1f63607f0e1f13c3ce83d71788b3e08640e5e0 + languageName: node + linkType: hard + +"@types/serve-index@npm:^1.9.1": + version: 1.9.4 + resolution: "@types/serve-index@npm:1.9.4" + dependencies: + "@types/express": "*" + checksum: 72727c88d54da5b13275ebfb75dcdc4aa12417bbe9da1939e017c4c5f0c906fae843aa4e0fbfe360e7ee9df2f3d388c21abfc488f77ce58693fb57809f8ded92 + languageName: node + linkType: hard + +"@types/serve-static@npm:*, @types/serve-static@npm:^1.13.10": + version: 1.15.7 + resolution: "@types/serve-static@npm:1.15.7" + dependencies: + "@types/http-errors": "*" + "@types/node": "*" + "@types/send": "*" + checksum: bbbf00dbd84719da2250a462270dc68964006e8d62f41fe3741abd94504ba3688f420a49afb2b7478921a1544d3793183ffa097c5724167da777f4e0c7f1a7d6 + languageName: node + linkType: hard + +"@types/sockjs@npm:^0.3.33": + version: 0.3.36 + resolution: "@types/sockjs@npm:0.3.36" + dependencies: + "@types/node": "*" + checksum: b4b5381122465d80ea8b158537c00bc82317222d3fb31fd7229ff25b31fa89134abfbab969118da55622236bf3d8fee75759f3959908b5688991f492008f29bc + languageName: node + linkType: hard + +"@types/unist@npm:*, @types/unist@npm:^3.0.0": + version: 3.0.2 + resolution: "@types/unist@npm:3.0.2" + checksum: 3d04d0be69316e5f14599a0d993a208606c12818cf631fd399243d1dc7a9bd8a3917d6066baa6abc290814afbd744621484756803c80cba892c39cd4b4a85616 + languageName: node + linkType: hard + +"@types/unist@npm:^2.0.0": + version: 2.0.10 + resolution: "@types/unist@npm:2.0.10" + checksum: e2924e18dedf45f68a5c6ccd6015cd62f1643b1b43baac1854efa21ae9e70505db94290434a23da1137d9e31eb58e54ca175982005698ac37300a1c889f6c4aa + languageName: node + linkType: hard + +"@types/ws@npm:^8.5.5": + version: 8.5.12 + resolution: "@types/ws@npm:8.5.12" + dependencies: + "@types/node": "*" + checksum: ddefb6ad1671f70ce73b38a5f47f471d4d493864fca7c51f002a86e5993d031294201c5dced6d5018fb8905ad46888d65c7f20dd54fc165910b69f42fba9a6d0 + languageName: node + linkType: hard + +"@types/yargs-parser@npm:*": + version: 21.0.3 + resolution: "@types/yargs-parser@npm:21.0.3" + checksum: ef236c27f9432983e91432d974243e6c4cdae227cb673740320eff32d04d853eed59c92ca6f1142a335cfdc0e17cccafa62e95886a8154ca8891cc2dec4ee6fc + languageName: node + linkType: hard + +"@types/yargs@npm:^17.0.8": + version: 17.0.33 + resolution: "@types/yargs@npm:17.0.33" + dependencies: + "@types/yargs-parser": "*" + checksum: ee013f257472ab643cb0584cf3e1ff9b0c44bca1c9ba662395300a7f1a6c55fa9d41bd40ddff42d99f5d95febb3907c9ff600fbcb92dadbec22c6a76de7e1236 + languageName: node + linkType: hard + +"@ungap/structured-clone@npm:^1.0.0": + version: 1.2.0 + resolution: "@ungap/structured-clone@npm:1.2.0" + checksum: 4f656b7b4672f2ce6e272f2427d8b0824ed11546a601d8d5412b9d7704e83db38a8d9f402ecdf2b9063fc164af842ad0ec4a55819f621ed7e7ea4d1efcc74524 + languageName: node + linkType: hard + +"@webassemblyjs/ast@npm:1.12.1, @webassemblyjs/ast@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/ast@npm:1.12.1" + dependencies: + "@webassemblyjs/helper-numbers": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + checksum: 31bcc64147236bd7b1b6d29d1f419c1f5845c785e1e42dc9e3f8ca2e05a029e9393a271b84f3a5bff2a32d35f51ff59e2181a6e5f953fe88576acd6750506202 + languageName: node + linkType: hard + +"@webassemblyjs/floating-point-hex-parser@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" + checksum: 29b08758841fd8b299c7152eda36b9eb4921e9c584eb4594437b5cd90ed6b920523606eae7316175f89c20628da14326801090167cc7fbffc77af448ac84b7e2 + languageName: node + linkType: hard + +"@webassemblyjs/helper-api-error@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" + checksum: e8563df85161096343008f9161adb138a6e8f3c2cc338d6a36011aa55eabb32f2fd138ffe63bc278d009ada001cc41d263dadd1c0be01be6c2ed99076103689f + languageName: node + linkType: hard + +"@webassemblyjs/helper-buffer@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/helper-buffer@npm:1.12.1" + checksum: c3ffb723024130308db608e86e2bdccd4868bbb62dffb0a9a1530606496f79c87f8565bd8e02805ce64912b71f1a70ee5fb00307258b0c082c3abf961d097eca + languageName: node + linkType: hard + +"@webassemblyjs/helper-numbers@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" + dependencies: + "@webassemblyjs/floating-point-hex-parser": 1.11.6 + "@webassemblyjs/helper-api-error": 1.11.6 + "@xtuc/long": 4.2.2 + checksum: f4b562fa219f84368528339e0f8d273ad44e047a07641ffcaaec6f93e5b76fd86490a009aa91a294584e1436d74b0a01fa9fde45e333a4c657b58168b04da424 + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" + checksum: 3535ef4f1fba38de3475e383b3980f4bbf3de72bbb631c2b6584c7df45be4eccd62c6ff48b5edd3f1bcff275cfd605a37679ec199fc91fd0a7705d7f1e3972dc + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-section@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": 1.12.1 + "@webassemblyjs/helper-buffer": 1.12.1 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/wasm-gen": 1.12.1 + checksum: c19810cdd2c90ff574139b6d8c0dda254d42d168a9e5b3d353d1bc085f1d7164ccd1b3c05592a45a939c47f7e403dc8d03572bb686642f06a3d02932f6f0bc8f + languageName: node + linkType: hard + +"@webassemblyjs/ieee754@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/ieee754@npm:1.11.6" + dependencies: + "@xtuc/ieee754": ^1.2.0 + checksum: 13574b8e41f6ca39b700e292d7edf102577db5650fe8add7066a320aa4b7a7c09a5056feccac7a74eb68c10dea9546d4461412af351f13f6b24b5f32379b49de + languageName: node + linkType: hard + +"@webassemblyjs/leb128@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/leb128@npm:1.11.6" + dependencies: + "@xtuc/long": 4.2.2 + checksum: 7ea942dc9777d4b18a5ebfa3a937b30ae9e1d2ce1fee637583ed7f376334dd1d4274f813d2e250056cca803e0952def4b954913f1a3c9068bcd4ab4ee5143bf0 + languageName: node + linkType: hard + +"@webassemblyjs/utf8@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/utf8@npm:1.11.6" + checksum: 807fe5b5ce10c390cfdd93e0fb92abda8aebabb5199980681e7c3743ee3306a75729bcd1e56a3903980e96c885ee53ef901fcbaac8efdfa480f9c0dae1d08713 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-edit@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-edit@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": 1.12.1 + "@webassemblyjs/helper-buffer": 1.12.1 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/helper-wasm-section": 1.12.1 + "@webassemblyjs/wasm-gen": 1.12.1 + "@webassemblyjs/wasm-opt": 1.12.1 + "@webassemblyjs/wasm-parser": 1.12.1 + "@webassemblyjs/wast-printer": 1.12.1 + checksum: ae23642303f030af888d30c4ef37b08dfec7eab6851a9575a616e65d1219f880d9223913a39056dd654e49049d76e97555b285d1f7e56935047abf578cce0692 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-gen@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-gen@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": 1.12.1 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/ieee754": 1.11.6 + "@webassemblyjs/leb128": 1.11.6 + "@webassemblyjs/utf8": 1.11.6 + checksum: 5787626bb7f0b033044471ddd00ce0c9fe1ee4584e8b73e232051e3a4c99ba1a102700d75337151c8b6055bae77eefa4548960c610a5e4a504e356bd872138ff + languageName: node + linkType: hard + +"@webassemblyjs/wasm-opt@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-opt@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": 1.12.1 + "@webassemblyjs/helper-buffer": 1.12.1 + "@webassemblyjs/wasm-gen": 1.12.1 + "@webassemblyjs/wasm-parser": 1.12.1 + checksum: 0e8fa8a0645304a1e18ff40d3db5a2e9233ebaa169b19fcc651d6fc9fe2cac0ce092ddee927318015ae735d9cd9c5d97c0cafb6a51dcd2932ac73587b62df991 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-parser@npm:1.12.1, @webassemblyjs/wasm-parser@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-parser@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": 1.12.1 + "@webassemblyjs/helper-api-error": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/ieee754": 1.11.6 + "@webassemblyjs/leb128": 1.11.6 + "@webassemblyjs/utf8": 1.11.6 + checksum: 176015de3551ac068cd4505d837414f258d9ade7442bd71efb1232fa26c9f6d7d4e11a5c816caeed389943f409af7ebff6899289a992d7a70343cb47009d21a8 + languageName: node + linkType: hard + +"@webassemblyjs/wast-printer@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wast-printer@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": 1.12.1 + "@xtuc/long": 4.2.2 + checksum: 2974b5dda8d769145ba0efd886ea94a601e61fb37114c14f9a9a7606afc23456799af652ac3052f284909bd42edc3665a76bc9b50f95f0794c053a8a1757b713 + languageName: node + linkType: hard + +"@xtuc/ieee754@npm:^1.2.0": + version: 1.2.0 + resolution: "@xtuc/ieee754@npm:1.2.0" + checksum: ac56d4ca6e17790f1b1677f978c0c6808b1900a5b138885d3da21732f62e30e8f0d9120fcf8f6edfff5100ca902b46f8dd7c1e3f903728634523981e80e2885a + languageName: node + linkType: hard + +"@xtuc/long@npm:4.2.2": + version: 4.2.2 + resolution: "@xtuc/long@npm:4.2.2" + checksum: 8ed0d477ce3bc9c6fe2bf6a6a2cc316bb9c4127c5a7827bae947fa8ec34c7092395c5a283cc300c05b5fa01cbbfa1f938f410a7bf75db7c7846fea41949989ec + languageName: node + linkType: hard + +"abbrev@npm:^2.0.0": + version: 2.0.0 + resolution: "abbrev@npm:2.0.0" + checksum: 0e994ad2aa6575f94670d8a2149afe94465de9cedaaaac364e7fb43a40c3691c980ff74899f682f4ca58fa96b4cbd7421a015d3a6defe43a442117d7821a2f36 + languageName: node + linkType: hard + +"accepts@npm:~1.3.4, accepts@npm:~1.3.5, accepts@npm:~1.3.8": + version: 1.3.8 + resolution: "accepts@npm:1.3.8" + dependencies: + mime-types: ~2.1.34 + negotiator: 0.6.3 + checksum: 50c43d32e7b50285ebe84b613ee4a3aa426715a7d131b65b786e2ead0fd76b6b60091b9916d3478a75f11f162628a2139991b6c03ab3f1d9ab7c86075dc8eab4 + languageName: node + linkType: hard + +"acorn-import-attributes@npm:^1.9.5": + version: 1.9.5 + resolution: "acorn-import-attributes@npm:1.9.5" + peerDependencies: + acorn: ^8 + checksum: 1c0c49b6a244503964ae46ae850baccf306e84caf99bc2010ed6103c69a423987b07b520a6c619f075d215388bd4923eccac995886a54309eda049ab78a4be95 + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.0.0": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: c3d3b2a89c9a056b205b69530a37b972b404ee46ec8e5b341666f9513d3163e2a4f214a71f4dfc7370f5a9c07472d2fd1c11c91c3f03d093e37637d95da98950 + languageName: node + linkType: hard + +"acorn-walk@npm:^8.0.0": + version: 8.3.3 + resolution: "acorn-walk@npm:8.3.3" + dependencies: + acorn: ^8.11.0 + checksum: 0f09d351fc30b69b2b9982bf33dc30f3d35a34e030e5f1ed3c49fc4e3814a192bf3101e4c30912a0595410f5e91bb70ddba011ea73398b3ecbfe41c7334c6dd0 + languageName: node + linkType: hard + +"acorn@npm:^8.0.0, acorn@npm:^8.0.4, acorn@npm:^8.11.0, acorn@npm:^8.7.1, acorn@npm:^8.8.2": + version: 8.12.1 + resolution: "acorn@npm:8.12.1" + bin: + acorn: bin/acorn + checksum: 677880034aee5bdf7434cc2d25b641d7bedb0b5ef47868a78dadabedccf58e1c5457526d9d8249cd253f2df087e081c3fe7d903b448d8e19e5131a3065b83c07 + languageName: node + linkType: hard + +"address@npm:^1.0.1, address@npm:^1.1.2": + version: 1.2.2 + resolution: "address@npm:1.2.2" + checksum: ace439960c1e3564d8f523aff23a841904bf33a2a7c2e064f7f60a064194075758b9690e65bd9785692a4ef698a998c57eb74d145881a1cecab8ba658ddb1607 + languageName: node + linkType: hard + +"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.1": + version: 7.1.1 + resolution: "agent-base@npm:7.1.1" + dependencies: + debug: ^4.3.4 + checksum: 51c158769c5c051482f9ca2e6e1ec085ac72b5a418a9b31b4e82fe6c0a6699adb94c1c42d246699a587b3335215037091c79e0de512c516f73b6ea844202f037 + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: ^2.0.0 + indent-string: ^4.0.0 + checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 + languageName: node + linkType: hard + +"ajv-formats@npm:^2.1.1": + version: 2.1.1 + resolution: "ajv-formats@npm:2.1.1" + dependencies: + ajv: ^8.0.0 + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + checksum: 4a287d937f1ebaad4683249a4c40c0fa3beed30d9ddc0adba04859026a622da0d317851316ea64b3680dc60f5c3c708105ddd5d5db8fe595d9d0207fd19f90b7 + languageName: node + linkType: hard + +"ajv-keywords@npm:^3.4.1, ajv-keywords@npm:^3.5.2": + version: 3.5.2 + resolution: "ajv-keywords@npm:3.5.2" + peerDependencies: + ajv: ^6.9.1 + checksum: 7dc5e5931677a680589050f79dcbe1fefbb8fea38a955af03724229139175b433c63c68f7ae5f86cf8f65d55eb7c25f75a046723e2e58296707617ca690feae9 + languageName: node + linkType: hard + +"ajv-keywords@npm:^5.1.0": + version: 5.1.0 + resolution: "ajv-keywords@npm:5.1.0" + dependencies: + fast-deep-equal: ^3.1.3 + peerDependencies: + ajv: ^8.8.2 + checksum: c35193940b853119242c6757787f09ecf89a2c19bcd36d03ed1a615e710d19d450cb448bfda407b939aba54b002368c8bff30529cc50a0536a8e10bcce300421 + languageName: node + linkType: hard + +"ajv@npm:^6.12.2, ajv@npm:^6.12.5": + version: 6.12.6 + resolution: "ajv@npm:6.12.6" + 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 + checksum: 874972efe5c4202ab0a68379481fbd3d1b5d0a7bd6d3cc21d40d3536ebff3352a2a1fabb632d4fd2cc7fe4cbdcd5ed6782084c9bbf7f32a1536d18f9da5007d4 + languageName: node + linkType: hard + +"ajv@npm:^8.0.0, ajv@npm:^8.9.0": + version: 8.17.1 + resolution: "ajv@npm:8.17.1" + dependencies: + fast-deep-equal: ^3.1.3 + fast-uri: ^3.0.1 + json-schema-traverse: ^1.0.0 + require-from-string: ^2.0.2 + checksum: 1797bf242cfffbaf3b870d13565bd1716b73f214bb7ada9a497063aada210200da36e3ed40237285f3255acc4feeae91b1fb183625331bad27da95973f7253d9 + languageName: node + linkType: hard + +"algoliasearch-helper@npm:^3.13.3": + version: 3.22.3 + resolution: "algoliasearch-helper@npm:3.22.3" + dependencies: + "@algolia/events": ^4.0.1 + peerDependencies: + algoliasearch: ">= 3.1 < 6" + checksum: 18ee77496e6e3aec6b3c1cab7a6c3e103172e3ac39d8dac076f654a28f66e5a7a3f609f694451705e606510b93c9e2c10f1fe738761ff007044c445318ffdb90 + languageName: node + linkType: hard + +"algoliasearch@npm:^4.18.0, algoliasearch@npm:^4.19.1": + version: 4.24.0 + resolution: "algoliasearch@npm:4.24.0" + dependencies: + "@algolia/cache-browser-local-storage": 4.24.0 + "@algolia/cache-common": 4.24.0 + "@algolia/cache-in-memory": 4.24.0 + "@algolia/client-account": 4.24.0 + "@algolia/client-analytics": 4.24.0 + "@algolia/client-common": 4.24.0 + "@algolia/client-personalization": 4.24.0 + "@algolia/client-search": 4.24.0 + "@algolia/logger-common": 4.24.0 + "@algolia/logger-console": 4.24.0 + "@algolia/recommend": 4.24.0 + "@algolia/requester-browser-xhr": 4.24.0 + "@algolia/requester-common": 4.24.0 + "@algolia/requester-node-http": 4.24.0 + "@algolia/transporter": 4.24.0 + checksum: 13cae6ea7ff05e068906dcb101b940bcf1a4ea41008757554c16a7951cdaa3af3094e547e3e51f9e751f68906b5654506e1dd4a1debb1b9d54cbb227ca83e8db + languageName: node + linkType: hard + +"ansi-align@npm:^3.0.1": + version: 3.0.1 + resolution: "ansi-align@npm:3.0.1" + dependencies: + string-width: ^4.1.0 + checksum: 6abfa08f2141d231c257162b15292467081fa49a208593e055c866aa0455b57f3a86b5a678c190c618faa79b4c59e254493099cb700dd9cf2293c6be2c8f5d8d + languageName: node + linkType: hard + +"ansi-html-community@npm:^0.0.8": + version: 0.0.8 + resolution: "ansi-html-community@npm:0.0.8" + bin: + ansi-html: bin/ansi-html + checksum: 04c568e8348a636963f915e48eaa3e01218322e1169acafdd79c384f22e5558c003f79bbc480c1563865497482817c7eed025f0653ebc17642fededa5cb42089 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b + languageName: node + linkType: hard + +"ansi-regex@npm:^6.0.1": + version: 6.0.1 + resolution: "ansi-regex@npm:6.0.1" + checksum: 1ff8b7667cded1de4fa2c9ae283e979fc87036864317da86a2e546725f96406746411d0d85e87a2d12fa5abd715d90006de7fa4fa0477c92321ad3b4c7d4e169 + languageName: node + linkType: hard + +"ansi-styles@npm:^3.2.1": + version: 3.2.1 + resolution: "ansi-styles@npm:3.2.1" + dependencies: + color-convert: ^1.9.0 + checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: ^2.0.1 + checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4 + languageName: node + linkType: hard + +"ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 + languageName: node + linkType: hard + +"anymatch@npm:~3.1.2": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: ^3.0.0 + picomatch: ^2.0.4 + checksum: 3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 + languageName: node + linkType: hard + +"arg@npm:^5.0.0": + version: 5.0.2 + resolution: "arg@npm:5.0.2" + checksum: 6c69ada1a9943d332d9e5382393e897c500908d91d5cb735a01120d5f71daf1b339b7b8980cbeaba8fd1afc68e658a739746179e4315a26e8a28951ff9930078 + languageName: node + linkType: hard + +"argparse@npm:^1.0.7": + version: 1.0.10 + resolution: "argparse@npm:1.0.10" + dependencies: + sprintf-js: ~1.0.2 + checksum: 7ca6e45583a28de7258e39e13d81e925cfa25d7d4aacbf806a382d3c02fcb13403a07fb8aeef949f10a7cfe4a62da0e2e807b348a5980554cc28ee573ef95945 + languageName: node + linkType: hard + +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 83644b56493e89a254bae05702abf3a1101b4fa4d0ca31df1c9985275a5a5bd47b3c27b7fa0b71098d41114d8ca000e6ed90cad764b306f8a503665e4d517ced + languageName: node + linkType: hard + +"array-flatten@npm:1.1.1": + version: 1.1.1 + resolution: "array-flatten@npm:1.1.1" + checksum: a9925bf3512d9dce202112965de90c222cd59a4fbfce68a0951d25d965cf44642931f40aac72309c41f12df19afa010ecadceb07cfff9ccc1621e99d89ab5f3b + languageName: node + linkType: hard + +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 5bee12395cba82da674931df6d0fea23c4aa4660cb3b338ced9f828782a65caa232573e6bf3968f23e0c5eb301764a382cef2f128b170a9dc59de0e36c39f98d + languageName: node + linkType: hard + +"astring@npm:^1.8.0": + version: 1.8.6 + resolution: "astring@npm:1.8.6" + bin: + astring: bin/astring + checksum: 6f034d2acef1dac8bb231e7cc26c573d3c14e1975ea6e04f20312b43d4f462f963209bc64187d25d477a182dc3c33277959a0156ab7a3617aa79b1eac4d88e1f + languageName: node + linkType: hard + +"at-least-node@npm:^1.0.0": + version: 1.0.0 + resolution: "at-least-node@npm:1.0.0" + checksum: 463e2f8e43384f1afb54bc68485c436d7622acec08b6fad269b421cb1d29cebb5af751426793d0961ed243146fe4dc983402f6d5a51b720b277818dbf6f2e49e + languageName: node + linkType: hard + +"autoprefixer@npm:^10.4.14, autoprefixer@npm:^10.4.19": + version: 10.4.20 + resolution: "autoprefixer@npm:10.4.20" + dependencies: + browserslist: ^4.23.3 + caniuse-lite: ^1.0.30001646 + fraction.js: ^4.3.7 + normalize-range: ^0.1.2 + picocolors: ^1.0.1 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.1.0 + bin: + autoprefixer: bin/autoprefixer + checksum: 187cec2ec356631932b212f76dc64f4419c117fdb2fb9eeeb40867d38ba5ca5ba734e6ceefc9e3af4eec8258e60accdf5cbf2b7708798598fde35cdc3de562d6 + languageName: node + linkType: hard + +"babel-loader@npm:^9.1.3": + version: 9.1.3 + resolution: "babel-loader@npm:9.1.3" + dependencies: + find-cache-dir: ^4.0.0 + schema-utils: ^4.0.0 + peerDependencies: + "@babel/core": ^7.12.0 + webpack: ">=5" + checksum: b168dde5b8cf11206513371a79f86bb3faa7c714e6ec9fffd420876b61f3d7f5f4b976431095ef6a14bc4d324505126deb91045fd41e312ba49f4deaa166fe28 + languageName: node + linkType: hard + +"babel-plugin-dynamic-import-node@npm:^2.3.3": + version: 2.3.3 + resolution: "babel-plugin-dynamic-import-node@npm:2.3.3" + dependencies: + object.assign: ^4.1.0 + checksum: c9d24415bcc608d0db7d4c8540d8002ac2f94e2573d2eadced137a29d9eab7e25d2cbb4bc6b9db65cf6ee7430f7dd011d19c911a9a778f0533b4a05ce8292c9b + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs2@npm:^0.4.10": + version: 0.4.11 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.11" + dependencies: + "@babel/compat-data": ^7.22.6 + "@babel/helper-define-polyfill-provider": ^0.6.2 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: f098353ce7c7dde1a1d2710858e01b471e85689110c9e37813e009072347eb8c55d5f84d20d3bf1cab31755f20078ba90f8855fdc4686a9daa826a95ff280bd7 + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs3@npm:^0.10.1, babel-plugin-polyfill-corejs3@npm:^0.10.4": + version: 0.10.6 + resolution: "babel-plugin-polyfill-corejs3@npm:0.10.6" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.6.2 + core-js-compat: ^3.38.0 + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: f762f29f7acca576897c63149c850f0a72babd3fb9ea436a2e36f0c339161c4b912a77828541d8188ce8a91e50965c6687120cf36071eabb1b7aa92f279e2164 + languageName: node + linkType: hard + +"babel-plugin-polyfill-regenerator@npm:^0.6.1": + version: 0.6.2 + resolution: "babel-plugin-polyfill-regenerator@npm:0.6.2" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.6.2 + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 150233571072b6b3dfe946242da39cba8587b7f908d1c006f7545fc88b0e3c3018d445739beb61e7a75835f0c2751dbe884a94ff9b245ec42369d9267e0e1b3f + languageName: node + linkType: hard + +"bail@npm:^2.0.0": + version: 2.0.2 + resolution: "bail@npm:2.0.2" + checksum: aab4e8ccdc8d762bf3fdfce8e706601695620c0c2eda256dd85088dc0be3cfd7ff126f6e99c2bee1f24f5d418414aacf09d7f9702f16d6963df2fa488cda8824 + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 + languageName: node + linkType: hard + +"batch@npm:0.6.1": + version: 0.6.1 + resolution: "batch@npm:0.6.1" + checksum: 61f9934c7378a51dce61b915586191078ef7f1c3eca707fdd58b96ff2ff56d9e0af2bdab66b1462301a73c73374239e6542d9821c0af787f3209a23365d07e7f + languageName: node + linkType: hard + +"big.js@npm:^5.2.2": + version: 5.2.2 + resolution: "big.js@npm:5.2.2" + checksum: b89b6e8419b097a8fb4ed2399a1931a68c612bce3cfd5ca8c214b2d017531191070f990598de2fc6f3f993d91c0f08aa82697717f6b3b8732c9731866d233c9e + languageName: node + linkType: hard + +"binary-extensions@npm:^2.0.0": + version: 2.3.0 + resolution: "binary-extensions@npm:2.3.0" + checksum: bcad01494e8a9283abf18c1b967af65ee79b0c6a9e6fcfafebfe91dbe6e0fc7272bafb73389e198b310516ae04f7ad17d79aacf6cb4c0d5d5202a7e2e52c7d98 + languageName: node + linkType: hard + +"body-parser@npm:1.20.2": + version: 1.20.2 + resolution: "body-parser@npm:1.20.2" + dependencies: + bytes: 3.1.2 + content-type: ~1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.2 + type-is: ~1.6.18 + unpipe: 1.0.0 + checksum: 14d37ec638ab5c93f6099ecaed7f28f890d222c650c69306872e00b9efa081ff6c596cd9afb9930656aae4d6c4e1c17537bea12bb73c87a217cb3cfea8896737 + languageName: node + linkType: hard + +"bonjour-service@npm:^1.0.11": + version: 1.2.1 + resolution: "bonjour-service@npm:1.2.1" + dependencies: + fast-deep-equal: ^3.1.3 + multicast-dns: ^7.2.5 + checksum: b65b3e6e3a07e97f2da5806afb76f3946d5a6426b72e849a0236dc3c9d3612fb8c5359ebade4be7eb63f74a37670c53a53be2ff17f4f709811fda77f600eb25b + languageName: node + linkType: hard + +"boolbase@npm:^1.0.0": + version: 1.0.0 + resolution: "boolbase@npm:1.0.0" + checksum: 3e25c80ef626c3a3487c73dbfc70ac322ec830666c9ad915d11b701142fab25ec1e63eff2c450c74347acfd2de854ccde865cd79ef4db1683f7c7b046ea43bb0 + languageName: node + linkType: hard + +"boxen@npm:^6.2.1": + version: 6.2.1 + resolution: "boxen@npm:6.2.1" + dependencies: + ansi-align: ^3.0.1 + camelcase: ^6.2.0 + chalk: ^4.1.2 + cli-boxes: ^3.0.0 + string-width: ^5.0.1 + type-fest: ^2.5.0 + widest-line: ^4.0.1 + wrap-ansi: ^8.0.1 + checksum: 2b3226092f1ff8e149c02979098c976552afa15f9e0231c9ed2dfcaaf84604494d16a6f13b647f718439f64d3140a088e822d47c7db00d2266e9ffc8d7321774 + languageName: node + linkType: hard + +"boxen@npm:^7.0.0": + version: 7.1.1 + resolution: "boxen@npm:7.1.1" + dependencies: + ansi-align: ^3.0.1 + camelcase: ^7.0.1 + chalk: ^5.2.0 + cli-boxes: ^3.0.0 + string-width: ^5.1.2 + type-fest: ^2.13.0 + widest-line: ^4.0.1 + wrap-ansi: ^8.1.0 + checksum: ad8833d5f2845b0a728fdf8a0bc1505dff0c518edcb0fd56979a08774b1f26cf48b71e66532179ccdfb9ed95b64aa008689cca26f7776f93f002b8000a683d76 + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" + dependencies: + balanced-match: ^1.0.0 + concat-map: 0.0.1 + checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.1 + resolution: "brace-expansion@npm:2.0.1" + dependencies: + balanced-match: ^1.0.0 + checksum: a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 + languageName: node + linkType: hard + +"braces@npm:^3.0.3, braces@npm:~3.0.2": + version: 3.0.3 + resolution: "braces@npm:3.0.3" + dependencies: + fill-range: ^7.1.1 + checksum: b95aa0b3bd909f6cd1720ffcf031aeaf46154dd88b4da01f9a1d3f7ea866a79eba76a6d01cbc3c422b2ee5cdc39a4f02491058d5df0d7bf6e6a162a832df1f69 + languageName: node + linkType: hard + +"browserslist@npm:^4.0.0, browserslist@npm:^4.18.1, browserslist@npm:^4.21.10, browserslist@npm:^4.23.0, browserslist@npm:^4.23.1, browserslist@npm:^4.23.3": + version: 4.23.3 + resolution: "browserslist@npm:4.23.3" + dependencies: + caniuse-lite: ^1.0.30001646 + electron-to-chromium: ^1.5.4 + node-releases: ^2.0.18 + update-browserslist-db: ^1.1.0 + bin: + browserslist: cli.js + checksum: 7906064f9970aeb941310b2fcb8b4ace4a1b50aa657c986677c6f1553a8cabcc94ee9c5922f715baffbedaa0e6cf0831b6fed7b059dde6873a4bfadcbe069c7e + languageName: node + linkType: hard + +"buffer-from@npm:^1.0.0": + version: 1.1.2 + resolution: "buffer-from@npm:1.1.2" + checksum: 0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb + languageName: node + linkType: hard + +"bytes@npm:3.0.0": + version: 3.0.0 + resolution: "bytes@npm:3.0.0" + checksum: a2b386dd8188849a5325f58eef69c3b73c51801c08ffc6963eddc9be244089ba32d19347caf6d145c86f315ae1b1fc7061a32b0c1aa6379e6a719090287ed101 + languageName: node + linkType: hard + +"bytes@npm:3.1.2": + version: 3.1.2 + resolution: "bytes@npm:3.1.2" + checksum: e4bcd3948d289c5127591fbedf10c0b639ccbf00243504e4e127374a15c3bc8eed0d28d4aaab08ff6f1cf2abc0cce6ba3085ed32f4f90e82a5683ce0014e1b6e + languageName: node + linkType: hard + +"cacache@npm:^18.0.0": + version: 18.0.4 + resolution: "cacache@npm:18.0.4" + dependencies: + "@npmcli/fs": ^3.1.0 + fs-minipass: ^3.0.0 + glob: ^10.2.2 + lru-cache: ^10.0.1 + minipass: ^7.0.3 + minipass-collect: ^2.0.1 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.4 + p-map: ^4.0.0 + ssri: ^10.0.0 + tar: ^6.1.11 + unique-filename: ^3.0.0 + checksum: b7422c113b4ec750f33beeca0f426a0024c28e3172f332218f48f963e5b970647fa1ac05679fe5bb448832c51efea9fda4456b9a95c3a1af1105fe6c1833cde2 + languageName: node + linkType: hard + +"cacheable-lookup@npm:^7.0.0": + version: 7.0.0 + resolution: "cacheable-lookup@npm:7.0.0" + checksum: 9e2856763fc0a7347ab34d704c010440b819d4bb5e3593b664381b7433e942dd22e67ee5581f12256f908e79b82d30b86ebbacf40a081bfe10ee93fbfbc2d6a9 + languageName: node + linkType: hard + +"cacheable-request@npm:^10.2.8": + version: 10.2.14 + resolution: "cacheable-request@npm:10.2.14" + dependencies: + "@types/http-cache-semantics": ^4.0.2 + get-stream: ^6.0.1 + http-cache-semantics: ^4.1.1 + keyv: ^4.5.3 + mimic-response: ^4.0.0 + normalize-url: ^8.0.0 + responselike: ^3.0.0 + checksum: 56f2b8e1c497c91f8391f0b099d19907a7dde25e71087e622b23e45fc8061736c2a6964ef121b16f377c3c61079cf8dc17320ab54004209d1343e4d26aba7015 + languageName: node + linkType: hard + +"call-bind@npm:^1.0.5, call-bind@npm:^1.0.7": + version: 1.0.7 + resolution: "call-bind@npm:1.0.7" + dependencies: + es-define-property: ^1.0.0 + es-errors: ^1.3.0 + function-bind: ^1.1.2 + get-intrinsic: ^1.2.4 + set-function-length: ^1.2.1 + checksum: 295c0c62b90dd6522e6db3b0ab1ce26bdf9e7404215bda13cfee25b626b5ff1a7761324d58d38b1ef1607fc65aca2d06e44d2e18d0dfc6c14b465b00d8660029 + languageName: node + linkType: hard + +"callsites@npm:^3.0.0": + version: 3.1.0 + resolution: "callsites@npm:3.1.0" + checksum: 072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3 + languageName: node + linkType: hard + +"camel-case@npm:^4.1.2": + version: 4.1.2 + resolution: "camel-case@npm:4.1.2" + dependencies: + pascal-case: ^3.1.2 + tslib: ^2.0.3 + checksum: bcbd25cd253b3cbc69be3f535750137dbf2beb70f093bdc575f73f800acc8443d34fd52ab8f0a2413c34f1e8203139ffc88428d8863e4dfe530cfb257a379ad6 + languageName: node + linkType: hard + +"camelcase@npm:^6.2.0": + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d + languageName: node + linkType: hard + +"camelcase@npm:^7.0.1": + version: 7.0.1 + resolution: "camelcase@npm:7.0.1" + checksum: 86ab8f3ebf08bcdbe605a211a242f00ed30d8bfb77dab4ebb744dd36efbc84432d1c4adb28975ba87a1b8be40a80fbd1e60e2f06565315918fa7350011a26d3d + languageName: node + linkType: hard + +"caniuse-api@npm:^3.0.0": + version: 3.0.0 + resolution: "caniuse-api@npm:3.0.0" + dependencies: + browserslist: ^4.0.0 + caniuse-lite: ^1.0.0 + lodash.memoize: ^4.1.2 + lodash.uniq: ^4.5.0 + checksum: db2a229383b20d0529b6b589dde99d7b6cb56ba371366f58cbbfa2929c9f42c01f873e2b6ef641d4eda9f0b4118de77dbb2805814670bdad4234bf08e720b0b4 + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001646": + version: 1.0.30001651 + resolution: "caniuse-lite@npm:1.0.30001651" + checksum: c31a5a01288e70cdbbfb5cd94af3df02f295791673173b8ce6d6a16db4394a6999197d44190be5a6ff06b8c2c7d2047e94dfd5e5eb4c103ab000fca2d370afc7 + languageName: node + linkType: hard + +"ccount@npm:^2.0.0": + version: 2.0.1 + resolution: "ccount@npm:2.0.1" + checksum: 48193dada54c9e260e0acf57fc16171a225305548f9ad20d5471e0f7a8c026aedd8747091dccb0d900cde7df4e4ddbd235df0d8de4a64c71b12f0d3303eeafd4 + languageName: node + linkType: hard + +"chalk@npm:^2.4.2": + version: 2.4.2 + resolution: "chalk@npm:2.4.2" + dependencies: + ansi-styles: ^3.2.1 + escape-string-regexp: ^1.0.5 + supports-color: ^5.3.0 + checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 + languageName: node + linkType: hard + +"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.2": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: ^4.1.0 + supports-color: ^7.1.0 + checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc + languageName: node + linkType: hard + +"chalk@npm:^5.0.1, chalk@npm:^5.2.0": + version: 5.3.0 + resolution: "chalk@npm:5.3.0" + checksum: 623922e077b7d1e9dedaea6f8b9e9352921f8ae3afe739132e0e00c275971bdd331268183b2628cf4ab1727c45ea1f28d7e24ac23ce1db1eb653c414ca8a5a80 + languageName: node + linkType: hard + +"char-regex@npm:^1.0.2": + version: 1.0.2 + resolution: "char-regex@npm:1.0.2" + checksum: b563e4b6039b15213114626621e7a3d12f31008bdce20f9c741d69987f62aeaace7ec30f6018890ad77b2e9b4d95324c9f5acfca58a9441e3b1dcdd1e2525d17 + languageName: node + linkType: hard + +"character-entities-html4@npm:^2.0.0": + version: 2.1.0 + resolution: "character-entities-html4@npm:2.1.0" + checksum: 7034aa7c7fa90309667f6dd50499c8a760c3d3a6fb159adb4e0bada0107d194551cdbad0714302f62d06ce4ed68565c8c2e15fdef2e8f8764eb63fa92b34b11d + languageName: node + linkType: hard + +"character-entities-legacy@npm:^3.0.0": + version: 3.0.0 + resolution: "character-entities-legacy@npm:3.0.0" + checksum: 7582af055cb488b626d364b7d7a4e46b06abd526fb63c0e4eb35bcb9c9799cc4f76b39f34fdccef2d1174ac95e53e9ab355aae83227c1a2505877893fce77731 + languageName: node + linkType: hard + +"character-entities@npm:^2.0.0": + version: 2.0.2 + resolution: "character-entities@npm:2.0.2" + checksum: cf1643814023697f725e47328fcec17923b8f1799102a8a79c1514e894815651794a2bffd84bb1b3a4b124b050154e4529ed6e81f7c8068a734aecf07a6d3def + languageName: node + linkType: hard + +"character-reference-invalid@npm:^2.0.0": + version: 2.0.1 + resolution: "character-reference-invalid@npm:2.0.1" + checksum: 98d3b1a52ae510b7329e6ee7f6210df14f1e318c5415975d4c9e7ee0ef4c07875d47c6e74230c64551f12f556b4a8ccc24d9f3691a2aa197019e72a95e9297ee + languageName: node + linkType: hard + +"cheerio-select@npm:^2.1.0": + version: 2.1.0 + resolution: "cheerio-select@npm:2.1.0" + dependencies: + boolbase: ^1.0.0 + css-select: ^5.1.0 + css-what: ^6.1.0 + domelementtype: ^2.3.0 + domhandler: ^5.0.3 + domutils: ^3.0.1 + checksum: 843d6d479922f28a6c5342c935aff1347491156814de63c585a6eb73baf7bb4185c1b4383a1195dca0f12e3946d737c7763bcef0b9544c515d905c5c44c5308b + languageName: node + linkType: hard + +"cheerio@npm:1.0.0-rc.12": + version: 1.0.0-rc.12 + resolution: "cheerio@npm:1.0.0-rc.12" + dependencies: + cheerio-select: ^2.1.0 + dom-serializer: ^2.0.0 + domhandler: ^5.0.3 + domutils: ^3.0.1 + htmlparser2: ^8.0.1 + parse5: ^7.0.0 + parse5-htmlparser2-tree-adapter: ^7.0.0 + checksum: 5d4c1b7a53cf22d3a2eddc0aff70cf23cbb30d01a4c79013e703a012475c02461aa1fcd99127e8d83a02216386ed6942b2c8103845fd0812300dd199e6e7e054 + languageName: node + linkType: hard + +"chokidar@npm:^3.4.2, chokidar@npm:^3.5.3": + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" + dependencies: + anymatch: ~3.1.2 + braces: ~3.0.2 + fsevents: ~2.3.2 + glob-parent: ~5.1.2 + is-binary-path: ~2.1.0 + is-glob: ~4.0.1 + normalize-path: ~3.0.0 + readdirp: ~3.6.0 + dependenciesMeta: + fsevents: + optional: true + checksum: d2f29f499705dcd4f6f3bbed79a9ce2388cf530460122eed3b9c48efeab7a4e28739c6551fd15bec9245c6b9eeca7a32baa64694d64d9b6faeb74ddb8c4a413d + languageName: node + linkType: hard + +"chownr@npm:^2.0.0": + version: 2.0.0 + resolution: "chownr@npm:2.0.0" + checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f + languageName: node + linkType: hard + +"chrome-trace-event@npm:^1.0.2": + version: 1.0.4 + resolution: "chrome-trace-event@npm:1.0.4" + checksum: fcbbd9dd0cd5b48444319007cc0c15870fd8612cc0df320908aa9d5e8a244084d48571eb28bf3c58c19327d2c5838f354c2d89fac3956d8e992273437401ac19 + languageName: node + linkType: hard + +"ci-info@npm:^3.2.0": + version: 3.9.0 + resolution: "ci-info@npm:3.9.0" + checksum: 6b19dc9b2966d1f8c2041a838217299718f15d6c4b63ae36e4674edd2bee48f780e94761286a56aa59eb305a85fbea4ddffb7630ec063e7ec7e7e5ad42549a87 + languageName: node + linkType: hard + +"clean-css@npm:^5.2.2, clean-css@npm:^5.3.2, clean-css@npm:~5.3.2": + version: 5.3.3 + resolution: "clean-css@npm:5.3.3" + dependencies: + source-map: ~0.6.0 + checksum: 941987c14860dd7d346d5cf121a82fd2caf8344160b1565c5387f7ccca4bbcaf885bace961be37c4f4713ce2d8c488dd89483c1add47bb779790edbfdcc79cbc + languageName: node + linkType: hard + +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 + languageName: node + linkType: hard + +"cli-boxes@npm:^3.0.0": + version: 3.0.0 + resolution: "cli-boxes@npm:3.0.0" + checksum: 637d84419d293a9eac40a1c8c96a2859e7d98b24a1a317788e13c8f441be052fc899480c6acab3acc82eaf1bccda6b7542d7cdcf5c9c3cc39227175dc098d5b2 + languageName: node + linkType: hard + +"cli-table3@npm:^0.6.3": + version: 0.6.5 + resolution: "cli-table3@npm:0.6.5" + dependencies: + "@colors/colors": 1.5.0 + string-width: ^4.2.0 + dependenciesMeta: + "@colors/colors": + optional: true + checksum: ab7afbf4f8597f1c631f3ee6bb3481d0bfeac8a3b81cffb5a578f145df5c88003b6cfff46046a7acae86596fdd03db382bfa67f20973b6b57425505abc47e42c + languageName: node + linkType: hard + +"clone-deep@npm:^4.0.1": + version: 4.0.1 + resolution: "clone-deep@npm:4.0.1" + dependencies: + is-plain-object: ^2.0.4 + kind-of: ^6.0.2 + shallow-clone: ^3.0.0 + checksum: 770f912fe4e6f21873c8e8fbb1e99134db3b93da32df271d00589ea4a29dbe83a9808a322c93f3bcaf8584b8b4fa6fc269fc8032efbaa6728e0c9886c74467d2 + languageName: node + linkType: hard + +"clsx@npm:^2.0.0": + version: 2.1.1 + resolution: "clsx@npm:2.1.1" + checksum: acd3e1ab9d8a433ecb3cc2f6a05ab95fe50b4a3cfc5ba47abb6cbf3754585fcb87b84e90c822a1f256c4198e3b41c7f6c391577ffc8678ad587fc0976b24fd57 + languageName: node + linkType: hard + +"collapse-white-space@npm:^2.0.0": + version: 2.1.0 + resolution: "collapse-white-space@npm:2.1.0" + checksum: c8978b1f4e7d68bf846cfdba6c6689ce8910511df7d331eb6e6757e51ceffb52768d59a28db26186c91dcf9594955b59be9f8ccd473c485790f5d8b90dc6726f + languageName: node + linkType: hard + +"color-convert@npm:^1.9.0": + version: 1.9.3 + resolution: "color-convert@npm:1.9.3" + dependencies: + color-name: 1.1.3 + checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: ~1.1.4 + checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 + languageName: node + linkType: hard + +"color-name@npm:1.1.3": + version: 1.1.3 + resolution: "color-name@npm:1.1.3" + checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 + languageName: node + linkType: hard + +"colord@npm:^2.9.3": + version: 2.9.3 + resolution: "colord@npm:2.9.3" + checksum: 95d909bfbcfd8d5605cbb5af56f2d1ce2b323990258fd7c0d2eb0e6d3bb177254d7fb8213758db56bb4ede708964f78c6b992b326615f81a18a6aaf11d64c650 + languageName: node + linkType: hard + +"colorette@npm:^2.0.10": + version: 2.0.20 + resolution: "colorette@npm:2.0.20" + checksum: 0c016fea2b91b733eb9f4bcdb580018f52c0bc0979443dad930e5037a968237ac53d9beb98e218d2e9235834f8eebce7f8e080422d6194e957454255bde71d3d + languageName: node + linkType: hard + +"combine-promises@npm:^1.1.0": + version: 1.2.0 + resolution: "combine-promises@npm:1.2.0" + checksum: ddce91436e24da03d5dc360c59cd55abfc9da5e949a26255aa42761925c574797c43138f0aabfc364e184e738e5e218a94ac6e88ebc459045bcf048ac7fe5f07 + languageName: node + linkType: hard + +"comma-separated-tokens@npm:^2.0.0": + version: 2.0.3 + resolution: "comma-separated-tokens@npm:2.0.3" + checksum: e3bf9e0332a5c45f49b90e79bcdb4a7a85f28d6a6f0876a94f1bb9b2bfbdbbb9292aac50e1e742d8c0db1e62a0229a106f57917e2d067fca951d81737651700d + languageName: node + linkType: hard + +"commander@npm:^10.0.0": + version: 10.0.1 + resolution: "commander@npm:10.0.1" + checksum: 436901d64a818295803c1996cd856621a74f30b9f9e28a588e726b2b1670665bccd7c1a77007ebf328729f0139838a88a19265858a0fa7a8728c4656796db948 + languageName: node + linkType: hard + +"commander@npm:^2.20.0": + version: 2.20.3 + resolution: "commander@npm:2.20.3" + checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e + languageName: node + linkType: hard + +"commander@npm:^5.1.0": + version: 5.1.0 + resolution: "commander@npm:5.1.0" + checksum: 0b7fec1712fbcc6230fcb161d8d73b4730fa91a21dc089515489402ad78810547683f058e2a9835929c212fead1d6a6ade70db28bbb03edbc2829a9ab7d69447 + languageName: node + linkType: hard + +"commander@npm:^7.2.0": + version: 7.2.0 + resolution: "commander@npm:7.2.0" + checksum: 53501cbeee61d5157546c0bef0fedb6cdfc763a882136284bed9a07225f09a14b82d2a84e7637edfd1a679fb35ed9502fd58ef1d091e6287f60d790147f68ddc + languageName: node + linkType: hard + +"commander@npm:^8.3.0": + version: 8.3.0 + resolution: "commander@npm:8.3.0" + checksum: 0f82321821fc27b83bd409510bb9deeebcfa799ff0bf5d102128b500b7af22872c0c92cb6a0ebc5a4cf19c6b550fba9cedfa7329d18c6442a625f851377bacf0 + languageName: node + linkType: hard + +"common-path-prefix@npm:^3.0.0": + version: 3.0.0 + resolution: "common-path-prefix@npm:3.0.0" + checksum: fdb3c4f54e51e70d417ccd950c07f757582de800c0678ca388aedefefc84982039f346f9fd9a1252d08d2da9e9ef4019f580a1d1d3a10da031e4bb3c924c5818 + languageName: node + linkType: hard + +"compressible@npm:~2.0.16": + version: 2.0.18 + resolution: "compressible@npm:2.0.18" + dependencies: + mime-db: ">= 1.43.0 < 2" + checksum: 58321a85b375d39230405654721353f709d0c1442129e9a17081771b816302a012471a9b8f4864c7dbe02eef7f2aaac3c614795197092262e94b409c9be108f0 + languageName: node + linkType: hard + +"compression@npm:^1.7.4": + version: 1.7.4 + resolution: "compression@npm:1.7.4" + dependencies: + accepts: ~1.3.5 + bytes: 3.0.0 + compressible: ~2.0.16 + debug: 2.6.9 + on-headers: ~1.0.2 + safe-buffer: 5.1.2 + vary: ~1.1.2 + checksum: 35c0f2eb1f28418978615dc1bc02075b34b1568f7f56c62d60f4214d4b7cc00d0f6d282b5f8a954f59872396bd770b6b15ffd8aa94c67d4bce9b8887b906999b + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af + languageName: node + linkType: hard + +"config-chain@npm:^1.1.11": + version: 1.1.13 + resolution: "config-chain@npm:1.1.13" + dependencies: + ini: ^1.3.4 + proto-list: ~1.2.1 + checksum: 828137a28e7c2fc4b7fb229bd0cd6c1397bcf83434de54347e608154008f411749041ee392cbe42fab6307e02de4c12480260bf769b7d44b778fdea3839eafab + languageName: node + linkType: hard + +"configstore@npm:^6.0.0": + version: 6.0.0 + resolution: "configstore@npm:6.0.0" + dependencies: + dot-prop: ^6.0.1 + graceful-fs: ^4.2.6 + unique-string: ^3.0.0 + write-file-atomic: ^3.0.3 + xdg-basedir: ^5.0.1 + checksum: 81995351c10bc04c58507f17748477aeac6f47465109d20e3534cebc881d22e927cfd29e73dd852c46c55f62c2b7be4cd1fe6eb3a93ba51f7f9813c218f9bae0 + languageName: node + linkType: hard + +"connect-history-api-fallback@npm:^2.0.0": + version: 2.0.0 + resolution: "connect-history-api-fallback@npm:2.0.0" + checksum: dc5368690f4a5c413889792f8df70d5941ca9da44523cde3f87af0745faee5ee16afb8195434550f0504726642734f2683d6c07f8b460f828a12c45fbd4c9a68 + languageName: node + linkType: hard + +"consola@npm:^2.15.3": + version: 2.15.3 + resolution: "consola@npm:2.15.3" + checksum: 8ef7a09b703ec67ac5c389a372a33b6dc97eda6c9876443a60d76a3076eea0259e7f67a4e54fd5a52f97df73690822d090cf8b7e102b5761348afef7c6d03e28 + languageName: node + linkType: hard + +"content-disposition@npm:0.5.2": + version: 0.5.2 + resolution: "content-disposition@npm:0.5.2" + checksum: 298d7da63255a38f7858ee19c7b6aae32b167e911293174b4c1349955e97e78e1d0b0d06c10e229405987275b417cf36ff65cbd4821a98bc9df4e41e9372cde7 + languageName: node + linkType: hard + +"content-disposition@npm:0.5.4": + version: 0.5.4 + resolution: "content-disposition@npm:0.5.4" + dependencies: + safe-buffer: 5.2.1 + checksum: afb9d545e296a5171d7574fcad634b2fdf698875f4006a9dd04a3e1333880c5c0c98d47b560d01216fb6505a54a2ba6a843ee3a02ec86d7e911e8315255f56c3 + languageName: node + linkType: hard + +"content-type@npm:~1.0.4, content-type@npm:~1.0.5": + version: 1.0.5 + resolution: "content-type@npm:1.0.5" + checksum: 566271e0a251642254cde0f845f9dd4f9856e52d988f4eb0d0dcffbb7a1f8ec98de7a5215fc628f3bce30fe2fb6fd2bc064b562d721658c59b544e2d34ea2766 + languageName: node + linkType: hard + +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 63ae9933be5a2b8d4509daca5124e20c14d023c820258e484e32dc324d34c2754e71297c94a05784064ad27615037ef677e3f0c00469fb55f409d2bb21261035 + languageName: node + linkType: hard + +"cookie-signature@npm:1.0.6": + version: 1.0.6 + resolution: "cookie-signature@npm:1.0.6" + checksum: f4e1b0a98a27a0e6e66fd7ea4e4e9d8e038f624058371bf4499cfcd8f3980be9a121486995202ba3fca74fbed93a407d6d54d43a43f96fd28d0bd7a06761591a + languageName: node + linkType: hard + +"cookie@npm:0.6.0": + version: 0.6.0 + resolution: "cookie@npm:0.6.0" + checksum: f56a7d32a07db5458e79c726b77e3c2eff655c36792f2b6c58d351fb5f61531e5b1ab7f46987150136e366c65213cbe31729e02a3eaed630c3bf7334635fb410 + languageName: node + linkType: hard + +"copy-text-to-clipboard@npm:^3.2.0": + version: 3.2.0 + resolution: "copy-text-to-clipboard@npm:3.2.0" + checksum: df7115c197a166d51f59e4e20ab2a68a855ae8746d25ff149b5465c694d9a405c7e6684b73a9f87ba8d653070164e229c15dfdb9fd77c30be1ff0da569661060 + languageName: node + linkType: hard + +"copy-webpack-plugin@npm:^11.0.0": + version: 11.0.0 + resolution: "copy-webpack-plugin@npm:11.0.0" + dependencies: + fast-glob: ^3.2.11 + glob-parent: ^6.0.1 + globby: ^13.1.1 + normalize-path: ^3.0.0 + schema-utils: ^4.0.0 + serialize-javascript: ^6.0.0 + peerDependencies: + webpack: ^5.1.0 + checksum: df4f8743f003a29ee7dd3d9b1789998a3a99051c92afb2ba2203d3dacfa696f4e757b275560fafb8f206e520a0aa78af34b990324a0e36c2326cefdeef3ca82e + languageName: node + linkType: hard + +"core-js-compat@npm:^3.37.1, core-js-compat@npm:^3.38.0": + version: 3.38.0 + resolution: "core-js-compat@npm:3.38.0" + dependencies: + browserslist: ^4.23.3 + checksum: bd410be723e3621f7e8c7a4dce91eaefc603d95133da89c042dd961aca368c7281894bd9af14116a455a4473288fb6c121b185cb8a1e8290b8ace15aedb315f2 + languageName: node + linkType: hard + +"core-js-pure@npm:^3.30.2": + version: 3.38.0 + resolution: "core-js-pure@npm:3.38.0" + checksum: 29aac7b56778370523f6a58f713c730975b097fea19838f93705730bd95d2da78b116e561e2cda637dde4cebe0a88baf9a5ce4e391732c39cbc5e55dc95bb38c + languageName: node + linkType: hard + +"core-js@npm:^3.31.1": + version: 3.38.0 + resolution: "core-js@npm:3.38.0" + checksum: 71ef0598da69daee2b46fa1f82f074019981656f7cae26fed2b7f076c611e330a99ba5c70156ae37682f59a8d6ec6486119c70cb283c9fff25bd4f20db7fdc27 + languageName: node + linkType: hard + +"core-util-is@npm:~1.0.0": + version: 1.0.3 + resolution: "core-util-is@npm:1.0.3" + checksum: 9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99 + languageName: node + linkType: hard + +"cosmiconfig@npm:^6.0.0": + version: 6.0.0 + resolution: "cosmiconfig@npm:6.0.0" + dependencies: + "@types/parse-json": ^4.0.0 + import-fresh: ^3.1.0 + parse-json: ^5.0.0 + path-type: ^4.0.0 + yaml: ^1.7.2 + checksum: 8eed7c854b91643ecb820767d0deb038b50780ecc3d53b0b19e03ed8aabed4ae77271198d1ae3d49c3b110867edf679f5faad924820a8d1774144a87cb6f98fc + languageName: node + linkType: hard + +"cosmiconfig@npm:^8.1.3, cosmiconfig@npm:^8.3.5": + version: 8.3.6 + resolution: "cosmiconfig@npm:8.3.6" + dependencies: + import-fresh: ^3.3.0 + js-yaml: ^4.1.0 + parse-json: ^5.2.0 + path-type: ^4.0.0 + peerDependencies: + typescript: ">=4.9.5" + peerDependenciesMeta: + typescript: + optional: true + checksum: dc339ebea427898c9e03bf01b56ba7afbac07fc7d2a2d5a15d6e9c14de98275a9565da949375aee1809591c152c0a3877bb86dbeaf74d5bd5aaa79955ad9e7a0 + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.3": + version: 7.0.3 + resolution: "cross-spawn@npm:7.0.3" + dependencies: + path-key: ^3.1.0 + shebang-command: ^2.0.0 + which: ^2.0.1 + checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52 + languageName: node + linkType: hard + +"crypto-random-string@npm:^4.0.0": + version: 4.0.0 + resolution: "crypto-random-string@npm:4.0.0" + dependencies: + type-fest: ^1.0.1 + checksum: 91f148f27bcc8582798f0fb3e75a09d9174557f39c3c40a89dd1bd70fb5a14a02548245aa26fa7d663c426ac5026f4729841231c84f9e30e8c8ece5e38656741 + languageName: node + linkType: hard + +"css-declaration-sorter@npm:^7.2.0": + version: 7.2.0 + resolution: "css-declaration-sorter@npm:7.2.0" + peerDependencies: + postcss: ^8.0.9 + checksum: 69b2f63a1c7c593123fabcbb353618ed01eb75f6404da9321328fbb30d603d89c47195129fadf1dc316e1406a0881400b324c2bded9438c47196e1c96ec726dd + languageName: node + linkType: hard + +"css-loader@npm:^6.8.1": + version: 6.11.0 + resolution: "css-loader@npm:6.11.0" + dependencies: + icss-utils: ^5.1.0 + postcss: ^8.4.33 + postcss-modules-extract-imports: ^3.1.0 + postcss-modules-local-by-default: ^4.0.5 + postcss-modules-scope: ^3.2.0 + postcss-modules-values: ^4.0.0 + postcss-value-parser: ^4.2.0 + semver: ^7.5.4 + peerDependencies: + "@rspack/core": 0.x || 1.x + webpack: ^5.0.0 + peerDependenciesMeta: + "@rspack/core": + optional: true + webpack: + optional: true + checksum: 5c8d35975a7121334905394e88e28f05df72f037dbed2fb8fec4be5f0b313ae73a13894ba791867d4a4190c35896da84a7fd0c54fb426db55d85ba5e714edbe3 + languageName: node + linkType: hard + +"css-minimizer-webpack-plugin@npm:^5.0.1": + version: 5.0.1 + resolution: "css-minimizer-webpack-plugin@npm:5.0.1" + dependencies: + "@jridgewell/trace-mapping": ^0.3.18 + cssnano: ^6.0.1 + jest-worker: ^29.4.3 + postcss: ^8.4.24 + schema-utils: ^4.0.1 + serialize-javascript: ^6.0.1 + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + "@parcel/css": + optional: true + "@swc/css": + optional: true + clean-css: + optional: true + csso: + optional: true + esbuild: + optional: true + lightningcss: + optional: true + checksum: 10055802c61d1ae72584eac03b6bd221ecbefde11d337be44a5459d8de075b38f91b80949f95cd0c3a10295615ee013f82130bfac5fe9b5b3e8e75531f232680 + languageName: node + linkType: hard + +"css-select@npm:^4.1.3": + version: 4.3.0 + resolution: "css-select@npm:4.3.0" + dependencies: + boolbase: ^1.0.0 + css-what: ^6.0.1 + domhandler: ^4.3.1 + domutils: ^2.8.0 + nth-check: ^2.0.1 + checksum: d6202736839194dd7f910320032e7cfc40372f025e4bf21ca5bf6eb0a33264f322f50ba9c0adc35dadd342d3d6fae5ca244779a4873afbfa76561e343f2058e0 + languageName: node + linkType: hard + +"css-select@npm:^5.1.0": + version: 5.1.0 + resolution: "css-select@npm:5.1.0" + dependencies: + boolbase: ^1.0.0 + css-what: ^6.1.0 + domhandler: ^5.0.2 + domutils: ^3.0.1 + nth-check: ^2.0.1 + checksum: 2772c049b188d3b8a8159907192e926e11824aea525b8282981f72ba3f349cf9ecd523fdf7734875ee2cb772246c22117fc062da105b6d59afe8dcd5c99c9bda + languageName: node + linkType: hard + +"css-tree@npm:^2.3.1": + version: 2.3.1 + resolution: "css-tree@npm:2.3.1" + dependencies: + mdn-data: 2.0.30 + source-map-js: ^1.0.1 + checksum: 493cc24b5c22b05ee5314b8a0d72d8a5869491c1458017ae5ed75aeb6c3596637dbe1b11dac2548974624adec9f7a1f3a6cf40593dc1f9185eb0e8279543fbc0 + languageName: node + linkType: hard + +"css-tree@npm:~2.2.0": + version: 2.2.1 + resolution: "css-tree@npm:2.2.1" + dependencies: + mdn-data: 2.0.28 + source-map-js: ^1.0.1 + checksum: b94aa8cc2f09e6f66c91548411fcf74badcbad3e150345074715012d16333ce573596ff5dfca03c2a87edf1924716db765120f94247e919d72753628ba3aba27 + languageName: node + linkType: hard + +"css-what@npm:^6.0.1, css-what@npm:^6.1.0": + version: 6.1.0 + resolution: "css-what@npm:6.1.0" + checksum: b975e547e1e90b79625918f84e67db5d33d896e6de846c9b584094e529f0c63e2ab85ee33b9daffd05bff3a146a1916bec664e18bb76dd5f66cbff9fc13b2bbe + languageName: node + linkType: hard + +"cssesc@npm:^3.0.0": + version: 3.0.0 + resolution: "cssesc@npm:3.0.0" + bin: + cssesc: bin/cssesc + checksum: f8c4ababffbc5e2ddf2fa9957dda1ee4af6048e22aeda1869d0d00843223c1b13ad3f5d88b51caa46c994225eacb636b764eb807a8883e2fb6f99b4f4e8c48b2 + languageName: node + linkType: hard + +"cssnano-preset-advanced@npm:^6.1.2": + version: 6.1.2 + resolution: "cssnano-preset-advanced@npm:6.1.2" + dependencies: + autoprefixer: ^10.4.19 + browserslist: ^4.23.0 + cssnano-preset-default: ^6.1.2 + postcss-discard-unused: ^6.0.5 + postcss-merge-idents: ^6.0.3 + postcss-reduce-idents: ^6.0.3 + postcss-zindex: ^6.0.2 + peerDependencies: + postcss: ^8.4.31 + checksum: cf70e27915947412730abb3075587efb66bcea58d7f1b906a7225bb4a40c9ca40150251a2ac33363d4f55bbdeb9ba000c242fa6244ee36cba2477ac07fbbe791 + languageName: node + linkType: hard + +"cssnano-preset-default@npm:^6.1.2": + version: 6.1.2 + resolution: "cssnano-preset-default@npm:6.1.2" + dependencies: + browserslist: ^4.23.0 + css-declaration-sorter: ^7.2.0 + cssnano-utils: ^4.0.2 + postcss-calc: ^9.0.1 + postcss-colormin: ^6.1.0 + postcss-convert-values: ^6.1.0 + postcss-discard-comments: ^6.0.2 + postcss-discard-duplicates: ^6.0.3 + postcss-discard-empty: ^6.0.3 + postcss-discard-overridden: ^6.0.2 + postcss-merge-longhand: ^6.0.5 + postcss-merge-rules: ^6.1.1 + postcss-minify-font-values: ^6.1.0 + postcss-minify-gradients: ^6.0.3 + postcss-minify-params: ^6.1.0 + postcss-minify-selectors: ^6.0.4 + postcss-normalize-charset: ^6.0.2 + postcss-normalize-display-values: ^6.0.2 + postcss-normalize-positions: ^6.0.2 + postcss-normalize-repeat-style: ^6.0.2 + postcss-normalize-string: ^6.0.2 + postcss-normalize-timing-functions: ^6.0.2 + postcss-normalize-unicode: ^6.1.0 + postcss-normalize-url: ^6.0.2 + postcss-normalize-whitespace: ^6.0.2 + postcss-ordered-values: ^6.0.2 + postcss-reduce-initial: ^6.1.0 + postcss-reduce-transforms: ^6.0.2 + postcss-svgo: ^6.0.3 + postcss-unique-selectors: ^6.0.4 + peerDependencies: + postcss: ^8.4.31 + checksum: 51d93e52df7141143947dc4695b5087c04b41ea153e4f4c0282ac012b62c7457c6aca244f604ae94fa3b4840903a30a1e7df38f8610e0b304d05e3065375ee56 + languageName: node + linkType: hard + +"cssnano-utils@npm:^4.0.2": + version: 4.0.2 + resolution: "cssnano-utils@npm:4.0.2" + peerDependencies: + postcss: ^8.4.31 + checksum: f04c6854e75d847c7a43aff835e003d5bc7387ddfc476f0ad3a2d63663d0cec41047d46604c1717bf6b5a8e24e54bb519e465ff78d62c7e073c7cbe2279bebaf + languageName: node + linkType: hard + +"cssnano@npm:^6.0.1, cssnano@npm:^6.1.2": + version: 6.1.2 + resolution: "cssnano@npm:6.1.2" + dependencies: + cssnano-preset-default: ^6.1.2 + lilconfig: ^3.1.1 + peerDependencies: + postcss: ^8.4.31 + checksum: 65aad92c5ee0089ffd4cd933c18c65edbf7634f7c3cd833a499dc948aa7e4168be22130dfe83bde07fcdc87f7c45a02d09040b7f439498208bc90b8d5a9abcc8 + languageName: node + linkType: hard + +"csso@npm:^5.0.5": + version: 5.0.5 + resolution: "csso@npm:5.0.5" + dependencies: + css-tree: ~2.2.0 + checksum: 0ad858d36bf5012ed243e9ec69962a867509061986d2ee07cc040a4b26e4d062c00d4c07e5ba8d430706ceb02dd87edd30a52b5937fd45b1b6f2119c4993d59a + languageName: node + linkType: hard + +"csstype@npm:^3.0.2": + version: 3.1.3 + resolution: "csstype@npm:3.1.3" + checksum: 8db785cc92d259102725b3c694ec0c823f5619a84741b5c7991b8ad135dfaa66093038a1cc63e03361a6cd28d122be48f2106ae72334e067dd619a51f49eddf7 + languageName: node + linkType: hard + +"debounce@npm:^1.2.1": + version: 1.2.1 + resolution: "debounce@npm:1.2.1" + checksum: 682a89506d9e54fb109526f4da255c5546102fbb8e3ae75eef3b04effaf5d4853756aee97475cd4650641869794e44f410eeb20ace2b18ea592287ab2038519e + languageName: node + linkType: hard + +"debug@npm:2.6.9, debug@npm:^2.6.0": + version: 2.6.9 + resolution: "debug@npm:2.6.9" + dependencies: + ms: 2.0.0 + checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.4": + version: 4.3.6 + resolution: "debug@npm:4.3.6" + dependencies: + ms: 2.1.2 + peerDependenciesMeta: + supports-color: + optional: true + checksum: 1630b748dea3c581295e02137a9f5cbe2c1d85fea35c1e6597a65ca2b16a6fce68cec61b299d480787ef310ba927dc8c92d3061faba0ad06c6a724672f66be7f + languageName: node + linkType: hard + +"decode-named-character-reference@npm:^1.0.0": + version: 1.0.2 + resolution: "decode-named-character-reference@npm:1.0.2" + dependencies: + character-entities: ^2.0.0 + checksum: f4c71d3b93105f20076052f9cb1523a22a9c796b8296cd35eef1ca54239c78d182c136a848b83ff8da2071e3ae2b1d300bf29d00650a6d6e675438cc31b11d78 + languageName: node + linkType: hard + +"decompress-response@npm:^6.0.0": + version: 6.0.0 + resolution: "decompress-response@npm:6.0.0" + dependencies: + mimic-response: ^3.1.0 + checksum: d377cf47e02d805e283866c3f50d3d21578b779731e8c5072d6ce8c13cc31493db1c2f6784da9d1d5250822120cefa44f1deab112d5981015f2e17444b763812 + languageName: node + linkType: hard + +"deep-extend@npm:^0.6.0": + version: 0.6.0 + resolution: "deep-extend@npm:0.6.0" + checksum: 7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a7 + languageName: node + linkType: hard + +"deepmerge@npm:^4.2.2, deepmerge@npm:^4.3.1": + version: 4.3.1 + resolution: "deepmerge@npm:4.3.1" + checksum: 2024c6a980a1b7128084170c4cf56b0fd58a63f2da1660dcfe977415f27b17dbe5888668b59d0b063753f3220719d5e400b7f113609489c90160bb9a5518d052 + languageName: node + linkType: hard + +"default-gateway@npm:^6.0.3": + version: 6.0.3 + resolution: "default-gateway@npm:6.0.3" + dependencies: + execa: ^5.0.0 + checksum: 126f8273ecac8ee9ff91ea778e8784f6cd732d77c3157e8c5bdd6ed03651b5291f71446d05bc02d04073b1e67583604db5394ea3cf992ede0088c70ea15b7378 + languageName: node + linkType: hard + +"defer-to-connect@npm:^2.0.1": + version: 2.0.1 + resolution: "defer-to-connect@npm:2.0.1" + checksum: 8a9b50d2f25446c0bfefb55a48e90afd58f85b21bcf78e9207cd7b804354f6409032a1705c2491686e202e64fc05f147aa5aa45f9aa82627563f045937f5791b + languageName: node + linkType: hard + +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": + version: 1.1.4 + resolution: "define-data-property@npm:1.1.4" + dependencies: + es-define-property: ^1.0.0 + es-errors: ^1.3.0 + gopd: ^1.0.1 + checksum: 8068ee6cab694d409ac25936eb861eea704b7763f7f342adbdfe337fc27c78d7ae0eff2364b2917b58c508d723c7a074326d068eef2e45c4edcd85cf94d0313b + languageName: node + linkType: hard + +"define-lazy-prop@npm:^2.0.0": + version: 2.0.0 + resolution: "define-lazy-prop@npm:2.0.0" + checksum: 0115fdb065e0490918ba271d7339c42453d209d4cb619dfe635870d906731eff3e1ade8028bb461ea27ce8264ec5e22c6980612d332895977e89c1bbc80fcee2 + languageName: node + linkType: hard + +"define-properties@npm:^1.2.1": + version: 1.2.1 + resolution: "define-properties@npm:1.2.1" + dependencies: + define-data-property: ^1.0.1 + has-property-descriptors: ^1.0.0 + object-keys: ^1.1.1 + checksum: b4ccd00597dd46cb2d4a379398f5b19fca84a16f3374e2249201992f36b30f6835949a9429669ee6b41b6e837205a163eadd745e472069e70dfc10f03e5fcc12 + languageName: node + linkType: hard + +"del@npm:^6.1.1": + version: 6.1.1 + resolution: "del@npm:6.1.1" + dependencies: + globby: ^11.0.1 + graceful-fs: ^4.2.4 + is-glob: ^4.0.1 + is-path-cwd: ^2.2.0 + is-path-inside: ^3.0.2 + p-map: ^4.0.0 + rimraf: ^3.0.2 + slash: ^3.0.0 + checksum: 563288b73b8b19a7261c47fd21a330eeab6e2acd7c6208c49790dfd369127120dd7836cdf0c1eca216b77c94782a81507eac6b4734252d3bef2795cb366996b6 + languageName: node + linkType: hard + +"depd@npm:2.0.0": + version: 2.0.0 + resolution: "depd@npm:2.0.0" + checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a + languageName: node + linkType: hard + +"depd@npm:~1.1.2": + version: 1.1.2 + resolution: "depd@npm:1.1.2" + checksum: 6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 + languageName: node + linkType: hard + +"dequal@npm:^2.0.0": + version: 2.0.3 + resolution: "dequal@npm:2.0.3" + checksum: 8679b850e1a3d0ebbc46ee780d5df7b478c23f335887464023a631d1b9af051ad4a6595a44220f9ff8ff95a8ddccf019b5ad778a976fd7bbf77383d36f412f90 + languageName: node + linkType: hard + +"destroy@npm:1.2.0": + version: 1.2.0 + resolution: "destroy@npm:1.2.0" + checksum: 0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 + languageName: node + linkType: hard + +"detect-node@npm:^2.0.4": + version: 2.1.0 + resolution: "detect-node@npm:2.1.0" + checksum: 832184ec458353e41533ac9c622f16c19f7c02d8b10c303dfd3a756f56be93e903616c0bb2d4226183c9351c15fc0b3dba41a17a2308262afabcfa3776e6ae6e + languageName: node + linkType: hard + +"detect-port-alt@npm:^1.1.6": + version: 1.1.6 + resolution: "detect-port-alt@npm:1.1.6" + dependencies: + address: ^1.0.1 + debug: ^2.6.0 + bin: + detect: ./bin/detect-port + detect-port: ./bin/detect-port + checksum: 9dc37b1fa4a9dd6d4889e1045849b8d841232b598d1ca888bf712f4035b07a17cf6d537465a0d7323250048d3a5a0540e3b7cf89457efc222f96f77e2c40d16a + languageName: node + linkType: hard + +"detect-port@npm:^1.5.1": + version: 1.6.1 + resolution: "detect-port@npm:1.6.1" + dependencies: + address: ^1.0.1 + debug: 4 + bin: + detect: bin/detect-port.js + detect-port: bin/detect-port.js + checksum: 0429fa423abb15fc453face64e6ffa406e375f51f5b4421a7886962e680dc05824eae9b6ee4594ba273685c3add415ad00982b5da54802ac3de6f846173284c3 + languageName: node + linkType: hard + +"devlop@npm:^1.0.0, devlop@npm:^1.1.0": + version: 1.1.0 + resolution: "devlop@npm:1.1.0" + dependencies: + dequal: ^2.0.0 + checksum: d2ff650bac0bb6ef08c48f3ba98640bb5fec5cce81e9957eb620408d1bab1204d382a45b785c6b3314dc867bb0684936b84c6867820da6db97cbb5d3c15dd185 + languageName: node + linkType: hard + +"dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: ^4.0.0 + checksum: fa05e18324510d7283f55862f3161c6759a3f2f8dbce491a2fc14c8324c498286c54282c1f0e933cb930da8419b30679389499b919122952a4f8592362ef4615 + languageName: node + linkType: hard + +"dns-packet@npm:^5.2.2": + version: 5.6.1 + resolution: "dns-packet@npm:5.6.1" + dependencies: + "@leichtgewicht/ip-codec": ^2.0.1 + checksum: 64c06457f0c6e143f7a0946e0aeb8de1c5f752217cfa143ef527467c00a6d78db1835cfdb6bb68333d9f9a4963cf23f410439b5262a8935cce1236f45e344b81 + languageName: node + linkType: hard + +"docs@workspace:.": + version: 0.0.0-use.local + resolution: "docs@workspace:." + dependencies: + "@docusaurus/core": 3.5.1 + "@docusaurus/module-type-aliases": 3.5.1 + "@docusaurus/preset-classic": 3.5.1 + "@docusaurus/types": 3.5.1 + "@mdx-js/react": ^3.0.0 + clsx: ^2.0.0 + prism-react-renderer: ^2.3.0 + react: ^18.0.0 + react-dom: ^18.0.0 + languageName: unknown + linkType: soft + +"dom-converter@npm:^0.2.0": + version: 0.2.0 + resolution: "dom-converter@npm:0.2.0" + dependencies: + utila: ~0.4 + checksum: ea52fe303f5392e48dea563abef0e6fb3a478b8dbe3c599e99bb5d53981c6c38fc4944e56bb92a8ead6bb989d10b7914722ae11febbd2fd0910e33b9fc4aaa77 + languageName: node + linkType: hard + +"dom-serializer@npm:^1.0.1": + version: 1.4.1 + resolution: "dom-serializer@npm:1.4.1" + dependencies: + domelementtype: ^2.0.1 + domhandler: ^4.2.0 + entities: ^2.0.0 + checksum: fbb0b01f87a8a2d18e6e5a388ad0f7ec4a5c05c06d219377da1abc7bb0f674d804f4a8a94e3f71ff15f6cb7dcfc75704a54b261db672b9b3ab03da6b758b0b22 + languageName: node + linkType: hard + +"dom-serializer@npm:^2.0.0": + version: 2.0.0 + resolution: "dom-serializer@npm:2.0.0" + dependencies: + domelementtype: ^2.3.0 + domhandler: ^5.0.2 + entities: ^4.2.0 + checksum: cd1810544fd8cdfbd51fa2c0c1128ec3a13ba92f14e61b7650b5de421b88205fd2e3f0cc6ace82f13334114addb90ed1c2f23074a51770a8e9c1273acbc7f3e6 + languageName: node + linkType: hard + +"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0, domelementtype@npm:^2.3.0": + version: 2.3.0 + resolution: "domelementtype@npm:2.3.0" + checksum: ee837a318ff702622f383409d1f5b25dd1024b692ef64d3096ff702e26339f8e345820f29a68bcdcea8cfee3531776b3382651232fbeae95612d6f0a75efb4f6 + languageName: node + linkType: hard + +"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0, domhandler@npm:^4.3.1": + version: 4.3.1 + resolution: "domhandler@npm:4.3.1" + dependencies: + domelementtype: ^2.2.0 + checksum: 4c665ceed016e1911bf7d1dadc09dc888090b64dee7851cccd2fcf5442747ec39c647bb1cb8c8919f8bbdd0f0c625a6bafeeed4b2d656bbecdbae893f43ffaaa + languageName: node + linkType: hard + +"domhandler@npm:^5.0.2, domhandler@npm:^5.0.3": + version: 5.0.3 + resolution: "domhandler@npm:5.0.3" + dependencies: + domelementtype: ^2.3.0 + checksum: 0f58f4a6af63e6f3a4320aa446d28b5790a009018707bce2859dcb1d21144c7876482b5188395a188dfa974238c019e0a1e610d2fc269a12b2c192ea2b0b131c + languageName: node + linkType: hard + +"domutils@npm:^2.5.2, domutils@npm:^2.8.0": + version: 2.8.0 + resolution: "domutils@npm:2.8.0" + dependencies: + dom-serializer: ^1.0.1 + domelementtype: ^2.2.0 + domhandler: ^4.2.0 + checksum: abf7434315283e9aadc2a24bac0e00eab07ae4313b40cc239f89d84d7315ebdfd2fb1b5bf750a96bc1b4403d7237c7b2ebf60459be394d625ead4ca89b934391 + languageName: node + linkType: hard + +"domutils@npm:^3.0.1": + version: 3.1.0 + resolution: "domutils@npm:3.1.0" + dependencies: + dom-serializer: ^2.0.0 + domelementtype: ^2.3.0 + domhandler: ^5.0.3 + checksum: e5757456ddd173caa411cfc02c2bb64133c65546d2c4081381a3bafc8a57411a41eed70494551aa58030be9e58574fcc489828bebd673863d39924fb4878f416 + languageName: node + linkType: hard + +"dot-case@npm:^3.0.4": + version: 3.0.4 + resolution: "dot-case@npm:3.0.4" + dependencies: + no-case: ^3.0.4 + tslib: ^2.0.3 + checksum: a65e3519414856df0228b9f645332f974f2bf5433370f544a681122eab59e66038fc3349b4be1cdc47152779dac71a5864f1ccda2f745e767c46e9c6543b1169 + languageName: node + linkType: hard + +"dot-prop@npm:^6.0.1": + version: 6.0.1 + resolution: "dot-prop@npm:6.0.1" + dependencies: + is-obj: ^2.0.0 + checksum: 0f47600a4b93e1dc37261da4e6909652c008832a5d3684b5bf9a9a0d3f4c67ea949a86dceed9b72f5733ed8e8e6383cc5958df3bbd0799ee317fd181f2ece700 + languageName: node + linkType: hard + +"duplexer@npm:^0.1.2": + version: 0.1.2 + resolution: "duplexer@npm:0.1.2" + checksum: 62ba61a830c56801db28ff6305c7d289b6dc9f859054e8c982abd8ee0b0a14d2e9a8e7d086ffee12e868d43e2bbe8a964be55ddbd8c8957714c87373c7a4f9b0 + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 7d00d7cd8e49b9afa762a813faac332dee781932d6f2c848dc348939c4253f1d4564341b7af1d041853bc3f32c2ef141b58e0a4d9862c17a7f08f68df1e0f1ed + languageName: node + linkType: hard + +"ee-first@npm:1.1.1": + version: 1.1.1 + resolution: "ee-first@npm:1.1.1" + checksum: 1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f + languageName: node + linkType: hard + +"electron-to-chromium@npm:^1.5.4": + version: 1.5.6 + resolution: "electron-to-chromium@npm:1.5.6" + checksum: 09ca45c781e3e3ef87de87fb74019228f41e1a4abd2e703319aa7d942866815f3df89cc4bf61af81a4cac81271992d4f59a5eca7a093c07322ae0608bf98a427 + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 8487182da74aabd810ac6d6f1994111dfc0e331b01271ae01ec1eb0ad7b5ecc2bbbbd2f053c05cb55a1ac30449527d819bbfbf0e3de1023db308cbcb47f86601 + languageName: node + linkType: hard + +"emojilib@npm:^2.4.0": + version: 2.4.0 + resolution: "emojilib@npm:2.4.0" + checksum: ea241c342abda5a86ffd3a15d8f4871a616d485f700e03daea38c6ce38205847cea9f6ff8d5e962c00516b004949cc96c6e37b05559ea71a0a496faba53b56da + languageName: node + linkType: hard + +"emojis-list@npm:^3.0.0": + version: 3.0.0 + resolution: "emojis-list@npm:3.0.0" + checksum: ddaaa02542e1e9436c03970eeed445f4ed29a5337dfba0fe0c38dfdd2af5da2429c2a0821304e8a8d1cadf27fdd5b22ff793571fa803ae16852a6975c65e8e70 + languageName: node + linkType: hard + +"emoticon@npm:^4.0.1": + version: 4.1.0 + resolution: "emoticon@npm:4.1.0" + checksum: b19c997ec063eef7dfacd8713e26bca8129683b58aaf6be1600723811ec5dae18974398b808ac2972183d06d00e6e51a5b88ee92e51c69680bb855776e279a64 + languageName: node + linkType: hard + +"encodeurl@npm:~1.0.2": + version: 1.0.2 + resolution: "encodeurl@npm:1.0.2" + checksum: e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: ^0.6.2 + checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f + languageName: node + linkType: hard + +"enhanced-resolve@npm:^5.17.0": + version: 5.17.1 + resolution: "enhanced-resolve@npm:5.17.1" + dependencies: + graceful-fs: ^4.2.4 + tapable: ^2.2.0 + checksum: 4bc38cf1cea96456f97503db7280394177d1bc46f8f87c267297d04f795ac5efa81e48115a2f5b6273c781027b5b6bfc5f62b54df629e4d25fa7001a86624f59 + languageName: node + linkType: hard + +"entities@npm:^2.0.0": + version: 2.2.0 + resolution: "entities@npm:2.2.0" + checksum: 19010dacaf0912c895ea262b4f6128574f9ccf8d4b3b65c7e8334ad0079b3706376360e28d8843ff50a78aabcb8f08f0a32dbfacdc77e47ed77ca08b713669b3 + languageName: node + linkType: hard + +"entities@npm:^4.2.0, entities@npm:^4.4.0": + version: 4.5.0 + resolution: "entities@npm:4.5.0" + checksum: 853f8ebd5b425d350bffa97dd6958143179a5938352ccae092c62d1267c4e392a039be1bae7d51b6e4ffad25f51f9617531fedf5237f15df302ccfb452cbf2d7 + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54 + languageName: node + linkType: hard + +"error-ex@npm:^1.3.1": + version: 1.3.2 + resolution: "error-ex@npm:1.3.2" + dependencies: + is-arrayish: ^0.2.1 + checksum: c1c2b8b65f9c91b0f9d75f0debaa7ec5b35c266c2cac5de412c1a6de86d4cbae04ae44e510378cb14d032d0645a36925d0186f8bb7367bcc629db256b743a001 + languageName: node + linkType: hard + +"es-define-property@npm:^1.0.0": + version: 1.0.0 + resolution: "es-define-property@npm:1.0.0" + dependencies: + get-intrinsic: ^1.2.4 + checksum: f66ece0a887b6dca71848fa71f70461357c0e4e7249696f81bad0a1f347eed7b31262af4a29f5d726dc026426f085483b6b90301855e647aa8e21936f07293c6 + languageName: node + linkType: hard + +"es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: ec1414527a0ccacd7f15f4a3bc66e215f04f595ba23ca75cdae0927af099b5ec865f9f4d33e9d7e86f512f252876ac77d4281a7871531a50678132429b1271b5 + languageName: node + linkType: hard + +"es-module-lexer@npm:^1.2.1": + version: 1.5.4 + resolution: "es-module-lexer@npm:1.5.4" + checksum: a0cf04fb92d052647ac7d818d1913b98d3d3d0f5b9d88f0eafb993436e4c3e2c958599db68839d57f2dfa281fdf0f60e18d448eb78fc292c33c0f25635b6854f + languageName: node + linkType: hard + +"escalade@npm:^3.1.1, escalade@npm:^3.1.2": + version: 3.1.2 + resolution: "escalade@npm:3.1.2" + checksum: 1ec0977aa2772075493002bdbd549d595ff6e9393b1cb0d7d6fcaf78c750da0c158f180938365486f75cb69fba20294351caddfce1b46552a7b6c3cde52eaa02 + languageName: node + linkType: hard + +"escape-goat@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-goat@npm:4.0.0" + checksum: 7034e0025eec7b751074b837f10312c5b768493265bdad046347c0aadbc1e652776f7e5df94766473fecb5d3681169cc188fe9ccc1e22be53318c18be1671cc0 + languageName: node + linkType: hard + +"escape-html@npm:^1.0.3, escape-html@npm:~1.0.3": + version: 1.0.3 + resolution: "escape-html@npm:1.0.3" + checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^1.0.5": + version: 1.0.5 + resolution: "escape-string-regexp@npm:1.0.5" + checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^5.0.0": + version: 5.0.0 + resolution: "escape-string-regexp@npm:5.0.0" + checksum: 20daabe197f3cb198ec28546deebcf24b3dbb1a5a269184381b3116d12f0532e06007f4bc8da25669d6a7f8efb68db0758df4cd981f57bc5b57f521a3e12c59e + languageName: node + linkType: hard + +"eslint-scope@npm:5.1.1": + version: 5.1.1 + resolution: "eslint-scope@npm:5.1.1" + dependencies: + esrecurse: ^4.3.0 + estraverse: ^4.1.1 + checksum: 47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb + languageName: node + linkType: hard + +"esprima@npm:^4.0.0": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: b45bc805a613dbea2835278c306b91aff6173c8d034223fa81498c77dcbce3b2931bf6006db816f62eacd9fd4ea975dfd85a5b7f3c6402cfd050d4ca3c13a628 + languageName: node + linkType: hard + +"esrecurse@npm:^4.3.0": + version: 4.3.0 + resolution: "esrecurse@npm:4.3.0" + dependencies: + estraverse: ^5.2.0 + checksum: ebc17b1a33c51cef46fdc28b958994b1dc43cd2e86237515cbc3b4e5d2be6a811b2315d0a1a4d9d340b6d2308b15322f5c8291059521cc5f4802f65e7ec32837 + languageName: node + linkType: hard + +"estraverse@npm:^4.1.1": + version: 4.3.0 + resolution: "estraverse@npm:4.3.0" + checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 + languageName: node + linkType: hard + +"estraverse@npm:^5.2.0": + version: 5.3.0 + resolution: "estraverse@npm:5.3.0" + checksum: 072780882dc8416ad144f8fe199628d2b3e7bbc9989d9ed43795d2c90309a2047e6bc5979d7e2322a341163d22cfad9e21f4110597fe487519697389497e4e2b + languageName: node + linkType: hard + +"estree-util-attach-comments@npm:^3.0.0": + version: 3.0.0 + resolution: "estree-util-attach-comments@npm:3.0.0" + dependencies: + "@types/estree": ^1.0.0 + checksum: 56254eaef39659e6351919ebc2ae53a37a09290a14571c19e373e9d5fad343a3403d9ad0c23ae465d6e7d08c3e572fd56fb8c793efe6434a261bf1489932dbd5 + languageName: node + linkType: hard + +"estree-util-build-jsx@npm:^3.0.0": + version: 3.0.1 + resolution: "estree-util-build-jsx@npm:3.0.1" + dependencies: + "@types/estree-jsx": ^1.0.0 + devlop: ^1.0.0 + estree-util-is-identifier-name: ^3.0.0 + estree-walker: ^3.0.0 + checksum: 185eff060eda2ba32cecd15904db4f5ba0681159fbdf54f0f6586cd9411e77e733861a833d0aee3415e1d1fd4b17edf08bc9e9872cee98e6ec7b0800e1a85064 + languageName: node + linkType: hard + +"estree-util-is-identifier-name@npm:^3.0.0": + version: 3.0.0 + resolution: "estree-util-is-identifier-name@npm:3.0.0" + checksum: ea3909f0188ea164af0aadeca87c087e3e5da78d76da5ae9c7954ff1340ea3e4679c4653bbf4299ffb70caa9b322218cc1128db2541f3d2976eb9704f9857787 + languageName: node + linkType: hard + +"estree-util-to-js@npm:^2.0.0": + version: 2.0.0 + resolution: "estree-util-to-js@npm:2.0.0" + dependencies: + "@types/estree-jsx": ^1.0.0 + astring: ^1.8.0 + source-map: ^0.7.0 + checksum: 833edc94ab9978e0918f90261e0a3361bf4564fec4901f326d2237a9235d3f5fc6482da3be5acc545e702c8c7cb8bc5de5c7c71ba3b080eb1975bcfdf3923d79 + languageName: node + linkType: hard + +"estree-util-value-to-estree@npm:^3.0.1": + version: 3.1.2 + resolution: "estree-util-value-to-estree@npm:3.1.2" + dependencies: + "@types/estree": ^1.0.0 + checksum: 31c4b9f3a2e64119b994a86d70070325b6ec238a21842669e79b0d6a7190150293616c8f38fee1c369c18bbef405064d883aa38c05311db5d0a211a30e9924d6 + languageName: node + linkType: hard + +"estree-util-visit@npm:^2.0.0": + version: 2.0.0 + resolution: "estree-util-visit@npm:2.0.0" + dependencies: + "@types/estree-jsx": ^1.0.0 + "@types/unist": ^3.0.0 + checksum: 6444b38f224322945a6d19ea81a8828a0eec64aefb2bf1ea791fe20df496f7b7c543408d637df899e6a8e318b638f66226f16378a33c4c2b192ba5c3f891121f + languageName: node + linkType: hard + +"estree-walker@npm:^3.0.0": + version: 3.0.3 + resolution: "estree-walker@npm:3.0.3" + dependencies: + "@types/estree": ^1.0.0 + checksum: a65728d5727b71de172c5df323385755a16c0fdab8234dc756c3854cfee343261ddfbb72a809a5660fac8c75d960bb3e21aa898c2d7e9b19bb298482ca58a3af + languageName: node + linkType: hard + +"esutils@npm:^2.0.2": + version: 2.0.3 + resolution: "esutils@npm:2.0.3" + checksum: 22b5b08f74737379a840b8ed2036a5fb35826c709ab000683b092d9054e5c2a82c27818f12604bfc2a9a76b90b6834ef081edbc1c7ae30d1627012e067c6ec87 + languageName: node + linkType: hard + +"eta@npm:^2.2.0": + version: 2.2.0 + resolution: "eta@npm:2.2.0" + checksum: 6a09631481d4f26a9662a1eb736a65cc1cbc48e24935e6ff5d83a83b0cb509ea56d588d66d7c087d590601dc59bdabdac2356936b1b789d020eb0cf2d8304d54 + languageName: node + linkType: hard + +"etag@npm:~1.8.1": + version: 1.8.1 + resolution: "etag@npm:1.8.1" + checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff + languageName: node + linkType: hard + +"eval@npm:^0.1.8": + version: 0.1.8 + resolution: "eval@npm:0.1.8" + dependencies: + "@types/node": "*" + require-like: ">= 0.1.1" + checksum: d005567f394cfbe60948e34982e4637d2665030f9aa7dcac581ea6f9ec6eceb87133ed3dc0ae21764aa362485c242a731dbb6371f1f1a86807c58676431e9d1a + languageName: node + linkType: hard + +"eventemitter3@npm:^4.0.0": + version: 4.0.7 + resolution: "eventemitter3@npm:4.0.7" + checksum: 1875311c42fcfe9c707b2712c32664a245629b42bb0a5a84439762dd0fd637fc54d078155ea83c2af9e0323c9ac13687e03cfba79b03af9f40c89b4960099374 + languageName: node + linkType: hard + +"events@npm:^3.2.0": + version: 3.3.0 + resolution: "events@npm:3.3.0" + checksum: f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780 + languageName: node + linkType: hard + +"execa@npm:^5.0.0": + version: 5.1.1 + resolution: "execa@npm:5.1.1" + dependencies: + cross-spawn: ^7.0.3 + get-stream: ^6.0.0 + human-signals: ^2.1.0 + is-stream: ^2.0.0 + merge-stream: ^2.0.0 + npm-run-path: ^4.0.1 + onetime: ^5.1.2 + signal-exit: ^3.0.3 + strip-final-newline: ^2.0.0 + checksum: fba9022c8c8c15ed862847e94c252b3d946036d7547af310e344a527e59021fd8b6bb0723883ea87044dc4f0201f949046993124a42ccb0855cae5bf8c786343 + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.1 + resolution: "exponential-backoff@npm:3.1.1" + checksum: 3d21519a4f8207c99f7457287291316306255a328770d320b401114ec8481986e4e467e854cb9914dd965e0a1ca810a23ccb559c642c88f4c7f55c55778a9b48 + languageName: node + linkType: hard + +"express@npm:^4.17.3": + version: 4.19.2 + resolution: "express@npm:4.19.2" + dependencies: + accepts: ~1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.2 + content-disposition: 0.5.4 + content-type: ~1.0.4 + cookie: 0.6.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: ~1.0.2 + escape-html: ~1.0.3 + etag: ~1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: ~1.1.2 + on-finished: 2.4.1 + parseurl: ~1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: ~2.0.7 + qs: 6.11.0 + range-parser: ~1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: ~1.6.18 + utils-merge: 1.0.1 + vary: ~1.1.2 + checksum: 212dbd6c2c222a96a61bc927639c95970a53b06257080bb9e2838adb3bffdb966856551fdad1ab5dd654a217c35db94f987d0aa88d48fb04d306340f5f34dca5 + languageName: node + linkType: hard + +"extend-shallow@npm:^2.0.1": + version: 2.0.1 + resolution: "extend-shallow@npm:2.0.1" + dependencies: + is-extendable: ^0.1.0 + checksum: 8fb58d9d7a511f4baf78d383e637bd7d2e80843bd9cd0853649108ea835208fb614da502a553acc30208e1325240bb7cc4a68473021612496bb89725483656d8 + languageName: node + linkType: hard + +"extend@npm:^3.0.0": + version: 3.0.2 + resolution: "extend@npm:3.0.2" + checksum: a50a8309ca65ea5d426382ff09f33586527882cf532931cb08ca786ea3146c0553310bda688710ff61d7668eba9f96b923fe1420cdf56a2c3eaf30fcab87b515 + languageName: node + linkType: hard + +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d + languageName: node + linkType: hard + +"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0": + version: 3.3.2 + resolution: "fast-glob@npm:3.3.2" + 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 + checksum: 900e4979f4dbc3313840078419245621259f349950411ca2fa445a2f9a1a6d98c3b5e7e0660c5ccd563aa61abe133a21765c6c0dec8e57da1ba71d8000b05ec1 + languageName: node + linkType: hard + +"fast-json-stable-stringify@npm:^2.0.0": + version: 2.1.0 + resolution: "fast-json-stable-stringify@npm:2.1.0" + checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb + languageName: node + linkType: hard + +"fast-uri@npm:^3.0.1": + version: 3.0.1 + resolution: "fast-uri@npm:3.0.1" + checksum: 106143ff83705995225dcc559411288f3337e732bb2e264e79788f1914b6bd8f8bc3683102de60b15ba00e6ebb443633cabac77d4ebc5cb228c47cf955e199ff + languageName: node + linkType: hard + +"fast-url-parser@npm:1.1.3": + version: 1.1.3 + resolution: "fast-url-parser@npm:1.1.3" + dependencies: + punycode: ^1.3.2 + checksum: 5043d0c4a8d775ff58504d56c096563c11b113e4cb8a2668c6f824a1cd4fb3812e2fdf76537eb24a7ce4ae7def6bd9747da630c617cf2a4b6ce0c42514e4f21c + languageName: node + linkType: hard + +"fastq@npm:^1.6.0": + version: 1.17.1 + resolution: "fastq@npm:1.17.1" + dependencies: + reusify: ^1.0.4 + checksum: a8c5b26788d5a1763f88bae56a8ddeee579f935a831c5fe7a8268cea5b0a91fbfe705f612209e02d639b881d7b48e461a50da4a10cfaa40da5ca7cc9da098d88 + languageName: node + linkType: hard + +"fault@npm:^2.0.0": + version: 2.0.1 + resolution: "fault@npm:2.0.1" + dependencies: + format: ^0.2.0 + checksum: c9b30f47d95769177130a9409976a899ed31eb598450fbad5b0d39f2f5f56d5f4a9ff9257e0bee8407cb0fc3ce37165657888c6aa6d78472e403893104329b72 + languageName: node + linkType: hard + +"faye-websocket@npm:^0.11.3": + version: 0.11.4 + resolution: "faye-websocket@npm:0.11.4" + dependencies: + websocket-driver: ">=0.5.1" + checksum: d49a62caf027f871149fc2b3f3c7104dc6d62744277eb6f9f36e2d5714e847d846b9f7f0d0b7169b25a012e24a594cde11a93034b30732e4c683f20b8a5019fa + languageName: node + linkType: hard + +"feed@npm:^4.2.2": + version: 4.2.2 + resolution: "feed@npm:4.2.2" + dependencies: + xml-js: ^1.6.11 + checksum: 2e6992a675a049511eef7bda8ca6c08cb9540cd10e8b275ec4c95d166228ec445a335fa8de990358759f248a92861e51decdcd32bf1c54737d5b7aed7c7ffe97 + languageName: node + linkType: hard + +"file-loader@npm:^6.2.0": + version: 6.2.0 + resolution: "file-loader@npm:6.2.0" + dependencies: + loader-utils: ^2.0.0 + schema-utils: ^3.0.0 + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + checksum: faf43eecf233f4897b0150aaa874eeeac214e4f9de49738a9e0ef734a30b5260059e85b7edadf852b98e415f875bd5f12587768a93fd52aaf2e479ecf95fab20 + languageName: node + linkType: hard + +"filesize@npm:^8.0.6": + version: 8.0.7 + resolution: "filesize@npm:8.0.7" + checksum: 8603d27c5287b984cb100733640645e078f5f5ad65c6d913173e01fb99e09b0747828498fd86647685ccecb69be31f3587b9739ab1e50732116b2374aff4cbf9 + languageName: node + linkType: hard + +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" + dependencies: + to-regex-range: ^5.0.1 + checksum: b4abfbca3839a3d55e4ae5ec62e131e2e356bf4859ce8480c64c4876100f4df292a63e5bb1618e1d7460282ca2b305653064f01654474aa35c68000980f17798 + languageName: node + linkType: hard + +"finalhandler@npm:1.2.0": + version: 1.2.0 + resolution: "finalhandler@npm:1.2.0" + dependencies: + debug: 2.6.9 + encodeurl: ~1.0.2 + escape-html: ~1.0.3 + on-finished: 2.4.1 + parseurl: ~1.3.3 + statuses: 2.0.1 + unpipe: ~1.0.0 + checksum: 92effbfd32e22a7dff2994acedbd9bcc3aa646a3e919ea6a53238090e87097f8ef07cced90aa2cc421abdf993aefbdd5b00104d55c7c5479a8d00ed105b45716 + languageName: node + linkType: hard + +"find-cache-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "find-cache-dir@npm:4.0.0" + dependencies: + common-path-prefix: ^3.0.0 + pkg-dir: ^7.0.0 + checksum: 52a456a80deeb27daa3af6e06059b63bdb9cc4af4d845fc6d6229887e505ba913cd56000349caa60bc3aa59dacdb5b4c37903d4ba34c75102d83cab330b70d2f + languageName: node + linkType: hard + +"find-up@npm:^3.0.0": + version: 3.0.0 + resolution: "find-up@npm:3.0.0" + dependencies: + locate-path: ^3.0.0 + checksum: 38eba3fe7a66e4bc7f0f5a1366dc25508b7cfc349f852640e3678d26ad9a6d7e2c43eff0a472287de4a9753ef58f066a0ea892a256fa3636ad51b3fe1e17fae9 + languageName: node + linkType: hard + +"find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: ^6.0.0 + path-exists: ^4.0.0 + checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 + languageName: node + linkType: hard + +"find-up@npm:^6.3.0": + version: 6.3.0 + resolution: "find-up@npm:6.3.0" + dependencies: + locate-path: ^7.1.0 + path-exists: ^5.0.0 + checksum: 9a21b7f9244a420e54c6df95b4f6fc3941efd3c3e5476f8274eb452f6a85706e7a6a90de71353ee4f091fcb4593271a6f92810a324ec542650398f928783c280 + languageName: node + linkType: hard + +"flat@npm:^5.0.2": + version: 5.0.2 + resolution: "flat@npm:5.0.2" + bin: + flat: cli.js + checksum: 12a1536ac746db74881316a181499a78ef953632ddd28050b7a3a43c62ef5462e3357c8c29d76072bb635f147f7a9a1f0c02efef6b4be28f8db62ceb3d5c7f5d + languageName: node + linkType: hard + +"follow-redirects@npm:^1.0.0": + version: 1.15.6 + resolution: "follow-redirects@npm:1.15.6" + peerDependenciesMeta: + debug: + optional: true + checksum: a62c378dfc8c00f60b9c80cab158ba54e99ba0239a5dd7c81245e5a5b39d10f0c35e249c3379eae719ff0285fff88c365dd446fab19dee771f1d76252df1bbf5 + languageName: node + linkType: hard + +"foreground-child@npm:^3.1.0": + version: 3.3.0 + resolution: "foreground-child@npm:3.3.0" + dependencies: + cross-spawn: ^7.0.0 + signal-exit: ^4.0.1 + checksum: 1989698488f725b05b26bc9afc8a08f08ec41807cd7b92ad85d96004ddf8243fd3e79486b8348c64a3011ae5cc2c9f0936af989e1f28339805d8bc178a75b451 + languageName: node + linkType: hard + +"fork-ts-checker-webpack-plugin@npm:^6.5.0": + version: 6.5.3 + resolution: "fork-ts-checker-webpack-plugin@npm:6.5.3" + dependencies: + "@babel/code-frame": ^7.8.3 + "@types/json-schema": ^7.0.5 + chalk: ^4.1.0 + chokidar: ^3.4.2 + cosmiconfig: ^6.0.0 + deepmerge: ^4.2.2 + fs-extra: ^9.0.0 + glob: ^7.1.6 + memfs: ^3.1.2 + minimatch: ^3.0.4 + schema-utils: 2.7.0 + semver: ^7.3.2 + tapable: ^1.0.0 + peerDependencies: + eslint: ">= 6" + typescript: ">= 2.7" + vue-template-compiler: "*" + webpack: ">= 4" + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + checksum: 9732a49bfeed8fc23e6e8a59795fa7c238edeba91040a9b520db54b4d316dda27f9f1893d360e296fd0ad8930627d364417d28a8c7007fba60cc730ebfce4956 + languageName: node + linkType: hard + +"form-data-encoder@npm:^2.1.2": + version: 2.1.4 + resolution: "form-data-encoder@npm:2.1.4" + checksum: e0b3e5950fb69b3f32c273944620f9861f1933df9d3e42066e038e26dfb343d0f4465de9f27e0ead1a09d9df20bc2eed06a63c2ca2f8f00949e7202bae9e29dd + languageName: node + linkType: hard + +"format@npm:^0.2.0": + version: 0.2.2 + resolution: "format@npm:0.2.2" + checksum: 646a60e1336250d802509cf24fb801e43bd4a70a07510c816fa133aa42cdbc9c21e66e9cc0801bb183c5b031c9d68be62e7fbb6877756e52357850f92aa28799 + languageName: node + linkType: hard + +"forwarded@npm:0.2.0": + version: 0.2.0 + resolution: "forwarded@npm:0.2.0" + checksum: fd27e2394d8887ebd16a66ffc889dc983fbbd797d5d3f01087c020283c0f019a7d05ee85669383d8e0d216b116d720fc0cef2f6e9b7eb9f4c90c6e0bc7fd28e6 + languageName: node + linkType: hard + +"fraction.js@npm:^4.3.7": + version: 4.3.7 + resolution: "fraction.js@npm:4.3.7" + checksum: e1553ae3f08e3ba0e8c06e43a3ab20b319966dfb7ddb96fd9b5d0ee11a66571af7f993229c88ebbb0d4a816eb813a24ed48207b140d442a8f76f33763b8d1f3f + languageName: node + linkType: hard + +"fresh@npm:0.5.2": + version: 0.5.2 + resolution: "fresh@npm:0.5.2" + checksum: 13ea8b08f91e669a64e3ba3a20eb79d7ca5379a81f1ff7f4310d54e2320645503cc0c78daedc93dfb6191287295f6479544a649c64d8e41a1c0fb0c221552346 + languageName: node + linkType: hard + +"fs-extra@npm:^11.1.1, fs-extra@npm:^11.2.0": + version: 11.2.0 + resolution: "fs-extra@npm:11.2.0" + dependencies: + graceful-fs: ^4.2.0 + jsonfile: ^6.0.1 + universalify: ^2.0.0 + checksum: b12e42fa40ba47104202f57b8480dd098aa931c2724565e5e70779ab87605665594e76ee5fb00545f772ab9ace167fe06d2ab009c416dc8c842c5ae6df7aa7e8 + languageName: node + linkType: hard + +"fs-extra@npm:^9.0.0": + version: 9.1.0 + resolution: "fs-extra@npm:9.1.0" + dependencies: + at-least-node: ^1.0.0 + graceful-fs: ^4.2.0 + jsonfile: ^6.0.1 + universalify: ^2.0.0 + checksum: ba71ba32e0faa74ab931b7a0031d1523c66a73e225de7426e275e238e312d07313d2da2d33e34a52aa406c8763ade5712eb3ec9ba4d9edce652bcacdc29e6b20 + languageName: node + linkType: hard + +"fs-minipass@npm:^2.0.0": + version: 2.1.0 + resolution: "fs-minipass@npm:2.1.0" + dependencies: + minipass: ^3.0.0 + checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 + languageName: node + linkType: hard + +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: ^7.0.3 + checksum: 8722a41109130851d979222d3ec88aabaceeaaf8f57b2a8f744ef8bd2d1ce95453b04a61daa0078822bc5cd21e008814f06fe6586f56fef511e71b8d2394d802 + languageName: node + linkType: hard + +"fs-monkey@npm:^1.0.4": + version: 1.0.6 + resolution: "fs-monkey@npm:1.0.6" + checksum: 4e9986acf197581b10b79d3e63e74252681ca215ef82d4afbd98dcfe86b3f09189ac1d7e8064bc433e4e53cdb5c14fdb38773277d41bba18b1ff8bbdcab01a3a + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 + languageName: node + linkType: hard + +"fsevents@npm:~2.3.2": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: latest + checksum: 11e6ea6fea15e42461fc55b4b0e4a0a3c654faa567f1877dbd353f39156f69def97a69936d1746619d656c4b93de2238bf731f6085a03a50cabf287c9d024317 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@~2.3.2#~builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#~builtin::version=2.3.3&hash=df0bf1" + dependencies: + node-gyp: latest + conditions: os=darwin + languageName: node + linkType: hard + +"function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: 2b0ff4ce708d99715ad14a6d1f894e2a83242e4a52ccfcefaee5e40050562e5f6dafc1adbb4ce2d4ab47279a45dc736ab91ea5042d843c3c092820dfe032efb1 + languageName: node + linkType: hard + +"gensync@npm:^1.0.0-beta.2": + version: 1.0.0-beta.2 + resolution: "gensync@npm:1.0.0-beta.2" + checksum: a7437e58c6be12aa6c90f7730eac7fa9833dc78872b4ad2963d2031b00a3367a93f98aec75f9aaac7220848e4026d67a8655e870b24f20a543d103c0d65952ec + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.4": + version: 1.2.4 + resolution: "get-intrinsic@npm:1.2.4" + dependencies: + es-errors: ^1.3.0 + function-bind: ^1.1.2 + has-proto: ^1.0.1 + has-symbols: ^1.0.3 + hasown: ^2.0.0 + checksum: 414e3cdf2c203d1b9d7d33111df746a4512a1aa622770b361dadddf8ed0b5aeb26c560f49ca077e24bfafb0acb55ca908d1f709216ccba33ffc548ec8a79a951 + languageName: node + linkType: hard + +"get-own-enumerable-property-symbols@npm:^3.0.0": + version: 3.0.2 + resolution: "get-own-enumerable-property-symbols@npm:3.0.2" + checksum: 8f0331f14159f939830884799f937343c8c0a2c330506094bc12cbee3665d88337fe97a4ea35c002cc2bdba0f5d9975ad7ec3abb925015cdf2a93e76d4759ede + languageName: node + linkType: hard + +"get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": + version: 6.0.1 + resolution: "get-stream@npm:6.0.1" + checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad + languageName: node + linkType: hard + +"github-slugger@npm:^1.5.0": + version: 1.5.0 + resolution: "github-slugger@npm:1.5.0" + checksum: c70988224578b3bdaa25df65973ffc8c24594a77a28550c3636e495e49d17aef5cdb04c04fa3f1744babef98c61eecc6a43299a13ea7f3cc33d680bf9053ffbe + languageName: node + linkType: hard + +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: ^4.0.1 + checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e + languageName: node + linkType: hard + +"glob-parent@npm:^6.0.1": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: ^4.0.3 + checksum: c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8 + languageName: node + linkType: hard + +"glob-to-regexp@npm:^0.4.1": + version: 0.4.1 + resolution: "glob-to-regexp@npm:0.4.1" + checksum: e795f4e8f06d2a15e86f76e4d92751cf8bbfcf0157cea5c2f0f35678a8195a750b34096b1256e436f0cebc1883b5ff0888c47348443e69546a5a87f9e1eb1167 + languageName: node + linkType: hard + +"glob@npm:^10.2.2, glob@npm:^10.3.10": + version: 10.4.5 + resolution: "glob@npm:10.4.5" + dependencies: + foreground-child: ^3.1.0 + jackspeak: ^3.1.2 + minimatch: ^9.0.4 + minipass: ^7.1.2 + package-json-from-dist: ^1.0.0 + path-scurry: ^1.11.1 + bin: + glob: dist/esm/bin.mjs + checksum: 0bc725de5e4862f9f387fd0f2b274baf16850dcd2714502ccf471ee401803997983e2c05590cb65f9675a3c6f2a58e7a53f9e365704108c6ad3cbf1d60934c4a + languageName: node + linkType: hard + +"glob@npm:^7.0.0, glob@npm:^7.1.3, glob@npm:^7.1.6": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + 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 + checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 + languageName: node + linkType: hard + +"global-dirs@npm:^3.0.0": + version: 3.0.1 + resolution: "global-dirs@npm:3.0.1" + dependencies: + ini: 2.0.0 + checksum: 70147b80261601fd40ac02a104581432325c1c47329706acd773f3a6ce99bb36d1d996038c85ccacd482ad22258ec233c586b6a91535b1a116b89663d49d6438 + languageName: node + linkType: hard + +"global-modules@npm:^2.0.0": + version: 2.0.0 + resolution: "global-modules@npm:2.0.0" + dependencies: + global-prefix: ^3.0.0 + checksum: d6197f25856c878c2fb5f038899f2dca7cbb2f7b7cf8999660c0104972d5cfa5c68b5a0a77fa8206bb536c3903a4615665acb9709b4d80846e1bb47eaef65430 + languageName: node + linkType: hard + +"global-prefix@npm:^3.0.0": + version: 3.0.0 + resolution: "global-prefix@npm:3.0.0" + dependencies: + ini: ^1.3.5 + kind-of: ^6.0.2 + which: ^1.3.1 + checksum: 8a82fc1d6f22c45484a4e34656cc91bf021a03e03213b0035098d605bfc612d7141f1e14a21097e8a0413b4884afd5b260df0b6a25605ce9d722e11f1df2881d + languageName: node + linkType: hard + +"globals@npm:^11.1.0": + version: 11.12.0 + resolution: "globals@npm:11.12.0" + checksum: 67051a45eca3db904aee189dfc7cd53c20c7d881679c93f6146ddd4c9f4ab2268e68a919df740d39c71f4445d2b38ee360fc234428baea1dbdfe68bbcb46979e + languageName: node + linkType: hard + +"globby@npm:^11.0.1, globby@npm:^11.0.4, globby@npm:^11.1.0": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + 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 + checksum: b4be8885e0cfa018fc783792942d53926c35c50b3aefd3fdcfb9d22c627639dc26bd2327a40a0b74b074100ce95bb7187bfeae2f236856aa3de183af7a02aea6 + languageName: node + linkType: hard + +"globby@npm:^13.1.1": + version: 13.2.2 + resolution: "globby@npm:13.2.2" + dependencies: + dir-glob: ^3.0.1 + fast-glob: ^3.3.0 + ignore: ^5.2.4 + merge2: ^1.4.1 + slash: ^4.0.0 + checksum: f3d84ced58a901b4fcc29c846983108c426631fe47e94872868b65565495f7bee7b3defd68923bd480582771fd4bbe819217803a164a618ad76f1d22f666f41e + languageName: node + linkType: hard + +"gopd@npm:^1.0.1": + version: 1.0.1 + resolution: "gopd@npm:1.0.1" + dependencies: + get-intrinsic: ^1.1.3 + checksum: a5ccfb8806e0917a94e0b3de2af2ea4979c1da920bc381667c260e00e7cafdbe844e2cb9c5bcfef4e5412e8bf73bab837285bc35c7ba73aaaf0134d4583393a6 + languageName: node + linkType: hard + +"got@npm:^12.1.0": + version: 12.6.1 + resolution: "got@npm:12.6.1" + dependencies: + "@sindresorhus/is": ^5.2.0 + "@szmarczak/http-timer": ^5.0.1 + cacheable-lookup: ^7.0.0 + cacheable-request: ^10.2.8 + decompress-response: ^6.0.0 + form-data-encoder: ^2.1.2 + get-stream: ^6.0.1 + http2-wrapper: ^2.1.10 + lowercase-keys: ^3.0.0 + p-cancelable: ^3.0.0 + responselike: ^3.0.0 + checksum: 3c37f5d858aca2859f9932e7609d35881d07e7f2d44c039d189396f0656896af6c77c22f2c51c563f8918be483f60ff41e219de742ab4642d4b106711baccbd5 + languageName: node + linkType: hard + +"graceful-fs@npm:4.2.10": + version: 4.2.10 + resolution: "graceful-fs@npm:4.2.10" + checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da + languageName: node + linkType: hard + +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 + languageName: node + linkType: hard + +"gray-matter@npm:^4.0.3": + version: 4.0.3 + resolution: "gray-matter@npm:4.0.3" + dependencies: + js-yaml: ^3.13.1 + kind-of: ^6.0.2 + section-matter: ^1.0.0 + strip-bom-string: ^1.0.0 + checksum: 37717bd424344487d655392251ce8d8878a1275ee087003e61208fba3bfd59cbb73a85b2159abf742ae95e23db04964813fdc33ae18b074208428b2528205222 + languageName: node + linkType: hard + +"gzip-size@npm:^6.0.0": + version: 6.0.0 + resolution: "gzip-size@npm:6.0.0" + dependencies: + duplexer: ^0.1.2 + checksum: 2df97f359696ad154fc171dcb55bc883fe6e833bca7a65e457b9358f3cb6312405ed70a8da24a77c1baac0639906cd52358dc0ce2ec1a937eaa631b934c94194 + languageName: node + linkType: hard + +"handle-thing@npm:^2.0.0": + version: 2.0.1 + resolution: "handle-thing@npm:2.0.1" + checksum: 68071f313062315cd9dce55710e9496873945f1dd425107007058fc1629f93002a7649fcc3e464281ce02c7e809a35f5925504ab8105d972cf649f1f47cb7d6c + languageName: node + linkType: hard + +"has-flag@npm:^3.0.0": + version: 3.0.0 + resolution: "has-flag@npm:3.0.0" + checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad + languageName: node + linkType: hard + +"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": + version: 1.0.2 + resolution: "has-property-descriptors@npm:1.0.2" + dependencies: + es-define-property: ^1.0.0 + checksum: fcbb246ea2838058be39887935231c6d5788babed499d0e9d0cc5737494c48aba4fe17ba1449e0d0fbbb1e36175442faa37f9c427ae357d6ccb1d895fbcd3de3 + languageName: node + linkType: hard + +"has-proto@npm:^1.0.1": + version: 1.0.3 + resolution: "has-proto@npm:1.0.3" + checksum: fe7c3d50b33f50f3933a04413ed1f69441d21d2d2944f81036276d30635cad9279f6b43bc8f32036c31ebdfcf6e731150f46c1907ad90c669ffe9b066c3ba5c4 + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.3": + version: 1.0.3 + resolution: "has-symbols@npm:1.0.3" + checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 + languageName: node + linkType: hard + +"has-yarn@npm:^3.0.0": + version: 3.0.0 + resolution: "has-yarn@npm:3.0.0" + checksum: b9e14e78e0a37bc070550c862b201534287bc10e62a86ec9c1f455ffb082db42817ce9aed914bd73f1d589bbf268520e194629ff2f62ff6b98a482c4bd2dcbfb + languageName: node + linkType: hard + +"hasown@npm:^2.0.0, hasown@npm:^2.0.2": + version: 2.0.2 + resolution: "hasown@npm:2.0.2" + dependencies: + function-bind: ^1.1.2 + checksum: e8516f776a15149ca6c6ed2ae3110c417a00b62260e222590e54aa367cbcd6ed99122020b37b7fbdf05748df57b265e70095d7bf35a47660587619b15ffb93db + languageName: node + linkType: hard + +"hast-util-from-parse5@npm:^8.0.0": + version: 8.0.1 + resolution: "hast-util-from-parse5@npm:8.0.1" + dependencies: + "@types/hast": ^3.0.0 + "@types/unist": ^3.0.0 + devlop: ^1.0.0 + hastscript: ^8.0.0 + property-information: ^6.0.0 + vfile: ^6.0.0 + vfile-location: ^5.0.0 + web-namespaces: ^2.0.0 + checksum: fdd1ab8b03af13778ecb94ef9a58b1e3528410cdfceb3d6bb7600508967d0d836b451bc7bc3baf66efb7c730d3d395eea4bb1b30352b0162823d9f0de976774b + languageName: node + linkType: hard + +"hast-util-parse-selector@npm:^4.0.0": + version: 4.0.0 + resolution: "hast-util-parse-selector@npm:4.0.0" + dependencies: + "@types/hast": ^3.0.0 + checksum: 76087670d3b0b50b23a6cb70bca53a6176d6608307ccdbb3ed18b650b82e7c3513bfc40348f1389dc0c5ae872b9a768851f4335f44654abd7deafd6974c52402 + languageName: node + linkType: hard + +"hast-util-raw@npm:^9.0.0": + version: 9.0.4 + resolution: "hast-util-raw@npm:9.0.4" + dependencies: + "@types/hast": ^3.0.0 + "@types/unist": ^3.0.0 + "@ungap/structured-clone": ^1.0.0 + hast-util-from-parse5: ^8.0.0 + hast-util-to-parse5: ^8.0.0 + html-void-elements: ^3.0.0 + mdast-util-to-hast: ^13.0.0 + parse5: ^7.0.0 + unist-util-position: ^5.0.0 + unist-util-visit: ^5.0.0 + vfile: ^6.0.0 + web-namespaces: ^2.0.0 + zwitch: ^2.0.0 + checksum: 1096c21ca78908549fa392f10783eb7a3f4c6f11d7a6f572b597464edf53e7bcf36181ddf3432ff7cec8b5455b8d5f054b2214cfb35d705a5ff3968c94409e7a + languageName: node + linkType: hard + +"hast-util-to-estree@npm:^3.0.0": + version: 3.1.0 + resolution: "hast-util-to-estree@npm:3.1.0" + dependencies: + "@types/estree": ^1.0.0 + "@types/estree-jsx": ^1.0.0 + "@types/hast": ^3.0.0 + comma-separated-tokens: ^2.0.0 + devlop: ^1.0.0 + estree-util-attach-comments: ^3.0.0 + estree-util-is-identifier-name: ^3.0.0 + hast-util-whitespace: ^3.0.0 + mdast-util-mdx-expression: ^2.0.0 + mdast-util-mdx-jsx: ^3.0.0 + mdast-util-mdxjs-esm: ^2.0.0 + property-information: ^6.0.0 + space-separated-tokens: ^2.0.0 + style-to-object: ^0.4.0 + unist-util-position: ^5.0.0 + zwitch: ^2.0.0 + checksum: 61272f7c18c9d2a5e34df7cfd2c97cbf12f6e9d05114d60e4dedd64e5576565eb1e35c78b9213c909bb8f984f0f8e9c49b568f04bdb444b83d0bca9159e14f3c + languageName: node + linkType: hard + +"hast-util-to-jsx-runtime@npm:^2.0.0": + version: 2.3.0 + resolution: "hast-util-to-jsx-runtime@npm:2.3.0" + dependencies: + "@types/estree": ^1.0.0 + "@types/hast": ^3.0.0 + "@types/unist": ^3.0.0 + comma-separated-tokens: ^2.0.0 + devlop: ^1.0.0 + estree-util-is-identifier-name: ^3.0.0 + hast-util-whitespace: ^3.0.0 + mdast-util-mdx-expression: ^2.0.0 + mdast-util-mdx-jsx: ^3.0.0 + mdast-util-mdxjs-esm: ^2.0.0 + property-information: ^6.0.0 + space-separated-tokens: ^2.0.0 + style-to-object: ^1.0.0 + unist-util-position: ^5.0.0 + vfile-message: ^4.0.0 + checksum: 599a97c6ec61c1430776813d7fb42e6f96032bf4a04dfcbb8eceef3bc8d1845ecf242387a4426b9d3f52320dbbfa26450643b81124b3d6a0b9bbb0fff4d0ba83 + languageName: node + linkType: hard + +"hast-util-to-parse5@npm:^8.0.0": + version: 8.0.0 + resolution: "hast-util-to-parse5@npm:8.0.0" + dependencies: + "@types/hast": ^3.0.0 + comma-separated-tokens: ^2.0.0 + devlop: ^1.0.0 + property-information: ^6.0.0 + space-separated-tokens: ^2.0.0 + web-namespaces: ^2.0.0 + zwitch: ^2.0.0 + checksum: 137469209cb2b32b57387928878dc85310fbd5afa4807a8da69529199bb1d19044bfc95b50c3dc68d4fb2b6cb8bf99b899285597ab6ab318f50422eefd5599dd + languageName: node + linkType: hard + +"hast-util-whitespace@npm:^3.0.0": + version: 3.0.0 + resolution: "hast-util-whitespace@npm:3.0.0" + dependencies: + "@types/hast": ^3.0.0 + checksum: 41d93ccce218ba935dc3c12acdf586193c35069489c8c8f50c2aa824c00dec94a3c78b03d1db40fa75381942a189161922e4b7bca700b3a2cc779634c351a1e4 + languageName: node + linkType: hard + +"hastscript@npm:^8.0.0": + version: 8.0.0 + resolution: "hastscript@npm:8.0.0" + dependencies: + "@types/hast": ^3.0.0 + comma-separated-tokens: ^2.0.0 + hast-util-parse-selector: ^4.0.0 + property-information: ^6.0.0 + space-separated-tokens: ^2.0.0 + checksum: ae3c20223e7b847320c0f98b6fb3c763ebe1bf3913c5805fbc176cf84553a9db1117ca34cf842a5235890b4b9ae0e94501bfdc9a9b870a5dbf5fc52426db1097 + languageName: node + linkType: hard + +"he@npm:^1.2.0": + version: 1.2.0 + resolution: "he@npm:1.2.0" + bin: + he: bin/he + checksum: 3d4d6babccccd79c5c5a3f929a68af33360d6445587d628087f39a965079d84f18ce9c3d3f917ee1e3978916fc833bb8b29377c3b403f919426f91bc6965e7a7 + languageName: node + linkType: hard + +"history@npm:^4.9.0": + version: 4.10.1 + resolution: "history@npm:4.10.1" + dependencies: + "@babel/runtime": ^7.1.2 + loose-envify: ^1.2.0 + resolve-pathname: ^3.0.0 + tiny-invariant: ^1.0.2 + tiny-warning: ^1.0.0 + value-equal: ^1.0.1 + checksum: addd84bc4683929bae4400419b5af132ff4e4e9b311a0d4e224579ea8e184a6b80d7f72c55927e4fa117f69076a9e47ce082d8d0b422f1a9ddac7991490ca1d0 + languageName: node + linkType: hard + +"hoist-non-react-statics@npm:^3.1.0": + version: 3.3.2 + resolution: "hoist-non-react-statics@npm:3.3.2" + dependencies: + react-is: ^16.7.0 + checksum: b1538270429b13901ee586aa44f4cc3ecd8831c061d06cb8322e50ea17b3f5ce4d0e2e66394761e6c8e152cd8c34fb3b4b690116c6ce2bd45b18c746516cb9e8 + languageName: node + linkType: hard + +"hpack.js@npm:^2.1.6": + version: 2.1.6 + resolution: "hpack.js@npm:2.1.6" + dependencies: + inherits: ^2.0.1 + obuf: ^1.0.0 + readable-stream: ^2.0.1 + wbuf: ^1.1.0 + checksum: 2de144115197967ad6eeee33faf41096c6ba87078703c5cb011632dcfbffeb45784569e0cf02c317bd79c48375597c8ec88c30fff5bb0b023e8f654fb6e9c06e + languageName: node + linkType: hard + +"html-entities@npm:^2.3.2": + version: 2.5.2 + resolution: "html-entities@npm:2.5.2" + checksum: b23f4a07d33d49ade1994069af4e13d31650e3fb62621e92ae10ecdf01d1a98065c78fd20fdc92b4c7881612210b37c275f2c9fba9777650ab0d6f2ceb3b99b6 + languageName: node + linkType: hard + +"html-escaper@npm:^2.0.2": + version: 2.0.2 + resolution: "html-escaper@npm:2.0.2" + checksum: d2df2da3ad40ca9ee3a39c5cc6475ef67c8f83c234475f24d8e9ce0dc80a2c82df8e1d6fa78ddd1e9022a586ea1bd247a615e80a5cd9273d90111ddda7d9e974 + languageName: node + linkType: hard + +"html-minifier-terser@npm:^6.0.2": + version: 6.1.0 + resolution: "html-minifier-terser@npm:6.1.0" + dependencies: + camel-case: ^4.1.2 + clean-css: ^5.2.2 + commander: ^8.3.0 + he: ^1.2.0 + param-case: ^3.0.4 + relateurl: ^0.2.7 + terser: ^5.10.0 + bin: + html-minifier-terser: cli.js + checksum: ac52c14006476f773204c198b64838477859dc2879490040efab8979c0207424da55d59df7348153f412efa45a0840a1ca3c757bf14767d23a15e3e389d37a93 + languageName: node + linkType: hard + +"html-minifier-terser@npm:^7.2.0": + version: 7.2.0 + resolution: "html-minifier-terser@npm:7.2.0" + dependencies: + camel-case: ^4.1.2 + clean-css: ~5.3.2 + commander: ^10.0.0 + entities: ^4.4.0 + param-case: ^3.0.4 + relateurl: ^0.2.7 + terser: ^5.15.1 + bin: + html-minifier-terser: cli.js + checksum: 39feed354b5a8aafc8e910977d68cfd961d6db330a8e1a5b16a528c86b8ee7745d8945134822cf00acf7bf0d0135bf1abad650bf308bee4ea73adb003f5b8656 + languageName: node + linkType: hard + +"html-tags@npm:^3.3.1": + version: 3.3.1 + resolution: "html-tags@npm:3.3.1" + checksum: b4ef1d5a76b678e43cce46e3783d563607b1d550cab30b4f511211564574770aa8c658a400b100e588bc60b8234e59b35ff72c7851cc28f3b5403b13a2c6cbce + languageName: node + linkType: hard + +"html-void-elements@npm:^3.0.0": + version: 3.0.0 + resolution: "html-void-elements@npm:3.0.0" + checksum: 59be397525465a7489028afa064c55763d9cccd1d7d9f630cca47137317f0e897a9ca26cef7e745e7cff1abc44260cfa407742b243a54261dfacd42230e94fce + languageName: node + linkType: hard + +"html-webpack-plugin@npm:^5.5.3": + version: 5.6.0 + resolution: "html-webpack-plugin@npm:5.6.0" + dependencies: + "@types/html-minifier-terser": ^6.0.0 + html-minifier-terser: ^6.0.2 + lodash: ^4.17.21 + pretty-error: ^4.0.0 + tapable: ^2.0.0 + peerDependencies: + "@rspack/core": 0.x || 1.x + webpack: ^5.20.0 + peerDependenciesMeta: + "@rspack/core": + optional: true + webpack: + optional: true + checksum: 32a6e41da538e798fd0be476637d7611a5e8a98a3508f031996e9eb27804dcdc282cb01f847cf5d066f21b49cfb8e21627fcf977ffd0c9bea81cf80e5a65070d + languageName: node + linkType: hard + +"htmlparser2@npm:^6.1.0": + version: 6.1.0 + resolution: "htmlparser2@npm:6.1.0" + dependencies: + domelementtype: ^2.0.1 + domhandler: ^4.0.0 + domutils: ^2.5.2 + entities: ^2.0.0 + checksum: 81a7b3d9c3bb9acb568a02fc9b1b81ffbfa55eae7f1c41ae0bf840006d1dbf54cb3aa245b2553e2c94db674840a9f0fdad7027c9a9d01a062065314039058c4e + languageName: node + linkType: hard + +"htmlparser2@npm:^8.0.1": + version: 8.0.2 + resolution: "htmlparser2@npm:8.0.2" + dependencies: + domelementtype: ^2.3.0 + domhandler: ^5.0.3 + domutils: ^3.0.1 + entities: ^4.4.0 + checksum: 29167a0f9282f181da8a6d0311b76820c8a59bc9e3c87009e21968264c2987d2723d6fde5a964d4b7b6cba663fca96ffb373c06d8223a85f52a6089ced942700 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.1.1": + version: 4.1.1 + resolution: "http-cache-semantics@npm:4.1.1" + checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236 + languageName: node + linkType: hard + +"http-deceiver@npm:^1.2.7": + version: 1.2.7 + resolution: "http-deceiver@npm:1.2.7" + checksum: 64d7d1ae3a6933eb0e9a94e6f27be4af45a53a96c3c34e84ff57113787105a89fff9d1c3df263ef63add823df019b0e8f52f7121e32393bb5ce9a713bf100b41 + languageName: node + linkType: hard + +"http-errors@npm:2.0.0": + version: 2.0.0 + resolution: "http-errors@npm:2.0.0" + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + checksum: 9b0a3782665c52ce9dc658a0d1560bcb0214ba5699e4ea15aefb2a496e2ca83db03ebc42e1cce4ac1f413e4e0d2d736a3fd755772c556a9a06853ba2a0b7d920 + languageName: node + linkType: hard + +"http-errors@npm:~1.6.2": + version: 1.6.3 + resolution: "http-errors@npm:1.6.3" + dependencies: + depd: ~1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: ">= 1.4.0 < 2" + checksum: a9654ee027e3d5de305a56db1d1461f25709ac23267c6dc28cdab8323e3f96caa58a9a6a5e93ac15d7285cee0c2f019378c3ada9026e7fe19c872d695f27de7c + languageName: node + linkType: hard + +"http-parser-js@npm:>=0.5.1": + version: 0.5.8 + resolution: "http-parser-js@npm:0.5.8" + checksum: 6bbdf2429858e8cf13c62375b0bfb6dc3955ca0f32e58237488bc86cd2378f31d31785fd3ac4ce93f1c74e0189cf8823c91f5cb061696214fd368d2452dc871d + languageName: node + linkType: hard + +"http-proxy-agent@npm:^7.0.0": + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" + dependencies: + agent-base: ^7.1.0 + debug: ^4.3.4 + checksum: 670858c8f8f3146db5889e1fa117630910101db601fff7d5a8aa637da0abedf68c899f03d3451cac2f83bcc4c3d2dabf339b3aa00ff8080571cceb02c3ce02f3 + languageName: node + linkType: hard + +"http-proxy-middleware@npm:^2.0.3": + version: 2.0.6 + resolution: "http-proxy-middleware@npm:2.0.6" + dependencies: + "@types/http-proxy": ^1.17.8 + http-proxy: ^1.18.1 + is-glob: ^4.0.1 + is-plain-obj: ^3.0.0 + micromatch: ^4.0.2 + peerDependencies: + "@types/express": ^4.17.13 + peerDependenciesMeta: + "@types/express": + optional: true + checksum: 2ee85bc878afa6cbf34491e972ece0f5be0a3e5c98a60850cf40d2a9a5356e1fc57aab6cff33c1fc37691b0121c3a42602d2b1956c52577e87a5b77b62ae1c3a + languageName: node + linkType: hard + +"http-proxy@npm:^1.18.1": + version: 1.18.1 + resolution: "http-proxy@npm:1.18.1" + dependencies: + eventemitter3: ^4.0.0 + follow-redirects: ^1.0.0 + requires-port: ^1.0.0 + checksum: f5bd96bf83e0b1e4226633dbb51f8b056c3e6321917df402deacec31dd7fe433914fc7a2c1831cf7ae21e69c90b3a669b8f434723e9e8b71fd68afe30737b6a5 + languageName: node + linkType: hard + +"http2-wrapper@npm:^2.1.10": + version: 2.2.1 + resolution: "http2-wrapper@npm:2.2.1" + dependencies: + quick-lru: ^5.1.1 + resolve-alpn: ^1.2.0 + checksum: e95e55e22c6fd61182ce81fecb9b7da3af680d479febe8ad870d05f7ebbc9f076e455193766f4e7934e50913bf1d8da3ba121fb5cd2928892390b58cf9d5c509 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^7.0.1": + version: 7.0.5 + resolution: "https-proxy-agent@npm:7.0.5" + dependencies: + agent-base: ^7.0.2 + debug: 4 + checksum: 2e1a28960f13b041a50702ee74f240add8e75146a5c37fc98f1960f0496710f6918b3a9fe1e5aba41e50f58e6df48d107edd9c405c5f0d73ac260dabf2210857 + languageName: node + linkType: hard + +"human-signals@npm:^2.1.0": + version: 2.1.0 + resolution: "human-signals@npm:2.1.0" + checksum: b87fd89fce72391625271454e70f67fe405277415b48bcc0117ca73d31fa23a4241787afdc8d67f5a116cf37258c052f59ea82daffa72364d61351423848e3b8 + languageName: node + linkType: hard + +"iconv-lite@npm:0.4.24": + version: 0.4.24 + resolution: "iconv-lite@npm:0.4.24" + dependencies: + safer-buffer: ">= 2.1.2 < 3" + checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 + languageName: node + linkType: hard + +"iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: ">= 2.1.2 < 3.0.0" + checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf + languageName: node + linkType: hard + +"icss-utils@npm:^5.0.0, icss-utils@npm:^5.1.0": + version: 5.1.0 + resolution: "icss-utils@npm:5.1.0" + peerDependencies: + postcss: ^8.1.0 + checksum: 5c324d283552b1269cfc13a503aaaa172a280f914e5b81544f3803bc6f06a3b585fb79f66f7c771a2c052db7982c18bf92d001e3b47282e3abbbb4c4cc488d68 + languageName: node + linkType: hard + +"ignore@npm:^5.2.0, ignore@npm:^5.2.4": + version: 5.3.1 + resolution: "ignore@npm:5.3.1" + checksum: 71d7bb4c1dbe020f915fd881108cbe85a0db3d636a0ea3ba911393c53946711d13a9b1143c7e70db06d571a5822c0a324a6bcde5c9904e7ca5047f01f1bf8cd3 + languageName: node + linkType: hard + +"image-size@npm:^1.0.2": + version: 1.1.1 + resolution: "image-size@npm:1.1.1" + dependencies: + queue: 6.0.2 + bin: + image-size: bin/image-size.js + checksum: 23b3a515dded89e7f967d52b885b430d6a5a903da954fce703130bfb6069d738d80e6588efd29acfaf5b6933424a56535aa7bf06867e4ebd0250c2ee51f19a4a + languageName: node + linkType: hard + +"immer@npm:^9.0.7": + version: 9.0.21 + resolution: "immer@npm:9.0.21" + checksum: 70e3c274165995352f6936695f0ef4723c52c92c92dd0e9afdfe008175af39fa28e76aafb3a2ca9d57d1fb8f796efc4dd1e1cc36f18d33fa5b74f3dfb0375432 + languageName: node + linkType: hard + +"import-fresh@npm:^3.1.0, import-fresh@npm:^3.3.0": + version: 3.3.0 + resolution: "import-fresh@npm:3.3.0" + dependencies: + parent-module: ^1.0.0 + resolve-from: ^4.0.0 + checksum: 2cacfad06e652b1edc50be650f7ec3be08c5e5a6f6d12d035c440a42a8cc028e60a5b99ca08a77ab4d6b1346da7d971915828f33cdab730d3d42f08242d09baa + languageName: node + linkType: hard + +"import-lazy@npm:^4.0.0": + version: 4.0.0 + resolution: "import-lazy@npm:4.0.0" + checksum: 22f5e51702134aef78890156738454f620e5fe7044b204ebc057c614888a1dd6fdf2ede0fdcca44d5c173fd64f65c985f19a51775b06967ef58cc3d26898df07 + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 + languageName: node + linkType: hard + +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 + languageName: node + linkType: hard + +"infima@npm:0.2.0-alpha.44": + version: 0.2.0-alpha.44 + resolution: "infima@npm:0.2.0-alpha.44" + checksum: e9871f4056c0c8b311fcd32e2864d23a8f6807af5ff32d3c4d8271ad9971b5a7ea5016787a6b215893bb3e9f5f14326816bc05151d576dd375b0d79279cdfa8b + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: ^1.3.0 + wrappy: 1 + checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:~2.0.3": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 + languageName: node + linkType: hard + +"inherits@npm:2.0.3": + version: 2.0.3 + resolution: "inherits@npm:2.0.3" + checksum: 78cb8d7d850d20a5e9a7f3620db31483aa00ad5f722ce03a55b110e5a723539b3716a3b463e2b96ce3fe286f33afc7c131fa2f91407528ba80cea98a7545d4c0 + languageName: node + linkType: hard + +"ini@npm:2.0.0": + version: 2.0.0 + resolution: "ini@npm:2.0.0" + checksum: e7aadc5fb2e4aefc666d74ee2160c073995a4061556b1b5b4241ecb19ad609243b9cceafe91bae49c219519394bbd31512516cb22a3b1ca6e66d869e0447e84e + languageName: node + linkType: hard + +"ini@npm:^1.3.4, ini@npm:^1.3.5, ini@npm:~1.3.0": + version: 1.3.8 + resolution: "ini@npm:1.3.8" + checksum: dfd98b0ca3a4fc1e323e38a6c8eb8936e31a97a918d3b377649ea15bdb15d481207a0dda1021efbd86b464cae29a0d33c1d7dcaf6c5672bee17fa849bc50a1b3 + languageName: node + linkType: hard + +"inline-style-parser@npm:0.1.1": + version: 0.1.1 + resolution: "inline-style-parser@npm:0.1.1" + checksum: 5d545056a3e1f2bf864c928a886a0e1656a3517127d36917b973de581bd54adc91b4bf1febcb0da054f204b4934763f1a4e09308b4d55002327cf1d48ac5d966 + languageName: node + linkType: hard + +"inline-style-parser@npm:0.2.3": + version: 0.2.3 + resolution: "inline-style-parser@npm:0.2.3" + checksum: ed6454de80759e7faef511f51b5716b33c40a6b05b8a8f5383dc01e8a087c6fd5df877446d05e8e3961ae0751e028e25e180f5cffc192a5ce7822edef6810ade + languageName: node + linkType: hard + +"interpret@npm:^1.0.0": + version: 1.4.0 + resolution: "interpret@npm:1.4.0" + checksum: 2e5f51268b5941e4a17e4ef0575bc91ed0ab5f8515e3cf77486f7c14d13f3010df9c0959f37063dcc96e78d12dc6b0bb1b9e111cdfe69771f4656d2993d36155 + languageName: node + linkType: hard + +"invariant@npm:^2.2.4": + version: 2.2.4 + resolution: "invariant@npm:2.2.4" + dependencies: + loose-envify: ^1.0.0 + checksum: cc3182d793aad82a8d1f0af697b462939cb46066ec48bbf1707c150ad5fad6406137e91a262022c269702e01621f35ef60269f6c0d7fd178487959809acdfb14 + languageName: node + linkType: hard + +"ip-address@npm:^9.0.5": + version: 9.0.5 + resolution: "ip-address@npm:9.0.5" + dependencies: + jsbn: 1.1.0 + sprintf-js: ^1.1.3 + checksum: aa15f12cfd0ef5e38349744e3654bae649a34c3b10c77a674a167e99925d1549486c5b14730eebce9fea26f6db9d5e42097b00aa4f9f612e68c79121c71652dc + languageName: node + linkType: hard + +"ipaddr.js@npm:1.9.1": + version: 1.9.1 + resolution: "ipaddr.js@npm:1.9.1" + checksum: f88d3825981486f5a1942414c8d77dd6674dd71c065adcfa46f578d677edcb99fda25af42675cb59db492fdf427b34a5abfcde3982da11a8fd83a500b41cfe77 + languageName: node + linkType: hard + +"ipaddr.js@npm:^2.0.1": + version: 2.2.0 + resolution: "ipaddr.js@npm:2.2.0" + checksum: 770ba8451fd9bf78015e8edac0d5abd7a708cbf75f9429ca9147a9d2f3a2d60767cd5de2aab2b1e13ca6e4445bdeff42bf12ef6f151c07a5c6cf8a44328e2859 + languageName: node + linkType: hard + +"is-alphabetical@npm:^2.0.0": + version: 2.0.1 + resolution: "is-alphabetical@npm:2.0.1" + checksum: 56207db8d9de0850f0cd30f4966bf731eb82cedfe496cbc2e97e7c3bacaf66fc54a972d2d08c0d93bb679cb84976a05d24c5ad63de56fabbfc60aadae312edaa + languageName: node + linkType: hard + +"is-alphanumerical@npm:^2.0.0": + version: 2.0.1 + resolution: "is-alphanumerical@npm:2.0.1" + dependencies: + is-alphabetical: ^2.0.0 + is-decimal: ^2.0.0 + checksum: 87acc068008d4c9c4e9f5bd5e251041d42e7a50995c77b1499cf6ed248f971aadeddb11f239cabf09f7975ee58cac7a48ffc170b7890076d8d227b24a68663c9 + languageName: node + linkType: hard + +"is-arrayish@npm:^0.2.1": + version: 0.2.1 + resolution: "is-arrayish@npm:0.2.1" + checksum: eef4417e3c10e60e2c810b6084942b3ead455af16c4509959a27e490e7aee87cfb3f38e01bbde92220b528a0ee1a18d52b787e1458ee86174d8c7f0e58cd488f + languageName: node + linkType: hard + +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: ^2.0.0 + checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c + languageName: node + linkType: hard + +"is-ci@npm:^3.0.1": + version: 3.0.1 + resolution: "is-ci@npm:3.0.1" + dependencies: + ci-info: ^3.2.0 + bin: + is-ci: bin.js + checksum: 192c66dc7826d58f803ecae624860dccf1899fc1f3ac5505284c0a5cf5f889046ffeb958fa651e5725d5705c5bcb14f055b79150ea5fcad7456a9569de60260e + languageName: node + linkType: hard + +"is-core-module@npm:^2.13.0": + version: 2.15.0 + resolution: "is-core-module@npm:2.15.0" + dependencies: + hasown: ^2.0.2 + checksum: a9f7a52707c9b59d7164094d183bda892514fc3ba3139f245219c7abe7f6e8d3e2cdcf861f52a891a467f785f1dfa5d549f73b0ee715f4ba56e8882d335ea585 + languageName: node + linkType: hard + +"is-decimal@npm:^2.0.0": + version: 2.0.1 + resolution: "is-decimal@npm:2.0.1" + checksum: 97132de7acdce77caa7b797632970a2ecd649a88e715db0e4dbc00ab0708b5e7574ba5903962c860cd4894a14fd12b100c0c4ac8aed445cf6f55c6cf747a4158 + languageName: node + linkType: hard + +"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": + version: 2.2.1 + resolution: "is-docker@npm:2.2.1" + bin: + is-docker: cli.js + checksum: 3fef7ddbf0be25958e8991ad941901bf5922ab2753c46980b60b05c1bf9c9c2402d35e6dc32e4380b980ef5e1970a5d9d5e5aa2e02d77727c3b6b5e918474c56 + languageName: node + linkType: hard + +"is-extendable@npm:^0.1.0": + version: 0.1.1 + resolution: "is-extendable@npm:0.1.1" + checksum: 3875571d20a7563772ecc7a5f36cb03167e9be31ad259041b4a8f73f33f885441f778cee1f1fe0085eb4bc71679b9d8c923690003a36a6a5fdf8023e6e3f0672 + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 + languageName: node + linkType: hard + +"is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: ^2.1.1 + checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 + languageName: node + linkType: hard + +"is-hexadecimal@npm:^2.0.0": + version: 2.0.1 + resolution: "is-hexadecimal@npm:2.0.1" + checksum: 66a2ea85994c622858f063f23eda506db29d92b52580709eb6f4c19550552d4dcf3fb81952e52f7cf972097237959e00adc7bb8c9400cd12886e15bf06145321 + languageName: node + linkType: hard + +"is-installed-globally@npm:^0.4.0": + version: 0.4.0 + resolution: "is-installed-globally@npm:0.4.0" + dependencies: + global-dirs: ^3.0.0 + is-path-inside: ^3.0.2 + checksum: 3359840d5982d22e9b350034237b2cda2a12bac1b48a721912e1ab8e0631dd07d45a2797a120b7b87552759a65ba03e819f1bd63f2d7ab8657ec0b44ee0bf399 + languageName: node + linkType: hard + +"is-lambda@npm:^1.0.1": + version: 1.0.1 + resolution: "is-lambda@npm:1.0.1" + checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 + languageName: node + linkType: hard + +"is-npm@npm:^6.0.0": + version: 6.0.0 + resolution: "is-npm@npm:6.0.0" + checksum: fafe1ddc772345f5460514891bb8014376904ccdbddd59eee7525c9adcc08d426933f28b087bef3e17524da7ebf35c03ef484ff3b6ba9d5fecd8c6e6a7d4bf11 + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a + languageName: node + linkType: hard + +"is-obj@npm:^1.0.1": + version: 1.0.1 + resolution: "is-obj@npm:1.0.1" + checksum: 3ccf0efdea12951e0b9c784e2b00e77e87b2f8bd30b42a498548a8afcc11b3287342a2030c308e473e93a7a19c9ea7854c99a8832a476591c727df2a9c79796c + languageName: node + linkType: hard + +"is-obj@npm:^2.0.0": + version: 2.0.0 + resolution: "is-obj@npm:2.0.0" + checksum: c9916ac8f4621962a42f5e80e7ffdb1d79a3fab7456ceaeea394cd9e0858d04f985a9ace45be44433bf605673c8be8810540fe4cc7f4266fc7526ced95af5a08 + languageName: node + linkType: hard + +"is-path-cwd@npm:^2.2.0": + version: 2.2.0 + resolution: "is-path-cwd@npm:2.2.0" + checksum: 46a840921bb8cc0dc7b5b423a14220e7db338072a4495743a8230533ce78812dc152548c86f4b828411fe98c5451959f07cf841c6a19f611e46600bd699e8048 + languageName: node + linkType: hard + +"is-path-inside@npm:^3.0.2": + version: 3.0.3 + resolution: "is-path-inside@npm:3.0.3" + checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 + languageName: node + linkType: hard + +"is-plain-obj@npm:^3.0.0": + version: 3.0.0 + resolution: "is-plain-obj@npm:3.0.0" + checksum: a6ebdf8e12ab73f33530641972a72a4b8aed6df04f762070d823808303e4f76d87d5ea5bd76f96a7bbe83d93f04ac7764429c29413bd9049853a69cb630fb21c + languageName: node + linkType: hard + +"is-plain-obj@npm:^4.0.0": + version: 4.1.0 + resolution: "is-plain-obj@npm:4.1.0" + checksum: 6dc45da70d04a81f35c9310971e78a6a3c7a63547ef782e3a07ee3674695081b6ca4e977fbb8efc48dae3375e0b34558d2bcd722aec9bddfa2d7db5b041be8ce + languageName: node + linkType: hard + +"is-plain-object@npm:^2.0.4": + version: 2.0.4 + resolution: "is-plain-object@npm:2.0.4" + dependencies: + isobject: ^3.0.1 + checksum: 2a401140cfd86cabe25214956ae2cfee6fbd8186809555cd0e84574f88de7b17abacb2e477a6a658fa54c6083ecbda1e6ae404c7720244cd198903848fca70ca + languageName: node + linkType: hard + +"is-reference@npm:^3.0.0": + version: 3.0.2 + resolution: "is-reference@npm:3.0.2" + dependencies: + "@types/estree": "*" + checksum: ac3bf5626fe9d0afbd7454760d73c47f16b9f471401b9749721ad3b66f0a39644390382acf88ca9d029c95782c1e2ec65662855e3ba91acf52d82231247a7fd3 + languageName: node + linkType: hard + +"is-regexp@npm:^1.0.0": + version: 1.0.0 + resolution: "is-regexp@npm:1.0.0" + checksum: be692828e24cba479ec33644326fa98959ec68ba77965e0291088c1a741feaea4919d79f8031708f85fd25e39de002b4520622b55460660b9c369e6f7187faef + languageName: node + linkType: hard + +"is-root@npm:^2.1.0": + version: 2.1.0 + resolution: "is-root@npm:2.1.0" + checksum: 37eea0822a2a9123feb58a9d101558ba276771a6d830f87005683349a9acff15958a9ca590a44e778c6b335660b83e85c744789080d734f6081a935a4880aee2 + languageName: node + linkType: hard + +"is-stream@npm:^2.0.0": + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 + languageName: node + linkType: hard + +"is-typedarray@npm:^1.0.0": + version: 1.0.0 + resolution: "is-typedarray@npm:1.0.0" + checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 + languageName: node + linkType: hard + +"is-wsl@npm:^2.2.0": + version: 2.2.0 + resolution: "is-wsl@npm:2.2.0" + dependencies: + is-docker: ^2.0.0 + checksum: 20849846ae414997d290b75e16868e5261e86ff5047f104027026fd61d8b5a9b0b3ade16239f35e1a067b3c7cc02f70183cb661010ed16f4b6c7c93dad1b19d8 + languageName: node + linkType: hard + +"is-yarn-global@npm:^0.4.0": + version: 0.4.1 + resolution: "is-yarn-global@npm:0.4.1" + checksum: 79ec4e6f581c53d4fefdf5f6c237f9a3ad8db29c85cdc4659e76ae345659317552052a97b7e56952aa5d94a23c798ebec8ccad72fb14d3b26dc647ddceddd716 + languageName: node + linkType: hard + +"isarray@npm:0.0.1": + version: 0.0.1 + resolution: "isarray@npm:0.0.1" + checksum: 49191f1425681df4a18c2f0f93db3adb85573bcdd6a4482539d98eac9e705d8961317b01175627e860516a2fc45f8f9302db26e5a380a97a520e272e2a40a8d4 + languageName: node + linkType: hard + +"isarray@npm:~1.0.0": + version: 1.0.0 + resolution: "isarray@npm:1.0.0" + checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 + languageName: node + linkType: hard + +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 7fe1931ee4e88eb5aa524cd3ceb8c882537bc3a81b02e438b240e47012eef49c86904d0f0e593ea7c3a9996d18d0f1f3be8d3eaa92333977b0c3a9d353d5563e + languageName: node + linkType: hard + +"isobject@npm:^3.0.1": + version: 3.0.1 + resolution: "isobject@npm:3.0.1" + checksum: db85c4c970ce30693676487cca0e61da2ca34e8d4967c2e1309143ff910c207133a969f9e4ddb2dc6aba670aabce4e0e307146c310350b298e74a31f7d464703 + languageName: node + linkType: hard + +"jackspeak@npm:^3.1.2": + version: 3.4.3 + resolution: "jackspeak@npm:3.4.3" + dependencies: + "@isaacs/cliui": ^8.0.2 + "@pkgjs/parseargs": ^0.11.0 + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: be31027fc72e7cc726206b9f560395604b82e0fddb46c4cbf9f97d049bcef607491a5afc0699612eaa4213ca5be8fd3e1e7cd187b3040988b65c9489838a7c00 + languageName: node + linkType: hard + +"jest-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-util@npm:29.7.0" + dependencies: + "@jest/types": ^29.6.3 + "@types/node": "*" + chalk: ^4.0.0 + ci-info: ^3.2.0 + graceful-fs: ^4.2.9 + picomatch: ^2.2.3 + checksum: 042ab4980f4ccd4d50226e01e5c7376a8556b472442ca6091a8f102488c0f22e6e8b89ea874111d2328a2080083bf3225c86f3788c52af0bd0345a00eb57a3ca + languageName: node + linkType: hard + +"jest-worker@npm:^27.4.5": + version: 27.5.1 + resolution: "jest-worker@npm:27.5.1" + dependencies: + "@types/node": "*" + merge-stream: ^2.0.0 + supports-color: ^8.0.0 + checksum: 98cd68b696781caed61c983a3ee30bf880b5bd021c01d98f47b143d4362b85d0737f8523761e2713d45e18b4f9a2b98af1eaee77afade4111bb65c77d6f7c980 + languageName: node + linkType: hard + +"jest-worker@npm:^29.4.3": + version: 29.7.0 + resolution: "jest-worker@npm:29.7.0" + dependencies: + "@types/node": "*" + jest-util: ^29.7.0 + merge-stream: ^2.0.0 + supports-color: ^8.0.0 + checksum: 30fff60af49675273644d408b650fc2eb4b5dcafc5a0a455f238322a8f9d8a98d847baca9d51ff197b6747f54c7901daa2287799230b856a0f48287d131f8c13 + languageName: node + linkType: hard + +"jiti@npm:^1.20.0": + version: 1.21.6 + resolution: "jiti@npm:1.21.6" + bin: + jiti: bin/jiti.js + checksum: 9ea4a70a7bb950794824683ed1c632e2ede26949fbd348e2ba5ec8dc5efa54dc42022d85ae229cadaa60d4b95012e80ea07d625797199b688cc22ab0e8891d32 + languageName: node + linkType: hard + +"joi@npm:^17.9.2": + version: 17.13.3 + resolution: "joi@npm:17.13.3" + dependencies: + "@hapi/hoek": ^9.3.0 + "@hapi/topo": ^5.1.0 + "@sideway/address": ^4.1.5 + "@sideway/formula": ^3.0.1 + "@sideway/pinpoint": ^2.0.0 + checksum: 66ed454fee3d8e8da1ce21657fd2c7d565d98f3e539d2c5c028767e5f38cbd6297ce54df8312d1d094e62eb38f9452ebb43da4ce87321df66cf5e3f128cbc400 + languageName: node + linkType: hard + +"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 + languageName: node + linkType: hard + +"js-yaml@npm:^3.13.1": + version: 3.14.1 + resolution: "js-yaml@npm:3.14.1" + dependencies: + argparse: ^1.0.7 + esprima: ^4.0.0 + bin: + js-yaml: bin/js-yaml.js + checksum: bef146085f472d44dee30ec34e5cf36bf89164f5d585435a3d3da89e52622dff0b188a580e4ad091c3341889e14cb88cac6e4deb16dc5b1e9623bb0601fc255c + languageName: node + linkType: hard + +"js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" + dependencies: + argparse: ^2.0.1 + bin: + js-yaml: bin/js-yaml.js + checksum: c7830dfd456c3ef2c6e355cc5a92e6700ceafa1d14bba54497b34a99f0376cecbb3e9ac14d3e5849b426d5a5140709a66237a8c991c675431271c4ce5504151a + languageName: node + linkType: hard + +"jsbn@npm:1.1.0": + version: 1.1.0 + resolution: "jsbn@npm:1.1.0" + checksum: 944f924f2bd67ad533b3850eee47603eed0f6ae425fd1ee8c760f477e8c34a05f144c1bd4f5a5dd1963141dc79a2c55f89ccc5ab77d039e7077f3ad196b64965 + languageName: node + linkType: hard + +"jsesc@npm:^2.5.1": + version: 2.5.2 + resolution: "jsesc@npm:2.5.2" + bin: + jsesc: bin/jsesc + checksum: 4dc190771129e12023f729ce20e1e0bfceac84d73a85bc3119f7f938843fe25a4aeccb54b6494dce26fcf263d815f5f31acdefac7cc9329efb8422a4f4d9fa9d + languageName: node + linkType: hard + +"jsesc@npm:~0.5.0": + version: 0.5.0 + resolution: "jsesc@npm:0.5.0" + bin: + jsesc: bin/jsesc + checksum: b8b44cbfc92f198ad972fba706ee6a1dfa7485321ee8c0b25f5cedd538dcb20cde3197de16a7265430fce8277a12db066219369e3d51055038946039f6e20e17 + languageName: node + linkType: hard + +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 + languageName: node + linkType: hard + +"json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": + version: 2.3.1 + resolution: "json-parse-even-better-errors@npm:2.3.1" + checksum: 798ed4cf3354a2d9ccd78e86d2169515a0097a5c133337807cdf7f1fc32e1391d207ccfc276518cc1d7d8d4db93288b8a50ba4293d212ad1336e52a8ec0a941f + languageName: node + linkType: hard + +"json-schema-traverse@npm:^0.4.1": + version: 0.4.1 + resolution: "json-schema-traverse@npm:0.4.1" + checksum: 7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b + languageName: node + linkType: hard + +"json-schema-traverse@npm:^1.0.0": + version: 1.0.0 + resolution: "json-schema-traverse@npm:1.0.0" + checksum: 02f2f466cdb0362558b2f1fd5e15cce82ef55d60cd7f8fa828cf35ba74330f8d767fcae5c5c2adb7851fa811766c694b9405810879bc4e1ddd78a7c0e03658ad + languageName: node + linkType: hard + +"json5@npm:^2.1.2, json5@npm:^2.2.3": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 2a7436a93393830bce797d4626275152e37e877b265e94ca69c99e3d20c2b9dab021279146a39cdb700e71b2dd32a4cebd1514cd57cee102b1af906ce5040349 + languageName: node + linkType: hard + +"jsonfile@npm:^6.0.1": + version: 6.1.0 + resolution: "jsonfile@npm:6.1.0" + dependencies: + graceful-fs: ^4.1.6 + universalify: ^2.0.0 + dependenciesMeta: + graceful-fs: + optional: true + checksum: 7af3b8e1ac8fe7f1eccc6263c6ca14e1966fcbc74b618d3c78a0a2075579487547b94f72b7a1114e844a1e15bb00d440e5d1720bfc4612d790a6f285d5ea8354 + languageName: node + linkType: hard + +"keyv@npm:^4.5.3": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" + dependencies: + json-buffer: 3.0.1 + checksum: 74a24395b1c34bd44ad5cb2b49140d087553e170625240b86755a6604cd65aa16efdbdeae5cdb17ba1284a0fbb25ad06263755dbc71b8d8b06f74232ce3cdd72 + languageName: node + linkType: hard + +"kind-of@npm:^6.0.0, kind-of@npm:^6.0.2": + version: 6.0.3 + resolution: "kind-of@npm:6.0.3" + checksum: 3ab01e7b1d440b22fe4c31f23d8d38b4d9b91d9f291df683476576493d5dfd2e03848a8b05813dd0c3f0e835bc63f433007ddeceb71f05cb25c45ae1b19c6d3b + languageName: node + linkType: hard + +"kleur@npm:^3.0.3": + version: 3.0.3 + resolution: "kleur@npm:3.0.3" + checksum: df82cd1e172f957bae9c536286265a5cdbd5eeca487cb0a3b2a7b41ef959fc61f8e7c0e9aeea9c114ccf2c166b6a8dd45a46fd619c1c569d210ecd2765ad5169 + languageName: node + linkType: hard + +"latest-version@npm:^7.0.0": + version: 7.0.0 + resolution: "latest-version@npm:7.0.0" + dependencies: + package-json: ^8.1.0 + checksum: 1f0deba00d5a34394cce4463c938811f51bbb539b131674f4bb2062c63f2cc3b80bccd56ecade3bd5932d04a34cf0a5a8a2ccc4ec9e5e6b285a9a7b3e27d0d66 + languageName: node + linkType: hard + +"launch-editor@npm:^2.6.0": + version: 2.8.1 + resolution: "launch-editor@npm:2.8.1" + dependencies: + picocolors: ^1.0.0 + shell-quote: ^1.8.1 + checksum: 69adfc913c066b0bcd685103907525789db6af3585cdc5f8c1172f0fcebe2c4ea1cff1108f76e9c591c00134329a5fb29e5911e9c0c347618a5300978b6bb767 + languageName: node + linkType: hard + +"leven@npm:^3.1.0": + version: 3.1.0 + resolution: "leven@npm:3.1.0" + checksum: 638401d534585261b6003db9d99afd244dfe82d75ddb6db5c0df412842d5ab30b2ef18de471aaec70fe69a46f17b4ae3c7f01d8a4e6580ef7adb9f4273ad1e55 + languageName: node + linkType: hard + +"lilconfig@npm:^3.1.1": + version: 3.1.2 + resolution: "lilconfig@npm:3.1.2" + checksum: 4e8b83ddd1d0ad722600994e6ba5d858ddca14f0587aa6b9c8185e17548149b5e13d4d583d811e9e9323157fa8c6a527e827739794c7502b59243c58e210b8c3 + languageName: node + linkType: hard + +"lines-and-columns@npm:^1.1.6": + version: 1.2.4 + resolution: "lines-and-columns@npm:1.2.4" + checksum: 0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5 + languageName: node + linkType: hard + +"loader-runner@npm:^4.2.0": + version: 4.3.0 + resolution: "loader-runner@npm:4.3.0" + checksum: a90e00dee9a16be118ea43fec3192d0b491fe03a32ed48a4132eb61d498f5536a03a1315531c19d284392a8726a4ecad71d82044c28d7f22ef62e029bf761569 + languageName: node + linkType: hard + +"loader-utils@npm:^2.0.0": + version: 2.0.4 + resolution: "loader-utils@npm:2.0.4" + dependencies: + big.js: ^5.2.2 + emojis-list: ^3.0.0 + json5: ^2.1.2 + checksum: a5281f5fff1eaa310ad5e1164095689443630f3411e927f95031ab4fb83b4a98f388185bb1fe949e8ab8d4247004336a625e9255c22122b815bb9a4c5d8fc3b7 + languageName: node + linkType: hard + +"loader-utils@npm:^3.2.0": + version: 3.3.1 + resolution: "loader-utils@npm:3.3.1" + checksum: d35808e081635e5bc50228a52ed79f83e2c82bd8f7578818c12b1b4cf0b7f409d72d9b93a683ec36b9eaa93346693d3f3c8380183ba2ff81599b0829d685de39 + languageName: node + linkType: hard + +"locate-path@npm:^3.0.0": + version: 3.0.0 + resolution: "locate-path@npm:3.0.0" + dependencies: + p-locate: ^3.0.0 + path-exists: ^3.0.0 + checksum: 53db3996672f21f8b0bf2a2c645ae2c13ffdae1eeecfcd399a583bce8516c0b88dcb4222ca6efbbbeb6949df7e46860895be2c02e8d3219abd373ace3bfb4e11 + languageName: node + linkType: hard + +"locate-path@npm:^6.0.0": + version: 6.0.0 + resolution: "locate-path@npm:6.0.0" + dependencies: + p-locate: ^5.0.0 + checksum: 72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a + languageName: node + linkType: hard + +"locate-path@npm:^7.1.0": + version: 7.2.0 + resolution: "locate-path@npm:7.2.0" + dependencies: + p-locate: ^6.0.0 + checksum: c1b653bdf29beaecb3d307dfb7c44d98a2a98a02ebe353c9ad055d1ac45d6ed4e1142563d222df9b9efebc2bcb7d4c792b507fad9e7150a04c29530b7db570f8 + languageName: node + linkType: hard + +"lodash.debounce@npm:^4.0.8": + version: 4.0.8 + resolution: "lodash.debounce@npm:4.0.8" + checksum: a3f527d22c548f43ae31c861ada88b2637eb48ac6aa3eb56e82d44917971b8aa96fbb37aa60efea674dc4ee8c42074f90f7b1f772e9db375435f6c83a19b3bc6 + languageName: node + linkType: hard + +"lodash.memoize@npm:^4.1.2": + version: 4.1.2 + resolution: "lodash.memoize@npm:4.1.2" + checksum: 9ff3942feeccffa4f1fafa88d32f0d24fdc62fd15ded5a74a5f950ff5f0c6f61916157246744c620173dddf38d37095a92327d5fd3861e2063e736a5c207d089 + languageName: node + linkType: hard + +"lodash.uniq@npm:^4.5.0": + version: 4.5.0 + resolution: "lodash.uniq@npm:4.5.0" + checksum: a4779b57a8d0f3c441af13d9afe7ecff22dd1b8ce1129849f71d9bbc8e8ee4e46dfb4b7c28f7ad3d67481edd6e51126e4e2a6ee276e25906d10f7140187c392d + languageName: node + linkType: hard + +"lodash@npm:^4.17.20, lodash@npm:^4.17.21": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 + languageName: node + linkType: hard + +"longest-streak@npm:^3.0.0": + version: 3.1.0 + resolution: "longest-streak@npm:3.1.0" + checksum: d7f952ed004cbdb5c8bcfc4f7f5c3d65449e6c5a9e9be4505a656e3df5a57ee125f284286b4bf8ecea0c21a7b3bf2b8f9001ad506c319b9815ad6a63a47d0fd0 + languageName: node + linkType: hard + +"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.2.0, loose-envify@npm:^1.3.1, loose-envify@npm:^1.4.0": + version: 1.4.0 + resolution: "loose-envify@npm:1.4.0" + dependencies: + js-tokens: ^3.0.0 || ^4.0.0 + bin: + loose-envify: cli.js + checksum: 6517e24e0cad87ec9888f500c5b5947032cdfe6ef65e1c1936a0c48a524b81e65542c9c3edc91c97d5bddc806ee2a985dbc79be89215d613b1de5db6d1cfe6f4 + languageName: node + linkType: hard + +"lower-case@npm:^2.0.2": + version: 2.0.2 + resolution: "lower-case@npm:2.0.2" + dependencies: + tslib: ^2.0.3 + checksum: 83a0a5f159ad7614bee8bf976b96275f3954335a84fad2696927f609ddae902802c4f3312d86668722e668bef41400254807e1d3a7f2e8c3eede79691aa1f010 + languageName: node + linkType: hard + +"lowercase-keys@npm:^3.0.0": + version: 3.0.0 + resolution: "lowercase-keys@npm:3.0.0" + checksum: 67a3f81409af969bc0c4ca0e76cd7d16adb1e25aa1c197229587eaf8671275c8c067cd421795dbca4c81be0098e4c426a086a05e30de8a9c587b7a13c0c7ccc5 + languageName: node + linkType: hard + +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": + version: 10.4.3 + resolution: "lru-cache@npm:10.4.3" + checksum: 6476138d2125387a6d20f100608c2583d415a4f64a0fecf30c9e2dda976614f09cad4baa0842447bd37dd459a7bd27f57d9d8f8ce558805abd487c583f3d774a + languageName: node + linkType: hard + +"lru-cache@npm:^5.1.1": + version: 5.1.1 + resolution: "lru-cache@npm:5.1.1" + dependencies: + yallist: ^3.0.2 + checksum: c154ae1cbb0c2206d1501a0e94df349653c92c8cbb25236d7e85190bcaf4567a03ac6eb43166fabfa36fd35623694da7233e88d9601fbf411a9a481d85dbd2cb + languageName: node + linkType: hard + +"make-fetch-happen@npm:^13.0.0": + version: 13.0.1 + resolution: "make-fetch-happen@npm:13.0.1" + dependencies: + "@npmcli/agent": ^2.0.0 + cacache: ^18.0.0 + http-cache-semantics: ^4.1.1 + is-lambda: ^1.0.1 + minipass: ^7.0.2 + minipass-fetch: ^3.0.0 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.4 + negotiator: ^0.6.3 + proc-log: ^4.2.0 + promise-retry: ^2.0.1 + ssri: ^10.0.0 + checksum: 5c9fad695579b79488fa100da05777213dd9365222f85e4757630f8dd2a21a79ddd3206c78cfd6f9b37346819681782b67900ac847a57cf04190f52dda5343fd + languageName: node + linkType: hard + +"markdown-extensions@npm:^2.0.0": + version: 2.0.0 + resolution: "markdown-extensions@npm:2.0.0" + checksum: ec4ffcb0768f112e778e7ac74cb8ef22a966c168c3e6c29829f007f015b0a0b5c79c73ee8599a0c72e440e7f5cfdbf19e80e2d77b9a313b8f66e180a330cf1b2 + languageName: node + linkType: hard + +"markdown-table@npm:^3.0.0": + version: 3.0.3 + resolution: "markdown-table@npm:3.0.3" + checksum: 8fcd3d9018311120fbb97115987f8b1665a603f3134c93fbecc5d1463380c8036f789e2a62c19432058829e594fff8db9ff81c88f83690b2f8ed6c074f8d9e10 + languageName: node + linkType: hard + +"mdast-util-directive@npm:^3.0.0": + version: 3.0.0 + resolution: "mdast-util-directive@npm:3.0.0" + dependencies: + "@types/mdast": ^4.0.0 + "@types/unist": ^3.0.0 + devlop: ^1.0.0 + mdast-util-from-markdown: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 + parse-entities: ^4.0.0 + stringify-entities: ^4.0.0 + unist-util-visit-parents: ^6.0.0 + checksum: 593afdc4f39f99bb198f3774bf4648cb546cb99a055e40c82262a7faab10926d2529a725d0d3945300ed0a1f07c6c84215a3f76b899a89b3f410ec7375bbab17 + languageName: node + linkType: hard + +"mdast-util-find-and-replace@npm:^3.0.0, mdast-util-find-and-replace@npm:^3.0.1": + version: 3.0.1 + resolution: "mdast-util-find-and-replace@npm:3.0.1" + dependencies: + "@types/mdast": ^4.0.0 + escape-string-regexp: ^5.0.0 + unist-util-is: ^6.0.0 + unist-util-visit-parents: ^6.0.0 + checksum: 05d5c4ff02e31db2f8a685a13bcb6c3f44e040bd9dfa54c19a232af8de5268334c8755d79cb456ed4cced1300c4fb83e88444c7ae8ee9ff16869a580f29d08cd + languageName: node + linkType: hard + +"mdast-util-from-markdown@npm:^2.0.0": + version: 2.0.1 + resolution: "mdast-util-from-markdown@npm:2.0.1" + dependencies: + "@types/mdast": ^4.0.0 + "@types/unist": ^3.0.0 + decode-named-character-reference: ^1.0.0 + devlop: ^1.0.0 + mdast-util-to-string: ^4.0.0 + micromark: ^4.0.0 + micromark-util-decode-numeric-character-reference: ^2.0.0 + micromark-util-decode-string: ^2.0.0 + micromark-util-normalize-identifier: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + unist-util-stringify-position: ^4.0.0 + checksum: 2e50be71272a1503558c599cd5766cf2743935a021f82e32bc2ae5da44f6c7dcabb9da3a6eee76ede0ec8ad2b122d1192f4fe89890aac90c76463f049f8a835d + languageName: node + linkType: hard + +"mdast-util-frontmatter@npm:^2.0.0": + version: 2.0.1 + resolution: "mdast-util-frontmatter@npm:2.0.1" + dependencies: + "@types/mdast": ^4.0.0 + devlop: ^1.0.0 + escape-string-regexp: ^5.0.0 + mdast-util-from-markdown: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 + micromark-extension-frontmatter: ^2.0.0 + checksum: 86a7c8d9eb183be2621d6d9134b9d33df2a3647e3255f68a9796e2425e25643ffae00a501e36c57d9c10973087b94aa5a2ffd865d33cdd274cc9b88cd2d90a2e + languageName: node + linkType: hard + +"mdast-util-gfm-autolink-literal@npm:^2.0.0": + version: 2.0.0 + resolution: "mdast-util-gfm-autolink-literal@npm:2.0.0" + dependencies: + "@types/mdast": ^4.0.0 + ccount: ^2.0.0 + devlop: ^1.0.0 + mdast-util-find-and-replace: ^3.0.0 + micromark-util-character: ^2.0.0 + checksum: 10322662e5302964bed7c9829c5fd3b0c9899d4f03e63fb8620ab141cf4f3de9e61fcb4b44d46aacc8a23f82bcd5d900980a211825dfe026b1dab5fdbc3e8742 + languageName: node + linkType: hard + +"mdast-util-gfm-footnote@npm:^2.0.0": + version: 2.0.0 + resolution: "mdast-util-gfm-footnote@npm:2.0.0" + dependencies: + "@types/mdast": ^4.0.0 + devlop: ^1.1.0 + mdast-util-from-markdown: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 + micromark-util-normalize-identifier: ^2.0.0 + checksum: 45d26b40e7a093712e023105791129d76e164e2168d5268e113298a22de30c018162683fb7893cdc04ab246dac0087eed708b2a136d1d18ed2b32b3e0cae4a79 + languageName: node + linkType: hard + +"mdast-util-gfm-strikethrough@npm:^2.0.0": + version: 2.0.0 + resolution: "mdast-util-gfm-strikethrough@npm:2.0.0" + dependencies: + "@types/mdast": ^4.0.0 + mdast-util-from-markdown: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 + checksum: fe9b1d0eba9b791ff9001c008744eafe3dd7a81b085f2bf521595ce4a8e8b1b44764ad9361761ad4533af3e5d913d8ad053abec38172031d9ee32a8ebd1c7dbd + languageName: node + linkType: hard + +"mdast-util-gfm-table@npm:^2.0.0": + version: 2.0.0 + resolution: "mdast-util-gfm-table@npm:2.0.0" + dependencies: + "@types/mdast": ^4.0.0 + devlop: ^1.0.0 + markdown-table: ^3.0.0 + mdast-util-from-markdown: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 + checksum: 063a627fd0993548fd63ca0c24c437baf91ba7d51d0a38820bd459bc20bf3d13d7365ef8d28dca99176dd5eb26058f7dde51190479c186dfe6af2e11202957c9 + languageName: node + linkType: hard + +"mdast-util-gfm-task-list-item@npm:^2.0.0": + version: 2.0.0 + resolution: "mdast-util-gfm-task-list-item@npm:2.0.0" + dependencies: + "@types/mdast": ^4.0.0 + devlop: ^1.0.0 + mdast-util-from-markdown: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 + checksum: 37db90c59b15330fc54d790404abf5ef9f2f83e8961c53666fe7de4aab8dd5e6b3c296b6be19797456711a89a27840291d8871ff0438e9b4e15c89d170efe072 + languageName: node + linkType: hard + +"mdast-util-gfm@npm:^3.0.0": + version: 3.0.0 + resolution: "mdast-util-gfm@npm:3.0.0" + dependencies: + mdast-util-from-markdown: ^2.0.0 + mdast-util-gfm-autolink-literal: ^2.0.0 + mdast-util-gfm-footnote: ^2.0.0 + mdast-util-gfm-strikethrough: ^2.0.0 + mdast-util-gfm-table: ^2.0.0 + mdast-util-gfm-task-list-item: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 + checksum: 62039d2f682ae3821ea1c999454863d31faf94d67eb9b746589c7e136076d7fb35fabc67e02f025c7c26fd7919331a0ee1aabfae24f565d9a6a9ebab3371c626 + languageName: node + linkType: hard + +"mdast-util-mdx-expression@npm:^2.0.0": + version: 2.0.0 + resolution: "mdast-util-mdx-expression@npm:2.0.0" + dependencies: + "@types/estree-jsx": ^1.0.0 + "@types/hast": ^3.0.0 + "@types/mdast": ^4.0.0 + devlop: ^1.0.0 + mdast-util-from-markdown: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 + checksum: 4e1183000e183e07a7264e192889b4fd57372806103031c71b9318967f85fd50a5dd0f92ef14f42c331e77410808f5de3341d7bc8ad4ee91b7fa8f0a30043a8a + languageName: node + linkType: hard + +"mdast-util-mdx-jsx@npm:^3.0.0": + version: 3.1.2 + resolution: "mdast-util-mdx-jsx@npm:3.1.2" + dependencies: + "@types/estree-jsx": ^1.0.0 + "@types/hast": ^3.0.0 + "@types/mdast": ^4.0.0 + "@types/unist": ^3.0.0 + ccount: ^2.0.0 + devlop: ^1.1.0 + mdast-util-from-markdown: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 + parse-entities: ^4.0.0 + stringify-entities: ^4.0.0 + unist-util-remove-position: ^5.0.0 + unist-util-stringify-position: ^4.0.0 + vfile-message: ^4.0.0 + checksum: 33cb8a657702d5bb8d3f658d158f448c45147664cdb2475501a1c467e3a167d75842546296a06f758f07cce4d2a6ba1add405dbdb6caa145a6980c9782e411e2 + languageName: node + linkType: hard + +"mdast-util-mdx@npm:^3.0.0": + version: 3.0.0 + resolution: "mdast-util-mdx@npm:3.0.0" + dependencies: + mdast-util-from-markdown: ^2.0.0 + mdast-util-mdx-expression: ^2.0.0 + mdast-util-mdx-jsx: ^3.0.0 + mdast-util-mdxjs-esm: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 + checksum: e2b007d826fcd49fd57ed03e190753c8b0f7d9eff6c7cb26ba609cde15cd3a472c0cd5e4a1ee3e39a40f14be22fdb57de243e093cea0c064d6f3366cff3e3af2 + languageName: node + linkType: hard + +"mdast-util-mdxjs-esm@npm:^2.0.0": + version: 2.0.1 + resolution: "mdast-util-mdxjs-esm@npm:2.0.1" + dependencies: + "@types/estree-jsx": ^1.0.0 + "@types/hast": ^3.0.0 + "@types/mdast": ^4.0.0 + devlop: ^1.0.0 + mdast-util-from-markdown: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 + checksum: 1f9dad04d31d59005332e9157ea9510dc1d03092aadbc607a10475c7eec1c158b475aa0601a3a4f74e13097ca735deb8c2d9d37928ddef25d3029fd7c9e14dc3 + languageName: node + linkType: hard + +"mdast-util-phrasing@npm:^4.0.0": + version: 4.1.0 + resolution: "mdast-util-phrasing@npm:4.1.0" + dependencies: + "@types/mdast": ^4.0.0 + unist-util-is: ^6.0.0 + checksum: 3a97533e8ad104a422f8bebb34b3dde4f17167b8ed3a721cf9263c7416bd3447d2364e6d012a594aada40cac9e949db28a060bb71a982231693609034ed5324e + languageName: node + linkType: hard + +"mdast-util-to-hast@npm:^13.0.0": + version: 13.2.0 + resolution: "mdast-util-to-hast@npm:13.2.0" + dependencies: + "@types/hast": ^3.0.0 + "@types/mdast": ^4.0.0 + "@ungap/structured-clone": ^1.0.0 + devlop: ^1.0.0 + micromark-util-sanitize-uri: ^2.0.0 + trim-lines: ^3.0.0 + unist-util-position: ^5.0.0 + unist-util-visit: ^5.0.0 + vfile: ^6.0.0 + checksum: 7e5231ff3d4e35e1421908437577fd5098141f64918ff5cc8a0f7a8a76c5407f7a3ee88d75f7a1f7afb763989c9f357475fa0ba8296c00aaff1e940098fe86a6 + languageName: node + linkType: hard + +"mdast-util-to-markdown@npm:^2.0.0": + version: 2.1.0 + resolution: "mdast-util-to-markdown@npm:2.1.0" + dependencies: + "@types/mdast": ^4.0.0 + "@types/unist": ^3.0.0 + longest-streak: ^3.0.0 + mdast-util-phrasing: ^4.0.0 + mdast-util-to-string: ^4.0.0 + micromark-util-decode-string: ^2.0.0 + unist-util-visit: ^5.0.0 + zwitch: ^2.0.0 + checksum: 3a2cf3957e23b34e2e092e6e76ae72ee0b8745955bd811baba6814cf3a3d916c3fd52264b4b58f3bb3d512a428f84a1e998b6fc7e28434e388a9ae8fb6a9c173 + languageName: node + linkType: hard + +"mdast-util-to-string@npm:^4.0.0": + version: 4.0.0 + resolution: "mdast-util-to-string@npm:4.0.0" + dependencies: + "@types/mdast": ^4.0.0 + checksum: 35489fb5710d58cbc2d6c8b6547df161a3f81e0f28f320dfb3548a9393555daf07c310c0c497708e67ed4dfea4a06e5655799e7d631ca91420c288b4525d6c29 + languageName: node + linkType: hard + +"mdn-data@npm:2.0.28": + version: 2.0.28 + resolution: "mdn-data@npm:2.0.28" + checksum: f51d587a6ebe8e426c3376c74ea6df3e19ec8241ed8e2466c9c8a3904d5d04397199ea4f15b8d34d14524b5de926d8724ae85207984be47e165817c26e49e0aa + languageName: node + linkType: hard + +"mdn-data@npm:2.0.30": + version: 2.0.30 + resolution: "mdn-data@npm:2.0.30" + checksum: d6ac5ac7439a1607df44b22738ecf83f48e66a0874e4482d6424a61c52da5cde5750f1d1229b6f5fa1b80a492be89465390da685b11f97d62b8adcc6e88189aa + languageName: node + linkType: hard + +"media-typer@npm:0.3.0": + version: 0.3.0 + resolution: "media-typer@npm:0.3.0" + checksum: af1b38516c28ec95d6b0826f6c8f276c58aec391f76be42aa07646b4e39d317723e869700933ca6995b056db4b09a78c92d5440dc23657e6764be5d28874bba1 + languageName: node + linkType: hard + +"memfs@npm:^3.1.2, memfs@npm:^3.4.3": + version: 3.5.3 + resolution: "memfs@npm:3.5.3" + dependencies: + fs-monkey: ^1.0.4 + checksum: 18dfdeacad7c8047b976a6ccd58bc98ba76e122ad3ca0e50a21837fe2075fc0d9aafc58ab9cf2576c2b6889da1dd2503083f2364191b695273f40969db2ecc44 + languageName: node + linkType: hard + +"merge-descriptors@npm:1.0.1": + version: 1.0.1 + resolution: "merge-descriptors@npm:1.0.1" + checksum: 5abc259d2ae25bb06d19ce2b94a21632583c74e2a9109ee1ba7fd147aa7362b380d971e0251069f8b3eb7d48c21ac839e21fa177b335e82c76ec172e30c31a26 + languageName: node + linkType: hard + +"merge-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-stream@npm:2.0.0" + checksum: 6fa4dcc8d86629705cea944a4b88ef4cb0e07656ebf223fa287443256414283dd25d91c1cd84c77987f2aec5927af1a9db6085757cb43d90eb170ebf4b47f4f4 + languageName: node + linkType: hard + +"merge2@npm:^1.3.0, merge2@npm:^1.4.1": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 + languageName: node + linkType: hard + +"methods@npm:~1.1.2": + version: 1.1.2 + resolution: "methods@npm:1.1.2" + checksum: 0917ff4041fa8e2f2fda5425a955fe16ca411591fbd123c0d722fcf02b73971ed6f764d85f0a6f547ce49ee0221ce2c19a5fa692157931cecb422984f1dcd13a + languageName: node + linkType: hard + +"micromark-core-commonmark@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-core-commonmark@npm:2.0.1" + dependencies: + decode-named-character-reference: ^1.0.0 + devlop: ^1.0.0 + micromark-factory-destination: ^2.0.0 + micromark-factory-label: ^2.0.0 + micromark-factory-space: ^2.0.0 + micromark-factory-title: ^2.0.0 + micromark-factory-whitespace: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-chunked: ^2.0.0 + micromark-util-classify-character: ^2.0.0 + micromark-util-html-tag-name: ^2.0.0 + micromark-util-normalize-identifier: ^2.0.0 + micromark-util-resolve-all: ^2.0.0 + micromark-util-subtokenize: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 6a9891cc883a531e090dc8dab6669945f3df9448e84216a8f2a91f9258281e6abea5ae3940fde2bd77a57dc3e0d67f2add6762aed63a378f37b09eaf7e7426c4 + languageName: node + linkType: hard + +"micromark-extension-directive@npm:^3.0.0": + version: 3.0.1 + resolution: "micromark-extension-directive@npm:3.0.1" + dependencies: + devlop: ^1.0.0 + micromark-factory-space: ^2.0.0 + micromark-factory-whitespace: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + parse-entities: ^4.0.0 + checksum: f097bf04317d0de28cd23b594b63655257d4b48648523b3684981b4e4e7b93fffdc391e3a625776db404cfd00f305c03d2f89c3a8b3917c0e0aa770497683609 + languageName: node + linkType: hard + +"micromark-extension-frontmatter@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-extension-frontmatter@npm:2.0.0" + dependencies: + fault: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: f68032df38c00ae47de15b63bcd72515bfcce39de4a9262a3a1ac9c5990f253f8e41bdc65fd17ec4bb3d144c32529ce0829571331e4901a9a413f1a53785d1e8 + languageName: node + linkType: hard + +"micromark-extension-gfm-autolink-literal@npm:^2.0.0": + version: 2.1.0 + resolution: "micromark-extension-gfm-autolink-literal@npm:2.1.0" + dependencies: + micromark-util-character: ^2.0.0 + micromark-util-sanitize-uri: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: e00a570c70c837b9cbbe94b2c23b787f44e781cd19b72f1828e3453abca2a9fb600fa539cdc75229fa3919db384491063645086e02249481e6ff3ec2c18f767c + languageName: node + linkType: hard + +"micromark-extension-gfm-footnote@npm:^2.0.0": + version: 2.1.0 + resolution: "micromark-extension-gfm-footnote@npm:2.1.0" + dependencies: + devlop: ^1.0.0 + micromark-core-commonmark: ^2.0.0 + micromark-factory-space: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-normalize-identifier: ^2.0.0 + micromark-util-sanitize-uri: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: ac6fb039e98395d37b71ebff7c7a249aef52678b5cf554c89c4f716111d4be62ef99a5d715a5bd5d68fa549778c977d85cb671d1d8506dc8a3a1b46e867ae52f + languageName: node + linkType: hard + +"micromark-extension-gfm-strikethrough@npm:^2.0.0": + version: 2.1.0 + resolution: "micromark-extension-gfm-strikethrough@npm:2.1.0" + dependencies: + devlop: ^1.0.0 + micromark-util-chunked: ^2.0.0 + micromark-util-classify-character: ^2.0.0 + micromark-util-resolve-all: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: cdb7a38dd6eefb6ceb6792a44a6796b10f951e8e3e45b8579f599f43e7ae26ccd048c0aa7e441b3c29dd0c54656944fe6eb0098de2bc4b5106fbc0a42e9e016c + languageName: node + linkType: hard + +"micromark-extension-gfm-table@npm:^2.0.0": + version: 2.1.0 + resolution: "micromark-extension-gfm-table@npm:2.1.0" + dependencies: + devlop: ^1.0.0 + micromark-factory-space: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 249d695f5f8bd222a0d8a774ec78ea2a2d624cb50a4d008092a54aa87dad1f9d540e151d29696cf849eb1cee380113c4df722aebb3b425a214832a2de5dea1d7 + languageName: node + linkType: hard + +"micromark-extension-gfm-tagfilter@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-extension-gfm-tagfilter@npm:2.0.0" + dependencies: + micromark-util-types: ^2.0.0 + checksum: cf21552f4a63592bfd6c96ae5d64a5f22bda4e77814e3f0501bfe80e7a49378ad140f827007f36044666f176b3a0d5fea7c2e8e7973ce4b4579b77789f01ae95 + languageName: node + linkType: hard + +"micromark-extension-gfm-task-list-item@npm:^2.0.0": + version: 2.1.0 + resolution: "micromark-extension-gfm-task-list-item@npm:2.1.0" + dependencies: + devlop: ^1.0.0 + micromark-factory-space: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: b1ad86a4e9d68d9ad536d94fb25a5182acbc85cc79318f4a6316034342f6a71d67983cc13f12911d0290fd09b2bda43cdabe8781a2d9cca2ebe0d421e8b2b8a4 + languageName: node + linkType: hard + +"micromark-extension-gfm@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-gfm@npm:3.0.0" + dependencies: + micromark-extension-gfm-autolink-literal: ^2.0.0 + micromark-extension-gfm-footnote: ^2.0.0 + micromark-extension-gfm-strikethrough: ^2.0.0 + micromark-extension-gfm-table: ^2.0.0 + micromark-extension-gfm-tagfilter: ^2.0.0 + micromark-extension-gfm-task-list-item: ^2.0.0 + micromark-util-combine-extensions: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 2060fa62666a09532d6b3a272d413bc1b25bbb262f921d7402795ac021e1362c8913727e33d7528d5b4ccaf26922ec51208c43f795a702964817bc986de886c9 + languageName: node + linkType: hard + +"micromark-extension-mdx-expression@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-mdx-expression@npm:3.0.0" + dependencies: + "@types/estree": ^1.0.0 + devlop: ^1.0.0 + micromark-factory-mdx-expression: ^2.0.0 + micromark-factory-space: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-events-to-acorn: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: abd6ba0acdebc03bc0836c51a1ec4ca28e0be86f10420dd8cfbcd6c10dd37cd3f31e7c8b9792e9276e7526748883f4a30d0803d72b6285dae47d4e5348c23a10 + languageName: node + linkType: hard + +"micromark-extension-mdx-jsx@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-mdx-jsx@npm:3.0.0" + dependencies: + "@types/acorn": ^4.0.0 + "@types/estree": ^1.0.0 + devlop: ^1.0.0 + estree-util-is-identifier-name: ^3.0.0 + micromark-factory-mdx-expression: ^2.0.0 + micromark-factory-space: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + vfile-message: ^4.0.0 + checksum: 5e2f45d381d1ce43afadc5376427b42ef8cd2a574ca3658473254eabe84db99ef1abc03055b3d86728fac7f1edfb1076e6f2f322ed8bfb1f2f14cafc2c8f0d0e + languageName: node + linkType: hard + +"micromark-extension-mdx-md@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-extension-mdx-md@npm:2.0.0" + dependencies: + micromark-util-types: ^2.0.0 + checksum: 7daf03372fd7faddf3f0ac87bdb0debb0bb770f33b586f72251e1072b222ceee75400ab6194c0e130dbf1e077369a5b627be6e9130d7a2e9e6b849f0d18ff246 + languageName: node + linkType: hard + +"micromark-extension-mdxjs-esm@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-mdxjs-esm@npm:3.0.0" + dependencies: + "@types/estree": ^1.0.0 + devlop: ^1.0.0 + micromark-core-commonmark: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-events-to-acorn: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + unist-util-position-from-estree: ^2.0.0 + vfile-message: ^4.0.0 + checksum: fb33d850200afce567b95c90f2f7d42259bd33eea16154349e4fa77c3ec934f46c8e5c111acea16321dce3d9f85aaa4c49afe8b810e31b34effc11617aeee8f6 + languageName: node + linkType: hard + +"micromark-extension-mdxjs@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-mdxjs@npm:3.0.0" + dependencies: + acorn: ^8.0.0 + acorn-jsx: ^5.0.0 + micromark-extension-mdx-expression: ^3.0.0 + micromark-extension-mdx-jsx: ^3.0.0 + micromark-extension-mdx-md: ^2.0.0 + micromark-extension-mdxjs-esm: ^3.0.0 + micromark-util-combine-extensions: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 7da6f0fb0e1e0270a2f5ad257e7422cc16e68efa7b8214c63c9d55bc264cb872e9ca4ac9a71b9dfd13daf52e010f730bac316086f4340e4fcc6569ec699915bf + languageName: node + linkType: hard + +"micromark-factory-destination@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-factory-destination@npm:2.0.0" + dependencies: + micromark-util-character: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: d36e65ed1c072ff4148b016783148ba7c68a078991154625723e24bda3945160268fb91079fb28618e1613c2b6e70390a8ddc544c45410288aa27b413593071a + languageName: node + linkType: hard + +"micromark-factory-label@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-factory-label@npm:2.0.0" + dependencies: + devlop: ^1.0.0 + micromark-util-character: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: c021dbd0ed367610d35f2bae21209bc804d1a6d1286ffce458fd6a717f4d7fe581a7cba7d5c2d7a63757c44eb927c80d6a571d6ea7969fae1b48ab6461d109c4 + languageName: node + linkType: hard + +"micromark-factory-mdx-expression@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-factory-mdx-expression@npm:2.0.1" + dependencies: + "@types/estree": ^1.0.0 + devlop: ^1.0.0 + micromark-util-character: ^2.0.0 + micromark-util-events-to-acorn: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + unist-util-position-from-estree: ^2.0.0 + vfile-message: ^4.0.0 + checksum: 2ba0ae939d0174a5e5331b1a4c203b96862ccf06e8903d6bdcc2d51f75515e52d407cd394afcd182f9ff0e877dc2a14e3fa430ced0131e156650d45104de8311 + languageName: node + linkType: hard + +"micromark-factory-space@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-factory-space@npm:1.1.0" + dependencies: + micromark-util-character: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: b58435076b998a7e244259a4694eb83c78915581206b6e7fc07b34c6abd36a1726ade63df8972fbf6c8fa38eecb9074f4e17be8d53f942e3b3d23d1a0ecaa941 + languageName: node + linkType: hard + +"micromark-factory-space@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-factory-space@npm:2.0.0" + dependencies: + micromark-util-character: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 4ffdcdc2f759887bbb356500cb460b3915ecddcb5d85c3618d7df68ad05d13ed02b1153ee1845677b7d8126df8f388288b84fcf0d943bd9c92bcc71cd7222e37 + languageName: node + linkType: hard + +"micromark-factory-title@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-factory-title@npm:2.0.0" + dependencies: + micromark-factory-space: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 39e1ac23af3554e6e652e56065579bc7faf21ade7b8704b29c175871b4152b7109b790bb3cae0f7e088381139c6bac9553b8400772c3d322e4fa635f813a3578 + languageName: node + linkType: hard + +"micromark-factory-whitespace@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-factory-whitespace@npm:2.0.0" + dependencies: + micromark-factory-space: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 9587c2546d1a58b4d5472b42adf05463f6212d0449455285662d63cd8eaed89c6b159ac82713fcee5f9dd88628c24307d9533cccd8971a2f3f4d48702f8f850a + languageName: node + linkType: hard + +"micromark-util-character@npm:^1.0.0, micromark-util-character@npm:^1.1.0": + version: 1.2.0 + resolution: "micromark-util-character@npm:1.2.0" + dependencies: + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: 089e79162a19b4a28731736246579ab7e9482ac93cd681c2bfca9983dcff659212ef158a66a5957e9d4b1dba957d1b87b565d85418a5b009f0294f1f07f2aaac + languageName: node + linkType: hard + +"micromark-util-character@npm:^2.0.0": + version: 2.1.0 + resolution: "micromark-util-character@npm:2.1.0" + dependencies: + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 36ee910f84077cf16626fa618cfe46ac25956b3242e3166b8e8e98c5a8c524af7e5bf3d70822264b1fd2d297a36104a7eb7e3462c19c28353eaca7b0d8717594 + languageName: node + linkType: hard + +"micromark-util-chunked@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-chunked@npm:2.0.0" + dependencies: + micromark-util-symbol: ^2.0.0 + checksum: 324f95cccdae061332a8241936eaba6ef0782a1e355bac5c607ad2564fd3744929be7dc81651315a2921535747a33243e6a5606bcb64b7a56d49b6d74ea1a3d4 + languageName: node + linkType: hard + +"micromark-util-classify-character@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-classify-character@npm:2.0.0" + dependencies: + micromark-util-character: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 086e52904deffebb793fb1c08c94aabb8901f76958142dfc3a6282890ebaa983b285e69bd602b9d507f1b758ed38e75a994d2ad9fbbefa7de2584f67a16af405 + languageName: node + linkType: hard + +"micromark-util-combine-extensions@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-combine-extensions@npm:2.0.0" + dependencies: + micromark-util-chunked: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 107c47700343f365b4ed81551e18bc3458b573c500e56ac052b2490bd548adc475216e41d2271633a8867fac66fc22ba3e0a2d74a31ed79b9870ca947eb4e3ba + languageName: node + linkType: hard + +"micromark-util-decode-numeric-character-reference@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-decode-numeric-character-reference@npm:2.0.1" + dependencies: + micromark-util-symbol: ^2.0.0 + checksum: 9512507722efd2033a9f08715eeef787fbfe27e23edf55db21423d46d82ab46f76c89b4f960be3f5e50a2d388d89658afc0647989cf256d051e9ea01277a1adb + languageName: node + linkType: hard + +"micromark-util-decode-string@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-decode-string@npm:2.0.0" + dependencies: + decode-named-character-reference: ^1.0.0 + micromark-util-character: ^2.0.0 + micromark-util-decode-numeric-character-reference: ^2.0.0 + micromark-util-symbol: ^2.0.0 + checksum: a75daf32a4a6b549e9f19b4d833ebfeb09a32a9a1f9ce50f35dec6b6a3e4f9f121f49024ba7f9c91c55ebe792f7c7a332fc9604795181b6a612637df0df5b959 + languageName: node + linkType: hard + +"micromark-util-encode@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-encode@npm:2.0.0" + checksum: 853a3f33fce72aaf4ffa60b7f2b6fcfca40b270b3466e1b96561b02185d2bd8c01dd7948bc31a24ac014f4cc854e545ca9a8e9cf7ea46262f9d24c9e88551c66 + languageName: node + linkType: hard + +"micromark-util-events-to-acorn@npm:^2.0.0": + version: 2.0.2 + resolution: "micromark-util-events-to-acorn@npm:2.0.2" + dependencies: + "@types/acorn": ^4.0.0 + "@types/estree": ^1.0.0 + "@types/unist": ^3.0.0 + devlop: ^1.0.0 + estree-util-visit: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + vfile-message: ^4.0.0 + checksum: bcb3eeac52a4ae5c3ca3d8cff514de3a7d1f272d9a94cce26a08c578bef64df4d61820874c01207e92fcace9eae5c9a7ecdddef0c6e10014b255a07b7880bf94 + languageName: node + linkType: hard + +"micromark-util-html-tag-name@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-html-tag-name@npm:2.0.0" + checksum: d786d4486f93eb0ac5b628779809ca97c5dc60f3c9fc03eb565809831db181cf8cb7f05f9ac76852f3eb35461af0f89fa407b46f3a03f4f97a96754d8dc540d8 + languageName: node + linkType: hard + +"micromark-util-normalize-identifier@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-normalize-identifier@npm:2.0.0" + dependencies: + micromark-util-symbol: ^2.0.0 + checksum: b36da2d3fd102053dadd953ce5c558328df12a63a8ac0e5aad13d4dda8e43b6a5d4a661baafe0a1cd8a260bead4b4a8e6e0e74193dd651e8484225bd4f4e68aa + languageName: node + linkType: hard + +"micromark-util-resolve-all@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-resolve-all@npm:2.0.0" + dependencies: + micromark-util-types: ^2.0.0 + checksum: 31fe703b85572cb3f598ebe32750e59516925c7ff1f66cfe6afaebe0771a395a9eaa770787f2523d3c46082ea80e6c14f83643303740b3d650af7c96ebd30ccc + languageName: node + linkType: hard + +"micromark-util-sanitize-uri@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-sanitize-uri@npm:2.0.0" + dependencies: + micromark-util-character: ^2.0.0 + micromark-util-encode: ^2.0.0 + micromark-util-symbol: ^2.0.0 + checksum: ea4c28bbffcf2430e9aff2d18554296789a8b0a1f54ac24020d1dde76624a7f93e8f2a83e88cd5a846b6d2c4287b71b1142d1b89fa7f1b0363a9b33711a141fe + languageName: node + linkType: hard + +"micromark-util-subtokenize@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-subtokenize@npm:2.0.1" + dependencies: + devlop: ^1.0.0 + micromark-util-chunked: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 5d338883ad8889c63f9b262b9cae0c02a42088201981d820ae7af7aa6d38fab6585b89fd4cf2206a46a7c4002e41ee6c70e1a3e0ceb3ad8b7adcffaf166b1511 + languageName: node + linkType: hard + +"micromark-util-symbol@npm:^1.0.0, micromark-util-symbol@npm:^1.0.1": + version: 1.1.0 + resolution: "micromark-util-symbol@npm:1.1.0" + checksum: 02414a753b79f67ff3276b517eeac87913aea6c028f3e668a19ea0fc09d98aea9f93d6222a76ca783d20299af9e4b8e7c797fe516b766185dcc6e93290f11f88 + languageName: node + linkType: hard + +"micromark-util-symbol@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-symbol@npm:2.0.0" + checksum: fa4a05bff575d9fbf0ad96a1013003e3bb6087ed6b34b609a141b6c0d2137b57df594aca409a95f4c5fda199f227b56a7d8b1f82cea0768df161d8a3a3660764 + languageName: node + linkType: hard + +"micromark-util-types@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-util-types@npm:1.1.0" + checksum: b0ef2b4b9589f15aec2666690477a6a185536927ceb7aa55a0f46475852e012d75a1ab945187e5c7841969a842892164b15d58ff8316b8e0d6cc920cabd5ede7 + languageName: node + linkType: hard + +"micromark-util-types@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-types@npm:2.0.0" + checksum: 819fef3ab5770c37893d2a60381fb2694396c8d22803b6e103c830c3a1bc1490363c2b0470bb2acaaddad776dfbc2fc1fcfde39cb63c4f54d95121611672e3d0 + languageName: node + linkType: hard + +"micromark@npm:^4.0.0": + version: 4.0.0 + resolution: "micromark@npm:4.0.0" + dependencies: + "@types/debug": ^4.0.0 + debug: ^4.0.0 + decode-named-character-reference: ^1.0.0 + devlop: ^1.0.0 + micromark-core-commonmark: ^2.0.0 + micromark-factory-space: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-chunked: ^2.0.0 + micromark-util-combine-extensions: ^2.0.0 + micromark-util-decode-numeric-character-reference: ^2.0.0 + micromark-util-encode: ^2.0.0 + micromark-util-normalize-identifier: ^2.0.0 + micromark-util-resolve-all: ^2.0.0 + micromark-util-sanitize-uri: ^2.0.0 + micromark-util-subtokenize: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: b84ab5ab1a0b28c063c52e9c2c9d7d44b954507235c10c9492d66e0b38f7de24bf298f914a1fbdf109f2a57a88cf0412de217c84cfac5fd60e3e42a74dbac085 + languageName: node + linkType: hard + +"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": + version: 4.0.7 + resolution: "micromatch@npm:4.0.7" + dependencies: + braces: ^3.0.3 + picomatch: ^2.3.1 + checksum: 3cde047d70ad80cf60c787b77198d680db3b8c25b23feb01de5e2652205d9c19f43bd81882f69a0fd1f0cde6a7a122d774998aad3271ddb1b8accf8a0f480cf7 + languageName: node + linkType: hard + +"mime-db@npm:1.52.0": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f + languageName: node + linkType: hard + +"mime-db@npm:>= 1.43.0 < 2": + version: 1.53.0 + resolution: "mime-db@npm:1.53.0" + checksum: 3fd9380bdc0b085d0b56b580e4f89ca4fc3b823722310d795c248f0806b9a80afd5d8f4347f015ad943b9ecfa7cc0b71dffa0db96fa776d01a13474821a2c7fb + languageName: node + linkType: hard + +"mime-db@npm:~1.33.0": + version: 1.33.0 + resolution: "mime-db@npm:1.33.0" + checksum: 281a0772187c9b8f6096976cb193ac639c6007ac85acdbb8dc1617ed7b0f4777fa001d1b4f1b634532815e60717c84b2f280201d55677fb850c9d45015b50084 + languageName: node + linkType: hard + +"mime-types@npm:2.1.18": + version: 2.1.18 + resolution: "mime-types@npm:2.1.18" + dependencies: + mime-db: ~1.33.0 + checksum: 729265eff1e5a0e87cb7f869da742a610679585167d2f2ec997a7387fc6aedf8e5cad078e99b0164a927bdf3ace34fca27430d6487456ad090cba5594441ba43 + languageName: node + linkType: hard + +"mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.17, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: 1.52.0 + checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 + languageName: node + linkType: hard + +"mime@npm:1.6.0": + version: 1.6.0 + resolution: "mime@npm:1.6.0" + bin: + mime: cli.js + checksum: fef25e39263e6d207580bdc629f8872a3f9772c923c7f8c7e793175cee22777bbe8bba95e5d509a40aaa292d8974514ce634ae35769faa45f22d17edda5e8557 + languageName: node + linkType: hard + +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: d2421a3444848ce7f84bd49115ddacff29c15745db73f54041edc906c14b131a38d05298dae3081667627a59b2eb1ca4b436ff2e1b80f69679522410418b478a + languageName: node + linkType: hard + +"mimic-response@npm:^3.1.0": + version: 3.1.0 + resolution: "mimic-response@npm:3.1.0" + checksum: 25739fee32c17f433626bf19f016df9036b75b3d84a3046c7d156e72ec963dd29d7fc8a302f55a3d6c5a4ff24259676b15d915aad6480815a969ff2ec0836867 + languageName: node + linkType: hard + +"mimic-response@npm:^4.0.0": + version: 4.0.0 + resolution: "mimic-response@npm:4.0.0" + checksum: 33b804cc961efe206efdb1fca6a22540decdcfce6c14eb5c0c50e5ae9022267ab22ce8f5568b1f7247ba67500fe20d523d81e0e9f009b321ccd9d472e78d1850 + languageName: node + linkType: hard + +"mini-css-extract-plugin@npm:^2.7.6": + version: 2.9.0 + resolution: "mini-css-extract-plugin@npm:2.9.0" + dependencies: + schema-utils: ^4.0.0 + tapable: ^2.2.1 + peerDependencies: + webpack: ^5.0.0 + checksum: ae192c67ba85ac8bffeab66774635bf90181f00d5dd6cf95412426192599ddf5506fb4b1550acbd7a5476476e39db53c770dd40f8378f7baf5de96e3fec4e6e9 + languageName: node + linkType: hard + +"minimalistic-assert@npm:^1.0.0": + version: 1.0.1 + resolution: "minimalistic-assert@npm:1.0.1" + checksum: cc7974a9268fbf130fb055aff76700d7e2d8be5f761fb5c60318d0ed010d839ab3661a533ad29a5d37653133385204c503bfac995aaa4236f4e847461ea32ba7 + languageName: node + linkType: hard + +"minimatch@npm:3.1.2, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: ^1.1.7 + checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a + languageName: node + linkType: hard + +"minimatch@npm:^9.0.4": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" + dependencies: + brace-expansion: ^2.0.1 + checksum: 2c035575eda1e50623c731ec6c14f65a85296268f749b9337005210bb2b34e2705f8ef1a358b188f69892286ab99dc42c8fb98a57bde55c8d81b3023c19cea28 + languageName: node + linkType: hard + +"minimist@npm:^1.2.0": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 + languageName: node + linkType: hard + +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" + dependencies: + minipass: ^7.0.3 + checksum: b251bceea62090f67a6cced7a446a36f4cd61ee2d5cea9aee7fff79ba8030e416327a1c5aa2908dc22629d06214b46d88fdab8c51ac76bacbf5703851b5ad342 + languageName: node + linkType: hard + +"minipass-fetch@npm:^3.0.0": + version: 3.0.5 + resolution: "minipass-fetch@npm:3.0.5" + dependencies: + encoding: ^0.1.13 + minipass: ^7.0.3 + minipass-sized: ^1.0.3 + minizlib: ^2.1.2 + dependenciesMeta: + encoding: + optional: true + checksum: 8047d273236157aab27ab7cd8eab7ea79e6ecd63e8f80c3366ec076cb9a0fed550a6935bab51764369027c414647fd8256c2a20c5445fb250c483de43350de83 + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: ^3.0.0 + checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: ^3.0.0 + checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: ^3.0.0 + checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60 + languageName: node + linkType: hard + +"minipass@npm:^3.0.0": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: ^4.0.0 + checksum: a30d083c8054cee83cdcdc97f97e4641a3f58ae743970457b1489ce38ee1167b3aaf7d815cd39ec7a99b9c40397fd4f686e83750e73e652b21cb516f6d845e48 + languageName: node + linkType: hard + +"minipass@npm:^5.0.0": + version: 5.0.0 + resolution: "minipass@npm:5.0.0" + checksum: 425dab288738853fded43da3314a0b5c035844d6f3097a8e3b5b29b328da8f3c1af6fc70618b32c29ff906284cf6406b6841376f21caaadd0793c1d5a6a620ea + languageName: node + linkType: hard + +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 2bfd325b95c555f2b4d2814d49325691c7bee937d753814861b0b49d5edcda55cbbf22b6b6a60bb91eddac8668771f03c5ff647dcd9d0f798e9548b9cdc46ee3 + languageName: node + linkType: hard + +"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": + version: 2.1.2 + resolution: "minizlib@npm:2.1.2" + dependencies: + minipass: ^3.0.0 + yallist: ^4.0.0 + checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 + languageName: node + linkType: hard + +"mkdirp@npm:^1.0.3": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f + languageName: node + linkType: hard + +"mrmime@npm:^2.0.0": + version: 2.0.0 + resolution: "mrmime@npm:2.0.0" + checksum: f6fe11ec667c3d96f1ce5fd41184ed491d5f0a5f4045e82446a471ccda5f84c7f7610dff61d378b73d964f73a320bd7f89788f9e6b9403e32cc4be28ba99f569 + languageName: node + linkType: hard + +"ms@npm:2.0.0": + version: 2.0.0 + resolution: "ms@npm:2.0.0" + checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 + languageName: node + linkType: hard + +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f + languageName: node + linkType: hard + +"ms@npm:2.1.3": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d + languageName: node + linkType: hard + +"multicast-dns@npm:^7.2.5": + version: 7.2.5 + resolution: "multicast-dns@npm:7.2.5" + dependencies: + dns-packet: ^5.2.2 + thunky: ^1.0.2 + bin: + multicast-dns: cli.js + checksum: 00b8a57df152d4cd0297946320a94b7c3cdf75a46a2247f32f958a8927dea42958177f9b7fdae69fab2e4e033fb3416881af1f5e9055a3e1542888767139e2fb + languageName: node + linkType: hard + +"nanoid@npm:^3.3.7": + version: 3.3.7 + resolution: "nanoid@npm:3.3.7" + bin: + nanoid: bin/nanoid.cjs + checksum: d36c427e530713e4ac6567d488b489a36582ef89da1d6d4e3b87eded11eb10d7042a877958c6f104929809b2ab0bafa17652b076cdf84324aa75b30b722204f2 + languageName: node + linkType: hard + +"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": + version: 0.6.3 + resolution: "negotiator@npm:0.6.3" + checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 + languageName: node + linkType: hard + +"neo-async@npm:^2.6.2": + version: 2.6.2 + resolution: "neo-async@npm:2.6.2" + checksum: deac9f8d00eda7b2e5cd1b2549e26e10a0faa70adaa6fdadca701cc55f49ee9018e427f424bac0c790b7c7e2d3068db97f3093f1093975f2acb8f8818b936ed9 + languageName: node + linkType: hard + +"no-case@npm:^3.0.4": + version: 3.0.4 + resolution: "no-case@npm:3.0.4" + dependencies: + lower-case: ^2.0.2 + tslib: ^2.0.3 + checksum: 0b2ebc113dfcf737d48dde49cfebf3ad2d82a8c3188e7100c6f375e30eafbef9e9124aadc3becef237b042fd5eb0aad2fd78669c20972d045bbe7fea8ba0be5c + languageName: node + linkType: hard + +"node-emoji@npm:^2.1.0": + version: 2.1.3 + resolution: "node-emoji@npm:2.1.3" + dependencies: + "@sindresorhus/is": ^4.6.0 + char-regex: ^1.0.2 + emojilib: ^2.4.0 + skin-tone: ^2.0.0 + checksum: 9ae5a1fb12fd5ce6885f251f345986115de4bb82e7d06fdc943845fb19260d89d0aaaccbaf85cae39fe7aaa1fc391640558865ba690c9bb8a7236c3ac10bbab0 + languageName: node + linkType: hard + +"node-forge@npm:^1": + version: 1.3.1 + resolution: "node-forge@npm:1.3.1" + checksum: 08fb072d3d670599c89a1704b3e9c649ff1b998256737f0e06fbd1a5bf41cae4457ccaee32d95052d80bbafd9ffe01284e078c8071f0267dc9744e51c5ed42a9 + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 10.2.0 + resolution: "node-gyp@npm:10.2.0" + dependencies: + env-paths: ^2.2.0 + exponential-backoff: ^3.1.1 + glob: ^10.3.10 + graceful-fs: ^4.2.6 + make-fetch-happen: ^13.0.0 + nopt: ^7.0.0 + proc-log: ^4.1.0 + semver: ^7.3.5 + tar: ^6.2.1 + which: ^4.0.0 + bin: + node-gyp: bin/node-gyp.js + checksum: 0233759d8c19765f7fdc259a35eb046ad86c3d09e22f7384613ae2b89647dd27fcf833fdf5293d9335041e91f9b1c539494225959cdb312a5c8080b7534b926f + languageName: node + linkType: hard + +"node-releases@npm:^2.0.18": + version: 2.0.18 + resolution: "node-releases@npm:2.0.18" + checksum: ef55a3d853e1269a6d6279b7692cd6ff3e40bc74947945101138745bfdc9a5edabfe72cb19a31a8e45752e1910c4c65c77d931866af6357f242b172b7283f5b3 + languageName: node + linkType: hard + +"nopt@npm:^7.0.0": + version: 7.2.1 + resolution: "nopt@npm:7.2.1" + dependencies: + abbrev: ^2.0.0 + bin: + nopt: bin/nopt.js + checksum: 6fa729cc77ce4162cfad8abbc9ba31d4a0ff6850c3af61d59b505653bef4781ec059f8890ecfe93ee8aa0c511093369cca88bfc998101616a2904e715bbbb7c9 + languageName: node + linkType: hard + +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 + languageName: node + linkType: hard + +"normalize-range@npm:^0.1.2": + version: 0.1.2 + resolution: "normalize-range@npm:0.1.2" + checksum: 9b2f14f093593f367a7a0834267c24f3cb3e887a2d9809c77d8a7e5fd08738bcd15af46f0ab01cc3a3d660386f015816b5c922cea8bf2ee79777f40874063184 + languageName: node + linkType: hard + +"normalize-url@npm:^8.0.0": + version: 8.0.1 + resolution: "normalize-url@npm:8.0.1" + checksum: 43ea9ef0d6d135dd1556ab67aa4b74820f0d9d15aa504b59fa35647c729f1147dfce48d3ad504998fd1010f089cfb82c86c6d9126eb5c5bd2e9bd25f3a97749b + languageName: node + linkType: hard + +"npm-run-path@npm:^4.0.1": + version: 4.0.1 + resolution: "npm-run-path@npm:4.0.1" + dependencies: + path-key: ^3.0.0 + checksum: 5374c0cea4b0bbfdfae62da7bbdf1e1558d338335f4cacf2515c282ff358ff27b2ecb91ffa5330a8b14390ac66a1e146e10700440c1ab868208430f56b5f4d23 + languageName: node + linkType: hard + +"nprogress@npm:^0.2.0": + version: 0.2.0 + resolution: "nprogress@npm:0.2.0" + checksum: 66b7bec5d563ecf2d1c3d2815e6d5eb74ed815eee8563e0afa63d3f185ab1b9cf2ddd97e1ded263b9995c5019d26d600320e849e50f3747984daa033744619dc + languageName: node + linkType: hard + +"nth-check@npm:^2.0.1": + version: 2.1.1 + resolution: "nth-check@npm:2.1.1" + dependencies: + boolbase: ^1.0.0 + checksum: 5afc3dafcd1573b08877ca8e6148c52abd565f1d06b1eb08caf982e3fa289a82f2cae697ffb55b5021e146d60443f1590a5d6b944844e944714a5b549675bcd3 + languageName: node + linkType: hard + +"object-assign@npm:^4.1.1": + version: 4.1.1 + resolution: "object-assign@npm:4.1.1" + checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f + languageName: node + linkType: hard + +"object-inspect@npm:^1.13.1": + version: 1.13.2 + resolution: "object-inspect@npm:1.13.2" + checksum: 9f850b3c045db60e0e97746e809ee4090d6ce62195af17dd1e9438ac761394a7d8ec4f7906559aea5424eaf61e35d3e53feded2ccd5f62fcc7d9670d3c8eb353 + languageName: node + linkType: hard + +"object-keys@npm:^1.1.1": + version: 1.1.1 + resolution: "object-keys@npm:1.1.1" + checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a + languageName: node + linkType: hard + +"object.assign@npm:^4.1.0": + version: 4.1.5 + resolution: "object.assign@npm:4.1.5" + dependencies: + call-bind: ^1.0.5 + define-properties: ^1.2.1 + has-symbols: ^1.0.3 + object-keys: ^1.1.1 + checksum: f9aeac0541661370a1fc86e6a8065eb1668d3e771f7dbb33ee54578201336c057b21ee61207a186dd42db0c62201d91aac703d20d12a79fc79c353eed44d4e25 + languageName: node + linkType: hard + +"obuf@npm:^1.0.0, obuf@npm:^1.1.2": + version: 1.1.2 + resolution: "obuf@npm:1.1.2" + checksum: 41a2ba310e7b6f6c3b905af82c275bf8854896e2e4c5752966d64cbcd2f599cfffd5932006bcf3b8b419dfdacebb3a3912d5d94e10f1d0acab59876c8757f27f + languageName: node + linkType: hard + +"on-finished@npm:2.4.1": + version: 2.4.1 + resolution: "on-finished@npm:2.4.1" + dependencies: + ee-first: 1.1.1 + checksum: d20929a25e7f0bb62f937a425b5edeb4e4cde0540d77ba146ec9357f00b0d497cdb3b9b05b9c8e46222407d1548d08166bff69cc56dfa55ba0e4469228920ff0 + languageName: node + linkType: hard + +"on-headers@npm:~1.0.2": + version: 1.0.2 + resolution: "on-headers@npm:1.0.2" + checksum: 2bf13467215d1e540a62a75021e8b318a6cfc5d4fc53af8e8f84ad98dbcea02d506c6d24180cd62e1d769c44721ba542f3154effc1f7579a8288c9f7873ed8e5 + languageName: node + linkType: hard + +"once@npm:^1.3.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: 1 + checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 + languageName: node + linkType: hard + +"onetime@npm:^5.1.2": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: ^2.1.0 + checksum: 2478859ef817fc5d4e9c2f9e5728512ddd1dbc9fb7829ad263765bb6d3b91ce699d6e2332eef6b7dff183c2f490bd3349f1666427eaba4469fba0ac38dfd0d34 + languageName: node + linkType: hard + +"open@npm:^8.0.9, open@npm:^8.4.0": + version: 8.4.2 + resolution: "open@npm:8.4.2" + dependencies: + define-lazy-prop: ^2.0.0 + is-docker: ^2.1.1 + is-wsl: ^2.2.0 + checksum: 6388bfff21b40cb9bd8f913f9130d107f2ed4724ea81a8fd29798ee322b361ca31fa2cdfb491a5c31e43a3996cfe9566741238c7a741ada8d7af1cb78d85cf26 + languageName: node + linkType: hard + +"opener@npm:^1.5.2": + version: 1.5.2 + resolution: "opener@npm:1.5.2" + bin: + opener: bin/opener-bin.js + checksum: 33b620c0d53d5b883f2abc6687dd1c5fd394d270dbe33a6356f2d71e0a2ec85b100d5bac94694198ccf5c30d592da863b2292c5539009c715a9c80c697b4f6cc + languageName: node + linkType: hard + +"p-cancelable@npm:^3.0.0": + version: 3.0.0 + resolution: "p-cancelable@npm:3.0.0" + checksum: 2b5ae34218f9c2cf7a7c18e5d9a726ef9b165ef07e6c959f6738371509e747334b5f78f3bcdeb03d8a12dcb978faf641fd87eb21486ed7d36fb823b8ddef3219 + languageName: node + linkType: hard + +"p-limit@npm:^2.0.0": + version: 2.3.0 + resolution: "p-limit@npm:2.3.0" + dependencies: + p-try: ^2.0.0 + checksum: 84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 + languageName: node + linkType: hard + +"p-limit@npm:^3.0.2": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" + dependencies: + yocto-queue: ^0.1.0 + checksum: 7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 + languageName: node + linkType: hard + +"p-limit@npm:^4.0.0": + version: 4.0.0 + resolution: "p-limit@npm:4.0.0" + dependencies: + yocto-queue: ^1.0.0 + checksum: 01d9d70695187788f984226e16c903475ec6a947ee7b21948d6f597bed788e3112cc7ec2e171c1d37125057a5f45f3da21d8653e04a3a793589e12e9e80e756b + languageName: node + linkType: hard + +"p-locate@npm:^3.0.0": + version: 3.0.0 + resolution: "p-locate@npm:3.0.0" + dependencies: + p-limit: ^2.0.0 + checksum: 83991734a9854a05fe9dbb29f707ea8a0599391f52daac32b86f08e21415e857ffa60f0e120bfe7ce0cc4faf9274a50239c7895fc0d0579d08411e513b83a4ae + languageName: node + linkType: hard + +"p-locate@npm:^5.0.0": + version: 5.0.0 + resolution: "p-locate@npm:5.0.0" + dependencies: + p-limit: ^3.0.2 + checksum: 1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3 + languageName: node + linkType: hard + +"p-locate@npm:^6.0.0": + version: 6.0.0 + resolution: "p-locate@npm:6.0.0" + dependencies: + p-limit: ^4.0.0 + checksum: 2bfe5234efa5e7a4e74b30a5479a193fdd9236f8f6b4d2f3f69e3d286d9a7d7ab0c118a2a50142efcf4e41625def635bd9332d6cbf9cc65d85eb0718c579ab38 + languageName: node + linkType: hard + +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: ^3.0.0 + checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c + languageName: node + linkType: hard + +"p-retry@npm:^4.5.0": + version: 4.6.2 + resolution: "p-retry@npm:4.6.2" + dependencies: + "@types/retry": 0.12.0 + retry: ^0.13.1 + checksum: 45c270bfddaffb4a895cea16cb760dcc72bdecb6cb45fef1971fa6ea2e91ddeafddefe01e444ac73e33b1b3d5d29fb0dd18a7effb294262437221ddc03ce0f2e + languageName: node + linkType: hard + +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae + languageName: node + linkType: hard + +"package-json-from-dist@npm:^1.0.0": + version: 1.0.0 + resolution: "package-json-from-dist@npm:1.0.0" + checksum: ac706ec856a5a03f5261e4e48fa974f24feb044d51f84f8332e2af0af04fbdbdd5bbbfb9cbbe354190409bc8307c83a9e38c6672c3c8855f709afb0006a009ea + languageName: node + linkType: hard + +"package-json@npm:^8.1.0": + version: 8.1.1 + resolution: "package-json@npm:8.1.1" + dependencies: + got: ^12.1.0 + registry-auth-token: ^5.0.1 + registry-url: ^6.0.0 + semver: ^7.3.7 + checksum: 28bec6f42bf9fba66b7c8fea07576fc23d08ec7923433f7835d6cd8654e72169d74f9738b3785107d18a476ae76712e0daeb1dddcd6930e69f9e4b47eba7c0ca + languageName: node + linkType: hard + +"param-case@npm:^3.0.4": + version: 3.0.4 + resolution: "param-case@npm:3.0.4" + dependencies: + dot-case: ^3.0.4 + tslib: ^2.0.3 + checksum: b34227fd0f794e078776eb3aa6247442056cb47761e9cd2c4c881c86d84c64205f6a56ef0d70b41ee7d77da02c3f4ed2f88e3896a8fefe08bdfb4deca037c687 + languageName: node + linkType: hard + +"parent-module@npm:^1.0.0": + version: 1.0.1 + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: ^3.0.0 + checksum: 6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff + languageName: node + linkType: hard + +"parse-entities@npm:^4.0.0": + version: 4.0.1 + resolution: "parse-entities@npm:4.0.1" + dependencies: + "@types/unist": ^2.0.0 + character-entities: ^2.0.0 + character-entities-legacy: ^3.0.0 + character-reference-invalid: ^2.0.0 + decode-named-character-reference: ^1.0.0 + is-alphanumerical: ^2.0.0 + is-decimal: ^2.0.0 + is-hexadecimal: ^2.0.0 + checksum: 32a6ff5b9acb9d2c4d71537308521fd265e685b9215691df73feedd9edfe041bb6da9f89bd0c35c4a2bc7d58e3e76e399bb6078c2fd7d2a343ff1dd46edbf1bd + languageName: node + linkType: hard + +"parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": + version: 5.2.0 + resolution: "parse-json@npm:5.2.0" + dependencies: + "@babel/code-frame": ^7.0.0 + error-ex: ^1.3.1 + json-parse-even-better-errors: ^2.3.0 + lines-and-columns: ^1.1.6 + checksum: 62085b17d64da57f40f6afc2ac1f4d95def18c4323577e1eced571db75d9ab59b297d1d10582920f84b15985cbfc6b6d450ccbf317644cfa176f3ed982ad87e2 + languageName: node + linkType: hard + +"parse-numeric-range@npm:^1.3.0": + version: 1.3.0 + resolution: "parse-numeric-range@npm:1.3.0" + checksum: 289ca126d5b8ace7325b199218de198014f58ea6895ccc88a5247491d07f0143bf047f80b4a31784f1ca8911762278d7d6ecb90a31dfae31da91cc1a2524c8ce + languageName: node + linkType: hard + +"parse5-htmlparser2-tree-adapter@npm:^7.0.0": + version: 7.0.0 + resolution: "parse5-htmlparser2-tree-adapter@npm:7.0.0" + dependencies: + domhandler: ^5.0.2 + parse5: ^7.0.0 + checksum: fc5d01e07733142a1baf81de5c2a9c41426c04b7ab29dd218acb80cd34a63177c90aff4a4aee66cf9f1d0aeecff1389adb7452ad6f8af0a5888e3e9ad6ef733d + languageName: node + linkType: hard + +"parse5@npm:^7.0.0": + version: 7.1.2 + resolution: "parse5@npm:7.1.2" + dependencies: + entities: ^4.4.0 + checksum: 59465dd05eb4c5ec87b76173d1c596e152a10e290b7abcda1aecf0f33be49646ea74840c69af975d7887543ea45564801736356c568d6b5e71792fd0f4055713 + languageName: node + linkType: hard + +"parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": + version: 1.3.3 + resolution: "parseurl@npm:1.3.3" + checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 + languageName: node + linkType: hard + +"pascal-case@npm:^3.1.2": + version: 3.1.2 + resolution: "pascal-case@npm:3.1.2" + dependencies: + no-case: ^3.0.4 + tslib: ^2.0.3 + checksum: ba98bfd595fc91ef3d30f4243b1aee2f6ec41c53b4546bfa3039487c367abaa182471dcfc830a1f9e1a0df00c14a370514fa2b3a1aacc68b15a460c31116873e + languageName: node + linkType: hard + +"path-exists@npm:^3.0.0": + version: 3.0.0 + resolution: "path-exists@npm:3.0.0" + checksum: 96e92643aa34b4b28d0de1cd2eba52a1c5313a90c6542d03f62750d82480e20bfa62bc865d5cfc6165f5fcd5aeb0851043c40a39be5989646f223300021bae0a + languageName: node + linkType: hard + +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 + languageName: node + linkType: hard + +"path-exists@npm:^5.0.0": + version: 5.0.0 + resolution: "path-exists@npm:5.0.0" + checksum: 8ca842868cab09423994596eb2c5ec2a971c17d1a3cb36dbf060592c730c725cd524b9067d7d2a1e031fef9ba7bd2ac6dc5ec9fb92aa693265f7be3987045254 + languageName: node + linkType: hard + +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 + languageName: node + linkType: hard + +"path-is-inside@npm:1.0.2": + version: 1.0.2 + resolution: "path-is-inside@npm:1.0.2" + checksum: 0b5b6c92d3018b82afb1f74fe6de6338c4c654de4a96123cb343f2b747d5606590ac0c890f956ed38220a4ab59baddfd7b713d78a62d240b20b14ab801fa02cb + languageName: node + linkType: hard + +"path-key@npm:^3.0.0, path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 + languageName: node + linkType: hard + +"path-parse@npm:^1.0.7": + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a + languageName: node + linkType: hard + +"path-scurry@npm:^1.11.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" + dependencies: + lru-cache: ^10.2.0 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + checksum: 890d5abcd593a7912dcce7cf7c6bf7a0b5648e3dee6caf0712c126ca0a65c7f3d7b9d769072a4d1baf370f61ce493ab5b038d59988688e0c5f3f646ee3c69023 + languageName: node + linkType: hard + +"path-to-regexp@npm:0.1.7": + version: 0.1.7 + resolution: "path-to-regexp@npm:0.1.7" + checksum: 69a14ea24db543e8b0f4353305c5eac6907917031340e5a8b37df688e52accd09e3cebfe1660b70d76b6bd89152f52183f28c74813dbf454ba1a01c82a38abce + languageName: node + linkType: hard + +"path-to-regexp@npm:2.2.1": + version: 2.2.1 + resolution: "path-to-regexp@npm:2.2.1" + checksum: b921a74e7576e25b06ad1635abf7e8125a29220d2efc2b71d74b9591f24a27e6f09078fa9a1b27516a097ea0637b7cab79d19b83d7f36a8ef3ef5422770e89d9 + languageName: node + linkType: hard + +"path-to-regexp@npm:^1.7.0": + version: 1.8.0 + resolution: "path-to-regexp@npm:1.8.0" + dependencies: + isarray: 0.0.1 + checksum: 709f6f083c0552514ef4780cb2e7e4cf49b0cc89a97439f2b7cc69a608982b7690fb5d1720a7473a59806508fc2dae0be751ba49f495ecf89fd8fbc62abccbcd + languageName: node + linkType: hard + +"path-type@npm:^4.0.0": + version: 4.0.0 + resolution: "path-type@npm:4.0.0" + checksum: 5b1e2daa247062061325b8fdbfd1fb56dde0a448fb1455453276ea18c60685bdad23a445dc148cf87bc216be1573357509b7d4060494a6fd768c7efad833ee45 + languageName: node + linkType: hard + +"periscopic@npm:^3.0.0": + version: 3.1.0 + resolution: "periscopic@npm:3.1.0" + dependencies: + "@types/estree": ^1.0.0 + estree-walker: ^3.0.0 + is-reference: ^3.0.0 + checksum: 2153244352e58a0d76e7e8d9263e66fe74509495f809af388da20045fb30aa3e93f2f94468dc0b9166ecf206fcfc0d73d2c7641c6fbedc07b1de858b710142cb + languageName: node + linkType: hard + +"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1": + version: 1.0.1 + resolution: "picocolors@npm:1.0.1" + checksum: fa68166d1f56009fc02a34cdfd112b0dd3cf1ef57667ac57281f714065558c01828cdf4f18600ad6851cbe0093952ed0660b1e0156bddf2184b6aaf5817553a5 + languageName: node + linkType: hard + +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf + languageName: node + linkType: hard + +"pkg-dir@npm:^7.0.0": + version: 7.0.0 + resolution: "pkg-dir@npm:7.0.0" + dependencies: + find-up: ^6.3.0 + checksum: 94298b20a446bfbbd66604474de8a0cdd3b8d251225170970f15d9646f633e056c80520dd5b4c1d1050c9fed8f6a9e5054b141c93806439452efe72e57562c03 + languageName: node + linkType: hard + +"pkg-up@npm:^3.1.0": + version: 3.1.0 + resolution: "pkg-up@npm:3.1.0" + dependencies: + find-up: ^3.0.0 + checksum: 5bac346b7c7c903613c057ae3ab722f320716199d753f4a7d053d38f2b5955460f3e6ab73b4762c62fd3e947f58e04f1343e92089e7bb6091c90877406fcd8c8 + languageName: node + linkType: hard + +"postcss-calc@npm:^9.0.1": + version: 9.0.1 + resolution: "postcss-calc@npm:9.0.1" + dependencies: + postcss-selector-parser: ^6.0.11 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.2 + checksum: 7327ed83bfec544ab8b3e38353baa72ff6d04378b856db4ad82dbd68ce0b73668867ef182b5d4025f9dd9aa9c64aacc50cd1bd9db8d8b51ccc4cb97866b9d72b + languageName: node + linkType: hard + +"postcss-colormin@npm:^6.1.0": + version: 6.1.0 + resolution: "postcss-colormin@npm:6.1.0" + dependencies: + browserslist: ^4.23.0 + caniuse-api: ^3.0.0 + colord: ^2.9.3 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.4.31 + checksum: 55a1525de345d953bc7f32ecaa5ee6275ef0277c27d1f97ff06a1bd1a2fedf7f254e36dc1500621f1df20c25a6d2485a74a0b527d8ff74eb90726c76efe2ac8e + languageName: node + linkType: hard + +"postcss-convert-values@npm:^6.1.0": + version: 6.1.0 + resolution: "postcss-convert-values@npm:6.1.0" + dependencies: + browserslist: ^4.23.0 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.4.31 + checksum: 43e9f66af9bdec3c76695f9dde36885abc01f662c370c490b45d895459caab2c5792f906f3ddad107129133e41485a65634da7f699eef916a636e47f6a37a299 + languageName: node + linkType: hard + +"postcss-discard-comments@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-discard-comments@npm:6.0.2" + peerDependencies: + postcss: ^8.4.31 + checksum: c1731ccc8d1e3d910412a61395988d3033365e6532d9e5432ad7c74add8c9dcb0af0c03d4e901bf0d2b59ea4e7297a0c77a547ff2ed1b1cc065559cc0de43b4e + languageName: node + linkType: hard + +"postcss-discard-duplicates@npm:^6.0.3": + version: 6.0.3 + resolution: "postcss-discard-duplicates@npm:6.0.3" + peerDependencies: + postcss: ^8.4.31 + checksum: 308e3fb84c35e4703532de1efa5d6e8444cc5f167d0e40f42d7ea3fa3a37d9d636fd10729847d078e0c303eee16f8548d14b6f88a3fce4e38a2b452648465175 + languageName: node + linkType: hard + +"postcss-discard-empty@npm:^6.0.3": + version: 6.0.3 + resolution: "postcss-discard-empty@npm:6.0.3" + peerDependencies: + postcss: ^8.4.31 + checksum: bad305572faa066026a295faab37e718cee096589ab827b19c990c55620b2b2a1ce9f0145212651737a66086db01b2676c1927bbb8408c5f9cb42686d5959f00 + languageName: node + linkType: hard + +"postcss-discard-overridden@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-discard-overridden@npm:6.0.2" + peerDependencies: + postcss: ^8.4.31 + checksum: a38e0fe7a36f83cb9b73c1ba9ee2a48cf93c69ec0ea5753935824ffb71e958e58ae0393171c0f3d0014a397469d09bbb0d56bb5ab80f0280722967e2e273aebb + languageName: node + linkType: hard + +"postcss-discard-unused@npm:^6.0.5": + version: 6.0.5 + resolution: "postcss-discard-unused@npm:6.0.5" + dependencies: + postcss-selector-parser: ^6.0.16 + peerDependencies: + postcss: ^8.4.31 + checksum: 7962640773240186de38125f142a6555b7f9b2493c4968e0f0b11c6629b2bf43ac70b9fc4ee78aa732d82670ad8bf802b2febc9a9864b022eb68530eded26836 + languageName: node + linkType: hard + +"postcss-loader@npm:^7.3.3": + version: 7.3.4 + resolution: "postcss-loader@npm:7.3.4" + dependencies: + cosmiconfig: ^8.3.5 + jiti: ^1.20.0 + semver: ^7.5.4 + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + checksum: f109eb266580eb296441a1ae057f93629b9b79ad962bdd3fc134417180431606a5419b6f5848c31e6d92c818e71fe96e4335a85cc5332c2f7b14e2869951e5b3 + languageName: node + linkType: hard + +"postcss-merge-idents@npm:^6.0.3": + version: 6.0.3 + resolution: "postcss-merge-idents@npm:6.0.3" + dependencies: + cssnano-utils: ^4.0.2 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.4.31 + checksum: b45780d6d103b8e45a580032747ee6e1842f81863672341a6b4961397e243ca896217bf1f3ee732376a766207d5f610ba8924cf08cf6d5bbd4b093133fd05d70 + languageName: node + linkType: hard + +"postcss-merge-longhand@npm:^6.0.5": + version: 6.0.5 + resolution: "postcss-merge-longhand@npm:6.0.5" + dependencies: + postcss-value-parser: ^4.2.0 + stylehacks: ^6.1.1 + peerDependencies: + postcss: ^8.4.31 + checksum: 9ae5acf47dc0c1f494684ae55672d55bba7f5ee11c9c0f266aabd7c798e9f7394c6096363cd95685fd21ef088740389121a317772cf523ca22c915009bca2617 + languageName: node + linkType: hard + +"postcss-merge-rules@npm:^6.1.1": + version: 6.1.1 + resolution: "postcss-merge-rules@npm:6.1.1" + dependencies: + browserslist: ^4.23.0 + caniuse-api: ^3.0.0 + cssnano-utils: ^4.0.2 + postcss-selector-parser: ^6.0.16 + peerDependencies: + postcss: ^8.4.31 + checksum: 43f60a1c88806491cf752ae7871676de0e7a2a9d6d2fc6bc894068cc35a910a63d30f7c7d79545e0926c8b3a9ec583e5e8357203c40b5bad5ff58133b0c900f6 + languageName: node + linkType: hard + +"postcss-minify-font-values@npm:^6.1.0": + version: 6.1.0 + resolution: "postcss-minify-font-values@npm:6.1.0" + dependencies: + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.4.31 + checksum: 985e4dd2f89220a4442a822aad7dff016ab58a9dbb7bbca9d01c2d07d5a1e7d8c02e1c6e836abb4c9b4e825b4b80d99ee1f5899e74bf0d969095037738e6e452 + languageName: node + linkType: hard + +"postcss-minify-gradients@npm:^6.0.3": + version: 6.0.3 + resolution: "postcss-minify-gradients@npm:6.0.3" + dependencies: + colord: ^2.9.3 + cssnano-utils: ^4.0.2 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.4.31 + checksum: 89b95088c3830f829f6d4636d1be4d4f13300bf9f1577c48c25169c81e11ec0026760b9abb32112b95d2c622f09d3b737f4d2975a7842927ccb567e1002ef7b3 + languageName: node + linkType: hard + +"postcss-minify-params@npm:^6.1.0": + version: 6.1.0 + resolution: "postcss-minify-params@npm:6.1.0" + dependencies: + browserslist: ^4.23.0 + cssnano-utils: ^4.0.2 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.4.31 + checksum: 1e1cc3057d9bcc532c70e40628e96e3aea0081d8072dffe983a270a8cd59c03ac585e57d036b70e43d4ee725f274a05a6a8efac5a715f448284e115c13f82a46 + languageName: node + linkType: hard + +"postcss-minify-selectors@npm:^6.0.4": + version: 6.0.4 + resolution: "postcss-minify-selectors@npm:6.0.4" + dependencies: + postcss-selector-parser: ^6.0.16 + peerDependencies: + postcss: ^8.4.31 + checksum: 150221a84422ca7627c67ee691ee51e0fe2c3583c8108801e9fc93d3be8b538c2eb04fcfdc908270d7eeaeaf01594a20b81311690a873efccb8a23aeafe1c354 + languageName: node + linkType: hard + +"postcss-modules-extract-imports@npm:^3.1.0": + version: 3.1.0 + resolution: "postcss-modules-extract-imports@npm:3.1.0" + peerDependencies: + postcss: ^8.1.0 + checksum: b9192e0f4fb3d19431558be6f8af7ca45fc92baaad9b2778d1732a5880cd25c3df2074ce5484ae491e224f0d21345ffc2d419bd51c25b019af76d7a7af88c17f + languageName: node + linkType: hard + +"postcss-modules-local-by-default@npm:^4.0.5": + version: 4.0.5 + resolution: "postcss-modules-local-by-default@npm:4.0.5" + dependencies: + icss-utils: ^5.0.0 + postcss-selector-parser: ^6.0.2 + postcss-value-parser: ^4.1.0 + peerDependencies: + postcss: ^8.1.0 + checksum: ca9b01f4a0a3dfb33e016299e2dfb7e85c3123292f7aec2efc0c6771b9955648598bfb4c1561f7ee9732fb27fb073681233661b32eef98baab43743f96735452 + languageName: node + linkType: hard + +"postcss-modules-scope@npm:^3.2.0": + version: 3.2.0 + resolution: "postcss-modules-scope@npm:3.2.0" + dependencies: + postcss-selector-parser: ^6.0.4 + peerDependencies: + postcss: ^8.1.0 + checksum: 2ffe7e98c1fa993192a39c8dd8ade93fc4f59fbd1336ce34fcedaee0ee3bafb29e2e23fb49189256895b30e4f21af661c6a6a16ef7b17ae2c859301e4a4459ae + languageName: node + linkType: hard + +"postcss-modules-values@npm:^4.0.0": + version: 4.0.0 + resolution: "postcss-modules-values@npm:4.0.0" + dependencies: + icss-utils: ^5.0.0 + peerDependencies: + postcss: ^8.1.0 + checksum: f7f2cdf14a575b60e919ad5ea52fed48da46fe80db2733318d71d523fc87db66c835814940d7d05b5746b0426e44661c707f09bdb83592c16aea06e859409db6 + languageName: node + linkType: hard + +"postcss-normalize-charset@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-normalize-charset@npm:6.0.2" + peerDependencies: + postcss: ^8.4.31 + checksum: 5b8aeb17d61578a8656571cd5d5eefa8d4ee7126a99a41fdd322078002a06f2ae96f649197b9c01067a5f3e38a2e4b03e0e3fda5a0ec9e3d7ad056211ce86156 + languageName: node + linkType: hard + +"postcss-normalize-display-values@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-normalize-display-values@npm:6.0.2" + dependencies: + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.4.31 + checksum: da30a9394b0e4a269ccad8d240693a6cd564bcc60e24db67caee00f70ddfbc070ad76faed64c32e6eec9ed02e92565488b7879d4fd6c40d877c290eadbb0bb28 + languageName: node + linkType: hard + +"postcss-normalize-positions@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-normalize-positions@npm:6.0.2" + dependencies: + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.4.31 + checksum: 44fb77583fae4d71b76e38226cf770570876bcf5af6940dc9aeac7a7e2252896b361e0249044766cff8dad445f925378f06a005d6541597573c20e599a62b516 + languageName: node + linkType: hard + +"postcss-normalize-repeat-style@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-normalize-repeat-style@npm:6.0.2" + dependencies: + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.4.31 + checksum: bebdac63bec6777ead3e265fc12527b261cf8d0da1b7f0abb12bda86fd53b7058e4afe392210ac74dac012e413bb1c2a46a1138c89f82b8bf70b81711f620f8c + languageName: node + linkType: hard + +"postcss-normalize-string@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-normalize-string@npm:6.0.2" + dependencies: + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.4.31 + checksum: 5e8e253c528b542accafc142846fb33643c342a787c86e5b68c6287c7d8f63c5ae7d4d3fc28e3daf80821cc26a91add135e58bdd62ff9c735fca65d994898c7d + languageName: node + linkType: hard + +"postcss-normalize-timing-functions@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-normalize-timing-functions@npm:6.0.2" + dependencies: + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.4.31 + checksum: 1970f5aad04be11f99d51c59e27debb6fd7b49d0fa4a8879062b42c82113f8e520a284448727add3b54de85deefb8bd5fe554f618406586e9ad8fc9d060609f1 + languageName: node + linkType: hard + +"postcss-normalize-unicode@npm:^6.1.0": + version: 6.1.0 + resolution: "postcss-normalize-unicode@npm:6.1.0" + dependencies: + browserslist: ^4.23.0 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.4.31 + checksum: 69ef35d06242061f0c504c128b83752e0f8daa30ebb26734de7d090460910be0b2efd8b17b1d64c3c85b95831a041faad9ad0aaba80e239406a79cfad3d63568 + languageName: node + linkType: hard + +"postcss-normalize-url@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-normalize-url@npm:6.0.2" + dependencies: + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.4.31 + checksum: bef51a18bbfee4fbf0381fec3c91e6c0dace36fca053bbd5f228e653d2732b6df3985525d79c4f7fc89f840ed07eb6d226e9d7503ecdc6f16d6d80cacae9df33 + languageName: node + linkType: hard + +"postcss-normalize-whitespace@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-normalize-whitespace@npm:6.0.2" + dependencies: + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.4.31 + checksum: 6081eb3a4b305749eec02c00a95c2d236336a77ee636bb1d939f18d5dfa5ba82b7cf7fa072e83f9133d0bc984276596af3fe468bdd67c742ce69e9c63dbc218d + languageName: node + linkType: hard + +"postcss-ordered-values@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-ordered-values@npm:6.0.2" + dependencies: + cssnano-utils: ^4.0.2 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.4.31 + checksum: c3d96177b4ffa43754e835e30c40043cc75ab1e95eb6c55ac8723eb48c13a12e986250e63d96619bbbd1a098876a1c0c1b3b7a8e1de1108a009cf7aa0beac834 + languageName: node + linkType: hard + +"postcss-reduce-idents@npm:^6.0.3": + version: 6.0.3 + resolution: "postcss-reduce-idents@npm:6.0.3" + dependencies: + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.4.31 + checksum: 1feff316838f947386c908f50807cf1b9589fd09b8e8df633a01f2640af5492833cc892448938ceba10ab96826c44767b8f2e1569d587579423f2db81202f7c7 + languageName: node + linkType: hard + +"postcss-reduce-initial@npm:^6.1.0": + version: 6.1.0 + resolution: "postcss-reduce-initial@npm:6.1.0" + dependencies: + browserslist: ^4.23.0 + caniuse-api: ^3.0.0 + peerDependencies: + postcss: ^8.4.31 + checksum: 39e4034ffbf62a041b66944c5cebc4b17f656e76b97568f7f6230b0b886479e5c75b02ae4ba48c472cb0bde47489f9ed1fe6110ae8cff0d7b7165f53c2d64a12 + languageName: node + linkType: hard + +"postcss-reduce-transforms@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-reduce-transforms@npm:6.0.2" + dependencies: + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.4.31 + checksum: c424cc554eb5d253b7687b64925a13fc16759f058795d223854f5a20d9bca641b5f25d0559d03287e63f07a4629c24ac78156adcf604483fcad3c51721da0a08 + languageName: node + linkType: hard + +"postcss-selector-parser@npm:^6.0.11, postcss-selector-parser@npm:^6.0.16, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4": + version: 6.1.1 + resolution: "postcss-selector-parser@npm:6.1.1" + dependencies: + cssesc: ^3.0.0 + util-deprecate: ^1.0.2 + checksum: 1c6a5adfc3c19c6e1e7d94f8addb89a5166fcca72c41f11713043d381ecbe82ce66360c5524e904e17b54f7fc9e6a077994ff31238a456bc7320c3e02e88d92e + languageName: node + linkType: hard + +"postcss-sort-media-queries@npm:^5.2.0": + version: 5.2.0 + resolution: "postcss-sort-media-queries@npm:5.2.0" + dependencies: + sort-css-media-queries: 2.2.0 + peerDependencies: + postcss: ^8.4.23 + checksum: d4a976a64b53234762cc35c06ce97c1684bd7a64ead17e84c2047676c7307945be7c005235e6aac7c4620e1f835d6ba1a7dcf018ab7fe0a47657c62c96ad9f35 + languageName: node + linkType: hard + +"postcss-svgo@npm:^6.0.3": + version: 6.0.3 + resolution: "postcss-svgo@npm:6.0.3" + dependencies: + postcss-value-parser: ^4.2.0 + svgo: ^3.2.0 + peerDependencies: + postcss: ^8.4.31 + checksum: 1a7d1c8dea555884a7791e28ec2c22ea92331731067584ff5a23042a0e615f88fefde04e1140f11c262a728ef9fab6851423b40b9c47f9ae05353bd3c0ff051a + languageName: node + linkType: hard + +"postcss-unique-selectors@npm:^6.0.4": + version: 6.0.4 + resolution: "postcss-unique-selectors@npm:6.0.4" + dependencies: + postcss-selector-parser: ^6.0.16 + peerDependencies: + postcss: ^8.4.31 + checksum: b09df9943b4e858e88b30f3d279ce867a0490df806f1f947d286b0a4e95ba923f1229c385e5bf365f4f124f1edccda41ec18ccad4ba8798d829279d6dc971203 + languageName: node + linkType: hard + +"postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": + version: 4.2.0 + resolution: "postcss-value-parser@npm:4.2.0" + checksum: 819ffab0c9d51cf0acbabf8996dffbfafbafa57afc0e4c98db88b67f2094cb44488758f06e5da95d7036f19556a4a732525e84289a425f4f6fd8e412a9d7442f + languageName: node + linkType: hard + +"postcss-zindex@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-zindex@npm:6.0.2" + peerDependencies: + postcss: ^8.4.31 + checksum: 394119e47b0fb098dc53d1bcf71b5500ab29605fe106526b2e81290bff179174ee00a82a4d4be5a42d4ef4138e8a3d6aabeef3b06cf7cb15b851848c8585d53b + languageName: node + linkType: hard + +"postcss@npm:^8.4.21, postcss@npm:^8.4.24, postcss@npm:^8.4.26, postcss@npm:^8.4.33, postcss@npm:^8.4.38": + version: 8.4.41 + resolution: "postcss@npm:8.4.41" + dependencies: + nanoid: ^3.3.7 + picocolors: ^1.0.1 + source-map-js: ^1.2.0 + checksum: f865894929eb0f7fc2263811cc853c13b1c75103028b3f4f26df777e27b201f1abe21cb4aa4c2e901c80a04f6fb325ee22979688fe55a70e2ea82b0a517d3b6f + languageName: node + linkType: hard + +"pretty-error@npm:^4.0.0": + version: 4.0.0 + resolution: "pretty-error@npm:4.0.0" + dependencies: + lodash: ^4.17.20 + renderkid: ^3.0.0 + checksum: a5b9137365690104ded6947dca2e33360bf55e62a4acd91b1b0d7baa3970e43754c628cc9e16eafbdd4e8f8bcb260a5865475d4fc17c3106ff2d61db4e72cdf3 + languageName: node + linkType: hard + +"pretty-time@npm:^1.1.0": + version: 1.1.0 + resolution: "pretty-time@npm:1.1.0" + checksum: a319e7009aadbc6cfedbd8b66861327d3a0c68bd3e8794bf5b86f62b40b01b9479c5a70c76bb368ad454acce52a1216daee460cc825766e2442c04f3a84a02c9 + languageName: node + linkType: hard + +"prism-react-renderer@npm:^2.3.0": + version: 2.3.1 + resolution: "prism-react-renderer@npm:2.3.1" + dependencies: + "@types/prismjs": ^1.26.0 + clsx: ^2.0.0 + peerDependencies: + react: ">=16.0.0" + checksum: b12a7d502c1e764d94f7d3c84aee9cd6fccc676bb7e21dee94d37eb2e7e62e097a343999e1979887cb83a57cbdea48d2046aa74d07bce05caa25f4c296df30b6 + languageName: node + linkType: hard + +"prismjs@npm:^1.29.0": + version: 1.29.0 + resolution: "prismjs@npm:1.29.0" + checksum: 007a8869d4456ff8049dc59404e32d5666a07d99c3b0e30a18bd3b7676dfa07d1daae9d0f407f20983865fd8da56de91d09cb08e6aa61f5bc420a27c0beeaf93 + languageName: node + linkType: hard + +"proc-log@npm:^4.1.0, proc-log@npm:^4.2.0": + version: 4.2.0 + resolution: "proc-log@npm:4.2.0" + checksum: 98f6cd012d54b5334144c5255ecb941ee171744f45fca8b43b58ae5a0c1af07352475f481cadd9848e7f0250376ee584f6aa0951a856ff8f021bdfbff4eb33fc + languageName: node + linkType: hard + +"process-nextick-args@npm:~2.0.0": + version: 2.0.1 + resolution: "process-nextick-args@npm:2.0.1" + checksum: 1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: ^2.0.2 + retry: ^0.12.0 + checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429 + languageName: node + linkType: hard + +"prompts@npm:^2.4.2": + version: 2.4.2 + resolution: "prompts@npm:2.4.2" + dependencies: + kleur: ^3.0.3 + sisteransi: ^1.0.5 + checksum: d8fd1fe63820be2412c13bfc5d0a01909acc1f0367e32396962e737cb2fc52d004f3302475d5ce7d18a1e8a79985f93ff04ee03007d091029c3f9104bffc007d + languageName: node + linkType: hard + +"prop-types@npm:^15.6.2, prop-types@npm:^15.7.2": + version: 15.8.1 + resolution: "prop-types@npm:15.8.1" + dependencies: + loose-envify: ^1.4.0 + object-assign: ^4.1.1 + react-is: ^16.13.1 + checksum: c056d3f1c057cb7ff8344c645450e14f088a915d078dcda795041765047fa080d38e5d626560ccaac94a4e16e3aa15f3557c1a9a8d1174530955e992c675e459 + languageName: node + linkType: hard + +"property-information@npm:^6.0.0": + version: 6.5.0 + resolution: "property-information@npm:6.5.0" + checksum: 6e55664e2f64083b715011e5bafaa1e694faf36986c235b0907e95d09259cc37c38382e3cc94a4c3f56366e05336443db12c8a0f0968a8c0a1b1416eebfc8f53 + languageName: node + linkType: hard + +"proto-list@npm:~1.2.1": + version: 1.2.4 + resolution: "proto-list@npm:1.2.4" + checksum: 4d4826e1713cbfa0f15124ab0ae494c91b597a3c458670c9714c36e8baddf5a6aad22842776f2f5b137f259c8533e741771445eb8df82e861eea37a6eaba03f7 + languageName: node + linkType: hard + +"proxy-addr@npm:~2.0.7": + version: 2.0.7 + resolution: "proxy-addr@npm:2.0.7" + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + checksum: 29c6990ce9364648255454842f06f8c46fcd124d3e6d7c5066df44662de63cdc0bad032e9bf5a3d653ff72141cc7b6019873d685708ac8210c30458ad99f2b74 + languageName: node + linkType: hard + +"punycode@npm:^1.3.2": + version: 1.4.1 + resolution: "punycode@npm:1.4.1" + checksum: fa6e698cb53db45e4628559e557ddaf554103d2a96a1d62892c8f4032cd3bc8871796cae9eabc1bc700e2b6677611521ce5bb1d9a27700086039965d0cf34518 + languageName: node + linkType: hard + +"punycode@npm:^2.1.0": + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: bb0a0ceedca4c3c57a9b981b90601579058903c62be23c5e8e843d2c2d4148a3ecf029d5133486fb0e1822b098ba8bba09e89d6b21742d02fa26bda6441a6fb2 + languageName: node + linkType: hard + +"pupa@npm:^3.1.0": + version: 3.1.0 + resolution: "pupa@npm:3.1.0" + dependencies: + escape-goat: ^4.0.0 + checksum: 0e4f4ab6bbdce600fa6d23b1833f1af57b2641246ff4cbe10f9d66e4e5479b0de2864a88d5bd629eef59524eda3c6680726acd7f3f873d9ed46b7f095d0bb5f6 + languageName: node + linkType: hard + +"qs@npm:6.11.0": + version: 6.11.0 + resolution: "qs@npm:6.11.0" + dependencies: + side-channel: ^1.0.4 + checksum: 6e1f29dd5385f7488ec74ac7b6c92f4d09a90408882d0c208414a34dd33badc1a621019d4c799a3df15ab9b1d0292f97c1dd71dc7c045e69f81a8064e5af7297 + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc4 + languageName: node + linkType: hard + +"queue@npm:6.0.2": + version: 6.0.2 + resolution: "queue@npm:6.0.2" + dependencies: + inherits: ~2.0.3 + checksum: ebc23639248e4fe40a789f713c20548e513e053b3dc4924b6cb0ad741e3f264dcff948225c8737834dd4f9ec286dbc06a1a7c13858ea382d9379f4303bcc0916 + languageName: node + linkType: hard + +"quick-lru@npm:^5.1.1": + version: 5.1.1 + resolution: "quick-lru@npm:5.1.1" + checksum: a516faa25574be7947969883e6068dbe4aa19e8ef8e8e0fd96cddd6d36485e9106d85c0041a27153286b0770b381328f4072aa40d3b18a19f5f7d2b78b94b5ed + languageName: node + linkType: hard + +"randombytes@npm:^2.1.0": + version: 2.1.0 + resolution: "randombytes@npm:2.1.0" + dependencies: + safe-buffer: ^5.1.0 + checksum: d779499376bd4cbb435ef3ab9a957006c8682f343f14089ed5f27764e4645114196e75b7f6abf1cbd84fd247c0cb0651698444df8c9bf30e62120fbbc52269d6 + languageName: node + linkType: hard + +"range-parser@npm:1.2.0": + version: 1.2.0 + resolution: "range-parser@npm:1.2.0" + checksum: bdf397f43fedc15c559d3be69c01dedf38444ca7a1610f5bf5955e3f3da6057a892f34691e7ebdd8c7e1698ce18ef6c4d4811f70e658dda3ff230ef741f8423a + languageName: node + linkType: hard + +"range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": + version: 1.2.1 + resolution: "range-parser@npm:1.2.1" + checksum: 0a268d4fea508661cf5743dfe3d5f47ce214fd6b7dec1de0da4d669dd4ef3d2144468ebe4179049eff253d9d27e719c88dae55be64f954e80135a0cada804ec9 + languageName: node + linkType: hard + +"raw-body@npm:2.5.2": + version: 2.5.2 + resolution: "raw-body@npm:2.5.2" + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + checksum: ba1583c8d8a48e8fbb7a873fdbb2df66ea4ff83775421bfe21ee120140949ab048200668c47d9ae3880012f6e217052690628cf679ddfbd82c9fc9358d574676 + languageName: node + linkType: hard + +"rc@npm:1.2.8": + version: 1.2.8 + resolution: "rc@npm:1.2.8" + dependencies: + deep-extend: ^0.6.0 + ini: ~1.3.0 + minimist: ^1.2.0 + strip-json-comments: ~2.0.1 + bin: + rc: ./cli.js + checksum: 2e26e052f8be2abd64e6d1dabfbd7be03f80ec18ccbc49562d31f617d0015fbdbcf0f9eed30346ea6ab789e0fdfe4337f033f8016efdbee0df5354751842080e + languageName: node + linkType: hard + +"react-dev-utils@npm:^12.0.1": + version: 12.0.1 + resolution: "react-dev-utils@npm:12.0.1" + dependencies: + "@babel/code-frame": ^7.16.0 + address: ^1.1.2 + browserslist: ^4.18.1 + chalk: ^4.1.2 + cross-spawn: ^7.0.3 + detect-port-alt: ^1.1.6 + escape-string-regexp: ^4.0.0 + filesize: ^8.0.6 + find-up: ^5.0.0 + fork-ts-checker-webpack-plugin: ^6.5.0 + global-modules: ^2.0.0 + globby: ^11.0.4 + gzip-size: ^6.0.0 + immer: ^9.0.7 + is-root: ^2.1.0 + loader-utils: ^3.2.0 + open: ^8.4.0 + pkg-up: ^3.1.0 + prompts: ^2.4.2 + react-error-overlay: ^6.0.11 + recursive-readdir: ^2.2.2 + shell-quote: ^1.7.3 + strip-ansi: ^6.0.1 + text-table: ^0.2.0 + checksum: 2c6917e47f03d9595044770b0f883a61c6b660fcaa97b8ba459a1d57c9cca9aa374cd51296b22d461ff5e432105dbe6f04732dab128e52729c79239e1c23ab56 + languageName: node + linkType: hard + +"react-dom@npm:^18.0.0": + version: 18.3.1 + resolution: "react-dom@npm:18.3.1" + dependencies: + loose-envify: ^1.1.0 + scheduler: ^0.23.2 + peerDependencies: + react: ^18.3.1 + checksum: 298954ecd8f78288dcaece05e88b570014d8f6dce5db6f66e6ee91448debeb59dcd31561dddb354eee47e6c1bb234669459060deb238ed0213497146e555a0b9 + languageName: node + linkType: hard + +"react-error-overlay@npm:^6.0.11": + version: 6.0.11 + resolution: "react-error-overlay@npm:6.0.11" + checksum: ce7b44c38fadba9cedd7c095cf39192e632daeccf1d0747292ed524f17dcb056d16bc197ddee5723f9dd888f0b9b19c3b486c430319e30504289b9296f2d2c42 + languageName: node + linkType: hard + +"react-fast-compare@npm:^3.2.0, react-fast-compare@npm:^3.2.2": + version: 3.2.2 + resolution: "react-fast-compare@npm:3.2.2" + checksum: 2071415b4f76a3e6b55c84611c4d24dcb12ffc85811a2840b5a3f1ff2d1a99be1020d9437ee7c6e024c9f4cbb84ceb35e48cf84f28fcb00265ad2dfdd3947704 + languageName: node + linkType: hard + +"react-helmet-async@npm:*": + version: 2.0.5 + resolution: "react-helmet-async@npm:2.0.5" + dependencies: + invariant: ^2.2.4 + react-fast-compare: ^3.2.2 + shallowequal: ^1.1.0 + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 + checksum: cc2d13496f6fdee6b5f9472d3f7369db3e70e4fc1a55793708c2bbd90d48b0dedc725fd066f987c7a3d74b03a29bd5e65b9f40fa29bd8239e7cfb526aff4d4b6 + languageName: node + linkType: hard + +"react-helmet-async@npm:^1.3.0": + version: 1.3.0 + resolution: "react-helmet-async@npm:1.3.0" + dependencies: + "@babel/runtime": ^7.12.5 + invariant: ^2.2.4 + prop-types: ^15.7.2 + react-fast-compare: ^3.2.0 + shallowequal: ^1.1.0 + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 + checksum: 7ca7e47f8af14ea186688b512a87ab912bf6041312b297f92516341b140b3f0f8aedf5a44d226d99e69ed067b0cc106e38aeb9c9b738ffcc63d10721c844db90 + languageName: node + linkType: hard + +"react-is@npm:^16.13.1, react-is@npm:^16.6.0, react-is@npm:^16.7.0": + version: 16.13.1 + resolution: "react-is@npm:16.13.1" + checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f + languageName: node + linkType: hard + +"react-json-view-lite@npm:^1.2.0": + version: 1.4.0 + resolution: "react-json-view-lite@npm:1.4.0" + peerDependencies: + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + checksum: 420921258478da46a54887b6e4740e6cf21c7264eba95c33d6264fdf71c482f0746c1345eb187a4a52b31d2a3a951f88c7af338b9fccbced2a918751dd98c844 + languageName: node + linkType: hard + +"react-loadable-ssr-addon-v5-slorber@npm:^1.0.1": + version: 1.0.1 + resolution: "react-loadable-ssr-addon-v5-slorber@npm:1.0.1" + dependencies: + "@babel/runtime": ^7.10.3 + peerDependencies: + react-loadable: "*" + webpack: ">=4.41.1 || 5.x" + checksum: 1cf7ceb488d329a5be15f891dae16727fb7ade08ef57826addd21e2c3d485e2440259ef8be94f4d54e9afb4bcbd2fcc22c3c5bad92160c9c06ae6ba7b5562497 + languageName: node + linkType: hard + +"react-loadable@npm:@docusaurus/react-loadable@6.0.0": + version: 6.0.0 + resolution: "@docusaurus/react-loadable@npm:6.0.0" + dependencies: + "@types/react": "*" + peerDependencies: + react: "*" + checksum: 4c32061b2fc10689d5d8ba11ead71b69e4c8a55fcfeafb551a6747b1a7b496c4f2d8dbb5d023f5cafc2a9aea9d14582bdb324d11e6f9b8c3049d45b74439203f + languageName: node + linkType: hard + +"react-router-config@npm:^5.1.1": + version: 5.1.1 + resolution: "react-router-config@npm:5.1.1" + dependencies: + "@babel/runtime": ^7.1.2 + peerDependencies: + react: ">=15" + react-router: ">=5" + checksum: bde7ee79444454bf7c3737fd9c5c268021012c8cc37bc19116b2e7daa28c4231598c275816c7f32c16f9f974dc707b91de279291a5e39efce2e1b1569355b87a + languageName: node + linkType: hard + +"react-router-dom@npm:^5.3.4": + version: 5.3.4 + resolution: "react-router-dom@npm:5.3.4" + dependencies: + "@babel/runtime": ^7.12.13 + history: ^4.9.0 + loose-envify: ^1.3.1 + prop-types: ^15.6.2 + react-router: 5.3.4 + tiny-invariant: ^1.0.2 + tiny-warning: ^1.0.0 + peerDependencies: + react: ">=15" + checksum: b86a6f2f5222f041e38adf4e4b32c7643d6735a1a915ef25855b2db285fd059d72ba8d62e5bcd5d822b8ef9520a80453209e55077f5a90d0f72e908979b8f535 + languageName: node + linkType: hard + +"react-router@npm:5.3.4, react-router@npm:^5.3.4": + version: 5.3.4 + resolution: "react-router@npm:5.3.4" + dependencies: + "@babel/runtime": ^7.12.13 + history: ^4.9.0 + hoist-non-react-statics: ^3.1.0 + loose-envify: ^1.3.1 + path-to-regexp: ^1.7.0 + prop-types: ^15.6.2 + react-is: ^16.6.0 + tiny-invariant: ^1.0.2 + tiny-warning: ^1.0.0 + peerDependencies: + react: ">=15" + checksum: 892d4e274a23bf4f39abc2efca54472fb646d3aed4b584020cf49654d2f50d09a2bacebe7c92b4ec7cb8925077376dfcd0664bad6442a73604397cefec9f01f9 + languageName: node + linkType: hard + +"react@npm:^18.0.0": + version: 18.3.1 + resolution: "react@npm:18.3.1" + dependencies: + loose-envify: ^1.1.0 + checksum: a27bcfa8ff7c15a1e50244ad0d0c1cb2ad4375eeffefd266a64889beea6f6b64c4966c9b37d14ee32d6c9fcd5aa6ba183b6988167ab4d127d13e7cb5b386a376 + languageName: node + linkType: hard + +"readable-stream@npm:^2.0.1": + version: 2.3.8 + resolution: "readable-stream@npm:2.3.8" + dependencies: + core-util-is: ~1.0.0 + inherits: ~2.0.3 + isarray: ~1.0.0 + process-nextick-args: ~2.0.0 + safe-buffer: ~5.1.1 + string_decoder: ~1.1.1 + util-deprecate: ~1.0.1 + checksum: 65645467038704f0c8aaf026a72fbb588a9e2ef7a75cd57a01702ee9db1c4a1e4b03aaad36861a6a0926546a74d174149c8c207527963e0c2d3eee2f37678a42 + languageName: node + linkType: hard + +"readable-stream@npm:^3.0.6": + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" + dependencies: + inherits: ^2.0.3 + string_decoder: ^1.1.1 + util-deprecate: ^1.0.1 + checksum: bdcbe6c22e846b6af075e32cf8f4751c2576238c5043169a1c221c92ee2878458a816a4ea33f4c67623c0b6827c8a400409bfb3cf0bf3381392d0b1dfb52ac8d + languageName: node + linkType: hard + +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: ^2.2.1 + checksum: 1ced032e6e45670b6d7352d71d21ce7edf7b9b928494dcaba6f11fba63180d9da6cd7061ebc34175ffda6ff529f481818c962952004d273178acd70f7059b320 + languageName: node + linkType: hard + +"reading-time@npm:^1.5.0": + version: 1.5.0 + resolution: "reading-time@npm:1.5.0" + checksum: e27bc5a70ba0f4ac337896b18531b914d38f4bee67cbad48029d0c11dd0a7a847b2a6bba895ab7ce2ad3e7ecb86912bdc477d8fa2d48405a3deda964be54d09b + languageName: node + linkType: hard + +"rechoir@npm:^0.6.2": + version: 0.6.2 + resolution: "rechoir@npm:0.6.2" + dependencies: + resolve: ^1.1.6 + checksum: fe76bf9c21875ac16e235defedd7cbd34f333c02a92546142b7911a0f7c7059d2e16f441fe6fb9ae203f459c05a31b2bcf26202896d89e390eda7514d5d2702b + languageName: node + linkType: hard + +"recursive-readdir@npm:^2.2.2": + version: 2.2.3 + resolution: "recursive-readdir@npm:2.2.3" + dependencies: + minimatch: ^3.0.5 + checksum: 88ec96e276237290607edc0872b4f9842837b95cfde0cdbb1e00ba9623dfdf3514d44cdd14496ab60a0c2dd180a6ef8a3f1c34599e6cf2273afac9b72a6fb2b5 + languageName: node + linkType: hard + +"regenerate-unicode-properties@npm:^10.1.0": + version: 10.1.1 + resolution: "regenerate-unicode-properties@npm:10.1.1" + dependencies: + regenerate: ^1.4.2 + checksum: b80958ef40f125275824c2c47d5081dfaefebd80bff26c76761e9236767c748a4a95a69c053fe29d2df881177f2ca85df4a71fe70a82360388b31159ef19adcf + languageName: node + linkType: hard + +"regenerate@npm:^1.4.2": + version: 1.4.2 + resolution: "regenerate@npm:1.4.2" + checksum: 3317a09b2f802da8db09aa276e469b57a6c0dd818347e05b8862959c6193408242f150db5de83c12c3fa99091ad95fb42a6db2c3329bfaa12a0ea4cbbeb30cb0 + languageName: node + linkType: hard + +"regenerator-runtime@npm:^0.14.0": + version: 0.14.1 + resolution: "regenerator-runtime@npm:0.14.1" + checksum: 9f57c93277b5585d3c83b0cf76be47b473ae8c6d9142a46ce8b0291a04bb2cf902059f0f8445dcabb3fb7378e5fe4bb4ea1e008876343d42e46d3b484534ce38 + languageName: node + linkType: hard + +"regenerator-transform@npm:^0.15.2": + version: 0.15.2 + resolution: "regenerator-transform@npm:0.15.2" + dependencies: + "@babel/runtime": ^7.8.4 + checksum: 20b6f9377d65954980fe044cfdd160de98df415b4bff38fbade67b3337efaf078308c4fed943067cd759827cc8cfeca9cb28ccda1f08333b85d6a2acbd022c27 + languageName: node + linkType: hard + +"regexpu-core@npm:^5.3.1": + version: 5.3.2 + resolution: "regexpu-core@npm:5.3.2" + dependencies: + "@babel/regjsgen": ^0.8.0 + regenerate: ^1.4.2 + regenerate-unicode-properties: ^10.1.0 + regjsparser: ^0.9.1 + unicode-match-property-ecmascript: ^2.0.0 + unicode-match-property-value-ecmascript: ^2.1.0 + checksum: 95bb97088419f5396e07769b7de96f995f58137ad75fac5811fb5fe53737766dfff35d66a0ee66babb1eb55386ef981feaef392f9df6d671f3c124812ba24da2 + languageName: node + linkType: hard + +"registry-auth-token@npm:^5.0.1": + version: 5.0.2 + resolution: "registry-auth-token@npm:5.0.2" + dependencies: + "@pnpm/npm-conf": ^2.1.0 + checksum: 0d7683b71ee418993e7872b389024b13645c4295eb7bb850d10728eaf46065db24ea4d47dc6cbb71a60d1aa4bef077b0d8b7363c9ac9d355fdba47bebdfb01dd + languageName: node + linkType: hard + +"registry-url@npm:^6.0.0": + version: 6.0.1 + resolution: "registry-url@npm:6.0.1" + dependencies: + rc: 1.2.8 + checksum: 33712aa1b489aab7aba2191c1cdadfdd71f5bf166d4792d81744a6be332c160bd7d9273af8269d8a01284b9562f14a5b31b7abcf7ad9306c44887ecff51c89ab + languageName: node + linkType: hard + +"regjsparser@npm:^0.9.1": + version: 0.9.1 + resolution: "regjsparser@npm:0.9.1" + dependencies: + jsesc: ~0.5.0 + bin: + regjsparser: bin/parser + checksum: 5e1b76afe8f1d03c3beaf9e0d935dd467589c3625f6d65fb8ffa14f224d783a0fed4bf49c2c1b8211043ef92b6117313419edf055a098ed8342e340586741afc + languageName: node + linkType: hard + +"rehype-raw@npm:^7.0.0": + version: 7.0.0 + resolution: "rehype-raw@npm:7.0.0" + dependencies: + "@types/hast": ^3.0.0 + hast-util-raw: ^9.0.0 + vfile: ^6.0.0 + checksum: f9e28dcbf4c6c7d91a97c10a840310f18ef3268aa45abb3e0428b6b191ff3c4fa8f753b910d768588a2dac5c7da7e557b4ddc3f1b6cd252e8d20cb62d60c65ed + languageName: node + linkType: hard + +"relateurl@npm:^0.2.7": + version: 0.2.7 + resolution: "relateurl@npm:0.2.7" + checksum: 5891e792eae1dfc3da91c6fda76d6c3de0333a60aa5ad848982ebb6dccaa06e86385fb1235a1582c680a3d445d31be01c6bfc0804ebbcab5aaf53fa856fde6b6 + languageName: node + linkType: hard + +"remark-directive@npm:^3.0.0": + version: 3.0.0 + resolution: "remark-directive@npm:3.0.0" + dependencies: + "@types/mdast": ^4.0.0 + mdast-util-directive: ^3.0.0 + micromark-extension-directive: ^3.0.0 + unified: ^11.0.0 + checksum: 744d12bbe924bd0492a2481cbaf9250aa6622c0d2cc090bb7bc39975e355c8a46ae13cc4793204ada39f0af64c953f6b730a55420a50375e0f74a5dd5d201089 + languageName: node + linkType: hard + +"remark-emoji@npm:^4.0.0": + version: 4.0.1 + resolution: "remark-emoji@npm:4.0.1" + dependencies: + "@types/mdast": ^4.0.2 + emoticon: ^4.0.1 + mdast-util-find-and-replace: ^3.0.1 + node-emoji: ^2.1.0 + unified: ^11.0.4 + checksum: 2c02d8c0b694535a9f0c4fe39180cb89a8fbd07eb873c94842c34dfde566b8a6703df9d28fe175a8c28584f96252121de722862baa756f2d875f2f1a4352c1f4 + languageName: node + linkType: hard + +"remark-frontmatter@npm:^5.0.0": + version: 5.0.0 + resolution: "remark-frontmatter@npm:5.0.0" + dependencies: + "@types/mdast": ^4.0.0 + mdast-util-frontmatter: ^2.0.0 + micromark-extension-frontmatter: ^2.0.0 + unified: ^11.0.0 + checksum: b36e11d528d1d0172489c74ce7961bb6073f7272e71ea1349f765fc79c4246a758aef949174d371a088c48e458af776fcfbb3b043c49cd1120ca8239aeafe16a + languageName: node + linkType: hard + +"remark-gfm@npm:^4.0.0": + version: 4.0.0 + resolution: "remark-gfm@npm:4.0.0" + dependencies: + "@types/mdast": ^4.0.0 + mdast-util-gfm: ^3.0.0 + micromark-extension-gfm: ^3.0.0 + remark-parse: ^11.0.0 + remark-stringify: ^11.0.0 + unified: ^11.0.0 + checksum: 84bea84e388061fbbb697b4b666089f5c328aa04d19dc544c229b607446bc10902e46b67b9594415a1017bbbd7c811c1f0c30d36682c6d1a6718b66a1558261b + languageName: node + linkType: hard + +"remark-mdx@npm:^3.0.0": + version: 3.0.1 + resolution: "remark-mdx@npm:3.0.1" + dependencies: + mdast-util-mdx: ^3.0.0 + micromark-extension-mdxjs: ^3.0.0 + checksum: e7fcffbe1ccb0c7dfcb01c6d9dbc48df9c668c8321745455db7346f4860c43dbcb98e36e3398a5117d773426ab5ef656a95c78a21208c59e92571f021b8e678e + languageName: node + linkType: hard + +"remark-parse@npm:^11.0.0": + version: 11.0.0 + resolution: "remark-parse@npm:11.0.0" + dependencies: + "@types/mdast": ^4.0.0 + mdast-util-from-markdown: ^2.0.0 + micromark-util-types: ^2.0.0 + unified: ^11.0.0 + checksum: d83d245290fa84bb04fb3e78111f09c74f7417e7c012a64dd8dc04fccc3699036d828fbd8eeec8944f774b6c30cc1d925c98f8c46495ebcee7c595496342ab7f + languageName: node + linkType: hard + +"remark-rehype@npm:^11.0.0": + version: 11.1.0 + resolution: "remark-rehype@npm:11.1.0" + dependencies: + "@types/hast": ^3.0.0 + "@types/mdast": ^4.0.0 + mdast-util-to-hast: ^13.0.0 + unified: ^11.0.0 + vfile: ^6.0.0 + checksum: f0c731f0ab92a122e7f9c9bcbd10d6a31fdb99f0ea3595d232ddd9f9d11a308c4ec0aff4d56e1d0d256042dfad7df23b9941e50b5038da29786959a5926814e1 + languageName: node + linkType: hard + +"remark-stringify@npm:^11.0.0": + version: 11.0.0 + resolution: "remark-stringify@npm:11.0.0" + dependencies: + "@types/mdast": ^4.0.0 + mdast-util-to-markdown: ^2.0.0 + unified: ^11.0.0 + checksum: 59e07460eb629d6c3b3c0f438b0b236e7e6858fd5ab770303078f5a556ec00354d9c7fb9ef6d5f745a4617ac7da1ab618b170fbb4dac120e183fecd9cc86bce6 + languageName: node + linkType: hard + +"renderkid@npm:^3.0.0": + version: 3.0.0 + resolution: "renderkid@npm:3.0.0" + dependencies: + css-select: ^4.1.3 + dom-converter: ^0.2.0 + htmlparser2: ^6.1.0 + lodash: ^4.17.21 + strip-ansi: ^6.0.1 + checksum: 77162b62d6f33ab81f337c39efce0439ff0d1f6d441e29c35183151f83041c7850774fb904da163d6c844264d440d10557714e6daa0b19e4561a5cd4ef305d41 + languageName: node + linkType: hard + +"require-from-string@npm:^2.0.2": + version: 2.0.2 + resolution: "require-from-string@npm:2.0.2" + checksum: a03ef6895445f33a4015300c426699bc66b2b044ba7b670aa238610381b56d3f07c686251740d575e22f4c87531ba662d06937508f0f3c0f1ddc04db3130560b + languageName: node + linkType: hard + +"require-like@npm:>= 0.1.1": + version: 0.1.2 + resolution: "require-like@npm:0.1.2" + checksum: edb8331f05fd807381a75b76f6cca9f0ce8acaa2e910b7e116541799aa970bfbc64fde5fd6adb3a6917dba346f8386ebbddb81614c24e8dad1b4290c7af9535e + languageName: node + linkType: hard + +"requires-port@npm:^1.0.0": + version: 1.0.0 + resolution: "requires-port@npm:1.0.0" + checksum: eee0e303adffb69be55d1a214e415cf42b7441ae858c76dfc5353148644f6fd6e698926fc4643f510d5c126d12a705e7c8ed7e38061113bdf37547ab356797ff + languageName: node + linkType: hard + +"resolve-alpn@npm:^1.2.0": + version: 1.2.1 + resolution: "resolve-alpn@npm:1.2.1" + checksum: f558071fcb2c60b04054c99aebd572a2af97ef64128d59bef7ab73bd50d896a222a056de40ffc545b633d99b304c259ea9d0c06830d5c867c34f0bfa60b8eae0 + languageName: node + linkType: hard + +"resolve-from@npm:^4.0.0": + version: 4.0.0 + resolution: "resolve-from@npm:4.0.0" + checksum: f4ba0b8494846a5066328ad33ef8ac173801a51739eb4d63408c847da9a2e1c1de1e6cbbf72699211f3d13f8fc1325648b169bd15eb7da35688e30a5fb0e4a7f + languageName: node + linkType: hard + +"resolve-pathname@npm:^3.0.0": + version: 3.0.0 + resolution: "resolve-pathname@npm:3.0.0" + checksum: 6147241ba42c423dbe83cb067a2b4af4f60908c3af57e1ea567729cc71416c089737fe2a73e9e79e7a60f00f66c91e4b45ad0d37cd4be2d43fec44963ef14368 + languageName: node + linkType: hard + +"resolve@npm:^1.1.6, resolve@npm:^1.14.2": + version: 1.22.8 + resolution: "resolve@npm:1.22.8" + dependencies: + is-core-module: ^2.13.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: f8a26958aa572c9b064562750b52131a37c29d072478ea32e129063e2da7f83e31f7f11e7087a18225a8561cfe8d2f0df9dbea7c9d331a897571c0a2527dbb4c + languageName: node + linkType: hard + +"resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.14.2#~builtin": + version: 1.22.8 + resolution: "resolve@patch:resolve@npm%3A1.22.8#~builtin::version=1.22.8&hash=c3c19d" + dependencies: + is-core-module: ^2.13.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: 5479b7d431cacd5185f8db64bfcb7286ae5e31eb299f4c4f404ad8aa6098b77599563ac4257cb2c37a42f59dfc06a1bec2bcf283bb448f319e37f0feb9a09847 + languageName: node + linkType: hard + +"responselike@npm:^3.0.0": + version: 3.0.0 + resolution: "responselike@npm:3.0.0" + dependencies: + lowercase-keys: ^3.0.0 + checksum: e0cc9be30df4f415d6d83cdede3c5c887cd4a73e7cc1708bcaab1d50a28d15acb68460ac5b02bcc55a42f3d493729c8856427dcf6e57e6e128ad05cba4cfb95e + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c + languageName: node + linkType: hard + +"retry@npm:^0.13.1": + version: 0.13.1 + resolution: "retry@npm:0.13.1" + checksum: 47c4d5be674f7c13eee4cfe927345023972197dbbdfba5d3af7e461d13b44de1bfd663bfc80d2f601f8ef3fc8164c16dd99655a221921954a65d044a2fc1233b + languageName: node + linkType: hard + +"reusify@npm:^1.0.4": + version: 1.0.4 + resolution: "reusify@npm:1.0.4" + checksum: c3076ebcc22a6bc252cb0b9c77561795256c22b757f40c0d8110b1300723f15ec0fc8685e8d4ea6d7666f36c79ccc793b1939c748bf36f18f542744a4e379fcc + languageName: node + linkType: hard + +"rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: ^7.1.3 + bin: + rimraf: bin.js + checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 + languageName: node + linkType: hard + +"rtl-detect@npm:^1.0.4": + version: 1.1.2 + resolution: "rtl-detect@npm:1.1.2" + checksum: 4a43a1e5df0617eb86d5485640b318787d12b86acf53d840a3b2ff701ee941e95479d4e9ae97e907569ec763d1c47218cb87639bc87bcdad60a85747e5270cf0 + languageName: node + linkType: hard + +"rtlcss@npm:^4.1.0": + version: 4.2.0 + resolution: "rtlcss@npm:4.2.0" + dependencies: + escalade: ^3.1.1 + picocolors: ^1.0.0 + postcss: ^8.4.21 + strip-json-comments: ^3.1.1 + bin: + rtlcss: bin/rtlcss.js + checksum: 5192f12dc7d6a2ee7cf7fe570e6177bacb10e466e8fb42be9faba6f49f13e11f133337edac4468cd6ac35391e9074f47ebb9ff02c5f9049d563cb93d3ec7601b + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: ^1.2.2 + checksum: cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d + languageName: node + linkType: hard + +"safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": + version: 5.1.2 + resolution: "safe-buffer@npm:5.1.2" + checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c + languageName: node + linkType: hard + +"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.2.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 + languageName: node + linkType: hard + +"sax@npm:^1.2.4": + version: 1.4.1 + resolution: "sax@npm:1.4.1" + checksum: 3ad64df16b743f0f2eb7c38ced9692a6d924f1cd07bbe45c39576c2cf50de8290d9d04e7b2228f924c7d05fecc4ec5cf651423278e0c7b63d260c387ef3af84a + languageName: node + linkType: hard + +"scheduler@npm:^0.23.2": + version: 0.23.2 + resolution: "scheduler@npm:0.23.2" + dependencies: + loose-envify: ^1.1.0 + checksum: 3e82d1f419e240ef6219d794ff29c7ee415fbdc19e038f680a10c067108e06284f1847450a210b29bbaf97b9d8a97ced5f624c31c681248ac84c80d56ad5a2c4 + languageName: node + linkType: hard + +"schema-utils@npm:2.7.0": + version: 2.7.0 + resolution: "schema-utils@npm:2.7.0" + dependencies: + "@types/json-schema": ^7.0.4 + ajv: ^6.12.2 + ajv-keywords: ^3.4.1 + checksum: 8889325b0ee1ae6a8f5d6aaa855c71e136ebbb7fd731b01a9d3ec8225dcb245f644c47c50104db4c741983b528cdff8558570021257d4d397ec6aaecd9172a8e + languageName: node + linkType: hard + +"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0": + version: 3.3.0 + resolution: "schema-utils@npm:3.3.0" + dependencies: + "@types/json-schema": ^7.0.8 + ajv: ^6.12.5 + ajv-keywords: ^3.5.2 + checksum: ea56971926fac2487f0757da939a871388891bc87c6a82220d125d587b388f1704788f3706e7f63a7b70e49fc2db974c41343528caea60444afd5ce0fe4b85c0 + languageName: node + linkType: hard + +"schema-utils@npm:^4.0.0, schema-utils@npm:^4.0.1": + version: 4.2.0 + resolution: "schema-utils@npm:4.2.0" + dependencies: + "@types/json-schema": ^7.0.9 + ajv: ^8.9.0 + ajv-formats: ^2.1.1 + ajv-keywords: ^5.1.0 + checksum: 26a0463d47683258106e6652e9aeb0823bf0b85843039e068b57da1892f7ae6b6b1094d48e9ed5ba5cbe9f7166469d880858b9d91abe8bd249421eb813850cde + languageName: node + linkType: hard + +"section-matter@npm:^1.0.0": + version: 1.0.0 + resolution: "section-matter@npm:1.0.0" + dependencies: + extend-shallow: ^2.0.1 + kind-of: ^6.0.0 + checksum: 3cc4131705493b2955729b075dcf562359bba66183debb0332752dc9cad35616f6da7a23e42b6cab45cd2e4bb5cda113e9e84c8f05aee77adb6b0289a0229101 + languageName: node + linkType: hard + +"select-hose@npm:^2.0.0": + version: 2.0.0 + resolution: "select-hose@npm:2.0.0" + checksum: d7e5fcc695a4804209d232a1b18624a5134be334d4e1114b0721f7a5e72bd73da483dcf41528c1af4f4f4892ad7cfd6a1e55c8ffb83f9c9fe723b738db609dbb + languageName: node + linkType: hard + +"selfsigned@npm:^2.1.1": + version: 2.4.1 + resolution: "selfsigned@npm:2.4.1" + dependencies: + "@types/node-forge": ^1.3.0 + node-forge: ^1 + checksum: 38b91c56f1d7949c0b77f9bbe4545b19518475cae15e7d7f0043f87b1626710b011ce89879a88969651f650a19d213bb15b7d5b4c2877df9eeeff7ba8f8b9bfa + languageName: node + linkType: hard + +"semver-diff@npm:^4.0.0": + version: 4.0.0 + resolution: "semver-diff@npm:4.0.0" + dependencies: + semver: ^7.3.5 + checksum: 4a958d6f76c7e7858268e1e2cf936712542441c9e003e561b574167279eee0a9bd55cc7eae1bfb31d3e7ad06a9fc370e7dd412fcfefec8c0daf1ce5aea623559 + languageName: node + linkType: hard + +"semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: ae47d06de28836adb9d3e25f22a92943477371292d9b665fb023fae278d345d508ca1958232af086d85e0155aee22e313e100971898bbb8d5d89b8b1d4054ca2 + languageName: node + linkType: hard + +"semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.4": + version: 7.6.3 + resolution: "semver@npm:7.6.3" + bin: + semver: bin/semver.js + checksum: 4110ec5d015c9438f322257b1c51fe30276e5f766a3f64c09edd1d7ea7118ecbc3f379f3b69032bacf13116dc7abc4ad8ce0d7e2bd642e26b0d271b56b61a7d8 + languageName: node + linkType: hard + +"send@npm:0.18.0": + version: 0.18.0 + resolution: "send@npm:0.18.0" + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: ~1.0.2 + escape-html: ~1.0.3 + etag: ~1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: ~1.2.1 + statuses: 2.0.1 + checksum: 74fc07ebb58566b87b078ec63e5a3e41ecd987e4272ba67b7467e86c6ad51bc6b0b0154133b6d8b08a2ddda360464f71382f7ef864700f34844a76c8027817a8 + languageName: node + linkType: hard + +"serialize-javascript@npm:^6.0.0, serialize-javascript@npm:^6.0.1": + version: 6.0.2 + resolution: "serialize-javascript@npm:6.0.2" + dependencies: + randombytes: ^2.1.0 + checksum: c4839c6206c1d143c0f80763997a361310305751171dd95e4b57efee69b8f6edd8960a0b7fbfc45042aadff98b206d55428aee0dc276efe54f100899c7fa8ab7 + languageName: node + linkType: hard + +"serve-handler@npm:^6.1.5": + version: 6.1.5 + resolution: "serve-handler@npm:6.1.5" + dependencies: + bytes: 3.0.0 + content-disposition: 0.5.2 + fast-url-parser: 1.1.3 + mime-types: 2.1.18 + minimatch: 3.1.2 + path-is-inside: 1.0.2 + path-to-regexp: 2.2.1 + range-parser: 1.2.0 + checksum: 7a98ca9cbf8692583b6cde4deb3941cff900fa38bf16adbfccccd8430209bab781e21d9a1f61c9c03e226f9f67689893bbce25941368f3ddaf985fc3858b49dc + languageName: node + linkType: hard + +"serve-index@npm:^1.9.1": + version: 1.9.1 + resolution: "serve-index@npm:1.9.1" + dependencies: + accepts: ~1.3.4 + batch: 0.6.1 + debug: 2.6.9 + escape-html: ~1.0.3 + http-errors: ~1.6.2 + mime-types: ~2.1.17 + parseurl: ~1.3.2 + checksum: e2647ce13379485b98a53ba2ea3fbad4d44b57540d00663b02b976e426e6194d62ac465c0d862cb7057f65e0de8ab8a684aa095427a4b8612412eca0d300d22f + languageName: node + linkType: hard + +"serve-static@npm:1.15.0": + version: 1.15.0 + resolution: "serve-static@npm:1.15.0" + dependencies: + encodeurl: ~1.0.2 + escape-html: ~1.0.3 + parseurl: ~1.3.3 + send: 0.18.0 + checksum: af57fc13be40d90a12562e98c0b7855cf6e8bd4c107fe9a45c212bf023058d54a1871b1c89511c3958f70626fff47faeb795f5d83f8cf88514dbaeb2b724464d + languageName: node + linkType: hard + +"set-function-length@npm:^1.2.1": + version: 1.2.2 + resolution: "set-function-length@npm:1.2.2" + dependencies: + define-data-property: ^1.1.4 + es-errors: ^1.3.0 + function-bind: ^1.1.2 + get-intrinsic: ^1.2.4 + gopd: ^1.0.1 + has-property-descriptors: ^1.0.2 + checksum: a8248bdacdf84cb0fab4637774d9fb3c7a8e6089866d04c817583ff48e14149c87044ce683d7f50759a8c50fb87c7a7e173535b06169c87ef76f5fb276dfff72 + languageName: node + linkType: hard + +"setprototypeof@npm:1.1.0": + version: 1.1.0 + resolution: "setprototypeof@npm:1.1.0" + checksum: 27cb44304d6c9e1a23bc6c706af4acaae1a7aa1054d4ec13c05f01a99fd4887109a83a8042b67ad90dbfcd100d43efc171ee036eb080667172079213242ca36e + languageName: node + linkType: hard + +"setprototypeof@npm:1.2.0": + version: 1.2.0 + resolution: "setprototypeof@npm:1.2.0" + checksum: be18cbbf70e7d8097c97f713a2e76edf84e87299b40d085c6bf8b65314e994cc15e2e317727342fa6996e38e1f52c59720b53fe621e2eb593a6847bf0356db89 + languageName: node + linkType: hard + +"shallow-clone@npm:^3.0.0": + version: 3.0.1 + resolution: "shallow-clone@npm:3.0.1" + dependencies: + kind-of: ^6.0.2 + checksum: 39b3dd9630a774aba288a680e7d2901f5c0eae7b8387fc5c8ea559918b29b3da144b7bdb990d7ccd9e11be05508ac9e459ce51d01fd65e583282f6ffafcba2e7 + languageName: node + linkType: hard + +"shallowequal@npm:^1.1.0": + version: 1.1.0 + resolution: "shallowequal@npm:1.1.0" + checksum: f4c1de0837f106d2dbbfd5d0720a5d059d1c66b42b580965c8f06bb1db684be8783538b684092648c981294bf817869f743a066538771dbecb293df78f765e00 + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: ^3.0.0 + checksum: 6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 + languageName: node + linkType: hard + +"shell-quote@npm:^1.7.3, shell-quote@npm:^1.8.1": + version: 1.8.1 + resolution: "shell-quote@npm:1.8.1" + checksum: 5f01201f4ef504d4c6a9d0d283fa17075f6770bfbe4c5850b074974c68062f37929ca61700d95ad2ac8822e14e8c4b990ca0e6e9272e64befd74ce5e19f0736b + languageName: node + linkType: hard + +"shelljs@npm:^0.8.5": + version: 0.8.5 + resolution: "shelljs@npm:0.8.5" + dependencies: + glob: ^7.0.0 + interpret: ^1.0.0 + rechoir: ^0.6.2 + bin: + shjs: bin/shjs + checksum: 7babc46f732a98f4c054ec1f048b55b9149b98aa2da32f6cf9844c434b43c6251efebd6eec120937bd0999e13811ebd45efe17410edb3ca938f82f9381302748 + languageName: node + linkType: hard + +"side-channel@npm:^1.0.4": + version: 1.0.6 + resolution: "side-channel@npm:1.0.6" + dependencies: + call-bind: ^1.0.7 + es-errors: ^1.3.0 + get-intrinsic: ^1.2.4 + object-inspect: ^1.13.1 + checksum: bfc1afc1827d712271453e91b7cd3878ac0efd767495fd4e594c4c2afaa7963b7b510e249572bfd54b0527e66e4a12b61b80c061389e129755f34c493aad9b97 + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 + languageName: node + linkType: hard + +"signal-exit@npm:^4.0.1": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 64c757b498cb8629ffa5f75485340594d2f8189e9b08700e69199069c8e3070fb3e255f7ab873c05dc0b3cec412aea7402e10a5990cb6a050bd33ba062a6c549 + languageName: node + linkType: hard + +"sirv@npm:^2.0.3": + version: 2.0.4 + resolution: "sirv@npm:2.0.4" + dependencies: + "@polka/url": ^1.0.0-next.24 + mrmime: ^2.0.0 + totalist: ^3.0.0 + checksum: 6853384a51d6ee9377dd657e2b257e0e98b29abbfbfa6333e105197f0f100c8c56a4520b47028b04ab1833cf2312526206f38fcd4f891c6df453f40da1a15a57 + languageName: node + linkType: hard + +"sisteransi@npm:^1.0.5": + version: 1.0.5 + resolution: "sisteransi@npm:1.0.5" + checksum: aba6438f46d2bfcef94cf112c835ab395172c75f67453fe05c340c770d3c402363018ae1ab4172a1026a90c47eaccf3af7b6ff6fa749a680c2929bd7fa2b37a4 + languageName: node + linkType: hard + +"sitemap@npm:^7.1.1": + version: 7.1.2 + resolution: "sitemap@npm:7.1.2" + dependencies: + "@types/node": ^17.0.5 + "@types/sax": ^1.2.1 + arg: ^5.0.0 + sax: ^1.2.4 + bin: + sitemap: dist/cli.js + checksum: c6d8e1f06091fdc643f6ed3c13e92215ed1dcbc3bdaf42f50f468a6dc4c6080bd25ffb5f59beb12b4b63f590ad63ab6c285e788d0fade4c811e58bb56a10c6cd + languageName: node + linkType: hard + +"skin-tone@npm:^2.0.0": + version: 2.0.0 + resolution: "skin-tone@npm:2.0.0" + dependencies: + unicode-emoji-modifier-base: ^1.0.0 + checksum: 19de157586b8019cacc55eb25d9d640f00fc02415761f3e41a4527142970fd4e7f6af0333bc90e879858766c20a976107bb386ffd4c812289c01d51f2c8d182c + languageName: node + linkType: hard + +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c + languageName: node + linkType: hard + +"slash@npm:^4.0.0": + version: 4.0.0 + resolution: "slash@npm:4.0.0" + checksum: da8e4af73712253acd21b7853b7e0dbba776b786e82b010a5bfc8b5051a1db38ed8aba8e1e8f400dd2c9f373be91eb1c42b66e91abb407ff42b10feece5e1d2d + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b + languageName: node + linkType: hard + +"snake-case@npm:^3.0.4": + version: 3.0.4 + resolution: "snake-case@npm:3.0.4" + dependencies: + dot-case: ^3.0.4 + tslib: ^2.0.3 + checksum: 0a7a79900bbb36f8aaa922cf111702a3647ac6165736d5dc96d3ef367efc50465cac70c53cd172c382b022dac72ec91710608e5393de71f76d7142e6fd80e8a3 + languageName: node + linkType: hard + +"sockjs@npm:^0.3.24": + version: 0.3.24 + resolution: "sockjs@npm:0.3.24" + dependencies: + faye-websocket: ^0.11.3 + uuid: ^8.3.2 + websocket-driver: ^0.7.4 + checksum: 355309b48d2c4e9755349daa29cea1c0d9ee23e49b983841c6bf7a20276b00d3c02343f9f33f26d2ee8b261a5a02961b52a25c8da88b2538c5b68d3071b4934c + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^8.0.3": + version: 8.0.4 + resolution: "socks-proxy-agent@npm:8.0.4" + dependencies: + agent-base: ^7.1.1 + debug: ^4.3.4 + socks: ^2.8.3 + checksum: b2ec5051d85fe49072f9a250c427e0e9571fd09d5db133819192d078fd291276e1f0f50f6dbc04329b207738b1071314cee8bdbb4b12e27de42dbcf1d4233c67 + languageName: node + linkType: hard + +"socks@npm:^2.8.3": + version: 2.8.3 + resolution: "socks@npm:2.8.3" + dependencies: + ip-address: ^9.0.5 + smart-buffer: ^4.2.0 + checksum: 7a6b7f6eedf7482b9e4597d9a20e09505824208006ea8f2c49b71657427f3c137ca2ae662089baa73e1971c62322d535d9d0cf1c9235cf6f55e315c18203eadd + languageName: node + linkType: hard + +"sort-css-media-queries@npm:2.2.0": + version: 2.2.0 + resolution: "sort-css-media-queries@npm:2.2.0" + checksum: c090c9a27be40f3e50f5f9bc9d85a8af0e2c5152565eca34bdb028d952749bce169bc5abef21a5a385ca6221a0869640c9faf58f082ac46de9085ebdb506291f + languageName: node + linkType: hard + +"source-map-js@npm:^1.0.1, source-map-js@npm:^1.2.0": + version: 1.2.0 + resolution: "source-map-js@npm:1.2.0" + checksum: 791a43306d9223792e84293b00458bf102a8946e7188f3db0e4e22d8d530b5f80a4ce468eb5ec0bf585443ad55ebbd630bf379c98db0b1f317fd902500217f97 + languageName: node + linkType: hard + +"source-map-support@npm:~0.5.20": + version: 0.5.21 + resolution: "source-map-support@npm:0.5.21" + dependencies: + buffer-from: ^1.0.0 + source-map: ^0.6.0 + checksum: 43e98d700d79af1d36f859bdb7318e601dfc918c7ba2e98456118ebc4c4872b327773e5a1df09b0524e9e5063bb18f0934538eace60cca2710d1fa687645d137 + languageName: node + linkType: hard + +"source-map@npm:^0.6.0, source-map@npm:~0.6.0": + version: 0.6.1 + resolution: "source-map@npm:0.6.1" + checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 + languageName: node + linkType: hard + +"source-map@npm:^0.7.0": + version: 0.7.4 + resolution: "source-map@npm:0.7.4" + checksum: 01cc5a74b1f0e1d626a58d36ad6898ea820567e87f18dfc9d24a9843a351aaa2ec09b87422589906d6ff1deed29693e176194dc88bcae7c9a852dc74b311dbf5 + languageName: node + linkType: hard + +"space-separated-tokens@npm:^2.0.0": + version: 2.0.2 + resolution: "space-separated-tokens@npm:2.0.2" + checksum: 202e97d7ca1ba0758a0aa4fe226ff98142073bcceeff2da3aad037968878552c3bbce3b3231970025375bbba5aee00c5b8206eda408da837ab2dc9c0f26be990 + languageName: node + linkType: hard + +"spdy-transport@npm:^3.0.0": + version: 3.0.0 + resolution: "spdy-transport@npm:3.0.0" + dependencies: + debug: ^4.1.0 + detect-node: ^2.0.4 + hpack.js: ^2.1.6 + obuf: ^1.1.2 + readable-stream: ^3.0.6 + wbuf: ^1.7.3 + checksum: 0fcaad3b836fb1ec0bdd39fa7008b9a7a84a553f12be6b736a2512613b323207ffc924b9551cef0378f7233c85916cff1118652e03a730bdb97c0e042243d56c + languageName: node + linkType: hard + +"spdy@npm:^4.0.2": + version: 4.0.2 + resolution: "spdy@npm:4.0.2" + dependencies: + debug: ^4.1.0 + handle-thing: ^2.0.0 + http-deceiver: ^1.2.7 + select-hose: ^2.0.0 + spdy-transport: ^3.0.0 + checksum: 2c739d0ff6f56ad36d2d754d0261d5ec358457bea7cbf77b1b05b0c6464f2ce65b85f196305f50b7bd9120723eb94bae9933466f28e67e5cd8cde4e27f1d75f8 + languageName: node + linkType: hard + +"sprintf-js@npm:^1.1.3": + version: 1.1.3 + resolution: "sprintf-js@npm:1.1.3" + checksum: a3fdac7b49643875b70864a9d9b469d87a40dfeaf5d34d9d0c5b1cda5fd7d065531fcb43c76357d62254c57184a7b151954156563a4d6a747015cfb41021cad0 + languageName: node + linkType: hard + +"sprintf-js@npm:~1.0.2": + version: 1.0.3 + resolution: "sprintf-js@npm:1.0.3" + checksum: 19d79aec211f09b99ec3099b5b2ae2f6e9cdefe50bc91ac4c69144b6d3928a640bb6ae5b3def70c2e85a2c3d9f5ec2719921e3a59d3ca3ef4b2fd1a4656a0df3 + languageName: node + linkType: hard + +"srcset@npm:^4.0.0": + version: 4.0.0 + resolution: "srcset@npm:4.0.0" + checksum: aceb898c9281101ef43bfbf96bf04dfae828e1bf942a45df6fad74ae9f8f0a425f4bca1480e0d22879beb40dd2bc6947e0e1e5f4d307a714666196164bc5769d + languageName: node + linkType: hard + +"ssri@npm:^10.0.0": + version: 10.0.6 + resolution: "ssri@npm:10.0.6" + dependencies: + minipass: ^7.0.3 + checksum: 4603d53a05bcd44188747d38f1cc43833b9951b5a1ee43ba50535bdfc5fe4a0897472dbe69837570a5417c3c073377ef4f8c1a272683b401857f72738ee57299 + languageName: node + linkType: hard + +"statuses@npm:2.0.1": + version: 2.0.1 + resolution: "statuses@npm:2.0.1" + checksum: 18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb + languageName: node + linkType: hard + +"statuses@npm:>= 1.4.0 < 2": + version: 1.5.0 + resolution: "statuses@npm:1.5.0" + checksum: c469b9519de16a4bb19600205cffb39ee471a5f17b82589757ca7bd40a8d92ebb6ed9f98b5a540c5d302ccbc78f15dc03cc0280dd6e00df1335568a5d5758a5c + languageName: node + linkType: hard + +"std-env@npm:^3.0.1": + version: 3.7.0 + resolution: "std-env@npm:3.7.0" + checksum: 4f489d13ff2ab838c9acd4ed6b786b51aa52ecacdfeaefe9275fcb220ff2ac80c6e95674723508fd29850a694569563a8caaaea738eb82ca16429b3a0b50e510 + languageName: node + linkType: hard + +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: ^8.0.0 + is-fullwidth-code-point: ^3.0.0 + strip-ansi: ^6.0.1 + checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb + languageName: node + linkType: hard + +"string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: ^0.2.0 + emoji-regex: ^9.2.2 + strip-ansi: ^7.0.1 + checksum: 7369deaa29f21dda9a438686154b62c2c5f661f8dda60449088f9f980196f7908fc39fdd1803e3e01541970287cf5deae336798337e9319a7055af89dafa7193 + languageName: node + linkType: hard + +"string_decoder@npm:^1.1.1": + version: 1.3.0 + resolution: "string_decoder@npm:1.3.0" + dependencies: + safe-buffer: ~5.2.0 + checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 + languageName: node + linkType: hard + +"string_decoder@npm:~1.1.1": + version: 1.1.1 + resolution: "string_decoder@npm:1.1.1" + dependencies: + safe-buffer: ~5.1.0 + checksum: 9ab7e56f9d60a28f2be697419917c50cac19f3e8e6c28ef26ed5f4852289fe0de5d6997d29becf59028556f2c62983790c1d9ba1e2a3cc401768ca12d5183a5b + languageName: node + linkType: hard + +"stringify-entities@npm:^4.0.0": + version: 4.0.4 + resolution: "stringify-entities@npm:4.0.4" + dependencies: + character-entities-html4: ^2.0.0 + character-entities-legacy: ^3.0.0 + checksum: ac1344ef211eacf6cf0a0a8feaf96f9c36083835b406560d2c6ff5a87406a41b13f2f0b4c570a3b391f465121c4fd6822b863ffb197e8c0601a64097862cc5b5 + languageName: node + linkType: hard + +"stringify-object@npm:^3.3.0": + version: 3.3.0 + resolution: "stringify-object@npm:3.3.0" + dependencies: + get-own-enumerable-property-symbols: ^3.0.0 + is-obj: ^1.0.1 + is-regexp: ^1.0.0 + checksum: 6827a3f35975cfa8572e8cd3ed4f7b262def260af18655c6fde549334acdac49ddba69f3c861ea5a6e9c5a4990fe4ae870b9c0e6c31019430504c94a83b7a154 + languageName: node + linkType: hard + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: ^5.0.1 + checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c + languageName: node + linkType: hard + +"strip-ansi@npm:^7.0.1": + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" + dependencies: + ansi-regex: ^6.0.1 + checksum: 859c73fcf27869c22a4e4d8c6acfe690064659e84bef9458aa6d13719d09ca88dcfd40cbf31fd0be63518ea1a643fe070b4827d353e09533a5b0b9fd4553d64d + languageName: node + linkType: hard + +"strip-bom-string@npm:^1.0.0": + version: 1.0.0 + resolution: "strip-bom-string@npm:1.0.0" + checksum: 5635a3656d8512a2c194d6c8d5dee7ef0dde6802f7be9413b91e201981ad4132506656d9cf14137f019fd50f0269390d91c7f6a2601b1bee039a4859cfce4934 + languageName: node + linkType: hard + +"strip-final-newline@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-final-newline@npm:2.0.0" + checksum: 69412b5e25731e1938184b5d489c32e340605bb611d6140344abc3421b7f3c6f9984b21dff296dfcf056681b82caa3bb4cc996a965ce37bcfad663e92eae9c64 + languageName: node + linkType: hard + +"strip-json-comments@npm:^3.1.1": + version: 3.1.1 + resolution: "strip-json-comments@npm:3.1.1" + checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 + languageName: node + linkType: hard + +"strip-json-comments@npm:~2.0.1": + version: 2.0.1 + resolution: "strip-json-comments@npm:2.0.1" + checksum: 1074ccb63270d32ca28edfb0a281c96b94dc679077828135141f27d52a5a398ef5e78bcf22809d23cadc2b81dfbe345eb5fd8699b385c8b1128907dec4a7d1e1 + languageName: node + linkType: hard + +"style-to-object@npm:^0.4.0": + version: 0.4.4 + resolution: "style-to-object@npm:0.4.4" + dependencies: + inline-style-parser: 0.1.1 + checksum: 41656c06f93ac0a7ac260ebc2f9d09a8bd74b8ec1836f358cc58e169235835a3a356977891d2ebbd76f0e08a53616929069199f9cce543214d3dc98346e19c9a + languageName: node + linkType: hard + +"style-to-object@npm:^1.0.0": + version: 1.0.6 + resolution: "style-to-object@npm:1.0.6" + dependencies: + inline-style-parser: 0.2.3 + checksum: 5b58295dcc2c21f1da1b9308de1e81b4a987b876a177e677453a76b2e3151a0e21afc630e99c1ea6c82dd8dbec0d01a8b1a51a829422aca055162b03e52572a9 + languageName: node + linkType: hard + +"stylehacks@npm:^6.1.1": + version: 6.1.1 + resolution: "stylehacks@npm:6.1.1" + dependencies: + browserslist: ^4.23.0 + postcss-selector-parser: ^6.0.16 + peerDependencies: + postcss: ^8.4.31 + checksum: 7bef69822280a23817caa43969de76d77ba34042e9f1f7baaeda8f22b1d8c20f1f839ad028552c169e158e387830f176feccd0324b07ef6ec657cba1dd0b2466 + languageName: node + linkType: hard + +"supports-color@npm:^5.3.0": + version: 5.5.0 + resolution: "supports-color@npm:5.5.0" + dependencies: + has-flag: ^3.0.0 + checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac + languageName: node + linkType: hard + +"supports-color@npm:^7.1.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: ^4.0.0 + checksum: 3dda818de06ebbe5b9653e07842d9479f3555ebc77e9a0280caf5a14fb877ffee9ed57007c3b78f5a6324b8dbeec648d9e97a24e2ed9fdb81ddc69ea07100f4a + languageName: node + linkType: hard + +"supports-color@npm:^8.0.0": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: ^4.0.0 + checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 + languageName: node + linkType: hard + +"supports-preserve-symlinks-flag@npm:^1.0.0": + version: 1.0.0 + resolution: "supports-preserve-symlinks-flag@npm:1.0.0" + checksum: 53b1e247e68e05db7b3808b99b892bd36fb096e6fba213a06da7fab22045e97597db425c724f2bbd6c99a3c295e1e73f3e4de78592289f38431049e1277ca0ae + languageName: node + linkType: hard + +"svg-parser@npm:^2.0.4": + version: 2.0.4 + resolution: "svg-parser@npm:2.0.4" + checksum: b3de6653048212f2ae7afe4a423e04a76ec6d2d06e1bf7eacc618a7c5f7df7faa5105561c57b94579ec831fbbdbf5f190ba56a9205ff39ed13eabdf8ab086ddf + languageName: node + linkType: hard + +"svgo@npm:^3.0.2, svgo@npm:^3.2.0": + version: 3.3.2 + resolution: "svgo@npm:3.3.2" + dependencies: + "@trysound/sax": 0.2.0 + commander: ^7.2.0 + css-select: ^5.1.0 + css-tree: ^2.3.1 + css-what: ^6.1.0 + csso: ^5.0.5 + picocolors: ^1.0.0 + bin: + svgo: ./bin/svgo + checksum: a3f8aad597dec13ab24e679c4c218147048dc1414fe04e99447c5f42a6e077b33d712d306df84674b5253b98c9b84dfbfb41fdd08552443b04946e43d03e054e + languageName: node + linkType: hard + +"tapable@npm:^1.0.0": + version: 1.1.3 + resolution: "tapable@npm:1.1.3" + checksum: 53ff4e7c3900051c38cc4faab428ebfd7e6ad0841af5a7ac6d5f3045c5b50e88497bfa8295b4b3fbcadd94993c9e358868b78b9fb249a76cb8b018ac8dccafd7 + languageName: node + linkType: hard + +"tapable@npm:^2.0.0, tapable@npm:^2.1.1, tapable@npm:^2.2.0, tapable@npm:^2.2.1": + version: 2.2.1 + resolution: "tapable@npm:2.2.1" + checksum: 3b7a1b4d86fa940aad46d9e73d1e8739335efd4c48322cb37d073eb6f80f5281889bf0320c6d8ffcfa1a0dd5bfdbd0f9d037e252ef972aca595330538aac4d51 + languageName: node + linkType: hard + +"tar@npm:^6.1.11, tar@npm:^6.2.1": + version: 6.2.1 + resolution: "tar@npm:6.2.1" + dependencies: + chownr: ^2.0.0 + fs-minipass: ^2.0.0 + minipass: ^5.0.0 + minizlib: ^2.1.1 + mkdirp: ^1.0.3 + yallist: ^4.0.0 + checksum: f1322768c9741a25356c11373bce918483f40fa9a25c69c59410c8a1247632487edef5fe76c5f12ac51a6356d2f1829e96d2bc34098668a2fc34d76050ac2b6c + languageName: node + linkType: hard + +"terser-webpack-plugin@npm:^5.3.10, terser-webpack-plugin@npm:^5.3.9": + version: 5.3.10 + resolution: "terser-webpack-plugin@npm:5.3.10" + dependencies: + "@jridgewell/trace-mapping": ^0.3.20 + jest-worker: ^27.4.5 + schema-utils: ^3.1.1 + serialize-javascript: ^6.0.1 + terser: ^5.26.0 + peerDependencies: + webpack: ^5.1.0 + peerDependenciesMeta: + "@swc/core": + optional: true + esbuild: + optional: true + uglify-js: + optional: true + checksum: bd6e7596cf815f3353e2a53e79cbdec959a1b0276f5e5d4e63e9d7c3c5bb5306df567729da287d1c7b39d79093e56863c569c42c6c24cc34c76aa313bd2cbcea + languageName: node + linkType: hard + +"terser@npm:^5.10.0, terser@npm:^5.15.1, terser@npm:^5.26.0": + version: 5.31.5 + resolution: "terser@npm:5.31.5" + dependencies: + "@jridgewell/source-map": ^0.3.3 + acorn: ^8.8.2 + commander: ^2.20.0 + source-map-support: ~0.5.20 + bin: + terser: bin/terser + checksum: edd2de6569116f637bb2e154c913e6ea434cadd6bcf5df41cf62000e3c69ec41f95be66fe639b57b95564545c9f7c0fcb28ca63351424a08e244a8b49ed12ac3 + languageName: node + linkType: hard + +"text-table@npm:^0.2.0": + version: 0.2.0 + resolution: "text-table@npm:0.2.0" + checksum: b6937a38c80c7f84d9c11dd75e49d5c44f71d95e810a3250bd1f1797fc7117c57698204adf676b71497acc205d769d65c16ae8fa10afad832ae1322630aef10a + languageName: node + linkType: hard + +"thunky@npm:^1.0.2": + version: 1.1.0 + resolution: "thunky@npm:1.1.0" + checksum: 993096c472b6b8f30e29dc777a8d17720e4cab448375041f20c0cb802a09a7fb2217f2a3e8cdc11851faa71c957e2db309357367fc9d7af3cb7a4d00f4b66034 + languageName: node + linkType: hard + +"tiny-invariant@npm:^1.0.2": + version: 1.3.3 + resolution: "tiny-invariant@npm:1.3.3" + checksum: 5e185c8cc2266967984ce3b352a4e57cb89dad5a8abb0dea21468a6ecaa67cd5bb47a3b7a85d08041008644af4f667fb8b6575ba38ba5fb00b3b5068306e59fe + languageName: node + linkType: hard + +"tiny-warning@npm:^1.0.0": + version: 1.0.3 + resolution: "tiny-warning@npm:1.0.3" + checksum: da62c4acac565902f0624b123eed6dd3509bc9a8d30c06e017104bedcf5d35810da8ff72864400ad19c5c7806fc0a8323c68baf3e326af7cb7d969f846100d71 + languageName: node + linkType: hard + +"to-fast-properties@npm:^2.0.0": + version: 2.0.0 + resolution: "to-fast-properties@npm:2.0.0" + checksum: be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: ^7.0.0 + checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed + languageName: node + linkType: hard + +"toidentifier@npm:1.0.1": + version: 1.0.1 + resolution: "toidentifier@npm:1.0.1" + checksum: 952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45 + languageName: node + linkType: hard + +"totalist@npm:^3.0.0": + version: 3.0.1 + resolution: "totalist@npm:3.0.1" + checksum: 5132d562cf88ff93fd710770a92f31dbe67cc19b5c6ccae2efc0da327f0954d211bbfd9456389655d726c624f284b4a23112f56d1da931ca7cfabbe1f45e778a + languageName: node + linkType: hard + +"trim-lines@npm:^3.0.0": + version: 3.0.1 + resolution: "trim-lines@npm:3.0.1" + checksum: e241da104682a0e0d807222cc1496b92e716af4db7a002f4aeff33ae6a0024fef93165d49eab11aa07c71e1347c42d46563f91dfaa4d3fb945aa535cdead53ed + languageName: node + linkType: hard + +"trough@npm:^2.0.0": + version: 2.2.0 + resolution: "trough@npm:2.2.0" + checksum: 6097df63169aca1f9b08c263b1b501a9b878387f46e161dde93f6d0bba7febba93c95f876a293c5ea370f6cb03bcb687b2488c8955c3cfb66c2c0161ea8c00f6 + languageName: node + linkType: hard + +"tslib@npm:^2.0.3, tslib@npm:^2.6.0": + version: 2.6.3 + resolution: "tslib@npm:2.6.3" + checksum: 74fce0e100f1ebd95b8995fbbd0e6c91bdd8f4c35c00d4da62e285a3363aaa534de40a80db30ecfd388ed7c313c42d930ee0eaf108e8114214b180eec3dbe6f5 + languageName: node + linkType: hard + +"type-fest@npm:^1.0.1": + version: 1.4.0 + resolution: "type-fest@npm:1.4.0" + checksum: b011c3388665b097ae6a109a437a04d6f61d81b7357f74cbcb02246f2f5bd72b888ae33631b99871388122ba0a87f4ff1c94078e7119ff22c70e52c0ff828201 + languageName: node + linkType: hard + +"type-fest@npm:^2.13.0, type-fest@npm:^2.5.0": + version: 2.19.0 + resolution: "type-fest@npm:2.19.0" + checksum: a4ef07ece297c9fba78fc1bd6d85dff4472fe043ede98bd4710d2615d15776902b595abf62bd78339ed6278f021235fb28a96361f8be86ed754f778973a0d278 + languageName: node + linkType: hard + +"type-is@npm:~1.6.18": + version: 1.6.18 + resolution: "type-is@npm:1.6.18" + dependencies: + media-typer: 0.3.0 + mime-types: ~2.1.24 + checksum: 2c8e47675d55f8b4e404bcf529abdf5036c537a04c2b20177bcf78c9e3c1da69da3942b1346e6edb09e823228c0ee656ef0e033765ec39a70d496ef601a0c657 + languageName: node + linkType: hard + +"typedarray-to-buffer@npm:^3.1.5": + version: 3.1.5 + resolution: "typedarray-to-buffer@npm:3.1.5" + dependencies: + is-typedarray: ^1.0.0 + checksum: 99c11aaa8f45189fcfba6b8a4825fd684a321caa9bd7a76a27cf0c7732c174d198b99f449c52c3818107430b5f41c0ccbbfb75cb2ee3ca4a9451710986d61a60 + languageName: node + linkType: hard + +"undici-types@npm:~6.13.0": + version: 6.13.0 + resolution: "undici-types@npm:6.13.0" + checksum: 9d0ef6bf58994bebbea6a4ab75f381c69a89a7ed151bfbae0d4ef95450d56502c9eccb323abf17b7d099c1d9c1cbae62e909e4dfeb8d204612d2f1fdada24707 + languageName: node + linkType: hard + +"unicode-canonical-property-names-ecmascript@npm:^2.0.0": + version: 2.0.0 + resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" + checksum: 39be078afd014c14dcd957a7a46a60061bc37c4508ba146517f85f60361acf4c7539552645ece25de840e17e293baa5556268d091ca6762747fdd0c705001a45 + languageName: node + linkType: hard + +"unicode-emoji-modifier-base@npm:^1.0.0": + version: 1.0.0 + resolution: "unicode-emoji-modifier-base@npm:1.0.0" + checksum: 6e1521d35fa69493207eb8b41f8edb95985d8b3faf07c01d820a1830b5e8403e20002563e2f84683e8e962a49beccae789f0879356bf92a4ec7a4dd8e2d16fdb + languageName: node + linkType: hard + +"unicode-match-property-ecmascript@npm:^2.0.0": + version: 2.0.0 + resolution: "unicode-match-property-ecmascript@npm:2.0.0" + dependencies: + unicode-canonical-property-names-ecmascript: ^2.0.0 + unicode-property-aliases-ecmascript: ^2.0.0 + checksum: 1f34a7434a23df4885b5890ac36c5b2161a809887000be560f56ad4b11126d433c0c1c39baf1016bdabed4ec54829a6190ee37aa24919aa116dc1a5a8a62965a + languageName: node + linkType: hard + +"unicode-match-property-value-ecmascript@npm:^2.1.0": + version: 2.1.0 + resolution: "unicode-match-property-value-ecmascript@npm:2.1.0" + checksum: 8d6f5f586b9ce1ed0e84a37df6b42fdba1317a05b5df0c249962bd5da89528771e2d149837cad11aa26bcb84c35355cb9f58a10c3d41fa3b899181ece6c85220 + languageName: node + linkType: hard + +"unicode-property-aliases-ecmascript@npm:^2.0.0": + version: 2.1.0 + resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" + checksum: 243524431893649b62cc674d877bd64ef292d6071dd2fd01ab4d5ad26efbc104ffcd064f93f8a06b7e4ec54c172bf03f6417921a0d8c3a9994161fe1f88f815b + languageName: node + linkType: hard + +"unified@npm:^11.0.0, unified@npm:^11.0.3, unified@npm:^11.0.4": + version: 11.0.5 + resolution: "unified@npm:11.0.5" + dependencies: + "@types/unist": ^3.0.0 + bail: ^2.0.0 + devlop: ^1.0.0 + extend: ^3.0.0 + is-plain-obj: ^4.0.0 + trough: ^2.0.0 + vfile: ^6.0.0 + checksum: b3bf7fd6f568cc261e074dae21188483b0f2a8ab858d62e6e85b75b96cc655f59532906ae3c64d56a9b257408722d71f1d4135292b3d7ee02907c8b592fb3cf0 + languageName: node + linkType: hard + +"unique-filename@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-filename@npm:3.0.0" + dependencies: + unique-slug: ^4.0.0 + checksum: 8e2f59b356cb2e54aab14ff98a51ac6c45781d15ceaab6d4f1c2228b780193dc70fae4463ce9e1df4479cb9d3304d7c2043a3fb905bdeca71cc7e8ce27e063df + languageName: node + linkType: hard + +"unique-slug@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-slug@npm:4.0.0" + dependencies: + imurmurhash: ^0.1.4 + checksum: 0884b58365af59f89739e6f71e3feacb5b1b41f2df2d842d0757933620e6de08eff347d27e9d499b43c40476cbaf7988638d3acb2ffbcb9d35fd035591adfd15 + languageName: node + linkType: hard + +"unique-string@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-string@npm:3.0.0" + dependencies: + crypto-random-string: ^4.0.0 + checksum: 1a1e2e7d02eab1bb10f720475da735e1990c8a5ff34edd1a3b6bc31590cb4210b7a1233d779360cc622ce11c211e43afa1628dd658f35d3e6a89964b622940df + languageName: node + linkType: hard + +"unist-util-is@npm:^6.0.0": + version: 6.0.0 + resolution: "unist-util-is@npm:6.0.0" + dependencies: + "@types/unist": ^3.0.0 + checksum: f630a925126594af9993b091cf807b86811371e465b5049a6283e08537d3e6ba0f7e248e1e7dab52cfe33f9002606acef093441137181b327f6fe504884b20e2 + languageName: node + linkType: hard + +"unist-util-position-from-estree@npm:^2.0.0": + version: 2.0.0 + resolution: "unist-util-position-from-estree@npm:2.0.0" + dependencies: + "@types/unist": ^3.0.0 + checksum: d3b3048a5727c2367f64ef6dcc5b20c4717215ef8b1372ff9a7c426297c5d1e5776409938acd01531213e2cd2543218d16e73f9f862f318e9496e2c73bb18354 + languageName: node + linkType: hard + +"unist-util-position@npm:^5.0.0": + version: 5.0.0 + resolution: "unist-util-position@npm:5.0.0" + dependencies: + "@types/unist": ^3.0.0 + checksum: f89b27989b19f07878de9579cd8db2aa0194c8360db69e2c99bd2124a480d79c08f04b73a64daf01a8fb3af7cba65ff4b45a0b978ca243226084ad5f5d441dde + languageName: node + linkType: hard + +"unist-util-remove-position@npm:^5.0.0": + version: 5.0.0 + resolution: "unist-util-remove-position@npm:5.0.0" + dependencies: + "@types/unist": ^3.0.0 + unist-util-visit: ^5.0.0 + checksum: 8aabdb9d0e3e744141bc123d8f87b90835d521209ad3c6c4619d403b324537152f0b8f20dda839b40c3aa0abfbf1828b3635a7a8bb159c3ed469e743023510ee + languageName: node + linkType: hard + +"unist-util-stringify-position@npm:^4.0.0": + version: 4.0.0 + resolution: "unist-util-stringify-position@npm:4.0.0" + dependencies: + "@types/unist": ^3.0.0 + checksum: e2e7aee4b92ddb64d314b4ac89eef7a46e4c829cbd3ee4aee516d100772b490eb6b4974f653ba0717a0071ca6ea0770bf22b0a2ea62c65fcba1d071285e96324 + languageName: node + linkType: hard + +"unist-util-visit-parents@npm:^6.0.0": + version: 6.0.1 + resolution: "unist-util-visit-parents@npm:6.0.1" + dependencies: + "@types/unist": ^3.0.0 + unist-util-is: ^6.0.0 + checksum: 08927647c579f63b91aafcbec9966dc4a7d0af1e5e26fc69f4e3e6a01215084835a2321b06f3cbe7bf7914a852830fc1439f0fc3d7153d8804ac3ef851ddfa20 + languageName: node + linkType: hard + +"unist-util-visit@npm:^5.0.0": + version: 5.0.0 + resolution: "unist-util-visit@npm:5.0.0" + dependencies: + "@types/unist": ^3.0.0 + unist-util-is: ^6.0.0 + unist-util-visit-parents: ^6.0.0 + checksum: 9ec42e618e7e5d0202f3c191cd30791b51641285732767ee2e6bcd035931032e3c1b29093f4d7fd0c79175bbc1f26f24f26ee49770d32be76f8730a652a857e6 + languageName: node + linkType: hard + +"universalify@npm:^2.0.0": + version: 2.0.1 + resolution: "universalify@npm:2.0.1" + checksum: ecd8469fe0db28e7de9e5289d32bd1b6ba8f7183db34f3bfc4ca53c49891c2d6aa05f3fb3936a81285a905cc509fb641a0c3fc131ec786167eff41236ae32e60 + languageName: node + linkType: hard + +"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": + version: 1.0.0 + resolution: "unpipe@npm:1.0.0" + checksum: 4fa18d8d8d977c55cb09715385c203197105e10a6d220087ec819f50cb68870f02942244f1017565484237f1f8c5d3cd413631b1ae104d3096f24fdfde1b4aa2 + languageName: node + linkType: hard + +"update-browserslist-db@npm:^1.1.0": + version: 1.1.0 + resolution: "update-browserslist-db@npm:1.1.0" + dependencies: + escalade: ^3.1.2 + picocolors: ^1.0.1 + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 7b74694d96f0c360f01b702e72353dc5a49df4fe6663d3ee4e5c628f061576cddf56af35a3a886238c01dd3d8f231b7a86a8ceaa31e7a9220ae31c1c1238e562 + languageName: node + linkType: hard + +"update-notifier@npm:^6.0.2": + version: 6.0.2 + resolution: "update-notifier@npm:6.0.2" + dependencies: + boxen: ^7.0.0 + chalk: ^5.0.1 + configstore: ^6.0.0 + has-yarn: ^3.0.0 + import-lazy: ^4.0.0 + is-ci: ^3.0.1 + is-installed-globally: ^0.4.0 + is-npm: ^6.0.0 + is-yarn-global: ^0.4.0 + latest-version: ^7.0.0 + pupa: ^3.1.0 + semver: ^7.3.7 + semver-diff: ^4.0.0 + xdg-basedir: ^5.1.0 + checksum: 4bae7b3eca7b2068b6b87dde88c9dad24831fa913a5b83ecb39a7e4702c93e8b05fd9bcac5f1a005178f6e5dc859e0b3817ddda833d2a7ab92c6485e078b3cc8 + languageName: node + linkType: hard + +"uri-js@npm:^4.2.2": + version: 4.4.1 + resolution: "uri-js@npm:4.4.1" + dependencies: + punycode: ^2.1.0 + checksum: 7167432de6817fe8e9e0c9684f1d2de2bb688c94388f7569f7dbdb1587c9f4ca2a77962f134ec90be0cc4d004c939ff0d05acc9f34a0db39a3c797dada262633 + languageName: node + linkType: hard + +"url-loader@npm:^4.1.1": + version: 4.1.1 + resolution: "url-loader@npm:4.1.1" + dependencies: + loader-utils: ^2.0.0 + mime-types: ^2.1.27 + schema-utils: ^3.0.0 + peerDependencies: + file-loader: "*" + webpack: ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + file-loader: + optional: true + checksum: c1122a992c6cff70a7e56dfc2b7474534d48eb40b2cc75467cde0c6972e7597faf8e43acb4f45f93c2473645dfd803bcbc20960b57544dd1e4c96e77f72ba6fd + languageName: node + linkType: hard + +"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": + version: 1.0.2 + resolution: "util-deprecate@npm:1.0.2" + checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 + languageName: node + linkType: hard + +"utila@npm:~0.4": + version: 0.4.0 + resolution: "utila@npm:0.4.0" + checksum: 97ffd3bd2bb80c773429d3fb8396469115cd190dded1e733f190d8b602bd0a1bcd6216b7ce3c4395ee3c79e3c879c19d268dbaae3093564cb169ad1212d436f4 + languageName: node + linkType: hard + +"utility-types@npm:^3.10.0": + version: 3.11.0 + resolution: "utility-types@npm:3.11.0" + checksum: 35a4866927bbea5d037726744028d05c6e37772ded2aabaca21480ce9380185436aef586ead525e327c7f3c640b1a3287769a12ef269c7b165a2ddd50ea6ad61 + languageName: node + linkType: hard + +"utils-merge@npm:1.0.1": + version: 1.0.1 + resolution: "utils-merge@npm:1.0.1" + checksum: c81095493225ecfc28add49c106ca4f09cdf56bc66731aa8dabc2edbbccb1e1bfe2de6a115e5c6a380d3ea166d1636410b62ef216bb07b3feb1cfde1d95d5080 + languageName: node + linkType: hard + +"uuid@npm:^8.3.2": + version: 8.3.2 + resolution: "uuid@npm:8.3.2" + bin: + uuid: dist/bin/uuid + checksum: 5575a8a75c13120e2f10e6ddc801b2c7ed7d8f3c8ac22c7ed0c7b2ba6383ec0abda88c905085d630e251719e0777045ae3236f04c812184b7c765f63a70e58df + languageName: node + linkType: hard + +"value-equal@npm:^1.0.1": + version: 1.0.1 + resolution: "value-equal@npm:1.0.1" + checksum: bb7ae1facc76b5cf8071aeb6c13d284d023fdb370478d10a5d64508e0e6e53bb459c4bbe34258df29d82e6f561f874f0105eba38de0e61fe9edd0bdce07a77a2 + languageName: node + linkType: hard + +"vary@npm:~1.1.2": + version: 1.1.2 + resolution: "vary@npm:1.1.2" + checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b + languageName: node + linkType: hard + +"vfile-location@npm:^5.0.0": + version: 5.0.3 + resolution: "vfile-location@npm:5.0.3" + dependencies: + "@types/unist": ^3.0.0 + vfile: ^6.0.0 + checksum: bfb3821b6981b6e9aa369bed67a40090b800562064ea312e84437762562df3225a0ca922695389cc0ef1e115f19476c363f53e3ed44dec17c50678b7670b5f2b + languageName: node + linkType: hard + +"vfile-message@npm:^4.0.0": + version: 4.0.2 + resolution: "vfile-message@npm:4.0.2" + dependencies: + "@types/unist": ^3.0.0 + unist-util-stringify-position: ^4.0.0 + checksum: 964e7e119f4c0e0270fc269119c41c96da20afa01acb7c9809a88365c8e0c64aa692fafbd952669382b978002ecd7ad31ef4446d85e8a22cdb62f6df20186c2d + languageName: node + linkType: hard + +"vfile@npm:^6.0.0, vfile@npm:^6.0.1": + version: 6.0.2 + resolution: "vfile@npm:6.0.2" + dependencies: + "@types/unist": ^3.0.0 + unist-util-stringify-position: ^4.0.0 + vfile-message: ^4.0.0 + checksum: 2f3f405654aa549f1902dfe0cefa5f0d785f9f65cb90989b9ab543166afabf30f9c5c4bda734d78cf08e169dd7cba08af4cdcae5563f89782caf1d4719c57646 + languageName: node + linkType: hard + +"watchpack@npm:^2.4.1": + version: 2.4.1 + resolution: "watchpack@npm:2.4.1" + dependencies: + glob-to-regexp: ^0.4.1 + graceful-fs: ^4.1.2 + checksum: 5b0179348655dcdf19cac7cb4ff923fdc024d630650c0bf6bec8899cf47c60e19d4f810a88dba692ed0e7f684cf0fcffea86efdbf6c35d81f031e328043b7fab + languageName: node + linkType: hard + +"wbuf@npm:^1.1.0, wbuf@npm:^1.7.3": + version: 1.7.3 + resolution: "wbuf@npm:1.7.3" + dependencies: + minimalistic-assert: ^1.0.0 + checksum: 2abc306c96930b757972a1c4650eb6b25b5d99f24088714957f88629e137db569368c5de0e57986c89ea70db2f1df9bba11a87cb6d0c8694b6f53a0159fab3bf + languageName: node + linkType: hard + +"web-namespaces@npm:^2.0.0": + version: 2.0.1 + resolution: "web-namespaces@npm:2.0.1" + checksum: b6d9f02f1a43d0ef0848a812d89c83801d5bbad57d8bb61f02eb6d7eb794c3736f6cc2e1191664bb26136594c8218ac609f4069722c6f56d9fc2d808fa9271c6 + languageName: node + linkType: hard + +"webpack-bundle-analyzer@npm:^4.9.0": + version: 4.10.2 + resolution: "webpack-bundle-analyzer@npm:4.10.2" + dependencies: + "@discoveryjs/json-ext": 0.5.7 + acorn: ^8.0.4 + acorn-walk: ^8.0.0 + commander: ^7.2.0 + debounce: ^1.2.1 + escape-string-regexp: ^4.0.0 + gzip-size: ^6.0.0 + html-escaper: ^2.0.2 + opener: ^1.5.2 + picocolors: ^1.0.0 + sirv: ^2.0.3 + ws: ^7.3.1 + bin: + webpack-bundle-analyzer: lib/bin/analyzer.js + checksum: 4f0275e7d87bb6203a618ca5d2d4953943979d986fa2b91be1bf1ad0bcd22bec13398803273d11699f9fbcf106896311208a72d63fe5f8a47b687a226e598dc1 + languageName: node + linkType: hard + +"webpack-dev-middleware@npm:^5.3.4": + version: 5.3.4 + resolution: "webpack-dev-middleware@npm:5.3.4" + dependencies: + colorette: ^2.0.10 + memfs: ^3.4.3 + mime-types: ^2.1.31 + range-parser: ^1.2.1 + schema-utils: ^4.0.0 + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + checksum: 90cf3e27d0714c1a745454a1794f491b7076434939340605b9ee8718ba2b85385b120939754e9fdbd6569811e749dee53eec319e0d600e70e0b0baffd8e3fb13 + languageName: node + linkType: hard + +"webpack-dev-server@npm:^4.15.1": + version: 4.15.2 + resolution: "webpack-dev-server@npm:4.15.2" + dependencies: + "@types/bonjour": ^3.5.9 + "@types/connect-history-api-fallback": ^1.3.5 + "@types/express": ^4.17.13 + "@types/serve-index": ^1.9.1 + "@types/serve-static": ^1.13.10 + "@types/sockjs": ^0.3.33 + "@types/ws": ^8.5.5 + ansi-html-community: ^0.0.8 + bonjour-service: ^1.0.11 + chokidar: ^3.5.3 + colorette: ^2.0.10 + compression: ^1.7.4 + connect-history-api-fallback: ^2.0.0 + default-gateway: ^6.0.3 + express: ^4.17.3 + graceful-fs: ^4.2.6 + html-entities: ^2.3.2 + http-proxy-middleware: ^2.0.3 + ipaddr.js: ^2.0.1 + launch-editor: ^2.6.0 + open: ^8.0.9 + p-retry: ^4.5.0 + rimraf: ^3.0.2 + schema-utils: ^4.0.0 + selfsigned: ^2.1.1 + serve-index: ^1.9.1 + sockjs: ^0.3.24 + spdy: ^4.0.2 + webpack-dev-middleware: ^5.3.4 + ws: ^8.13.0 + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + bin: + webpack-dev-server: bin/webpack-dev-server.js + checksum: 123507129cb4d55fdc5fabdd177574f31133605748372bb11353307b7a583ef25c6fd27b6addf56bf070ba44c88d5da861771c2ec55f52405082ec9efd01f039 + languageName: node + linkType: hard + +"webpack-merge@npm:^5.9.0": + version: 5.10.0 + resolution: "webpack-merge@npm:5.10.0" + dependencies: + clone-deep: ^4.0.1 + flat: ^5.0.2 + wildcard: ^2.0.0 + checksum: 1fe8bf5309add7298e1ac72fb3f2090e1dfa80c48c7e79fa48aa60b5961332c7d0d61efa8851acb805e6b91a4584537a347bc106e05e9aec87fa4f7088c62f2f + languageName: node + linkType: hard + +"webpack-sources@npm:^3.2.3": + version: 3.2.3 + resolution: "webpack-sources@npm:3.2.3" + checksum: 989e401b9fe3536529e2a99dac8c1bdc50e3a0a2c8669cbafad31271eadd994bc9405f88a3039cd2e29db5e6d9d0926ceb7a1a4e7409ece021fe79c37d9c4607 + languageName: node + linkType: hard + +"webpack@npm:^5.88.1": + version: 5.93.0 + resolution: "webpack@npm:5.93.0" + dependencies: + "@types/eslint-scope": ^3.7.3 + "@types/estree": ^1.0.5 + "@webassemblyjs/ast": ^1.12.1 + "@webassemblyjs/wasm-edit": ^1.12.1 + "@webassemblyjs/wasm-parser": ^1.12.1 + acorn: ^8.7.1 + acorn-import-attributes: ^1.9.5 + browserslist: ^4.21.10 + chrome-trace-event: ^1.0.2 + enhanced-resolve: ^5.17.0 + es-module-lexer: ^1.2.1 + eslint-scope: 5.1.1 + events: ^3.2.0 + glob-to-regexp: ^0.4.1 + graceful-fs: ^4.2.11 + json-parse-even-better-errors: ^2.3.1 + loader-runner: ^4.2.0 + mime-types: ^2.1.27 + neo-async: ^2.6.2 + schema-utils: ^3.2.0 + tapable: ^2.1.1 + terser-webpack-plugin: ^5.3.10 + watchpack: ^2.4.1 + webpack-sources: ^3.2.3 + peerDependenciesMeta: + webpack-cli: + optional: true + bin: + webpack: bin/webpack.js + checksum: c93bd73d9e1ab49b07e139582187f1c3760ee2cf0163b6288fab2ae210e39e59240a26284e7e5d29bec851255ef4b43c51642c882fa5a94e16ce7cb906deeb47 + languageName: node + linkType: hard + +"webpackbar@npm:^5.0.2": + version: 5.0.2 + resolution: "webpackbar@npm:5.0.2" + dependencies: + chalk: ^4.1.0 + consola: ^2.15.3 + pretty-time: ^1.1.0 + std-env: ^3.0.1 + peerDependencies: + webpack: 3 || 4 || 5 + checksum: 214a734b1d4d391eb8271ed1b11085f0efe6831e93f641229b292abfd6fea871422dce121612511c17ae8047522be6d65c1a2666cabb396c79549816a3612338 + languageName: node + linkType: hard + +"websocket-driver@npm:>=0.5.1, websocket-driver@npm:^0.7.4": + version: 0.7.4 + resolution: "websocket-driver@npm:0.7.4" + dependencies: + http-parser-js: ">=0.5.1" + safe-buffer: ">=5.1.0" + websocket-extensions: ">=0.1.1" + checksum: fffe5a33fe8eceafd21d2a065661d09e38b93877eae1de6ab5d7d2734c6ed243973beae10ae48c6613cfd675f200e5a058d1e3531bc9e6c5d4f1396ff1f0bfb9 + languageName: node + linkType: hard + +"websocket-extensions@npm:>=0.1.1": + version: 0.1.4 + resolution: "websocket-extensions@npm:0.1.4" + checksum: 5976835e68a86afcd64c7a9762ed85f2f27d48c488c707e67ba85e717b90fa066b98ab33c744d64255c9622d349eedecf728e65a5f921da71b58d0e9591b9038 + languageName: node + linkType: hard + +"which@npm:^1.3.1": + version: 1.3.1 + resolution: "which@npm:1.3.1" + dependencies: + isexe: ^2.0.0 + bin: + which: ./bin/which + checksum: f2e185c6242244b8426c9df1510e86629192d93c1a986a7d2a591f2c24869e7ffd03d6dac07ca863b2e4c06f59a4cc9916c585b72ee9fa1aa609d0124df15e04 + languageName: node + linkType: hard + +"which@npm:^2.0.1": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: ^2.0.0 + bin: + node-which: ./bin/node-which + checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 + languageName: node + linkType: hard + +"which@npm:^4.0.0": + version: 4.0.0 + resolution: "which@npm:4.0.0" + dependencies: + isexe: ^3.1.1 + bin: + node-which: bin/which.js + checksum: f17e84c042592c21e23c8195108cff18c64050b9efb8459589116999ea9da6dd1509e6a1bac3aeebefd137be00fabbb61b5c2bc0aa0f8526f32b58ee2f545651 + languageName: node + linkType: hard + +"widest-line@npm:^4.0.1": + version: 4.0.1 + resolution: "widest-line@npm:4.0.1" + dependencies: + string-width: ^5.0.1 + checksum: 64c48cf27171221be5f86fc54b94dd29879165bdff1a7aa92dde723d9a8c99fb108312768a5d62c8c2b80b701fa27bbd36a1ddc58367585cd45c0db7920a0cba + languageName: node + linkType: hard + +"wildcard@npm:^2.0.0": + version: 2.0.1 + resolution: "wildcard@npm:2.0.1" + checksum: e0c60a12a219e4b12065d1199802d81c27b841ed6ad6d9d28240980c73ceec6f856771d575af367cbec2982d9ae7838759168b551776577f155044f5a5ba843c + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: ^4.0.0 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b + languageName: node + linkType: hard + +"wrap-ansi@npm:^8.0.1, wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: ^6.1.0 + string-width: ^5.0.1 + strip-ansi: ^7.0.1 + checksum: 371733296dc2d616900ce15a0049dca0ef67597d6394c57347ba334393599e800bab03c41d4d45221b6bc967b8c453ec3ae4749eff3894202d16800fdfe0e238 + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 + languageName: node + linkType: hard + +"write-file-atomic@npm:^3.0.3": + version: 3.0.3 + resolution: "write-file-atomic@npm:3.0.3" + dependencies: + imurmurhash: ^0.1.4 + is-typedarray: ^1.0.0 + signal-exit: ^3.0.2 + typedarray-to-buffer: ^3.1.5 + checksum: c55b24617cc61c3a4379f425fc62a386cc51916a9b9d993f39734d005a09d5a4bb748bc251f1304e7abd71d0a26d339996c275955f527a131b1dcded67878280 + languageName: node + linkType: hard + +"ws@npm:^7.3.1": + version: 7.5.10 + resolution: "ws@npm:7.5.10" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: f9bb062abf54cc8f02d94ca86dcd349c3945d63851f5d07a3a61c2fcb755b15a88e943a63cf580cbdb5b74436d67ef6b67f745b8f7c0814e411379138e1863cb + languageName: node + linkType: hard + +"ws@npm:^8.13.0": + version: 8.18.0 + resolution: "ws@npm:8.18.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 91d4d35bc99ff6df483bdf029b9ea4bfd7af1f16fc91231a96777a63d263e1eabf486e13a2353970efc534f9faa43bdbf9ee76525af22f4752cbc5ebda333975 + languageName: node + linkType: hard + +"xdg-basedir@npm:^5.0.1, xdg-basedir@npm:^5.1.0": + version: 5.1.0 + resolution: "xdg-basedir@npm:5.1.0" + checksum: b60e8a2c663ccb1dac77c2d913f3b96de48dafbfa083657171d3d50e10820b8a04bb4edfe9f00808c8c20e5f5355e1927bea9029f03136e29265cb98291e1fea + languageName: node + linkType: hard + +"xml-js@npm:^1.6.11": + version: 1.6.11 + resolution: "xml-js@npm:1.6.11" + dependencies: + sax: ^1.2.4 + bin: + xml-js: ./bin/cli.js + checksum: 24a55479919413687105fc2d8ab05e613ebedb1c1bc12258a108e07cff5ef793779297db854800a4edf0281303ebd1f177bc4a588442f5344e62b3dddda26c2b + languageName: node + linkType: hard + +"yallist@npm:^3.0.2": + version: 3.1.1 + resolution: "yallist@npm:3.1.1" + checksum: 48f7bb00dc19fc635a13a39fe547f527b10c9290e7b3e836b9a8f1ca04d4d342e85714416b3c2ab74949c9c66f9cebb0473e6bc353b79035356103b47641285d + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 + languageName: node + linkType: hard + +"yaml@npm:^1.7.2": + version: 1.10.2 + resolution: "yaml@npm:1.10.2" + checksum: ce4ada136e8a78a0b08dc10b4b900936912d15de59905b2bf415b4d33c63df1d555d23acb2a41b23cf9fb5da41c256441afca3d6509de7247daa062fd2c5ea5f + languageName: node + linkType: hard + +"yocto-queue@npm:^0.1.0": + version: 0.1.0 + resolution: "yocto-queue@npm:0.1.0" + checksum: f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700 + languageName: node + linkType: hard + +"yocto-queue@npm:^1.0.0": + version: 1.1.1 + resolution: "yocto-queue@npm:1.1.1" + checksum: f2e05b767ed3141e6372a80af9caa4715d60969227f38b1a4370d60bffe153c9c5b33a862905609afc9b375ec57cd40999810d20e5e10229a204e8bde7ef255c + languageName: node + linkType: hard + +"zwitch@npm:^2.0.0": + version: 2.0.4 + resolution: "zwitch@npm:2.0.4" + checksum: f22ec5fc2d5f02c423c93d35cdfa83573a3a3bd98c66b927c368ea4d0e7252a500df2a90a6b45522be536a96a73404393c958e945fdba95e6832c200791702b6 + languageName: node + linkType: hard diff --git a/packages/layout_editor/vite.config.ts b/packages/layout_editor/vite.config.ts index f10075223..2b9daff2d 100644 --- a/packages/layout_editor/vite.config.ts +++ b/packages/layout_editor/vite.config.ts @@ -11,4 +11,5 @@ export default defineConfig({ }, }), ], + base: "/EmbeddedChat/layout_editor" }); From 90bdf5eb313a06660c0bbd4cf0adff5250e916cc Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Thu, 22 Aug 2024 23:31:36 +0530 Subject: [PATCH 089/104] separated commonColors, radius and contrastParams at root level --- .../SurfaceMenu/SurfaceMenu.styles.js | 2 +- .../src/hooks/useDisplayNameColor.js | 2 +- .../layout_editor/src/theme/DefaultTheme.js | 31 ++--- .../src/views/ChatHeader/ChatHeader.styles.js | 2 +- .../src/views/ChatInput/ChatInput.styles.js | 6 +- .../src/views/LayoutEditor.style.js | 2 +- .../Message/BubbleVariant/Bubble.styles.js | 28 ++--- .../src/views/Message/Message.styles.js | 6 +- .../react/src/hooks/useDisplayNameColor.js | 2 +- packages/react/src/theme/AzureSky.js | 18 +-- .../src/theme/CurveVariant/AquaBreeze.js | 47 ++++---- .../react/src/theme/CurveVariant/AzureSky.js | 49 ++++---- .../src/theme/CurveVariant/BlushCandy.js | 47 ++++---- .../src/theme/CurveVariant/PineWhisper.js | 48 ++++---- packages/react/src/theme/DefaultTheme.js | 20 +-- packages/react/src/theme/MintMeadow.js | 18 +-- .../src/theme/ModernVariant/StormySeas.js | 114 +++++++++--------- packages/react/src/theme/RoseEmber.js | 18 +-- .../AttachmentPreview/PreviewType/image.js | 2 +- .../views/ChannelState/ChannelState.styles.js | 2 +- .../src/views/ChatInput/ChatInput.styles.js | 4 +- .../react/src/views/EmbeddedChat.styles.js | 2 +- .../views/EmojiPicker/EmojiPicker.styles.js | 4 +- .../views/ImageGallery/ImageGallery.styles.js | 4 +- .../views/LinkPreview/LinkPreview.styles.js | 2 +- .../Message/BubbleVariant/Bubble.styles.js | 28 ++--- .../react/src/views/Message/Message.styles.js | 6 +- .../views/QuoteMessage/QuoteMessage.styles.js | 2 +- .../UserInformation/UserInformation.styles.js | 2 +- packages/react/tools/theme-generator.js | 17 +-- .../src/components/Avatar/Avatar.styles.js | 4 +- .../src/components/Button/Button.styles.js | 2 +- .../components/CheckBox/CheckBox.styles.js | 2 +- .../src/components/Divider/Divider.styles.js | 2 +- .../src/components/Input/Input.styles.js | 2 +- .../MessageGenericPreview.styles.js | 2 +- .../src/components/Modal/Modal.styles.js | 4 +- .../MultiSelect/MultiSelect.styles.js | 2 +- .../src/components/Popup/Popup.styles.js | 4 +- .../src/components/Sidebar/Sidebar.styles.js | 2 +- .../components/Skeleton/Skeleton.styles.js | 2 +- .../StaticSelect/StaticSelect.styles.js | 2 +- .../components/ToastBar/ToastBar.styles.js | 4 +- .../src/components/Tooltip/Tooltip.styles.js | 2 +- .../ui-elements/src/theme/DefaultTheme.js | 12 +- 45 files changed, 263 insertions(+), 320 deletions(-) diff --git a/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.styles.js b/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.styles.js index 1d86eaf16..a3c858cce 100644 --- a/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.styles.js +++ b/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.styles.js @@ -6,7 +6,7 @@ export const getSurfaceItemStyles = ({ theme, colors }) => { width: 24px; height: 24px; border: 1px solid ${colors.border}; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; `, itemContainer: css` diff --git a/packages/layout_editor/src/hooks/useDisplayNameColor.js b/packages/layout_editor/src/hooks/useDisplayNameColor.js index 043ca8a89..e5590898d 100644 --- a/packages/layout_editor/src/hooks/useDisplayNameColor.js +++ b/packages/layout_editor/src/hooks/useDisplayNameColor.js @@ -15,7 +15,7 @@ const useDisplayNameColor = () => { const getDisplayNameColor = (username) => { const hash = simpleHash(username); - const { saturation, luminance } = theme.schemes.contrastParams[mode]; + const { saturation, luminance } = theme.contrastParams[mode]; const hue = Math.abs(hash) % 360; return `hsl(${hue}, ${saturation}%, ${luminance}%)`; }; diff --git a/packages/layout_editor/src/theme/DefaultTheme.js b/packages/layout_editor/src/theme/DefaultTheme.js index 8752e2e4a..88d102103 100644 --- a/packages/layout_editor/src/theme/DefaultTheme.js +++ b/packages/layout_editor/src/theme/DefaultTheme.js @@ -1,20 +1,10 @@ const DefaultTheme = { + radius: '0.2rem', + commonColors: { + black: 'hsl(0, 100%, 0%)', + white: 'hsl(0, 100%, 100%)', + }, schemes: { - radius: '0.2rem', - contrastParams: { - light: { - saturation: 70, - luminance: 19, - }, - dark: { - saturation: 88, - luminance: 77, - }, - }, - common: { - black: 'hsl(0, 100%, 0%)', - white: 'hsl(0, 100%, 100%)', - }, light: { background: 'hsl(0, 0%, 100%)', foreground: 'hsl(240, 10%, 3.9%)', @@ -71,6 +61,17 @@ const DefaultTheme = { }, }, + contrastParams: { + light: { + saturation: 70, + luminance: 19, + }, + dark: { + saturation: 88, + luminance: 77, + }, + }, + typography: { default: { fontFamily: "'Times New Roman', serif", diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js b/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js index 570a7e989..37b28b6b1 100644 --- a/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js @@ -48,7 +48,7 @@ export const getChatHeaderStyles = ({ theme, mode, colors }) => { width: 24px; height: 24px; border: 1px solid ${colors.border}; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; `, }; diff --git a/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js b/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js index 92855c1b0..fc10cadb8 100644 --- a/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js +++ b/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js @@ -5,7 +5,7 @@ export const getChatInputStyles = ({ theme, colors }) => { const styles = { inputWithFormattingBox: css` border: 1px solid ${colors.border}; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; margin: 0.5rem 2rem 1rem 2rem; &.focused { border: ${`1.5px solid ${colors.ring}`}; @@ -61,7 +61,7 @@ export const getChatInputToolbarStyles = ({ theme, mode, colors }) => { position: relative; flex-direction: row; gap: 0.375rem; - border-radius: 0 0 ${theme.schemes.radius} ${theme.schemes.radius}; + border-radius: 0 0 ${theme.radius} ${theme.radius}; `, }; @@ -84,7 +84,7 @@ export const getFormatterStyles = ({ theme, colors }) => { box-shadow: 0 0 2px ${colors.foreground}; gap: 0.25rem; padding: 0.25rem; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; `, }; diff --git a/packages/layout_editor/src/views/LayoutEditor.style.js b/packages/layout_editor/src/views/LayoutEditor.style.js index 61451c36b..184b9e65b 100644 --- a/packages/layout_editor/src/views/LayoutEditor.style.js +++ b/packages/layout_editor/src/views/LayoutEditor.style.js @@ -11,7 +11,7 @@ export const getEditorStyles = ({ theme, colors }) => { flex: 1; flex-direction: column; border: ${`1.5px solid ${theme.schemes.border}`}; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; overflow: hidden; `, diff --git a/packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js b/packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js index 0bc6c7ce0..37d4a9c32 100644 --- a/packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js +++ b/packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js @@ -36,8 +36,8 @@ export const bubbleStyles = ({ theme, colors }) => { width: fit-content; max-width: 80%; padding: 0.5rem 0.75rem; - border-radius: ${theme.schemes.radius} ${theme.schemes.radius} - ${theme.schemes.radius} 0.2rem; + border-radius: ${theme.radius} ${theme.radius} + ${theme.radius} 0.2rem; background: ${colors.primary}; color: ${colors.primaryForeground}; &:hover { @@ -49,16 +49,16 @@ export const bubbleStyles = ({ theme, colors }) => { position: relative; width: fit-content; max-width: 80%; - border-radius: ${theme.schemes.radius} ${theme.schemes.radius} - ${theme.schemes.radius} 0.2rem; + border-radius: ${theme.radius} ${theme.radius} + ${theme.radius} 0.2rem; `, sequential: css` - border-radius: 0.2rem ${theme.schemes.radius} ${theme.schemes.radius} + border-radius: 0.2rem ${theme.radius} ${theme.radius} 0.2rem; `, lastSequential: css` - border-radius: 0.2rem ${theme.schemes.radius} ${theme.schemes.radius}; + border-radius: 0.2rem ${theme.radius} ${theme.radius}; `, metricsContainer: css` @@ -141,25 +141,25 @@ export const bubbleStylesMe = (customTheme) => { messageBodyMe: css` background: ${colors.secondary}; color: ${colors.secondaryForeground}; - border-radius: ${theme.schemes.radius} ${theme.schemes.radius} 0.2rem - ${theme.schemes.radius}; + border-radius: ${theme.radius} ${theme.radius} 0.2rem + ${theme.radius}; &:hover { background: ${alpha(colors.secondary, 0.8)}; } `, attachmentBodyMe: css` - border-radius: ${theme.schemes.radius} ${theme.schemes.radius} 0.2rem - ${theme.schemes.radius}; + border-radius: ${theme.radius} ${theme.radius} 0.2rem + ${theme.radius}; `, lastSequentialMe: css` - border-radius: ${theme.schemes.radius} 0.2rem ${theme.schemes.radius} - ${theme.schemes.radius}; + border-radius: ${theme.radius} 0.2rem ${theme.radius} + ${theme.radius}; `, sequentialMe: css` - border-radius: ${theme.schemes.radius} 0.2rem 0.2rem - ${theme.schemes.radius}; + border-radius: ${theme.radius} 0.2rem 0.2rem + ${theme.radius}; `, metricsContainerMe: css` diff --git a/packages/layout_editor/src/views/Message/Message.styles.js b/packages/layout_editor/src/views/Message/Message.styles.js index 680062c99..eb5952176 100644 --- a/packages/layout_editor/src/views/Message/Message.styles.js +++ b/packages/layout_editor/src/views/Message/Message.styles.js @@ -103,7 +103,7 @@ export const getMessageDividerStyles = ({ theme, colors }) => { position: absolute; left: 50%; transform: translateX(-50%); - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; `, bar: css` @@ -161,7 +161,7 @@ export const getMessageHeaderStyles = ({ theme, colors }) => { font-size: 0.75rem; padding: 0 0.25rem; margin: 0 0.1rem; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; font-weight: 700; line-height: 1rem; overflow: hidden; @@ -280,7 +280,7 @@ export const getMessageToolboxStyles = ({ theme, colors }) => { box-shadow: 0 0 2px ${colors.foreground}; gap: 0.25rem; padding: 0.25rem; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; `, emojiPickerStyles: css` diff --git a/packages/react/src/hooks/useDisplayNameColor.js b/packages/react/src/hooks/useDisplayNameColor.js index 5e9c32c07..89880c434 100644 --- a/packages/react/src/hooks/useDisplayNameColor.js +++ b/packages/react/src/hooks/useDisplayNameColor.js @@ -16,7 +16,7 @@ const useDisplayNameColor = () => { const getDisplayNameColor = (username) => { const hash = simpleHash(username); - const { saturation, luminance } = theme.schemes.contrastParams[mode]; + const { saturation, luminance } = theme.contrastParams[mode]; const hue = Math.abs(hash) % 360; return `hsl(${hue}, ${saturation}%, ${luminance}%)`; }; diff --git a/packages/react/src/theme/AzureSky.js b/packages/react/src/theme/AzureSky.js index f0bee5f73..d60cbc7bd 100644 --- a/packages/react/src/theme/AzureSky.js +++ b/packages/react/src/theme/AzureSky.js @@ -1,10 +1,10 @@ const AzureSky = { + radius: '0.2rem', + commonColors: { + black: 'hsl(0, 100%, 0%)', + white: 'hsl(0, 100%, 100%)', + }, schemes: { - radius: '0.2rem', - common: { - black: 'hsl(0, 100%, 0%)', - white: 'hsl(0, 100%, 100%)', - }, light: { background: 'hsl(0, 0%, 100%)', foreground: 'hsl(222.2, 84%, 4.9%)', @@ -60,14 +60,6 @@ const AzureSky = { infoForeground: 'hsl(214.4, 75.8%, 19.4%)', }, }, - breakpoints: { - xs: 0, - sm: 600, - md: 900, - lg: 1200, - xl: 1536, - }, - components: {}, typography: { default: { diff --git a/packages/react/src/theme/CurveVariant/AquaBreeze.js b/packages/react/src/theme/CurveVariant/AquaBreeze.js index 63f6c4cf5..96b8007ef 100644 --- a/packages/react/src/theme/CurveVariant/AquaBreeze.js +++ b/packages/react/src/theme/CurveVariant/AquaBreeze.js @@ -1,4 +1,9 @@ const AquaBreeze = { + radius: '1.5rem', + commonColors: { + black: 'hsl(0, 0%, 0%)', + white: 'hsl(0, 0%, 100%)', + }, schemes: { light: { background: 'hsl(192, 52%, 96%)', @@ -54,34 +59,8 @@ const AquaBreeze = { info: 'hsl(214.3, 77.8%, 92.9%)', infoForeground: 'hsl(214.4, 75.8%, 19.4%)', }, - common: { - black: 'hsl(0, 0%, 0%)', - white: 'hsl(0, 0%, 100%)', - }, - radius: '1.5rem', }, - breakpoints: { - xs: 0, - sm: 600, - md: 900, - lg: 1200, - xl: 1536, - }, - variants: { - Message: 'bubble', - }, - - components: { - MessageToolbox: { - configOverrides: { - optionConfig: { - surfaceItems: ['reaction', 'reply', 'quote', 'star'], - menuItems: ['pin', 'edit', 'delete', 'report'], - }, - }, - }, - }, typography: { default: { fontFamily: "'Times New Roman', serif", @@ -116,10 +95,26 @@ const AquaBreeze = { fontWeight: 500, }, }, + shadows: [ 'none', 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', 'rgba(100, 100, 111, 0.2) 0px 7px 29px 0px', ], + + variants: { + Message: 'bubble', + }, + + components: { + MessageToolbox: { + configOverrides: { + optionConfig: { + surfaceItems: ['reaction', 'reply', 'quote', 'star'], + menuItems: ['pin', 'edit', 'delete', 'report'], + }, + }, + }, + }, }; export default AquaBreeze; diff --git a/packages/react/src/theme/CurveVariant/AzureSky.js b/packages/react/src/theme/CurveVariant/AzureSky.js index 618e8a353..5e6fe1626 100644 --- a/packages/react/src/theme/CurveVariant/AzureSky.js +++ b/packages/react/src/theme/CurveVariant/AzureSky.js @@ -1,10 +1,12 @@ const AzureSky = { + radius: '1.5rem', + + commonColors: { + black: 'hsl(0, 100%, 0%)', + white: 'hsl(0, 100%, 100%)', + }, + schemes: { - radius: '1.5rem', - common: { - black: 'hsl(0, 100%, 0%)', - white: 'hsl(0, 100%, 100%)', - }, light: { background: 'hsl(0, 0%, 100%)', foreground: 'hsl(222.2, 84%, 4.9%)', @@ -60,27 +62,6 @@ const AzureSky = { infoForeground: 'hsl(214.4, 75.8%, 19.4%)', }, }, - breakpoints: { - xs: 0, - sm: 600, - md: 900, - lg: 1200, - xl: 1536, - }, - variants: { - Message: 'bubble', - }, - - components: { - MessageToolbox: { - configOverrides: { - optionConfig: { - surfaceItems: ['reaction', 'reply', 'quote', 'star'], - menuItems: ['pin', 'edit', 'delete', 'report'], - }, - }, - }, - }, typography: { default: { @@ -116,10 +97,26 @@ const AzureSky = { fontWeight: 500, }, }, + shadows: [ 'none', 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', 'rgba(100, 100, 111, 0.2) 0px 7px 29px 0px', ], + + variants: { + Message: 'bubble', + }, + + components: { + MessageToolbox: { + configOverrides: { + optionConfig: { + surfaceItems: ['reaction', 'reply', 'quote', 'star'], + menuItems: ['pin', 'edit', 'delete', 'report'], + }, + }, + }, + }, }; export default AzureSky; diff --git a/packages/react/src/theme/CurveVariant/BlushCandy.js b/packages/react/src/theme/CurveVariant/BlushCandy.js index a10e03762..61c1eaeb9 100644 --- a/packages/react/src/theme/CurveVariant/BlushCandy.js +++ b/packages/react/src/theme/CurveVariant/BlushCandy.js @@ -1,4 +1,9 @@ const BlushCandy = { + radius: '1.5rem', + commonColors: { + black: 'hsl(0, 0%, 0%)', + white: 'hsl(0, 0%, 100%)', + }, schemes: { light: { background: 'hsl(313, 52%, 96%)', @@ -54,32 +59,6 @@ const BlushCandy = { info: 'hsl(214.3, 77.8%, 92.9%)', infoForeground: 'hsl(214.4, 75.8%, 19.4%)', }, - common: { - black: 'hsl(0, 0%, 0%)', - white: 'hsl(0, 0%, 100%)', - }, - radius: '1.5rem', - }, - breakpoints: { - xs: 0, - sm: 600, - md: 900, - lg: 1200, - xl: 1536, - }, - variants: { - Message: 'bubble', - }, - - components: { - MessageToolbox: { - configOverrides: { - optionConfig: { - surfaceItems: ['reaction', 'reply', 'quote', 'star'], - menuItems: ['pin', 'edit', 'delete', 'report'], - }, - }, - }, }, typography: { @@ -116,10 +95,26 @@ const BlushCandy = { fontWeight: 500, }, }, + shadows: [ 'none', 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', 'rgba(100, 100, 111, 0.2) 0px 7px 29px 0px', ], + + variants: { + Message: 'bubble', + }, + + components: { + MessageToolbox: { + configOverrides: { + optionConfig: { + surfaceItems: ['reaction', 'reply', 'quote', 'star'], + menuItems: ['pin', 'edit', 'delete', 'report'], + }, + }, + }, + }, }; export default BlushCandy; diff --git a/packages/react/src/theme/CurveVariant/PineWhisper.js b/packages/react/src/theme/CurveVariant/PineWhisper.js index 5a6fc0a4b..885f9a647 100644 --- a/packages/react/src/theme/CurveVariant/PineWhisper.js +++ b/packages/react/src/theme/CurveVariant/PineWhisper.js @@ -1,4 +1,9 @@ const PineWhisper = { + radius: '1.5rem', + commonColors: { + black: 'hsl(0, 0%, 0%)', + white: 'hsl(0, 0%, 100%)', + }, schemes: { light: { background: 'hsl(0, 0%, 100%)', @@ -54,33 +59,6 @@ const PineWhisper = { info: 'hsl(214.3, 77.8%, 92.9%)', infoForeground: 'hsl(214.4, 75.8%, 19.4%)', }, - common: { - black: 'hsl(0, 0%, 0%)', - white: 'hsl(0, 0%, 100%)', - }, - radius: '1.5rem', - }, - - breakpoints: { - xs: 0, - sm: 600, - md: 900, - lg: 1200, - xl: 1536, - }, - variants: { - Message: 'bubble', - }, - - components: { - MessageToolbox: { - configOverrides: { - optionConfig: { - surfaceItems: ['reaction', 'reply', 'quote', 'star'], - menuItems: ['pin', 'edit', 'delete', 'report'], - }, - }, - }, }, typography: { @@ -117,10 +95,26 @@ const PineWhisper = { fontWeight: 500, }, }, + shadows: [ 'none', 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', 'rgba(100, 100, 111, 0.2) 0px 7px 29px 0px', ], + + variants: { + Message: 'bubble', + }, + + components: { + MessageToolbox: { + configOverrides: { + optionConfig: { + surfaceItems: ['reaction', 'reply', 'quote', 'star'], + menuItems: ['pin', 'edit', 'delete', 'report'], + }, + }, + }, + }, }; export default PineWhisper; diff --git a/packages/react/src/theme/DefaultTheme.js b/packages/react/src/theme/DefaultTheme.js index 6c3eeca9e..0a2fe776c 100644 --- a/packages/react/src/theme/DefaultTheme.js +++ b/packages/react/src/theme/DefaultTheme.js @@ -1,10 +1,10 @@ const DefaultTheme = { + radius: '0.2rem', + commonColors: { + black: 'hsl(0, 100%, 0%)', + white: 'hsl(0, 100%, 100%)', + }, schemes: { - radius: '0.2rem', - common: { - black: 'hsl(0, 100%, 0%)', - white: 'hsl(0, 100%, 100%)', - }, light: { background: 'hsl(0, 0%, 100%)', foreground: 'hsl(240, 10%, 3.9%)', @@ -61,15 +61,6 @@ const DefaultTheme = { }, }, - breakpoints: { - xs: 0, - sm: 600, - md: 900, - lg: 1200, - xl: 1536, - }, - components: {}, - typography: { default: { fontFamily: "'Times New Roman', serif", @@ -101,6 +92,7 @@ const DefaultTheme = { fontWeight: 500, }, }, + shadows: [ 'none', 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', diff --git a/packages/react/src/theme/MintMeadow.js b/packages/react/src/theme/MintMeadow.js index 4146c9c09..d0b97983e 100644 --- a/packages/react/src/theme/MintMeadow.js +++ b/packages/react/src/theme/MintMeadow.js @@ -1,19 +1,12 @@ const MintMeadow = { - breakpoints: { - xs: 0, - sm: 600, - md: 900, - lg: 1200, - xl: 1536, + radius: '0.2rem', + + commonColors: { + black: 'hsl(0, 100%, 0%)', + white: 'hsl(0, 100%, 100%)', }, - components: {}, schemes: { - radius: '0.2rem', - common: { - black: 'hsl(0, 100%, 0%)', - white: 'hsl(0, 100%, 100%)', - }, light: { background: 'hsl(98, 28%, 95%)', foreground: 'hsl(98, 5%, 8%)', @@ -104,6 +97,7 @@ const MintMeadow = { fontWeight: 500, }, }, + shadows: [ 'none', 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', diff --git a/packages/react/src/theme/ModernVariant/StormySeas.js b/packages/react/src/theme/ModernVariant/StormySeas.js index 67e1d864c..d59456cc6 100644 --- a/packages/react/src/theme/ModernVariant/StormySeas.js +++ b/packages/react/src/theme/ModernVariant/StormySeas.js @@ -1,20 +1,12 @@ const StormySeas = { + radius: '0.2rem', + + commonColors: { + black: 'hsl(0, 100%, 0%)', + white: 'hsl(0, 100%, 100%)', + }, + schemes: { - radius: '0.2rem', - contrastParams: { - light: { - saturation: 70, - luminance: 19, - }, - dark: { - saturation: 88, - luminance: 77, - }, - }, - common: { - black: 'hsl(0, 100%, 0%)', - white: 'hsl(0, 100%, 100%)', - }, light: { background: 'hsl(0, 0%, 100%)', foreground: 'hsl(222.2, 84%, 4.9%)', @@ -71,51 +63,14 @@ const StormySeas = { }, }, - breakpoints: { - xs: 0, - sm: 600, - md: 900, - lg: 1200, - xl: 1536, - }, - - variants: { - MessageHeader: 'colorize', - PinnedMessages: { - viewType: 'Popup', - }, - ThreadedMessages: { - viewType: 'Popup', - }, - - MentionedMessages: { - viewType: 'Popup', - }, - StarredMessages: { - viewType: 'Popup', - }, - - FileGallery: { - viewType: 'Popup', + contrastParams: { + light: { + saturation: 70, + luminance: 19, }, - }, - - components: { - ChatHeader: { - configOverrides: { - optionConfig: { - surfaceItems: [ - 'minmax', - 'close', - 'thread', - 'mentions', - 'starred', - 'pinned', - 'files', - ], - menuItems: ['members', 'search', 'rInfo', 'logout'], - }, - }, + dark: { + saturation: 88, + luminance: 77, }, }, @@ -153,10 +108,51 @@ const StormySeas = { fontWeight: 500, }, }, + shadows: [ 'none', 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', 'rgba(100, 100, 111, 0.2) 0px 7px 29px 0px', ], + + variants: { + MessageHeader: 'colorize', + PinnedMessages: { + viewType: 'Popup', + }, + ThreadedMessages: { + viewType: 'Popup', + }, + + MentionedMessages: { + viewType: 'Popup', + }, + StarredMessages: { + viewType: 'Popup', + }, + + FileGallery: { + viewType: 'Popup', + }, + }, + + components: { + ChatHeader: { + configOverrides: { + optionConfig: { + surfaceItems: [ + 'minmax', + 'close', + 'thread', + 'mentions', + 'starred', + 'pinned', + 'files', + ], + menuItems: ['members', 'search', 'rInfo', 'logout'], + }, + }, + }, + }, }; export default StormySeas; diff --git a/packages/react/src/theme/RoseEmber.js b/packages/react/src/theme/RoseEmber.js index 69ced5bc4..197682c17 100644 --- a/packages/react/src/theme/RoseEmber.js +++ b/packages/react/src/theme/RoseEmber.js @@ -1,19 +1,12 @@ const RoseEmber = { - breakpoints: { - xs: 0, - sm: 600, - md: 900, - lg: 1200, - xl: 1536, + radius: '0.2rem', + + commonColors: { + black: 'hsl(0, 100%, 0%)', + white: 'hsl(0, 100%, 100%)', }, - components: {}, schemes: { - radius: '0.2rem', - common: { - black: 'hsl(0, 100%, 0%)', - white: 'hsl(0, 100%, 100%)', - }, light: { background: 'hsl(343.4, 63%, 95%)', foreground: 'hsl(343.4, 5%, 10%)', @@ -104,6 +97,7 @@ const RoseEmber = { fontWeight: 500, }, }, + shadows: [ 'none', 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', diff --git a/packages/react/src/views/AttachmentPreview/PreviewType/image.js b/packages/react/src/views/AttachmentPreview/PreviewType/image.js index 7f27dc0e4..5c2d3b4d8 100644 --- a/packages/react/src/views/AttachmentPreview/PreviewType/image.js +++ b/packages/react/src/views/AttachmentPreview/PreviewType/image.js @@ -11,7 +11,7 @@ function PreviewImage({ previewURL }) { style={{ maxWidth: '90%', objectFit: 'contain', - borderRadius: theme.schemes.radius, + borderRadius: theme.radius, }} /> diff --git a/packages/react/src/views/ChannelState/ChannelState.styles.js b/packages/react/src/views/ChannelState/ChannelState.styles.js index b18a82c69..ddcfb7ecc 100644 --- a/packages/react/src/views/ChannelState/ChannelState.styles.js +++ b/packages/react/src/views/ChannelState/ChannelState.styles.js @@ -18,7 +18,7 @@ const useChannelStateStyles = () => { padding: 1.5px 5px; justify-content: center; align-items: center; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; color: ${colors.secondaryForeground}; `; diff --git a/packages/react/src/views/ChatInput/ChatInput.styles.js b/packages/react/src/views/ChatInput/ChatInput.styles.js index cd20819cf..070295a47 100644 --- a/packages/react/src/views/ChatInput/ChatInput.styles.js +++ b/packages/react/src/views/ChatInput/ChatInput.styles.js @@ -5,7 +5,7 @@ export const useChatInputStyles = () => { const { theme, colors } = useTheme(); const inputWithFormattingBox = css` border: 1px solid ${colors.border}; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; margin: 0.5rem 2rem 1rem 2rem; &.focused { border: ${`1.5px solid ${colors.ring}`}; @@ -76,7 +76,7 @@ export const useChatInputFormattingToolbarStyles = () => { position: relative; flex-direction: row; gap: 0.375rem; - border-radius: 0 0 ${theme.schemes.radius} ${theme.schemes.radius}; + border-radius: 0 0 ${theme.radius} ${theme.radius}; `; return { chatFormat }; diff --git a/packages/react/src/views/EmbeddedChat.styles.js b/packages/react/src/views/EmbeddedChat.styles.js index 4297ef33e..88343d416 100644 --- a/packages/react/src/views/EmbeddedChat.styles.js +++ b/packages/react/src/views/EmbeddedChat.styles.js @@ -7,7 +7,7 @@ export const styles = { display: flex; flex-direction: column; border: ${`1.5px solid ${theme.schemes[dark ? 'dark' : 'light'].border}`}; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; overflow: hidden; `, fullscreen: css` diff --git a/packages/react/src/views/EmojiPicker/EmojiPicker.styles.js b/packages/react/src/views/EmojiPicker/EmojiPicker.styles.js index e65bf7876..de4bc3314 100644 --- a/packages/react/src/views/EmojiPicker/EmojiPicker.styles.js +++ b/packages/react/src/views/EmojiPicker/EmojiPicker.styles.js @@ -23,14 +23,14 @@ const useEmojiPickerStyles = () => { --epr-highlight-color: ${calculatedColors}; --epr-focus-bg-color: ${calculatedColors}; --epr-horizontal-padding: 10px; - --epr-picker-border-radius: ${theme.schemes.radius}; + --epr-picker-border-radius: ${theme.radius}; --epr-search-border-color: var(--epr-highlight-color); --epr-header-padding: 15px var(--epr-horizontal-padding); --epr-active-skin-tone-indicator-border-color: var(--epr-highlight-color); --epr-active-skin-hover-color: var(--epr-hover-bg-color); --epr-search-input-bg-color-active: var(--epr-search-input-bg-color); --epr-search-input-padding: 0 30px; - --epr-search-input-border-radius: ${theme.schemes.radius}; + --epr-search-input-border-radius: ${theme.radius}; --epr-search-input-height: 40px; --epr-search-input-text-color: var(--epr-text-color); --epr-search-input-placeholder-color: var(--epr-text-color); diff --git a/packages/react/src/views/ImageGallery/ImageGallery.styles.js b/packages/react/src/views/ImageGallery/ImageGallery.styles.js index d2cd56485..b69f3dae2 100644 --- a/packages/react/src/views/ImageGallery/ImageGallery.styles.js +++ b/packages/react/src/views/ImageGallery/ImageGallery.styles.js @@ -11,7 +11,7 @@ const useImageGalleryStyles = () => { width: 100%; height: 100%; z-index: 1500; - background-color: ${alpha(theme.schemes.common.black, 0.5)}; + background-color: ${alpha(theme.commonColors.black, 0.5)}; `; const exit = css` @@ -21,7 +21,7 @@ const useImageGalleryStyles = () => { background: ${colors.primary}; color: ${colors.primaryForeground}; border: none; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; padding: 8px 16px; cursor: pointer; z-index: 1501; diff --git a/packages/react/src/views/LinkPreview/LinkPreview.styles.js b/packages/react/src/views/LinkPreview/LinkPreview.styles.js index bbc3e33cf..4fbc01306 100644 --- a/packages/react/src/views/LinkPreview/LinkPreview.styles.js +++ b/packages/react/src/views/LinkPreview/LinkPreview.styles.js @@ -12,7 +12,7 @@ const useLinkPreviewStyles = () => { const linkPreviewContainer = css` max-width: 16rem; border: 1px solid ${colors.border}; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; margin-bottom: 0.75rem; overflow: hidden; `; diff --git a/packages/react/src/views/Message/BubbleVariant/Bubble.styles.js b/packages/react/src/views/Message/BubbleVariant/Bubble.styles.js index dcf49f821..b05ed1376 100644 --- a/packages/react/src/views/Message/BubbleVariant/Bubble.styles.js +++ b/packages/react/src/views/Message/BubbleVariant/Bubble.styles.js @@ -38,8 +38,8 @@ export const bubbleStyles = (customTheme) => { width: fit-content; max-width: 80%; padding: 0.5rem 0.75rem; - border-radius: ${theme.schemes.radius} ${theme.schemes.radius} - ${theme.schemes.radius} 0.2rem; + border-radius: ${theme.radius} ${theme.radius} + ${theme.radius} 0.2rem; background: ${colors.primary}; color: ${colors.primaryForeground}; &:hover { @@ -51,16 +51,16 @@ export const bubbleStyles = (customTheme) => { position: relative; width: fit-content; max-width: 80%; - border-radius: ${theme.schemes.radius} ${theme.schemes.radius} - ${theme.schemes.radius} 0.2rem; + border-radius: ${theme.radius} ${theme.radius} + ${theme.radius} 0.2rem; `, sequential: css` - border-radius: 0.2rem ${theme.schemes.radius} ${theme.schemes.radius} + border-radius: 0.2rem ${theme.radius} ${theme.radius} 0.2rem; `, lastSequential: css` - border-radius: 0.2rem ${theme.schemes.radius} ${theme.schemes.radius}; + border-radius: 0.2rem ${theme.radius} ${theme.radius}; `, metricsContainer: css` @@ -145,25 +145,25 @@ export const bubbleStylesMe = (customTheme) => { messageBodyMe: css` background: ${colors.secondary}; color: ${colors.secondaryForeground}; - border-radius: ${theme.schemes.radius} ${theme.schemes.radius} 0.2rem - ${theme.schemes.radius}; + border-radius: ${theme.radius} ${theme.radius} 0.2rem + ${theme.radius}; &:hover { background: ${alpha(colors.secondary, 0.8)}; } `, attachmentBodyMe: css` - border-radius: ${theme.schemes.radius} ${theme.schemes.radius} 0.2rem - ${theme.schemes.radius}; + border-radius: ${theme.radius} ${theme.radius} 0.2rem + ${theme.radius}; `, lastSequentialMe: css` - border-radius: ${theme.schemes.radius} 0.2rem ${theme.schemes.radius} - ${theme.schemes.radius}; + border-radius: ${theme.radius} 0.2rem ${theme.radius} + ${theme.radius}; `, sequentialMe: css` - border-radius: ${theme.schemes.radius} 0.2rem 0.2rem - ${theme.schemes.radius}; + border-radius: ${theme.radius} 0.2rem 0.2rem + ${theme.radius}; `, metricsContainerMe: css` diff --git a/packages/react/src/views/Message/Message.styles.js b/packages/react/src/views/Message/Message.styles.js index 80a7f1553..25b49130a 100644 --- a/packages/react/src/views/Message/Message.styles.js +++ b/packages/react/src/views/Message/Message.styles.js @@ -94,7 +94,7 @@ export const useMessageDividerStyles = () => { position: absolute; left: 50%; transform: translateX(-50%); - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; `; const bar = css` @@ -152,7 +152,7 @@ export const useMessageHeaderStyles = () => { font-size: 0.75rem; padding: 0 0.25rem; margin: 0 0.1rem; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; font-weight: 700; line-height: 1rem; overflow: hidden; @@ -273,7 +273,7 @@ export const useMessageToolboxStyles = () => { box-shadow: 0 0 2px ${colors.foreground}; gap: 0.25rem; padding: 0.25rem; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; `; const emojiPickerStyles = css` diff --git a/packages/react/src/views/QuoteMessage/QuoteMessage.styles.js b/packages/react/src/views/QuoteMessage/QuoteMessage.styles.js index 16a0bfc2e..b261b83a2 100644 --- a/packages/react/src/views/QuoteMessage/QuoteMessage.styles.js +++ b/packages/react/src/views/QuoteMessage/QuoteMessage.styles.js @@ -12,7 +12,7 @@ const useQuoteMessageStyles = () => { padding: 0.5rem; z-index: 1200; border: 1px solid ${colors.border}; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; `; const avatarContainer = css` diff --git a/packages/react/src/views/UserInformation/UserInformation.styles.js b/packages/react/src/views/UserInformation/UserInformation.styles.js index 58e57699c..0e1eb86a9 100644 --- a/packages/react/src/views/UserInformation/UserInformation.styles.js +++ b/packages/react/src/views/UserInformation/UserInformation.styles.js @@ -21,7 +21,7 @@ const useUserInformationStyles = () => { font-size: 0.75rem; padding: 0 0.25rem; margin: 0 0.1rem; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; font-weight: 700; line-height: 1rem; overflow: hidden; diff --git a/packages/react/tools/theme-generator.js b/packages/react/tools/theme-generator.js index 428ae0f31..c862991eb 100644 --- a/packages/react/tools/theme-generator.js +++ b/packages/react/tools/theme-generator.js @@ -98,7 +98,8 @@ const cssString = ` // Add hardcoded colors and other properties const otherProps = { - common: { + radius: '0.2rem', + commonColors: { black: 'hsl(0, 0%, 0%)', white: 'hsl(0, 0%, 100%)', }, @@ -118,7 +119,6 @@ const otherProps = { info: 'hsl(214.3, 77.8%, 92.9%)', infoForeground: 'hsl(214.4, 75.8%, 19.4%)', }, - radius: '0.2rem', typography: { default: { fontFamily: "'Times New Roman', serif", @@ -158,19 +158,10 @@ const otherProps = { 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px', 'rgba(100, 100, 111, 0.2) 0px 7px 29px 0px', ], - zIndex: { - divider: 1000, - body: 1100, - general: 1200, - menu: 1300, - tooltip: 1400, - modal: 1500, - toastbar: 1600, - }, }; const themeObject = parseCSS(cssString); -themeObject.schemes.common = otherProps.common; +themeObject.commonColors = otherProps.commonColors; themeObject.schemes.light = { ...themeObject.schemes.light, ...otherProps.light, @@ -179,7 +170,7 @@ themeObject.schemes.dark = { ...themeObject.schemes.dark, ...otherProps.dark, }; -themeObject.schemes.radius = otherProps.radius; +themeObject.radius = otherProps.radius; themeObject.typography = otherProps.typography; themeObject.shadows = otherProps.shadows; themeObject.zIndex = otherProps.zIndex; diff --git a/packages/ui-elements/src/components/Avatar/Avatar.styles.js b/packages/ui-elements/src/components/Avatar/Avatar.styles.js index 3a9983282..481c919a3 100644 --- a/packages/ui-elements/src/components/Avatar/Avatar.styles.js +++ b/packages/ui-elements/src/components/Avatar/Avatar.styles.js @@ -4,7 +4,7 @@ import useTheme from '../../hooks/useTheme'; export const useAvatarStyles = () => { const { theme, colors } = useTheme(); const imageAvatar = (size) => css` - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; height: ${size}; width: ${size}; `; @@ -15,7 +15,7 @@ export const useAvatarStyles = () => { align-items: center; background-color: ${colors.primary}; color: ${colors.primaryForeground}; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; height: ${size}; width: ${size}; `; diff --git a/packages/ui-elements/src/components/Button/Button.styles.js b/packages/ui-elements/src/components/Button/Button.styles.js index 25e1d05ed..1afab3b3f 100644 --- a/packages/ui-elements/src/components/Button/Button.styles.js +++ b/packages/ui-elements/src/components/Button/Button.styles.js @@ -35,7 +35,7 @@ const useButtonStyles = (type, size) => { text-overflow: ellipsis; white-space: nowrap; align-self: flex-start; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; &.ec-button--small { font-size: 0.75rem; font-weight: 700; diff --git a/packages/ui-elements/src/components/CheckBox/CheckBox.styles.js b/packages/ui-elements/src/components/CheckBox/CheckBox.styles.js index e197a2839..d3ce08f22 100644 --- a/packages/ui-elements/src/components/CheckBox/CheckBox.styles.js +++ b/packages/ui-elements/src/components/CheckBox/CheckBox.styles.js @@ -12,7 +12,7 @@ const useCheckBoxStyles = (checked) => { width: 1rem; box-sizing: border-box; border: ${!checked ? `2px solid ${colors.border}` : `none`}; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; cursor: pointer; outline: none; &:active { diff --git a/packages/ui-elements/src/components/Divider/Divider.styles.js b/packages/ui-elements/src/components/Divider/Divider.styles.js index 629eda4b7..54322f5b0 100644 --- a/packages/ui-elements/src/components/Divider/Divider.styles.js +++ b/packages/ui-elements/src/components/Divider/Divider.styles.js @@ -7,7 +7,7 @@ const useDividerStyles = () => { height: 2px; margin: 0 8px 8px; border: 0; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; background-color: ${colors.secondary}; `; diff --git a/packages/ui-elements/src/components/Input/Input.styles.js b/packages/ui-elements/src/components/Input/Input.styles.js index 132912f80..33971760b 100644 --- a/packages/ui-elements/src/components/Input/Input.styles.js +++ b/packages/ui-elements/src/components/Input/Input.styles.js @@ -25,7 +25,7 @@ const useInputStyles = () => { line-height: 1.25rem; overflow: hidden; text-overflow: ellipsis; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; box-shadow: none; border: 1px solid ${colors.border}; outline: none; diff --git a/packages/ui-elements/src/components/MessageGenericPreview/MessageGenericPreview.styles.js b/packages/ui-elements/src/components/MessageGenericPreview/MessageGenericPreview.styles.js index 0916ff840..a6faa0d15 100644 --- a/packages/ui-elements/src/components/MessageGenericPreview/MessageGenericPreview.styles.js +++ b/packages/ui-elements/src/components/MessageGenericPreview/MessageGenericPreview.styles.js @@ -10,7 +10,7 @@ export const useMessageGenericPreviewStyles = () => { flex-direction: column; padding: 0.75rem; border: 1px solid ${colors.border}; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; background-color: ${colors.background}; `; diff --git a/packages/ui-elements/src/components/Modal/Modal.styles.js b/packages/ui-elements/src/components/Modal/Modal.styles.js index 8ef5b11c1..71f93e1bd 100644 --- a/packages/ui-elements/src/components/Modal/Modal.styles.js +++ b/packages/ui-elements/src/components/Modal/Modal.styles.js @@ -17,7 +17,7 @@ export const useModalstyles = () => { padding: 0.5rem; color: ${colors.foreground}; background: ${colors.background}; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; top: 50%; left: 50%; transform: translate(-50%, -50%); @@ -41,7 +41,7 @@ export const useModalBackdropStyles = () => { top: 0; right: 0; z-index: ${theme.zIndex?.modal || 1500}; - background: ${alpha(theme.schemes.common.black, 0.5)}; + background: ${alpha(theme.commonColors.black, 0.5)}; width: 100%; height: 100%; `; diff --git a/packages/ui-elements/src/components/MultiSelect/MultiSelect.styles.js b/packages/ui-elements/src/components/MultiSelect/MultiSelect.styles.js index bc72d9704..6ff6ec4e1 100644 --- a/packages/ui-elements/src/components/MultiSelect/MultiSelect.styles.js +++ b/packages/ui-elements/src/components/MultiSelect/MultiSelect.styles.js @@ -28,7 +28,7 @@ const useMultiSelectStyles = () => { border-width: 1px; border-color: ${colors.border}; border-style: solid; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; background-color: ${colors.background}; `, diff --git a/packages/ui-elements/src/components/Popup/Popup.styles.js b/packages/ui-elements/src/components/Popup/Popup.styles.js index 0f3eaf840..fa956fa71 100644 --- a/packages/ui-elements/src/components/Popup/Popup.styles.js +++ b/packages/ui-elements/src/components/Popup/Popup.styles.js @@ -11,7 +11,7 @@ export const usePopupStyles = () => { flex-direction: column; z-index: ${theme.zIndex?.modal || 1500}; box-shadow: ${theme.shadows[2]}; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; background: ${colors.background}; border: 1px solid ${colors.border}; width: ${width}; @@ -56,7 +56,7 @@ export const usePopupHeaderStyles = () => { align-items: center; justify-content: space-around; border: 1px solid ${colors.border}; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; position: relative; margin: 0 1rem; &.focused { diff --git a/packages/ui-elements/src/components/Sidebar/Sidebar.styles.js b/packages/ui-elements/src/components/Sidebar/Sidebar.styles.js index 84617a076..1f55f3bcb 100644 --- a/packages/ui-elements/src/components/Sidebar/Sidebar.styles.js +++ b/packages/ui-elements/src/components/Sidebar/Sidebar.styles.js @@ -48,7 +48,7 @@ const useSidebarStyles = () => { justify-content: space-between; border: 1px solid ${colors.border}; padding: 0 0.5rem; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; position: relative; margin: 0 1rem 1rem; &.focused { diff --git a/packages/ui-elements/src/components/Skeleton/Skeleton.styles.js b/packages/ui-elements/src/components/Skeleton/Skeleton.styles.js index 09cb136f8..43f87c2de 100644 --- a/packages/ui-elements/src/components/Skeleton/Skeleton.styles.js +++ b/packages/ui-elements/src/components/Skeleton/Skeleton.styles.js @@ -22,7 +22,7 @@ const useSkeletonStyles = () => { height: 1.2em; animation: ${animation} 1s linear 0s infinite running; border-radius: 0.25rem; - background: ${lighten(theme.schemes.common.black, 2)}; + background: ${lighten(theme.commonColors.black, 2)}; &.text { height: auto; diff --git a/packages/ui-elements/src/components/StaticSelect/StaticSelect.styles.js b/packages/ui-elements/src/components/StaticSelect/StaticSelect.styles.js index f0767930c..f1f1129fc 100644 --- a/packages/ui-elements/src/components/StaticSelect/StaticSelect.styles.js +++ b/packages/ui-elements/src/components/StaticSelect/StaticSelect.styles.js @@ -28,7 +28,7 @@ const useStaticSelectStyles = () => { border-width: 1px; border-color: ${colors.border}; border-style: solid; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; background-color: ${colors.background}; `, diff --git a/packages/ui-elements/src/components/ToastBar/ToastBar.styles.js b/packages/ui-elements/src/components/ToastBar/ToastBar.styles.js index 731ea006b..e2b139ca7 100644 --- a/packages/ui-elements/src/components/ToastBar/ToastBar.styles.js +++ b/packages/ui-elements/src/components/ToastBar/ToastBar.styles.js @@ -26,7 +26,7 @@ export const toastbarStyles = { max-width: 20rem; color: ${color}; background-color: ${bgColor}; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; padding: 0.75em 1em; z-index: ${theme.zIndex?.toastbar || 1600}; animation: ${animation} ${time}ms ease-in-out forwards; @@ -37,7 +37,7 @@ export const toastBarContainerStyles = { container: (theme) => css` position: absolute; z-index: ${theme.zIndex?.toastbar || 1600}; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; animation: ${animation} ${2000}ms ease-in-out forwards; `, }; diff --git a/packages/ui-elements/src/components/Tooltip/Tooltip.styles.js b/packages/ui-elements/src/components/Tooltip/Tooltip.styles.js index 8ca69fbf0..31bed3482 100644 --- a/packages/ui-elements/src/components/Tooltip/Tooltip.styles.js +++ b/packages/ui-elements/src/components/Tooltip/Tooltip.styles.js @@ -10,7 +10,7 @@ const useTooltipStyles = (position) => { background-color: ${invertedColors.secondary}; color: ${invertedColors.secondaryForeground}; padding: 8.5px; - border-radius: ${theme.schemes.radius}; + border-radius: ${theme.radius}; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); z-index: ${theme.zIndex?.tooltip || 1400}; font-size: 12.5px; diff --git a/packages/ui-elements/src/theme/DefaultTheme.js b/packages/ui-elements/src/theme/DefaultTheme.js index 5fa9eb270..2859cd048 100644 --- a/packages/ui-elements/src/theme/DefaultTheme.js +++ b/packages/ui-elements/src/theme/DefaultTheme.js @@ -1,10 +1,12 @@ const DefaultTheme = { + radius: '0.2rem', + + commonColors: { + black: 'hsl(0, 100%, 0%)', + white: 'hsl(0, 100%, 100%)', + }, + schemes: { - radius: '0.2rem', - common: { - black: 'hsl(0, 100%, 0%)', - white: 'hsl(0, 100%, 100%)', - }, light: { background: 'hsl(0, 0%, 100%)', foreground: 'hsl(240, 10%, 3.9%)', From 322e5b2bd5040a176b45c021c681ea7028543a75 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Fri, 23 Aug 2024 00:10:12 +0530 Subject: [PATCH 090/104] changed theme structure --- .../src/context/ThemeContextProvider.js | 15 +++++++++++---- packages/ui-elements/src/hooks/useTheme.js | 16 ++++++++++------ 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/packages/ui-elements/src/context/ThemeContextProvider.js b/packages/ui-elements/src/context/ThemeContextProvider.js index 084a1a9e4..30d4f129b 100644 --- a/packages/ui-elements/src/context/ThemeContextProvider.js +++ b/packages/ui-elements/src/context/ThemeContextProvider.js @@ -17,6 +17,15 @@ export const ThemeProvider = ({ const colors = theme.schemes?.[mode]; const invertedColors = theme.schemes?.[invertMode(mode)]; + const modifiedTheme = useMemo(() => { + const { schemes, ...restParams } = theme; + return { + ...restParams, + colors, + invertedColors, + }; + }, [theme, colors, invertedColors]); + useEffect(() => { if (initialTheme) { setTheme(initialTheme); @@ -31,14 +40,12 @@ export const ThemeProvider = ({ const value = useMemo( () => ({ - theme, + theme: modifiedTheme, mode, - colors, - invertedColors, setMode, setTheme, }), - [theme, mode, colors, invertedColors] + [modifiedTheme, mode] ); return ( diff --git a/packages/ui-elements/src/hooks/useTheme.js b/packages/ui-elements/src/hooks/useTheme.js index 79233dd30..b3dfe3ba0 100644 --- a/packages/ui-elements/src/hooks/useTheme.js +++ b/packages/ui-elements/src/hooks/useTheme.js @@ -9,15 +9,19 @@ const useTheme = () => { if (!context) { const defaultMode = 'light'; - const defaultTheme = DefaultTheme; - const colors = defaultTheme.schemes?.[defaultMode]; - const invertedColors = defaultTheme.schemes?.[invertMode(defaultMode)]; + const { schemes, ...restParams } = DefaultTheme; + const colors = schemes?.[defaultMode]; + const invertedColors = schemes?.[invertMode(defaultMode)]; - return { - theme: defaultTheme, - mode: defaultMode, + const theme = { + ...restParams, colors, invertedColors, + }; + + return { + theme: theme, + mode: defaultMode, setMode: () => {}, setTheme: () => {}, }; From 8a0650e954b1976d949e192d8b7b5892ec241550 Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Fri, 23 Aug 2024 01:39:50 +0530 Subject: [PATCH 091/104] adjusted theme.colors --- .../components/SortableMenu/Menu.styles.js | 18 +++--- .../SurfaceMenu/SurfaceMenu.styles.js | 10 ++-- .../src/views/ChatHeader/ChatHeader.styles.js | 8 +-- .../src/views/ChatInput/ChatInput.styles.js | 18 +++--- .../src/views/ChatLayout/ChatLayout.jsx | 5 +- .../src/views/ChatLayout/ChatLayout.styles.js | 2 +- .../layout_editor/src/views/GlobalStyles.jsx | 8 +-- .../layout_editor/src/views/LayoutEditor.jsx | 4 +- .../src/views/LayoutEditor.style.js | 12 ++-- .../Message/BubbleVariant/Bubble.styles.js | 55 ++++++++--------- .../Message/BubbleVariant/BubbleThreadBtn.js | 4 +- .../src/views/Message/Message.styles.js | 60 +++++++++---------- .../src/views/Message/MessageHeader.jsx | 4 +- .../src/views/ThemeLab/ThemeLab.styles.js | 18 +++--- .../markups/src/elements/elements.styles.js | 14 ++--- .../views/AttachmentHandler/TextAttachment.js | 6 +- .../views/ChannelState/ChannelState.styles.js | 6 +- .../src/views/ChatHeader/ChatHeader.styles.js | 6 +- .../src/views/ChatInput/ChatInput.styles.js | 18 +++--- .../views/CommandList/CommandList.style.js | 8 +-- .../src/views/CommandList/CommandsList.js | 6 +- .../views/EmojiPicker/EmojiPicker.styles.js | 20 +++---- packages/react/src/views/GlobalStyles.js | 12 ++-- .../src/views/ImageGallery/ImageGallery.js | 6 +- .../views/ImageGallery/ImageGallery.styles.js | 8 +-- .../src/views/LinkPreview/LinkPreview.js | 6 +- .../views/LinkPreview/LinkPreview.styles.js | 4 +- .../react/src/views/LoginForm/LoginForm.js | 6 +- .../react/src/views/Mentions/MembersList.js | 15 ++--- .../src/views/Mentions/MembersList.styles.js | 8 +-- .../Message/BubbleVariant/Bubble.styles.js | 55 ++++++++--------- .../Message/BubbleVariant/BubbleThreadBtn.js | 4 +- .../react/src/views/Message/Message.styles.js | 44 +++++++------- .../react/src/views/Message/MessageHeader.js | 8 +-- .../views/QuoteMessage/QuoteMessage.styles.js | 8 +-- .../UserInformation/UserInformation.styles.js | 4 +- .../src/components/Avatar/Avatar.styles.js | 6 +- .../src/components/Button/Button.styles.js | 16 ++--- .../components/CheckBox/CheckBox.styles.js | 10 ++-- .../src/components/Divider/Divider.styles.js | 4 +- .../src/components/Input/Input.styles.js | 12 ++-- .../src/components/ListBox/ListBox.js | 6 +- .../src/components/ListBox/ListBox.styles.js | 10 ++-- .../src/components/Menu/Menu.styles.js | 14 ++--- .../MessageGenericPreview.styles.js | 6 +- .../src/components/Modal/Modal.styles.js | 6 +- .../MultiSelect/MultiSelect.styles.js | 14 ++--- .../src/components/Popup/Popup.styles.js | 18 +++--- .../src/components/Sidebar/Sidebar.styles.js | 6 +- .../StaticSelect/StaticSelect.styles.js | 14 ++--- .../components/Throbber/Throbber.styles.js | 6 +- .../src/components/ToastBar/ToastBar.js | 11 ++-- .../src/components/Tooltip/Tooltip.styles.js | 8 +-- .../src/context/ThemeContextProvider.js | 13 ++-- packages/ui-elements/src/hooks/useTheme.js | 12 ++-- 55 files changed, 339 insertions(+), 351 deletions(-) diff --git a/packages/layout_editor/src/components/SortableMenu/Menu.styles.js b/packages/layout_editor/src/components/SortableMenu/Menu.styles.js index 6b16dd691..ef4ecf571 100644 --- a/packages/layout_editor/src/components/SortableMenu/Menu.styles.js +++ b/packages/layout_editor/src/components/SortableMenu/Menu.styles.js @@ -1,7 +1,7 @@ import { css } from '@emotion/react'; import { lighten, darken } from '@embeddedchat/ui-elements'; -export const getMenuStyles = ({ theme, colors }) => { +export const getMenuStyles = ({ theme }) => { const styles = { wrapper: css` position: relative; @@ -18,7 +18,7 @@ export const getMenuStyles = ({ theme, colors }) => { border-radius: 0.2em; padding: 0.5rem 0; box-shadow: ${theme.shadows[1]}; - background-color: ${colors.background}; + background-color: ${theme.background}; `, }; @@ -26,7 +26,7 @@ export const getMenuStyles = ({ theme, colors }) => { }; export const getMenuItemStyles = (customTheme) => { - const { mode, colors } = customTheme; + const { theme, mode } = customTheme; const styles = { item: css` @@ -38,11 +38,11 @@ export const getMenuItemStyles = (customTheme) => { padding: 0.25em 0.75em; white-space: nowrap; gap: 0.2rem; - color: ${colors.foreground}; + color: ${theme.foreground}; &:hover { background-color: ${mode === 'light' - ? darken(colors.background, 0.05) - : lighten(colors.background, 2)}; + ? darken(theme.background, 0.05) + : lighten(theme.background, 2)}; cursor: pointer; } `, @@ -55,13 +55,13 @@ export const getMenuItemStyles = (customTheme) => { disabled: css` cursor: not-allowed !important; - color: ${colors.mutedForeground}; + color: ${theme.mutedForeground}; `, icon: css` visibility: hidden; &:hover { - fill: ${colors.destructive}; + fill: ${theme.destructive}; } `, @@ -74,7 +74,7 @@ export const getMenuItemStyles = (customTheme) => { dragOverlay: css` padding: 0.5rem 0.75em; - border: 1px solid ${colors.border}; + border: 1px solid ${theme.border}; border-right: none; border-left: none; `, diff --git a/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.styles.js b/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.styles.js index a3c858cce..a62e50291 100644 --- a/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.styles.js +++ b/packages/layout_editor/src/components/SurfaceMenu/SurfaceMenu.styles.js @@ -1,11 +1,11 @@ import { css } from '@emotion/react'; -export const getSurfaceItemStyles = ({ theme, colors }) => { +export const getSurfaceItemStyles = ({ theme }) => { const styles = { overlayBox: css` width: 24px; height: 24px; - border: 1px solid ${colors.border}; + border: 1px solid ${theme.colors.border}; border-radius: ${theme.radius}; `, @@ -16,8 +16,8 @@ export const getSurfaceItemStyles = ({ theme, colors }) => { width: 14px; height: 14px; border-radius: 50%; - background: ${colors.secondary}; - border: 1px solid ${colors.border}; + background: ${theme.colors.secondary}; + border: 1px solid ${theme.colors.border}; } `, @@ -30,7 +30,7 @@ export const getSurfaceItemStyles = ({ theme, colors }) => { icon: css` &:hover { - fill: ${colors.destructive}; + fill: ${theme.colors.destructive}; } `, }; diff --git a/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js b/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js index 37b28b6b1..372fc77c2 100644 --- a/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js +++ b/packages/layout_editor/src/views/ChatHeader/ChatHeader.styles.js @@ -1,7 +1,7 @@ import { css } from '@emotion/react'; import { darken, lighten } from '@embeddedchat/ui-elements'; -export const getChatHeaderStyles = ({ theme, mode, colors }) => { +export const getChatHeaderStyles = ({ theme, mode }) => { const styles = { clearSpacing: css` margin: 0; @@ -19,8 +19,8 @@ export const getChatHeaderStyles = ({ theme, mode, colors }) => { chatHeaderParent: css` background-color: ${mode === 'light' - ? darken(colors.background, 0.03) - : lighten(colors.background, 1)}; + ? darken(theme.colors.background, 0.03) + : lighten(theme.colors.background, 1)}; width: 100%; z-index: 1200; display: flex; @@ -47,7 +47,7 @@ export const getChatHeaderStyles = ({ theme, mode, colors }) => { overlayBox: css` width: 24px; height: 24px; - border: 1px solid ${colors.border}; + border: 1px solid ${theme.colors.border}; border-radius: ${theme.radius}; `, }; diff --git a/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js b/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js index fc10cadb8..dfa592877 100644 --- a/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js +++ b/packages/layout_editor/src/views/ChatInput/ChatInput.styles.js @@ -1,14 +1,14 @@ import { css } from '@emotion/react'; import { darken, lighten } from '@embeddedchat/ui-elements'; -export const getChatInputStyles = ({ theme, colors }) => { +export const getChatInputStyles = ({ theme }) => { const styles = { inputWithFormattingBox: css` - border: 1px solid ${colors.border}; + border: 1px solid ${theme.colors.border}; border-radius: ${theme.radius}; margin: 0.5rem 2rem 1rem 2rem; &.focused { - border: ${`1.5px solid ${colors.ring}`}; + border: ${`1.5px solid ${theme.colors.ring}`}; } `, @@ -48,15 +48,15 @@ export const getChatInputStyles = ({ theme, colors }) => { return styles; }; -export const getChatInputToolbarStyles = ({ theme, mode, colors }) => { +export const getChatInputToolbarStyles = ({ theme, mode }) => { const styles = { chatFormat: css` bottom: 0; padding: 0.2rem; align-items: center; background-color: ${mode === 'light' - ? darken(colors.background, 0.03) - : lighten(colors.background, 1)}; + ? darken(theme.colors.background, 0.03) + : lighten(theme.colors.background, 1)}; display: flex; position: relative; flex-direction: row; @@ -68,7 +68,7 @@ export const getChatInputToolbarStyles = ({ theme, mode, colors }) => { return styles; }; -export const getFormatterStyles = ({ theme, colors }) => { +export const getFormatterStyles = ({ theme }) => { const styles = { toolboxContainer: css` display: flex; @@ -80,8 +80,8 @@ export const getFormatterStyles = ({ theme, colors }) => { toolbox: css` display: flex; - background-color: ${colors.background}; - box-shadow: 0 0 2px ${colors.foreground}; + background-color: ${theme.colors.background}; + box-shadow: 0 0 2px ${theme.colors.foreground}; gap: 0.25rem; padding: 0.25rem; border-radius: ${theme.radius}; diff --git a/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx b/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx index 0f745e9da..62d953210 100644 --- a/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx +++ b/packages/layout_editor/src/views/ChatLayout/ChatLayout.jsx @@ -10,9 +10,8 @@ import members from '../../data/members.json'; import useLayoutStore from '../../store/layoutStore'; const ChatLayout = () => { - const theme = useTheme(); + const { theme } = useTheme(); const styles = getChatLayoutStyles(theme); - const { colors } = theme; const { setSidebarWidth } = useLayoutStore((state) => ({ setSidebarWidth: state.setSidebarWidth, @@ -44,7 +43,7 @@ const ChatLayout = () => { diff --git a/packages/layout_editor/src/views/ChatLayout/ChatLayout.styles.js b/packages/layout_editor/src/views/ChatLayout/ChatLayout.styles.js index 6d5b481a1..3c8efa634 100644 --- a/packages/layout_editor/src/views/ChatLayout/ChatLayout.styles.js +++ b/packages/layout_editor/src/views/ChatLayout/ChatLayout.styles.js @@ -1,6 +1,6 @@ import { css } from '@emotion/react'; -export const getChatLayoutStyles = ({ colors }) => { +export const getChatLayoutStyles = ({ theme }) => { const styles = { layout: css` height: 100%; diff --git a/packages/layout_editor/src/views/GlobalStyles.jsx b/packages/layout_editor/src/views/GlobalStyles.jsx index 2b6bd97e9..f6bd268d9 100644 --- a/packages/layout_editor/src/views/GlobalStyles.jsx +++ b/packages/layout_editor/src/views/GlobalStyles.jsx @@ -2,7 +2,7 @@ import React from 'react'; import { css, Global } from '@emotion/react'; import { useTheme, alpha } from '@embeddedchat/ui-elements'; -const useStyles = ({ colors, theme }) => css` +const useStyles = ({ theme }) => css` * { box-sizing: border-box; margin: 0; @@ -16,7 +16,7 @@ const useStyles = ({ colors, theme }) => css` } a { - color: ${colors.foreground}; + color: ${theme.colors.foreground}; } ::-webkit-scrollbar { @@ -25,12 +25,12 @@ const useStyles = ({ colors, theme }) => css` } ::-webkit-scrollbar-thumb { - background: ${alpha(colors.primary, 0.5)}; + background: ${alpha(theme.colors.primary, 0.5)}; border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { - background: ${colors.primary}; + background: ${theme.colors.primary}; } ::-webkit-scrollbar-button { diff --git a/packages/layout_editor/src/views/LayoutEditor.jsx b/packages/layout_editor/src/views/LayoutEditor.jsx index 106095f90..2fd75ae27 100644 --- a/packages/layout_editor/src/views/LayoutEditor.jsx +++ b/packages/layout_editor/src/views/LayoutEditor.jsx @@ -9,7 +9,9 @@ import { getEditorStyles } from './LayoutEditor.style'; const LayoutEditor = () => { const themeLabOpen = useLayoutStore((state) => state.themeLabOpen); - const styles = getEditorStyles(useTheme()); + const { theme } = useTheme(); + console.log(theme); + const styles = getEditorStyles(theme); return ( diff --git a/packages/layout_editor/src/views/LayoutEditor.style.js b/packages/layout_editor/src/views/LayoutEditor.style.js index 184b9e65b..c6afbd7e7 100644 --- a/packages/layout_editor/src/views/LayoutEditor.style.js +++ b/packages/layout_editor/src/views/LayoutEditor.style.js @@ -1,23 +1,23 @@ import { css } from '@emotion/react'; -export const getEditorStyles = ({ theme, colors }) => { +export const getEditorStyles = (theme) => { const styles = { embeddedchat: css` width: 75%; position: relative; - background: ${colors.background}; - color: ${colors.foreground}; + background: ${theme.colors.background}; + color: ${theme.colors.foreground}; display: flex; flex: 1; flex-direction: column; - border: ${`1.5px solid ${theme.schemes.border}`}; + border: ${`1.5px solid ${theme.colors.border}`}; border-radius: ${theme.radius}; overflow: hidden; `, layoutEditor: css` - background: ${colors.background}; - color: ${colors.foreground}; + background: ${theme.colors.background}; + color: ${theme.colors.foreground}; height: 100vh; display: flex; gap: 0.25rem; diff --git a/packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js b/packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js index 37d4a9c32..7f4af28b1 100644 --- a/packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js +++ b/packages/layout_editor/src/views/Message/BubbleVariant/Bubble.styles.js @@ -1,7 +1,7 @@ import { css } from '@emotion/react'; import { alpha } from '@embeddedchat/ui-elements'; -export const bubbleStyles = ({ theme, colors }) => { +export const bubbleStyles = ({ theme }) => { const styles = { name: 'bubble', messageParent: css` @@ -11,7 +11,7 @@ export const bubbleStyles = ({ theme, colors }) => { align-items: flex-start; padding: 0 2.25rem 0.25rem 2.25rem; a { - color: ${colors.primaryForeground}; + color: ${theme.colors.primaryForeground}; } `, @@ -36,12 +36,11 @@ export const bubbleStyles = ({ theme, colors }) => { width: fit-content; max-width: 80%; padding: 0.5rem 0.75rem; - border-radius: ${theme.radius} ${theme.radius} - ${theme.radius} 0.2rem; - background: ${colors.primary}; - color: ${colors.primaryForeground}; + border-radius: ${theme.radius} ${theme.radius} ${theme.radius} 0.2rem; + background: ${theme.colors.primary}; + color: ${theme.colors.primaryForeground}; &:hover { - background: ${alpha(colors.primary, 0.8)}; + background: ${alpha(theme.colors.primary, 0.8)}; } `, @@ -49,13 +48,11 @@ export const bubbleStyles = ({ theme, colors }) => { position: relative; width: fit-content; max-width: 80%; - border-radius: ${theme.radius} ${theme.radius} - ${theme.radius} 0.2rem; + border-radius: ${theme.radius} ${theme.radius} ${theme.radius} 0.2rem; `, sequential: css` - border-radius: 0.2rem ${theme.radius} ${theme.radius} - 0.2rem; + border-radius: 0.2rem ${theme.radius} ${theme.radius} 0.2rem; `, lastSequential: css` border-radius: 0.2rem ${theme.radius} ${theme.radius}; @@ -67,8 +64,8 @@ export const bubbleStyles = ({ theme, colors }) => { `, threadReplyButton: css` - background-color: ${colors.accent}; - color: ${colors.accentForeground}; + background-color: ${theme.colors.accent}; + color: ${theme.colors.accentForeground}; border-radius: 0.2rem; `, @@ -86,11 +83,11 @@ export const bubbleStyles = ({ theme, colors }) => { `, videoAttachmentContainer: css` - border: 1px solid ${colors.border}; + border: 1px solid ${theme.colors.border}; border-radius: inherit; `, imageAttachmentContainer: css` - border: 1px solid ${colors.border}; + border: 1px solid ${theme.colors.border}; border-radius: inherit; overflow: hidden; `, @@ -99,12 +96,12 @@ export const bubbleStyles = ({ theme, colors }) => { `, quoteContainer: css` - background-color: ${colors.background}; - color: ${colors.foreground}; + background-color: ${theme.colors.background}; + color: ${theme.colors.foreground}; flex: 1; border-bottom-right-radius: inherit; border-bottom-left-radius: inherit; - border: 2px solid ${colors.border}; + border: 2px solid ${theme.colors.border}; margin: 0.2rem -0.75rem -0.5rem; `, @@ -127,7 +124,7 @@ export const bubbleStyles = ({ theme, colors }) => { }; export const bubbleStylesMe = (customTheme) => { - const { theme, colors } = customTheme; + const { theme } = customTheme; const styles = { messageParentMe: css` @@ -139,27 +136,23 @@ export const bubbleStylesMe = (customTheme) => { `, messageBodyMe: css` - background: ${colors.secondary}; - color: ${colors.secondaryForeground}; - border-radius: ${theme.radius} ${theme.radius} 0.2rem - ${theme.radius}; + background: ${theme.colors.secondary}; + color: ${theme.colors.secondaryForeground}; + border-radius: ${theme.radius} ${theme.radius} 0.2rem ${theme.radius}; &:hover { - background: ${alpha(colors.secondary, 0.8)}; + background: ${alpha(theme.colors.secondary, 0.8)}; } `, attachmentBodyMe: css` - border-radius: ${theme.radius} ${theme.radius} 0.2rem - ${theme.radius}; + border-radius: ${theme.radius} ${theme.radius} 0.2rem ${theme.radius}; `, lastSequentialMe: css` - border-radius: ${theme.radius} 0.2rem ${theme.radius} - ${theme.radius}; + border-radius: ${theme.radius} 0.2rem ${theme.radius} ${theme.radius}; `, sequentialMe: css` - border-radius: ${theme.radius} 0.2rem 0.2rem - ${theme.radius}; + border-radius: ${theme.radius} 0.2rem 0.2rem ${theme.radius}; `, metricsContainerMe: css` @@ -177,7 +170,7 @@ export const bubbleStylesMe = (customTheme) => { pinnedContainerMe: css` border-inline-start: none; - border-inline-end: 3px solid ${colors.border}; + border-inline-end: 3px solid ${theme.colors.border}; `, textUserInfoMe: css` diff --git a/packages/layout_editor/src/views/Message/BubbleVariant/BubbleThreadBtn.js b/packages/layout_editor/src/views/Message/BubbleVariant/BubbleThreadBtn.js index fd966423e..cc8f301f3 100644 --- a/packages/layout_editor/src/views/Message/BubbleVariant/BubbleThreadBtn.js +++ b/packages/layout_editor/src/views/Message/BubbleVariant/BubbleThreadBtn.js @@ -3,7 +3,7 @@ import { format } from 'date-fns'; import { Button, Icon, useTheme } from '@embeddedchat/ui-elements'; const BubbleThreadBtn = ({ message, handleOpenThread, styles = {} }) => { - const { colors } = useTheme(); + const { theme } = useTheme(); return ( <> @@ -11,7 +11,7 @@ const BubbleThreadBtn = ({ message, handleOpenThread, styles = {} }) => { name="arc" size="30" fill="none" - color={`${colors.accent}`} + color={`${theme.colors.accent}`} css={styles.arcIcon} />

        -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

        YRC$r1M{_}=?^E#tLF8{e3X`Uq@b6hH!`bfpx; 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

      ILaObE|XveDEAA*;HI1Z@(Rgd0(x4 z@GaGP+UspB9pn{9@Oi(2d}+ZkJ&Scs#GnuAd!g}F124eZ%isGAf5c5*mMF2d44fNn zUWPDFg&;mtZ$S-tYF|J_AhlRe(Hu%s`xuCS&cz<}(<3P}43dlf=RehQ)_qOu)+n0t)U?%N=- z<@1BgIi4|sAA3wq_yMV^(ycCBX?*ebMs-&&!(*gklohfbw0T_6c-LxkWEuJmP7bf{ z=sgH^ulq!|S`V1PCoRs*8s2R|RB=Kq-$bgZmAcRJRWx#JIYv;7hiN<2xOtBXiiMF~ z=l>B{m42z#O2rHS+87_}uIFt5at_rRxp`FFP%(y+7CIT73TAoSlmQ^XsY9i7Wq*&R zS??PbuJ1e~&Gr;BboTZ?4jz0?=vo*%m;)gDrcVuqs0l;!@=7v3Na}5~6p+DqUbx(9 zi-st*T5lX`1WEB6NbJXNxJ2431_u!P>pF=Mqq$v-8~b^yj$nJ+_6%Z&m02WU=64%; zWSJ0jYA%#`Q5+h=L6pxH9DsTE$ihT$@y58l7{2z(HTmpRWd49lWOhVUaHe4qbkrwX zXTs20AsPS|8Yp5g4<0=QxrdLz+lA-6# z*}(!<7PtBvE)fOI9K(YVPy>hlPPOB^CAh^!Zw>`|Q?(8U~s^xg6;mv(EAu z^c&qRf8kE`dxv_y_O8y-E}}~DyYRvX4#lq?THsE%gD)JAO_nK z_cJaBVhC?l53eR)dY>QG!E-8LWlGdu2h0)LN^M@aF)uA2w>Z*vIY^d~%c-yV_;?Qx zCie;xo#^4sqn&n;0RKjN>^KQ0^K!)irE=NgQJ;BvYWjgc!nvD*Z*BV)mSP;+ndWX?C`hCj8C1q^G6>aF zdM4#qzvRB~#b1m+k4)7o7!J8%m$CP@6Cp_#?U^1;_630l&Y;{|ZRc((f>C)xEL-zP zK6zwc0M@OIRu&D~Qs(O{jH8W8`HHo)j@ug^MpfdZ&J?$wxfy3d z3Id^Z=;hK4J~?-6?J#8RAYN~kaImD@VjH(W6wFi{fJXr;iJ}fl@EM+YwBK`@-P;Bg z(z-fi=t$rmXJEUHy;^4>(;6&g$_2guVV}l;y zxJ(pg*@J2fyogFVk2GGP1#UXCaldOaX>W$z&7FBi{5OM#Nka? zl|6gvF{f|3)qT*D%_)4}i_jXUrb*sESFCN)IZ}7M1Wn4Vm&Y@ogAiT+}9DukKiSam| zLN}J-;aIzQ7zx?hFkx1DIm$L4%|j(r#)V17dHll3)^aB2@<{L|W+dw&=`W8xBYQi# z%Et8PkGXR(l4Xajq)PyQ0L^7^NqYCrbXSqUIhhZZbdfX0>>$fp z6*DVq8YOzPtoz6SK8!%I}C z9D=irmLlKPC3q2UP?{p zQ(@Ub2D`};_4N){>U;EksNwIRwg3rK{q&_lnvFmJo1&#OS(McMxILCuBL)3ZpS#}D zZZI&}>|)0OPzBEsT1F|IFy&eRhy+42lbi=SX!yureteWIMJHy=z5q5P{zDwo!9kDL z87|mh4!=MRk3mFvwP@gB7OdnixNJg>2 zF2&FkjG8Zh?zZW}i(Sl9d1n@|qMbZu#sq{$K(PI`~( z8*vCL18Hw3o5vn4iFW~zY)@9g^CkNP4ybFu_GZV&tGxu3gLbQS<}ZmsS2SX?OJg`z z=p8_Ne)MO5fh8TwNU8u`jOV#Wpl18U7H&xpRTJ2WkMf8*`&s1oA+vD6EQY3wbBhb-pTLkG4^s^I=0kHui!V4FP!<7xBPBH&M+w zDFl0io)eAec-ul5I6?`=o{OKoud`lH#X>~xseD~~(xmI!aq4l>`9OaC)IHepG%~5xTQB{-CNUf1L8t9-uc*7% zIWK_|>MlU8_}jk`2UCw$ckpE2jj4f#!CAU*QB2y{7b_Xi{OlikXAeSc^Smt@{J2>7 zE{W;dD*8%-Y!9|*W1p5fZ`Xv^oaL?D{1ycp#xG*jW&ovwXD2-bt-4Ooe?9D}YGyNr z{#MZ;Apb)10myN=ly0{GFHfZfTKtwdturb&VE*?d>Jau6>t2|!E*_?%%W#-ByeV&v z$Dfc(?sPP2R)FMgF-G^?o=;QoLrMj6;HJ&&7p6T&Vz@+OAMX!My>`lD7HSbe$NK9YcQy5_PoeXT?wZBp?!R6^33S@F3SSzI( zl*x^MfiCM_i*e(semB?&vgx_!SNk_t5Jk7Tm)n4W(;G%uV24E=5Gbd@FJsY_LAuNeu2n;iz8A$nBNr-EWe-#Xf~$|qBCjibVl&vdyP%@c zD&pfYYy+pQqDcU?Y4Ph z)UrTty!O~S!m}F0JlwB5XRnNME`XcD{A2b#i0#bB_v{?l`GJ6By6Im)f)^LQ8P)-n zQ)s|y55DH7m2OPe7nl&SL4`G8?7Cfo_Efcfyzdg<0Gcd34mx}9iukB1g_(4{%G?&3R+;RsbTbT zn4(qiFxK%hmX3|O=|06F5u%6Nb>GCja{9^qlvl&0Yt6!WsFpqkJM!K-5eg3j)BG#&PBCjDGRvW@DkF*iYsV9r$Ms zL}QzRaK7lWpq6%8Wl2<5T?Nw!X-d0*R6rd;k|;U)wYL~rm_5jyS9PfT<;`H~ZF&^k zF}iC0b>}_P4S71r>jLdDD87JcKU1y2u5S#+N}L#MCF&|{E$Vq^7EX}mb!jX*MOfBq*SD!>&T{M4gr=PXsRqSbRD z^+Kw9E4+kUxnlyk-RU?_vFJo&o3t9J%=Mb$mttzwRqXT{4><9qKKTaZ0kFS$x#)S| zd^jn51m9p`+)9Le6LqyRwXWV8>1B>EvJSQgeS!jp3+AWJlZSY0Jc77^M#UgWIs)&Z z6{pLdyr$YPR*y&w4(A+~o$JvpI%73fTE5oC#k|mf8uB(fZ}e9IvxAPuaWm@E1ye_) za572=&3f)-G}^Y2vf55*0ctxZO0x&ZDQ7frB%WF1Zit zF=unQkgB_lrcE&!L&X7ZLx0OxZ=F6vV z^YM(x1e*~KMXUErA&x|j;MoR-b~gq|u*g z)Rh~NK}slZB{I9w9^}@kmku`=OgudBjt%YjWSoJQ#>%12|(f4m95Qwp2v3a5#b( z9EtR`&!CbxCb#Ew0$Z<595@82%-R+604CDjH97pGMlfq0BRfYpO53zkpv9vPcEfGj0KhW>qqUB8T+@(#{WKk7f;PUa~wo3q~}Oceu)*}H=oIJ4Vf74SmG zxxg44CfqvWjLerZp{vj*3Bk{DQzpRQWFjWB@SW~2NW1_^K(@cBM0KTc+3Nyk?$AiK z7m`0~cgBZ2uYs|u9Vm4?|2SvWPK- zfw7u&U+e}Jp*00|=6u<|d9>)8^kl4xP2!;Ny;i+e=EYsnc|T?hD_a9&mxJZTjy*Y} zm4aomi|tD;m;-k?uO$K+g7V^6PgjR2T?jbcF?qHF!A(H4jQPPOjvDVth3;$B^ZrXX z5mW@=r6GajH`XnQ30y6A_5+=!6>JA{LV;L4)ASPpW?6J;`C8hUwg!O<;^#4dxKV)s zEJ0Bl>5AX9NgcG~a^@_e-bt2aZ} zrOtf8GuBLKYV>BFCyb8yS$g*D%GaC#&rpj=f2lDZlsO-sye>c@uvvkGP*N?go?ak4 zD5JFrGY({jlcQuTrJjTknLcggrO2UYX5JSLuie0uUy|-M7$k8^MFNf<5XR+0do$~n zN6TM`0yjpWL6v2AJw?Ve>@_ZgUN67?9>~CE#Y4K*yEZqO%zmFr~>Dia2hX0O(j|C%QuO);z*>DVQ;1L z!-Tan`hl*c0U zboTXj;UDxXgtKO3*VbXoT^K>mx-s`!99ha!j$B;LA@qV-iPs*Kqb8Q%_UfZJ;41?A zR~l6RfR! zD)2rMN#*^Is=jd-$M9}_0k(dkg}WB>>%ri;cXYEl#>B~aI`D`~Fq@78d1S>euD#>{ z_BYuw5%t?zp!p#$FUHOnXR#=(dRh;)Lwnd-dqv;xGG?OSKCxrIWipXloC|+QoS?flf09$1OB$%ZTRcr5M?R#QI zOuPNg*gN6I#)X(#t&jUW4$K~N53B7G=BD_I(uS%#m~6TOn|7}$OQ;Lxdcv3q9t=!3 zYI9gWEtqT5LSqKRro(@OehcM|K%T`Zv^9ALl-42}Kt+N*iN+ql*rT@cg}D;aTnNAK~LR>Ug@fK$Rtz}<*dW61`=$lX3Dx-M&|KPXkp2}(7mzk)jVKTgygby`OC9NX|^Z>;mQ{Wx?K#JT$( zQ1W;Oa2;$aN#lKWVb zS{IfS;lap%=g~dgwV!q`TB*Ca-i^lDfsuAYo{aUBpz&SI!q>`{l!dfVS107Mz#!9A zUZZ28v8M9wln3)d>x{9_phj`=w<9u`;nS0pD(N6@F&l~nqs_StvT#S9vsm4FK^qPa z`4m-oP;@T)cLInToOs$SFyk5eYh75$)!wNoG-A+!KU*lMa&BeOFnMzzsWgUJ?5PY= z@;>b>B3`^1hRX3e%H;sn=h{f-k-rWcSR2G7UI#p`Y`gm^rhYU#8aWc^^1hUix6*pu z^%X?t#4TU-?84ppR#O1*D1}CIWNNhki9Jhe;Y^=Md{af1t>YrQQ5@^+Q3-T2MN1AT zb?vjzW{=Uv4R2R_|E@BdN!l5Mb_GGAq=~W$KeiLk2-0re4f+gLW8GuEss?nkg!4tL z3p*~5-g!INWaoV{z%3zFYmfQ0J>OUKkT&$>s!slv=R(g`Fhg-OmEr?}KW+QPE`f(- zRsyx_3T%kWp-McF?M=#U)DGBRoM-ThoyOPJDwJ#>O(o)1s^P*iOW!)TVrVrSDV4M1 zvwhBPs>W;)1ZQip`5b8(gSQ2XV0=6ZNn+9TnO_@n03T*Dzp+$7llRAT=5jq$hllTb zn0T(n=xixb51vZ*GN z_9Lue02lhW2VR%m-D+QP(X|inhQIAX%{n@;g0^u)MCQ6$=Tm$6H$@Z{Krj2E%uz%pprGzp7+ ztpMvl=-&Fx0(e6^_yK~H##^Zzm~`*6kc3gofPvKqF3r^s;aMqT_1wEkiOsnn`ETML zr6?)9vG=xnM+?EowDW=$)oA1qVict#bU4v%K7k>U1BQ7A=mv3%7>BDug$B^++Tqi4%|M>PuVGz&39Zc$A{ZlK z3bz90^WJ%DvH9`~{APP{(a<6M8ODPt9==L4XHu);m+_*Ei-hM6t4-FP7mJk*FwsmMw*i)k4d(l!)7%Dgz?>}ueGrZFZeE;${E$TSQum{} z%!0pNG4)lt2@F}!f^SJ=WUjIT!5r9+%jt>NtejS@qIbY6yhH6ByxxEjp3SE@qWr-o z$v@pe%ax;3T~3N8zEJ4EG_itq5a`GQ520aZ3+>C9{&UM(fq|Bf4~Gw{d(I`@!7tGM zn)FP3ZPxboMv3}_fQO_IKw%c%2cTSKwz_n_{BM;4o>+Zg5;-@9LVc=-M@?_+tdxyg z*R^-`4pepvtIw8v4FfKn7v8qjgh?WDq{hDcUSwj-7Yg5J{=rxa4!Bw0XEJ5$DYw9+ z2mi@b+XtmWusM4U#^EGpON<^I)bny~$l9d`-in@uZZRknzQyzf)qM}%8?BTrqyTtF zU{58=aNW(%yt{iOnCvdI`dMXhmFlB%h&cBc>*m7GO`1w!lhKB|*XS!aNTm*HI`bkE z>pWP_b~cv?lp(JdhB!A57rOj@5dny>A0^2e=N1Pf zlmvJ6aaj}>^197ux$m9aE`VMx+dg|~t1gTE@LvzswWDoPEv~B*{UeGli#l9;WBzC1 zvdzbISl*X6o?109Zg%Sp3{*zc3qZg+8FtPfvMPs8qwLFb!L_u_cCjZs z8^dOQ;khUnDEPO@ylt`#1UR_$jMm;tfvB8PtM&_E1T>fW*+^e8?jkv?rHW$*>Fx(# zcnhMS^a)mPB_9Z5IvIZ`ThdAgatjWIUpYGr7l^UC={$4YYTWhbQ)6R$xBb?6vZ~&F zW(;h~gAd$FYPahpju1_d7q|DQmoJ!m7Vpx|<$mxenB8w(Qeh78fOGaJfQ{+F+a%%k z-0jeAMg*D$A2is0eQMxQokCwBPwRPG4HfJW9m7qSR&s;dW|_6^$@ zuHT^-C51Y*Qt9Lx2X2x4ZuB=$W3$Jo1e;Og0l0w4^Km4LUWw%A8l7w&SKK&A0%HqS z7IM~9p0NBnJ$d10ZLGZ5_6um+y+;Xl#{Dp+%7Yy#_FnFyYf=LAvOL*8a$MlxcBkL< za?tOAv%x7Vr_qX4skdkHB-*#=A0qg=E6J`4ZU+*t#yW@$)+m_nN6Kl(Iod|0s33jD=FS{_XX2M5VkF&cp^&yQ@ z+}1j9&CE&GYvyQ~e0Eo(dof!p;zCHF<^e2#=19wsy{Q#&ZhCVQICdopsFGsjJ;i@I(hs zYc?4?jGy5he!tD#6F=t0Igxz6k3t+Dd2YD?|MHfKs6|)8VObV{MdPkc!k#niRmMpZ zBYAoe{_EB+-b~7g;E$;|^mN9J)mH;r|5~M5Bi)aHl1&kv_YzCFg0q=BQhC*(xg1y> z?<)fhi9H<88^c@@)>4D}P9DAFSiWI^7c!Apa^4W+p3c;q^re|UV({BjW~D3*?gdx{ zH8^U-ac3fMmd?KA4g<9e3HUuB6uT;e-9^f}CS!bsv7iD?{j!NLaJ=zIBI-nwq^@*D z%mO(ltX$i3eSOO9m7d|nd2mDyv7H4so_a2Xna#&%%VF1IlqtE;>@sd`Y<2@$Nh|dr zhuEvfA=p$jYbsG=B zT)WL!O(wVf1!AEp0RPeg)Vm}>aJnR94s>W2KIyKX&oq<1$i67!eU>SC*E_^BvGQBb zg4UBmVNZZEXNp`T3l|XwiVJ~amf>LQPLG|ZLzRvs!~-ui-{5+YE%KyWx7seV=hb`n zysj|z{c<88=a783o?}QKC$CXLW_*_dW{5D7IsRonp=DR)3AW$!VP0M#^}rjuHn>T& z^?;f(Wnk%0$R3)_cq?iTdaPnFRp=Q+Sr9SREZ){W#O zQO!e)L^_(Jtil@(dYZRe-+bY{k587P&`x<2Uv4xt-!8zQi_jqg-9FfV;KAX4Rg{D@ zJl#8Yo5O>nlOL$Tk8Qk`$Xl5bXx)@0$5{j1Du1&S!f(I?39YBK7*6d`fh+ejX z&kw^}fqat{t|P2F=RP?h*A8M^wVWMX3L=VT(n#hTQfP~Dbj+qqa52l_Lgdj|z8_eB z6q5IJY}1b4J$5=(@=d$9D|yC+KK`_t zvR(}5p?0ttK)^2#!U^DO@M1d6_$efd{SNSVC;Z)vyvmFG&^4-)s_uRT1EHM|3w9rp z8@}$y5-(H3a}-6uDvzTH`~TK{pg>Hp2D8Me<-E}P#FoUlZ!L0=JQo-WV_*aYOkWY2 z5oZj&Q(5CE+ghjP;XRicE3V%48U&&b~1rB1U6i>YH+48x-Y~dJh>|!|*vxa&i zs~P)tc<8vcIQCN{#DhNI^Ym8T8cM)m=1GJRf`0I}B%;*XNKOro?GN!1n-T5l5QRA;T=6rgCs48E za9*%Zd9Wjxg#2HV(5rva-y8OVVdSzSRgWYKz~=oHJqTeoWCti%j727~3>w~@NO&o- z_Jk|v?F7jO(jRnE2LyYN6OJ#-sxl)s*ck$L<@K!H2zDKGkFOdtySC;!!}mEadPlgG zZeNOW9ECniE*Jw+2m)fzb1deTuBI1?zt%gHoHkd|!gIP0#_Df(T7Y4+b?AV;XqCT) zV(Ybebj-r@AezD6qP*x+!unmagT0v?*KWBh&*WpTc#a9aI2!bGp(qmKoFu)`n;d6# zijKMMg!;qepf@6GNl*7TNXTHoEM=PH+-{gK828e)TtMbYs5>OAw_kuU&!65`nVCI! zO=xQuRubXSw#t17LjL1ANQ0ufVoq;t(5RgC-^$>c&uF`pDyX2|v^(oUwz79`Z=I=_MN2T5ID(J1mRpg!F&^G`6A-j9 zhgEyZOdd@x7tBV8me6{nnUt9KB@7ebjEsf*ZmVoS4K`23-Biw+Ix1wP)yLx#BVk;$ zFxiQXcJ67s9=PSvm0?N9T=+L|IpA*Jp^PB}dBO0xi%Augc6irW(IJOu|Hf&)m<;~_@6;tPL{1HT0=F!b@DP`m(VhniD|A&`(ihhrhb}w5O>&_*3>f zxB<+3ytevsD4Wg?WktDwr=p(#Gg+DZ145OOypYa^Spa)OUu!XRiPPkq>4RiAyM5$T zvoBtV=N4*k>}&@tyVDH$czb_@6GhjMW}OQhg3U(YIiU!XysSncJ_qiX7ea=ug-MAq zyD=P%ayM_W&K*EngF(Lgfc=$(y~t!Z2rRsHm{f09Hlkq8{r*Olg<>k#o7`F*&KixioSZugw{fp`cn2$vH+6 zx8Fz4{PgN`)>T+GLQxWan~)ezu}ed!I?G>7qIP|1CO`|kjgx!aLcSJxqb$c%jm>>Ae2PJjhHOxRn+SOGf8C9*ni z`I+{vq`TLaye7d}PC6(pp0zf?f=~0g%%{{9Z?mE~Mlwh^>OAqbhq&&gbXRKsP zb3@m<5Kvw<1;b5Vp?}W~uMKo>l%gnB)60As<)(c$85byH=z_Vt%A%WEofaj8$LsD$ z+Nz=#v4E4N-Y>P?Gg=-dV|;;DhblKfxbFlaU9Tutve-y`H@;s@V1 zcu1YRKeTmYdCgX*XIndQ!k@Swo`C&pa>K9=H!L0 zi0L%1K3a}o^iN@ah@KF?;!N6$n?i8ibuS}v6z_K?o$vcNyGAd*`1KpQS;sod93P;; zGq4RE6&38}_I)P<_{$>FyFss|4h(Xy>xwn^z5Kfrb&zbicjne+gC0LX1sO^lS}Ee8 zSno&iPV&fY0bmd;Nx8U27{MUR;n7s;IwwUaTZ~TUl*GJ_;~cNx(?o{0cgG!Tlj~mv zN}*>RG%ROmrP;cON?5?_^BE5|+4-lpUAn?lzK!9EVgUnzxK4S^faWBnm~q0%UR^H( zI8iEWLM=~Dj|$E7zJNO8Cxjaj^FBr7=}ATF#$50gsw*CkQ^ldWR}Dy4R2f$}4nRQ+ zTP&-+yZeJ5oB|W28qB-P!bK*_TK;nSUd|eukH`Z5L!f<9-pI~MH6QScMOGEb)G%gWUd8=>`P_8@1SFgn`iT7-e*}bAaxVdo-3Dmut%ncYd!JlB z$lT%2#t%DaA^6SCLt*ueB(VW>h#{OEJJG%a1zsJBFyEWHQD;lvDY?fpv1e`X{DzO} zr8o-10CJtSwVcZoRbDNXRr&5_q1)P|K#W(oblcArZ!||21b+lqedHYz7R24m(}Ml2xAO?u{Oxa7`2)%K!PmS-U2|%r;?@%PxdI8L76B4G5fc!5^CEm=?yVSJop! z0VI&EJ)BzzT0_FM6ViV;HLLfsH8c*JXjamScOcjGzP+Hno%Qj<5kKDLV+p{NM9-&> zU&LD3--PYvDcWeVPJL)Y6yeNuXNRwBZ5kVC_qnsP4TMh59)kSvlIx7~j6?+p+kTO6m-@sbRiXu~fhMW@D8q>H>>sCGb`W3=$lfl!x1Y0T z(P}CTmfFEgMpNtEkZcm^FcR!0_3YK2aEMMtyn|g9WwooV9gU~X1uHaYJDmc~!ru~v z?YrHviV`5s-gt8=)Q*toY=zOc8@aU7dl#A{Yh4XxC&o!_LJi~mki=?m%X&-CO&s@C1T-0jv!zyII1iakxQq41i()S+zyXn-GI65Act@;y(|s~wwaQDkAt5mc z)6EHR?p0n6xGLw8Tf0-|6VU?&B2jpFH=a>M8C5r8LQ5ZsN1`&P8RNdNAw8UWylSai z3@Jd%N&)Vo@-WWz86=?#;MXpTmL>HfZ;O8^xL`b@0LU2sw;5z-2>d`EEjJIFx66b_ z=Q*d&KBw&i5WKwVR=P3XoyFFY=x5NyqdN}^o&P}9Y&XO#jmSw$7ABn8*bvbvI*Xz5 ztAF2t&vwwF9`aZPfxvh${PzL15w|ltiAN-o!B2t53#8H&3Lm_|7i=s~qY8N|VAw%J zUk6t?imp-_w%tyK;tDW*_JsYGL=?4NQJAP0c9*-_TU)Z3M#Gg|q7Ye`pmAXjB-cOzyuJy~DDP6sMxIacYD1t$U0ph)B4VAO zy&GKlnsk{C0?($UGw>d-u5-ctOQj`V)}}C252+w?hfvc*&SHlv$lP{P;@ZI3Zv{EH z@oJI+f*8YsS$biuk?=<6RIiaVyDI=x)Q>bY-=_orr>?h~x>VvY!@y5~>XoO#5twnD zT=l%X^DsGpYCVr|N!{E|5XnPejs_OG9#NU5hX5erX=nnpBPwv|LV#=$`6m|L#&TYB zU)wxx#fL}qqE@c{rcQ?lSi8&1svn!$p$X6VHEn(_{jX;%mT<_c=g3fl}eJP4N@ z1?%XwQtgCtlw-~w1G`Qc#psRRS5zT_U*NgqG&-*Q-0tRA2jATs)|4(@ofTdj+d)h; zLZl`e@1B?v*O<6*f!@N{sy+X_ntEsc0xkm{_o!58co#EPPyHnGvUlSAsY9xqi=Bet zNiJwp8>x_qLN}tk+BR8brcYHENS9Gr)bGU{C|J8SJ~S>t=pk1>q#VfuFpn0~zOWvW z6?Ls|#U+Er386e*(s;3Bt~u$Us+)14Yg3su4569NS*&l`AZr;!DI7dmb_sG`dTP2h2;5lx-W>3T(TN_r?4Iuj17f}2#!D(6XENaW9~$a1q| z8;|9lb*cx$ey@qHXztn5%YfTXjoNkxd}iLOEHrOLI{Ss*p|Q?=vuws&B$sL9uxBUJ zr8J`;Lmz(A>y5#Wjstf|9WZLLbs>5`-d4HPLc4xAR8;|E4!xu?j%8ngzra|oXDG3N zL>090(+Kv}seSU4q9?{ecbC|u!rS2^f;mdx40`Nw39t-@(bboDtV)lHc_jnYHf%YA z(#d7aPUlFz{JsuZKHd&Z1WXa<4Q!I>++I#-P-oe zrN=Yp-j^a+y+BSP8Z^hNKDO7KV z25F25TGuL27+f6Uurrad%zIy4CfTd9Fc4>$S%=dO(uVl-InllpLpo``ND% ztGsl34t6^}?xi$=Q<3(Kv=iD1HzN6NTNynMfHpO=)ZIaE8u30Rtq{ld#w4-0Lf;#6 zKK=s0pjtdpM%2gT;&#qf@I^TqBs6^>rm()W>LZ!LOe3R$DY z--2E>(OxL|MedmVwZ*_p5h_>%y&W$-?V98pf^uQsu%gbHlWorfb5q5Hs_q4Cnw4do zUr}X7&u#NHI-+yQw;*Uuh`4wP3LR*dd`}0Dca}dBPi86ah;;Z+ftB*hnPEv#>_V7# zn9SgUdw$A$$Zpm}TQ6+(VLU8j5__g#5z5-u^YZ33$_=)T4xN2}K&yx0wgV%m|A3D(2x)f0*GhcHov(yfDJpLyY%UK@OU<_N6^?Il% z8eSE4R0L~Dz&->-vd)CwLJOnD45B2*k|wqSXWw38w!foh>A?8l6%0uCB2eoc#d;|o$60zgvSFUVQ zfH^gukdvk(L}nfojF<}W0FE9F1YZ#kSF~DSNDuZI$G6)m^^{D74hZa`JbQ2Nq)_o> zN9P-kb-7FgRZ!s#bG0J%Rxo_v(uo^UObz!X=Z?X|JyS0PzQx4V_oERo02aob%zhqs z35YV5yzYK|(+zpPsi#PQH_ix?%lIy9*kIGsT?MUC!+Q+Um}f7pVhCHT1UL%ojqa3Y z4$qD>17kE5ml$Ri5UgH7;10Av)nr~Qbt$*XY%lM)H|#ta#B!_~%IWAZQP%>ASZ7Jz zubg}5J@_OB4|yC5ooHFC(bbcGBsZ%xWY=wgVF(gGNJyhCQiqI~_6!OrSSl-3W`T5)IQ}lh(PAI4rZp7^S<}{(#cl4voh4)zV|XXiZ1Jwnhth#q=&{5_Xf2`b4?qK9eFtyw@)5Q>IbxjNZ|PhFiI zs1s|X_Ee}9;Z=!Rz_YiPrp}qwnlw~CBz<$tjZgJx8?vF$eMA;?MaBJ=N$vob9-vWQj&Gg#Rdb1Mem|0+}GG! z>af?jhg?|DU>~B3SyLJbq+7V~gAxsjN7-`Kxz4DKX)f8U!cs(F6xpu*A(A7@VD@f3 z_$F5NwY|)SX{?Wd(RrinW6AY7(8*mLsTn%pd1rhum^FUvAmHV`C}8}=X} z6h&+6knNjDHaS9GCU?hm+bT^;Y1L+du@g*Mgwq6FZhgfyfla+PFndr}E!d{g7oKKd zS9V>;TEZXtztGV`Z(5#(ed}f*4~m&K9X*NVoid$N(EAHWQF(Vz*_pIx!HA?{ z0K_fdADScqED43NRU>D8LiwEKy3@QyMH~ab7|t()?SWW*N>QsQE?CySmWV!t+&Oiu zR(khwUp{vwOmkdOqUus7w!k?_$>nNW_!qw$dSTiw%+UxNpE0FM1K-vnJLmgOZ{$d? z2Ocfo_e->NWUcEHg?5;j{ELxV77Tn8-*sX_pt`oi*D9e@*mh#Z%wETqj@p%4?-MkQ zA=3ey**i4I3L6_Fe62}dXl)(;Ds*&AUrOW#%EEuBx;6_V@l34@%?q|0oqTUF6 zreU?c;NG~^LF>Vsoveg99`vxOr?kpRsGHg|B$mnXaoJr%MLJXouv&PwH=`CG(%+j> zusxPL&pe=KH~P)1>@2_yX!Px%Ka#TE9Naq2t%paoUWborrE;~HI14-I4m$92&(=<| zS{{-~xhTs(nj-E!5_bqmm>0P`otU5SDrAxi$=aY4Z{9rhdO{{7{I(|R%1*);VN9EF zQ!U@+=24IyP<;Cp4oIH8RUNuT*<@iL{ z_+HL!{5K+)%5@7(uOZ6+pLLh#l0yzO$dqYb|dIQ|}>b9wS^->jEln4bee zW@_*C*@;fm)0P9OLbl3-Y5FC%@hx8737WnQ`l<2eDOC!Yk5bQA?R8HJ1(f&kZ%XeY z=Bjg0i64i<)x^)|b1<4Zm&NHkcloQMZ*oz>sBAFagxLImtyIFey?s<{QyTzfno~t) zSoMr1g(0Jp+YFja8;BW*&gZs&FbE2m46`sK>dtkjtN=CIuC?PM%x?fvV%CE0|q7%IctGZ zDEwi$ZXiLD;WiK2cWNq6FhQRITH3!&!Vxx<0QLCY#vazE@#lTGwD-f zOhOq_7s%3C>$ZlR7f^G_axpnInA9@)EC6g}rSl-^nmo?98J`ZRwi~Np=}9k5s%488 zLgqeqL>82a-3Zj~XC*FcZ84p#F}9#yH)tI_3nwl%05@DWUaB{|)z~*MA@%B=Svu!X zF#@<~ps3taC>i)K2N3M;g6QV0N*|D^ciwYB5dCq7ISHZOV6-)qs6mcyS@bgguOsL-!UW!ZgXVOsLaQ$z6bOqQ^=s6&@?)i6{weH zp^KA6lyE77lPy@|iDiud5vUSemL`(2xeHC@w%RCqE6V~L5Hvfg&Y47*E^CwHVHJjZ zliC>Be(bJE?$hYlwH#(@Np3?&Tq0aS{_&-g9S>q}i-T_(#xnGXULZJm0D2k2*yYte&>a~%w3xD_nfpB5e=L=dEqx8dHyO9qYWggd!+Reib%ecsPutF z#M9?#P2-HCxKwJ*rqwP}O z--WV4Ujn5Q;8$nvVF7+r%kxtv3Y9{|XQB*(nikyKj?MjuMLh9!R4XuU_nBoD4j;BD zpkQ@vwj7GxY^}4!h7FZm5mp-)o+Ii#@|#5XB7!M|GUjCE`1%o{aZC4MPMBz=GYYeF z3XW}?^C>x2L;lEYF8#c`_z`s370UQzhc+^ytkq2X%VY3*6`%9eJEzL%i&yZ#s{7tM z>)I-}d;zoB6^VD^PG%hq7`9$8Uq*%o>9g*!mW7sf$C7Zp7*eytuI9+e=sOB7F8InT zOf1pDR2l3Rqaetb3Quq5QpYcfrnSA^lnyZ|tgP_fi1`;u^3!#O`((4z~>B2*+=BV0S2VmN<)2BDMW+I0*j|K5ulQdNac~TF_XBi zc1ywLRP%XkCzc_8%h~O2BH7H_Z#Mw6FSC;0K7s*!$172Wt=9T`I)G8Da~BTol~n6F zYS`068bas#>ch{%v{EnIXx>k?l_XjR7YHLGbFwlTYTFxJF~=zW?FAAE(Npj;yU zN`9LpTNOj$+s1yoz&qZfiN5V2mo+P2*7XpZh4Ww!T%lciC+5LDZjSBPDjKa-*<;Y2 z4o_;RC08lvh&ZgMis&N*XT#;fLa=)!!jcX@PZdejL&KP!WOK=pw6$T?^MN_wxiJv& zRcg|PyHfUV%>f80Ru{GZCWW&%5*c zESO(yvH9~MQOoj*kVK3HEF)bM$N^X%?lh{pdXWrwXGA%P!#nwZG*Np_1&GrD9Nf7! zF?KGvt5cFG99DTOH)aRz34 z%0V?5ozhCqW!}p|4P9{4*3NwY)LT!mHodqo3b3(L4dy5kCWy|Lp3R0S3?fmZkv*-o8v%JOPgPAtD zINZ8{UDvhZu#voYS8KjbcwYB_Eq%X=2C(t_oW0rCz~d2fZhmB>=@^ady6o~(t|j@T z)qCm)Ar-Sw=OQEFuQtb8BrY00`qs1@2?gVqfG_wqootwIqMLX; zo7g}kx`;fi;6dyW3d40AhA&)$ZBanDQGt4yj*hnyJu+cDhLFQ4g9aJgQvrJjczyIbiDp0&&4F9d-#&LF(b z+U_rE-$xT zV2ds;P$X({HxBmI#435|Zmd1)H1;(7BTeR2IC~bm1R^Rt_BN?D+P>x71!wED$Ku#i zFOP5RTQk<6STvre7gO`0kk_rqesrzke(vS0UIDu(XS+dk7u1@|*(|=xncT3t+j)c< z*F0_RA*J=+%e|GgYhVU@lKCg-v_bj^F<8`$Yo+=8;I@qE^fpomJ(bpX)D7mS*Nx4H z7t}x#RS;1JM-*YIZUir{J$5Xj&W8O_1+l6!w6@Azn1QqfYnJ`Q~6JJNm4 zN>q#VBDZ*t+uz3=n~SCwD1lK8ylk+K0DnUYZ=QFvYlE}?)c&gE1{D5waJe)KiHq?9 zRCy~Awu=E9v5uaXxCWRxaE_fNgAUm9>J+;$O%&*q2qz1r-Aj3s8BK25>MBq6TdoFeBl_1Xnui zcu1lHcCk^`BZiCOo6#XK(#7SN9ElrDf)U*~YNR@0I}#`f6Yy-clOuhuDj4BL2R_Mx z>}-8V%6&czv0&jvgGY^*i~u${zYD7?Yuo4eJ7e*QlyP$7N`|d>^e!k$em6A^3=wR{ zTZ4bP+ajXA?GQs>GC6vz>QhKIH_%Ex-tjdRA1GoHgND}xpLX!~D#fY&HN{bEeZz-? z%Uv@s0$^9==fGSNf(2dm%&F!egh=~Up|y^tGn2o=C^Q4Hr3PBSD9s-rNBq96{V0!) z!il5FY3^o)T+2lfAQuM5c^b8@^k2dS_(P2rc7_2G;%l*+$v6n&n4-~_J5NMu$k?+9 zOUKLzc-iM&uSjv&BKhl$=sOzbI`*MM>{zjhO`*M#HV+~4+9BlcJ|Civ<^;Pfax~kt z&pl0O^E^bR^&uUupBM_Z6H znt*TdbH|VT5eOJuS~qlQ*pI!X1?-Opqt;9OTh=O4Tj!yP7L&bmg_Y8F0X@mv5uGgn zoW5dC3P4aEux(lE>~Q+5jglmG;1}S*+URfM7HSOfFNxyJ-Os9Pc;_oVm4uQ3o<6N- zmj*!68_CH+-N>R}}qhSQ(b`G3^S}4mluh0Ys zj!*E(;7T|Qb>_=!B5ni#&Y80}g8gw=w~pG+gjT!O6MxOU=8h>?>X}~Ma@#aIUSSVr zutrJ#)3w&zP6UDE4M~QMT$flaoRJq_7#&%I-qj2D@NP}+Y^jqW2AlQ5o0`_%aa=!H=p5EL<)?m;REFhG>(K1C@K-Arsw^R_>Ph=IrR*Fla znGlaiqHE{0!3Jj~(_vS5Ah7+bQ|#cP+bHvl5Q^vgBrt73w00iVp>~eY;qBmX$vUG%*^Tf`%BJXJ*6HML#;X=LIERUaz|kIUG;j^wKp_zW zqe$=YLdVW%{MwE%T%wEvLJ`phC2|<87t^2HgE61k2*Tr?t4lZCjz%WoQm>^~>b{16 zJqeE6J|V;H#e5+z`fzhFOG{bx6D}xQpFXURDVY_elOG)oevF(-udAdaOR9H|02F?y z-3_j?w;C|~Q z3Ed>hzU|VM0#&QR55^xRhz=a$j;#+pTWc*D(sXWbmb|_Y9W}zoj3g-ambFkfaDTB< zHmH5XS!6}Ije3P#Ef52Bsxn zqGxi~ML(Ltu`X;(wMsE}@#D?QqRFwQjWce-QwL~1T-b&VUctS+e2^8PkZ)kZA-)lP zqf%#G-lp_`9=%ZN%2aJIa{KGtuf1l~3)a3Dse4_H1ckp98LljAFZ#mVAy~ikN@|lb zM*)X^i4!i4f@mp5by@!5R2rUUkO(@J4kz*QSuvJjEwoj z`wP>coy@A&fL)J^U|!IB^MRhYB$p*u(ks?WRPTd#kL;GA$l&vkX?{@H7aq9eDtH$c ze72!>CNJE*Mmau&lQU(XQtqoFH%F`(8vm%NPmK ze!g>*>RcLbTvdBt%EP^OC)E>IQ2l(wRJ~%pXa@KzZ2Gv^U7R- z2dye!aUVRz>+_@qb+@wyM~llogL4*nPKJDwI0X|={x|tZP6-9{(LDQLflqI?KZQl| z+GUO0(55zKFP)RLN$plHlO~;g6_WnUF8OboxEgL-x71M!uY;&mrNNP#q9*EdY}?j+KH>TsC*HwsqL8 z8xvO%Ahf`pbnBi-R~&B>#K$MLOPy)vN2vY4P;#d21MTVym{Hv8xUJ9vC~iMxh|eKE zZpksv1#CLb12^0@FYj@{Y76g6zlVHADHQ4m zq;X02wqC;#yzN}1A`kqD)>;%~K(~`O&fxzl|6XLQ*k7j+KC`>}+t3+o#H_g4lj-}o zeiE=1VER&*llsGw;Go;}ou8P*(*ou3CX1471<|Z^u+3N$^&oLF9IQ>=%swas@!f{? z-UF5VFn52AA&^D`-1n&kM%{3f%(-~;^V(#SIruYLu;nHq_2Zp==&W@48l0O6TJb>0 zJ-s_wnBA&67^Pu@098P$zyAKc%0SbS4wk@?#treMKAkx(;|-2@~&Nmr){(*W1vLtqj;A2|7x)liehV6V?vZc%qEu}qQW4T!m#k#V{x#x zB64PQDKa`78rNzxniq+cXx7?)mJ z6tN4wb*c(gPl>}HHeAcMo0=CtuB`!5|1}%XGgqJ*pb5#0)CnFBmo>xh-uv_y8s?G9 zsnjW5HO-XVZ&%c1t+IH@gLtLeqByyLR^DQ(c;Z5Duz zv9Gy4692(avMTWAQ*AK;!c}7$atEg)&h41E+3mo*9|slUOjpt<5o@ydA`N?1Zo;G6 z-jZ;z{NPfaaxf9ge=DPNVe1^K2spE2Lc9Ru;>zbS~roGz#c~PF|TGrkmVH)qT z8H)}XxwRroRl)5*cg6xoDCsRIch0FpbH-Si43-Fk7+?8v=o3Jb)#QtWc8ke0+Hh;q z>0H(Fy0xQehIh!cZzmq4>R+$sRV7Xmeh)>J+@*Z*+7Q=T?Vx@i6-rz*7@0w8r5t1XmL* zsYB`=n;Lxx-QMHCF1RRkAY@FZ{No2)24~tLLfVqkW0~j|311uH!>2!+T}l4&A1=jd zB`Dj5!nW)*t2N-ybKp|pTEqYP@cX^W5f8&3rnVDP?vsqMq+B`+b9Lu7)*cS=$wJzo z7+5yOABxhiF|?s9qix?=bCi)HO+5BMxRei>&W(~0a?{;f>+l2k1hO3{6=*ACNwPd= zRqR1F(S6z+7>krtX)X|9O7EagJaWLX*gHM74U&v|`LC8oSR!`-fETtvH6m;09ebY1 zClWW;2Dh096%i>=LE9!YHeif0VpsYR{6}Fa9yhiJKWYNJ6d_j@l*5zu-{-B>@ixzQ zAUYb)l|~2|-jwSgddQ3tMfZH3LgJ=HFfG>=byTlq+go#k)T4)UpcMzXzPQ&nH*vf3 zMy^U|X*vW59u@P!k_bwWgDV1%6J9?s-R}7~Vc2Xh5LPV2gM!F_VO*)X^h&5A$!{0K z!adfde~p2=kBTi|v%wTUEQHyi7w~}P9qyVlv(|m2-+O!D$pt+C%iM@y^u@5qw${9Aa%@g~zTB%D zG&cF@xFOfP%=v=w04|lSgdjv43`OKNT%b{NG&PMR!rV)>_lhLo?;XB9)=ZFjq%x$;IXG4= z%cb65((ggUOQFoa36~N=9W9iC2`G5Z3AKg1)rUlEX1B&mx5?C8>p`#%`&K;#T>Z9H zz)6d?s+X%q-XDJeQDw>2sS$oZc^2tI=`3T`)|mPvk!`FM0XwWp-M0x*tjoT~t|Eph(?*KY2Fh??9c^H8zYshzo;R;s__COLF-1CCR zD=^Yc+minHju(2*u5CAM{C}6gVZZ%V?TeBOYqdUc(0~AJ*yJs4MXC5G8O@>wmt9~!mA#?f=IMc`XY{&vSFZkr zKU?WfP&yDpanT`7*5gMybkzUb)}E-au-h~$OmM`S?Y38)OwcB^aefnhOOVzIdZa@I znvKxf31MfEeKrvuF3SC_ET-m*J9D)Iuo|d>PwP!Dw68blQH5fJSGfnLZ(8qd0KeyL z(hD9+x;ta{8|3WqMkCD<(vXkwILSHPJ~`;V*i-9V${QcKbXEs*F#YJ=HY8CT=PUZS zcHf`}tUpnBzR{?I=~6PVM@)WzSu8AGRzeT(Ww0vaj&Zb{#ew|3bu$iIhD|qjr5mii zSe%&FG(B~9o0}~mW$LzN5cDMk`5sMVba}T7T3U@j;x4*Z*sa-fY=DI#uf{?%qccE; zd0DG1S$DGc1FtC@noWSFs6cC;j7tG!s3}x8{0dxBnWkbza~jL@jX3BWpR${9V~C<1 zu{R8adRJF$c7DJOkj-4E4aXcy&N2dDr1=Jl4v#SL9i^ug8=bWGmL5O=7DIIo2aToF zc!Q);7*{;aQDqcQ42?f~0@2uI$*uNr=C1l^(xW%h5Irv8=Nd&9n`#!+>j3xbxclxt zL)ieHMMj<1?rCV&)}YB>c%96;TUP~Cj#B$+5p83t?GwABi|#GY;GjGO z_2#sAZ`%=h)K@Vx#&n^I-+4DS5L;1y+e_@Foe5aDOmHPVF*Pb%OQXQK?x$CWYu{Bb ztKuyka9)9}Ft`I(0JZ@8x%GkiJQ{bu1|iCd(XG=jVi`SkP>Y{!^3qH2tpaEZr!n5? z+XwE&F$fO!UC43qv%alN2!6t?-h0x7C4$Ov9AB$|z9NVTtV(xR*PB}QOCa*eZF~fE z6rAf9Zv%g=mPtD$V~i50cD3(XyVTOD6u?a|-h*Ye{Tod}pi6KFP-u`WUYwcfOMx7} zXQBsOdys}r5X$8-*H2neOtay1@mr=4drhq+Y{a}QHPm?|M^*$_ygbTy*^c5quvW6w zdY60S6b5r*AD&shDPNU=UC8%!bJT#l=UU!JcUa7NSNRY>ooV z=G-F3Pw{bpGJsNjf6B;)cmb^(PhoKnRu{sj?b5Ts3MTKj(_jm9zM5lN>q(jcQv!dWC1r^*zV-4xesFz6q|_XMqn2&sqCi_72I{GZcr!8~{_QBKJO zUbgAvvqp%s^FRe8d~3DJTV=k0a34$)cbx@-8mm-3m{Efl@$$Th6HT~FM@<}ug~+gW zNgY1c<;_JS>0^V}4l80-l3j#cgh>MFUgOIog(20_p0nvnHO3aapw6CUV63N5!7dR) zJLONNrcT19Ko7Kak-w!}8vp!BO(#jlB1zpoa{|zp8agUq@SEc76bKp-tX++V9CFN^ zgk8y<*0Q)=ZbH*SQaHh(qy)IOpt;ku7cx+tNk^Cfgqr|au2fn^-q;q@<5nI6c;gs> zTr?OO%A%CRiFwS`a`~|i^Y6i+ReHs~LHi82Wvf7EeGG-YNS#R6k~m742_z+RJg&k7 zboNK0cBb;Hy#V<94)H|*-nG)oz(S+gZu_n4nlu0dOkcfcipXA9^nkkdNy$XG=Mk+4 zFe1vys+)13fQXFsx)8CO;UEE61hLbTwUrMaeuDmf5kK%Ftc_b5$(0c|4IAU!`b@PP zLRM|ToNklIfHZP8n#6*<`nH=qzD_JS7L z3D)hbywK((fG?OPYGZW*XJhfN?r2ysutJt=cHzR$Mr-3tVD_iIi5vPP($oe?)_4R? z+f9Pk@6>ynKyhvRFq|*_Lg3m6C@wvQQ0qxiJ8!kJMF*4rCGu!mM_aK)d;B2bVUkHQ zhnp+iyCz5CVFe+;zd&282lGd4dxTN!kh=F|A=V#pl@awREeu7UpSQkG6LKR+aqD?6 zm?TX`i}LMGDDz7^iNMwf;RCd|`x8!EPow+;Cuks4Sgbam19h?kjb+0)n0ja|QW=D? zm!-Z%N0xKDS3?^L;ZBAxKI-%AK~;hTO%l)wX3_`prfFmvDE6*9_5mAcXqLH_Gy=iZMFJn#^^7)Gftgjsh;$k)GPK5C~%Yf z?qnwFTzDdGj_Ww;FxcH^-OG(oueQw7*@E(YAjXG*Smt0R^L`O{Fr;Q?842P6Jlo2< z6i^adTf~h|#sTZS?5eVu_dY^!jIZrv^Jd=+8}aRWE)>JQWkVAog=bl{CJHpIuynIs_Oii)(XDiQvo>uZ=-oIsv)Rg@N^4IlGNu3$6LB9*epKmBUt=sxitUIS1-PJlPSMs z>y+C;WT4_~pVY+_%VgL0A_P`a`Wa`@mkQz`rHpg^#xvOO=@htfQNU?!oHKKkz|vS* zoDxtOT8pY-#cDUfy9Wtki!mE_z35n1`xvb}l$^G^CaI#n64<*O-MUU+O7#R@ID)ui z^U^FGPs3Y!uk8}fI1eIV7zwjJA1lNK2Qi_*%AYrKw3~A=2&%wcG>^ZL86gjT5qv+{ zQ#p5&+qs4aaIh06RX8>!sa^%T3mPyP?LIel0x1*sEg=`eIh}^je$B|!zj|g)FF?)ZT zdk=Ow$qsO_u_{SvY~E9Z(+DVlH?^c5)t2D5MyS}A9!%@6>(#PtE-REh*is1wK#6|R zh%GJ`!)P11W#WOfu)Khn?nj{*Yo1fA0v0T_LSuw>)VvzUMWn4Tm@A0;fjv-ycK?w^ z+J?`825-=DD0Q{e^DwAZsso#7)L?BAGHnHKyBmX{3r|J;fw`~QnrB`pd8CN$q0h}Y zmS}i+x$U#zjm{Cte_r#}+l{4c2=OP5?Jjns^7}O9Cy#>(j+v}-+c7ii^Sy&%jB$v5 z&rui@*V*y0R#yJA=0YthNgo?FF_i5t&eLpiGv3GX4ze!ok@70a^J2%Ubt2AjZ(oR$bg#A0NO3tk zTQ-vW-KR>GW7O_OVQg23r`1p+{sxrs0xGTCk4PXK;a&XlslK+Q^5o5eePQ? zEDiFd7dErBvR_NY&cKMfx7~wb3Hb$dzf&ke^RFx}epI$M&&)euc0+uJtZ*kBQPe~} z$Jt#Ut+Q2le!$*Wd7;?0rP47`cA}f>>^b_AjwpktO6>su2@J#v3JtXefyeq{9Fp5sD?L7s%ls(bpu8 zi!)n&50w_R7kmP}pp4D_8$ZIKlGzb{FfHrLuR$Fp`*o;NPUd<>ncO&C(Z!4hopj`< zkC3fWC8?)KJr zFfM$^gRcIk`+jkU5R0O~p0le*d7qD@D z=30KAqD-N&*;s4Vx$mNdK{fXX5k85NFjMYt{0KO3GTzB*wL`vynJJ}gC+lcYE(XHP zM;P91K>^*8i)KJD5+gwf)1DoKCgh=v0vr=!p(%B^tSHbf*W4qQq!O8SXd6CK?pCzcJGWY`SV- zex0;`iF@(kYh`v}Jawwq9(;m#g0US9|PQa+Va_ zMWsyo5xF?etuvUJzCG)4@}cCbf~avcY(JME>2A?+R1ZO-3LQxgo`ydjR696}KV&^1k)F&&6|zL=snc zXZM*6&5(Hzs=WLHSg<66XR@a9Ud%@)QS*M1%}e0EOy85Ca6AA+C(Ts?Sj3=`1(}xp zsqQ5S0S<8W2++cZ`PU+?&`+eyR;Vu%=Pdi?+wt~# z3e}G;kdEH^WkLND14&Xg$_FXNt{GUH?cSKUqkgLI1RcY<=k7PmoqI+yJfyA+Ly$!i zOIT_Pt2nJ1I4pF?20=!#7oOxTJP%xyb2|}}$1@^sNa|(WDf%B`oI-5{>}D-o^66MpcG@4Xd&+g8*BI3AjTdoCyKMUM}N z7SqQXDg{id6lb7s^RW0_#O*8z*?k|0V9*nKV5N{xwf-z2V#U(%kXD>kEdu91MvI{b8_{ z{6?SM*9;^H#ksZR=mU|@1m*2=;ln*i2=N_&X>#`|)aevbZ39PBkXY6p_+>^c(p3Wh z-M|P;J%7Yl)9D~yx=Vt|-Fo%%PEDieqj%q3TD^DMZ0sRBh2M247S={9_f>|LJkr4N zbvqNL4G2?54!qd+DL&FY2YwiqwY4ZY*q-o>Lycc{%7q26&anP`Q={~arG%>{K^c^q zlnf|RXHJ$8PM+cgG2_7ufl;smMGb_wCc@K`&}H)`t&OZHnw72xoy9Zwbu5SWgII?2 zdDgypkMX7ymSGKQ5M|W@B?CbDq=Ge}9xzD8TkVl{h->z{d)tKYwpR!e!W3>B#z%&vZ)C=@CjRUP5!ulN$Jkb3a7Hz?l~6#IoM9$9Ft zjx+D66|Evsz|%vj(og~(G|MP(>;N*&lE4(Gz{u6L%6*}9nx7ul>3%$p+bvuI7M5C+ z2B%Ha%V(C*Skw1bcinvTaGV+A_8!1rct_zD(0X!TLn!vB9AL4Ed)_|ukl`Gm)KhyW z*I1kNyCEjU?D8h@j3?)wb1_NrL_$H>iqOdc{=z!0I5$mj|Uk3QoxVgTSh!*W*-d3<2U(j)EzY6#g zC6=QwL-TZN7bWAK))!Pc=oJK-6#@Wacl7826K4TKs0)B6rI#{$W!jc&l-txJP{J%T z&c=^sx9Sm?f5)CDQup3kC1tGtuJ#5z*eRTR6R6vH>-D3&Lvi43*@|?5nF$-Eb z*G3W<16q*#81b5HV}ifXUR$r=84zL$2o91RI}0d&FBE+KPKnY)^}+rjFfDYDb9Giy`_y@fHlt)%jLT(Y--Ab`$T$Wm zl-VB;l7Qp2Z*(%;y!D?mz!z8u4=3tOSkU%97-#I6n%i+eZ&@A?o0y*nrKcW|4jtx&Y5FE*tP%W=T!wGOSZ zN?E7)V-*Cn*NQBHvskGy1T)vFXa)=gwjAGdh@7a!Z3D$w7);oi2;5tZB>6MJg5Rv= zM_Q$KCU@Bvk0WivCdW7OPoeAJ$F*;PL)+bk5%iVe4kvo(- zLU#L}wb+H+avAk3@B8e040n-l01UA0oY~2}18jRu6RR(jEF>zNk^F6p-`Vgcau|-2 zkxkKFmY@!dRrHoxk(qvhCr)SQ^e#?b>xK#j%Xxvhbb=^YLhcKgbs+wAQnFs0$sGtR z*<#puPJ0+q$er8(nTNcxvv!x5{A2UMu$n#vHxIp?j%@n03!3Oq`YTU(N*f5P=Oq_B zA|~(Icbf{fA2kXc%{3a{$vPX{>ZYi4Sy1Uy;kt({Siv~BDCpy%rVL&;ULrOkr+iqep)cGTgRx4=D2`_6*jv zMp{9_s+@=qVU`}?yaqJp*&cx)5KT_UimGJbFHX0y0nV zaBnS6Koi34seRB!L3YXm1y*DpnveX7Ys~=;F6TjHNCgvVc@`CX%0 z-_4}9=j19Qp7a&1PL=kQ$x!(092;kl`F`5vWjDF_1c|*iTq>OV!B-Q~8Bm4C0Ct{l zixp5$DVcu!jEST{A}2SDI1zbU&dHV&Hw#yV(d$?TJS<8S1jbm{N8zBVHO~-`&kkWL zkTS>U3<9|AyE(wd0#_qd;r(afwP0!oQ4sMMH*DK$){)p|OG&q~;p87mXdTk^x_~=Gm>m?LNi5_F?wDsIy{`{qqeZNM zzy;uxcM0ym?GzA8p>OKa2vF*qzH$Vgr$NQ{XY-=5236l5*k1V)Wf`htj@aZYZX4Z! z$_-4HxPVhnbLH32A9}1mkV!?C|myy4xj!Ut-_YJ?Wmimr)wpo}+=fq=E z?%4Z!i#pr8O~s)^ai)}@_($%7dz7_OAkVo+*&fU$F>yjBiRq^9ccMLY{FLu>ZXK1eDY0JUNVCOO z_@Lk?Ff-lBAhWHfIbtfs90IWb&>^y)>5GnV*!dW!^}aU!NGoR~%aY5o=u)F@HVBm% z|CWUxi9(^^H(LTTXEG5YD5s)?i2z65yx@?F&zA49FcUZ+9zOpT4c<4b1eG^m`lnPthaGipA?}}#g4S-L? zr8ZhBzpDiba7-wNl57x|;|>5KsT;W(wDH3|vurWz1?>tH&q2j%IkxDgS;x||DHQLs zTT@#m#a=wuA$jKk6>?CcevF>U=ZtAATI#c40XI58y@B0B-IZ#?CHahR>f(scO{eOO ziA49+Iu2l}9f*FA)I$gz3SP-c2Mz`Rih5ttO&XRD?Y-krd>4wv>#!#s8zR-|z0Ad3q2Z>Qss%IC zeO2#Y_z|)}Ik<#6xI3-w^7uZAMforoqx^?|@to+5cGRUDrLA(Y3?hAUH=k-Q)id}p zbYu_I9s>v^=WUvdhbv8E*43;wyRzqx{0Q6G0!XDrfRnxmF~5BwDs@F5JxeJSOgsUp z7%vAuHQK&>ky(m*Tq}B&fO-#U9Om0PZ+OSoML|F$oS0e3B~qn&{nNJNH+}?|hTiqE zU7{VZ&W2>)2>*HQjW?isps31a?!DG_d%a4}5auB;T?k^zt%>uIP||Bok(GV%YKcpE zIZb6_Mc)?=WKQa%{K${6JLZVJAI*3-!p{>$bXl^~bj;1Xkj)H$i<9<(Mr8`6{Z2!d zwj0V)az=%qKIeE6Lr4YhlQj%-$h63@w2cLPXY*dOnZNNPfS6_`G#00f8G*@{LLgr> zYLxjnnq}%dr6>}&4xGECEWEP1UM| zLVx2&aQ>v-TWN!GhC@6mZSXoPja^WMc86vj#OSZCfEUyNaa=0^9W)KSF1{K;!s)K}{SJTxcI~7J_ky;2i~lPOuUH ztZDwL!|YdPU^DzAMDPfoUuBd|!>U5;t4IIO8(!k!Qn(no`E;xL5Zk^4bAI@=)G|3;J94GP5p=xMBSYOyv$}vrB>E zbCr{x!2vjX{zluJoMGoVW7~FPwmtTWLe=C#NrW_ZF7sYwI*+BT46v? zn4a!6;cvs|R{9pZE>dbdvU@UWcoQ05d4aYwljXd?BH?fXm*&b&QqS46WE~$$=W;pe z=AMgm5;n?cS~LUu?IVBg>{*gx={%jU21CJTTr1Y9p+$&U#wd>h%143U{es5a?%zt} zuF`$bwCj@aX9Mprb2VL=EMgjqMv9BME%uOw{{X{DaeOFXClx&#kjgEPcE}toeYG?q zFQl4RT7hQTZNKm&l&Inn9{E(e?V4K9;Hg**(yNb-)wx2A0 z-JmQa-0mv>^$TCop{O8CI0}oQR!*|<;P==!G3#KXG3qK&mIytul3ec{x_;d{eB?!i%H^y{O+@)8&yVeaChYR%K^Il7zQV;aD)@B3l z&h-4u$Iz$ALGrnc%fDli4UlyR0kI6&wW)(r;Ck&*$9jM`;sBEY_JkQmwDQ|}#T-k^uIEgu%Z@o?^# z&_jQRiZXHo2nU9vW;M>51+-?aLl;mc2_Bm+l7O}6N=D_Y?=9P~lr3H<%qdMoD1$06 z9*BI3YeQPTJ!L16D=%-abzFsgxC~uTta3i_YK>=&hkU!i(?SquSk!a1M{(1o2PFd(Pc-BI!nD&NaBsk=k?WBqsGd_ zRok1#2XNFjyD|Z!hbw+?!b6%&hGI-PX8?%&mTSEBD^K#Z^RzSMQX*sriWfYe0^;qa zeB0@B-3}$}ImF;V10Sh5LZOsgQf;~AAU-Znd3wSJUxJ#@QhoFQy*x)T9w1ZY+T;e_ z3gB>Sei6daSR8z5W$xuy-mIyHGTWa~nMR?u?C8gD8v-i@*BHW!9Z+8z!`>cYqO8<6wg4h9vuo~ANwz{GHawUN`)SP#c)in+zIFy$d>meN zOzOh~)#oy+x3FY$_x&o-P&I82YN@-4H;r1?ZJj6e6L~kO@R0UIEw(4}D2qm{gZeYv z&#&nVW5x?=styF3{f{)svc@>@^LRi*M9m;eLsid6R=YXH8?-ucp2d!;jd^P{I#16A7nOZ1uF7q2xAHWK;M)#H)M)bmMiGM}`&OvI^*U z`l*C`TiWy1F0dPB5$zBS8iP^`C9 zBO@cL48Y^E9N3fzv1lV0t&3I2P_}@9BWXgUE6KB-U0J!fso1KKn(9n#KLiBzPWU0w zgL&ul!0p{jXN$beCYQgB!Z&ujSu62XLOAppD$r?Vzuu_ zSP8M28pg6DrmkG35Q0}K>Q0*MsrfGXr?HE_!%%GlE8V&w*(!^A?h^I&ZNXEw)A;n+ z^45-G3uhuwps(hID9lVD%WwP$tZnF7?DPi% zA+2m+q-F5@yZBWK(HNt-CZ;D}9`x!|W43(yJVq{TFkXes{j>$+E2Qs1nrvnn6(M29 zJ8qox)jMLiiQT=Axz2@pF`6o!-%`=MQ$&=UdBAD+Do>SE27yNS@!fYFI1d|fPE;67 z7~=YV7LAhRmi&b$YX)nnN$6j4IT5{9&n_%NH+Eda1by^F&bPvHzKIufD8D=PZi}s(Eb#P7pE+lmi^8d~r^?a5^q& zxVu3VcjcB8_$w;_@qGSKf;?( zJIgb1<^S;VR6_ z3)mljbPqOhwc%stUU~#F@d)7P%&7JE8?Ld(OXniFCf&7g z0Q4KQFfM3yVjPi6?S?#SN;5wAvZy%2CFhjm@V5omiLx-R(k2&7JwuL+WrSV2E;f}` zxlc$#-(E;vH!(xeYvAVuIbdIv>i6u|m$Ue{C8^z;ss>W*ny9m*%GJ%Chv_s?@;>2Y zCs`KFeh4cS%w4f)L0mhU!No|cS15koD*sA&G0jJN`}nT+60GNTxUIgiV0WSDhSm3(au?1Uyf?`bEF;Pf7-<#HGmCs z3;x=ZHX(->rB7JiIpV7G=;WHgh7%?V;7kzWw63q;VxAG5n$+S;$qxPrukFp8v;lz@ zB9yimO%Y`Q0}>D_nQyFMi+YEi9Xss|XnBMwiQj_e(Npd7rod-lrpFrO=7N=F9b^xY0?+Kqux-G-1EXXD8p ze>G^2dF3oTFQBt^?xJNQVCx+K!ijItb046gHELmCIxnp({D79|a&fo^Ph8Tof3~c&S#V$IPVE>WJSUo{n0H7!PKH zjK8Tx>4Vxf+F}T9#@45xj)YhU2)M#7^qLL6Yb+i06t1o$6z08yrH~o%I~?2DWfRLP z48*ou!nw~xuE4Kr7jH|(8sIgw^5--SnHFRX z=GIZrhj0R<-SL2S!kw2^CT)h0k1I;@fzn8!6tgN;|laV+;X&?9h)HDe&_FOS3&@Cfr@1&h}dm+SF- zT-f#ozysIdZ3^rD2umI7{0l1%r;}2TX#|soYMU}0U*NjuZp<&0s;_SKTOq*kdY0>F z@7hO?()W?m_$v5N8PCbX;R2J^b2)3ikE53HtcC~BgH;%FrXwEKD2j0+q}u(!S+%1N zC#tiU(;wMoftABTU&2_3GY=U9*<$QmlZ^m9>Z1eermbg_Y6fud#D@=ym-(Kk#np}f zxCZ2uC6>pgaEHYnHd_oE20;)&%i4=<3N1EJNgfl}c1P0_fsQg4TN;o<9@2zGPwU#y zdC*`6_`j;%mvLLgckf)`n^Ay%j8xomeY+xB-)CKl?;RPKU?X5};%90}{6~4HCg4nl zlbvq$>VkX>0ddn0Sg9>N^XRO%F6f~FQmZ_lHOz$v3Ebk>cirvLG)U75nBXCH>I(Ae zP6a>saaE0q>qfRrjji0Ugdu(6N^<0#w^0mr5Riv=I-8H^#R}<6Za=+gM$mcM#wsrd8q4UL zc!~zNbw2%oBL|%Qzlz2s4NQ7zj9KVrUTUJO*xiK2H#M@wSbqX=TTcX0;2+g@w$+{& z^y{S_x4~TTk%~r{iwmT1jwvI9?;Nv{!t)-{?P&dd7Wm|BE+)Z8Qc~#&W9b~tC=nct zev~tYbX3hbInsvuEIfp11<-(Mfr6Dc`XzS|h4||i_@gn<(>p`v*jOIvDD5`@dP6^X z_2`Rl0tM_sgYn=A+Qq4|MX@qYu-0osmY1`7vcGOT3Y%E)^50c5DJ#yqP%pwAB>cC# z;Zhmk^#l$bVr%8mUgS-k-tpC`SKa}A01XXlOxr6Zd#x*)M1`_;asJ(TfOEIK7+zM> z#+T*Pur`xWVC#FenhnN9@rq2emvG;d#T&-sg;4xlXO5-*DJ=fIQKdujhJ2N0M(qx}U`Yo*Y5n(phAWWe4VTu_QB?+*tl!+gtK--R&Vn4|3HNGa$D zxrZ;G3`6vdyL4zrSOmS{FvZ6g)nh6nNN(WR7y4uI2ek;Gh{$)&ZM-q=QrKcBh9S_i z+E|?c2&@ev9S>_K#6oi|dq+a&AVV`a)!z(yKw2&=&?-Hf@?ND+>HFA(m9yw#2bB@^ z?8WoKSKE!j!gNeiA!JYso}@eKg^$Pi zVYYayRd`6SMp<{uvg3P=O^@#ArWX)T4-)|4*Lf%6oC2`@gl0vn*f)3GOS3DaaT4{q zDyHYsIGRy;Wbi_7;Jv2qvEa<5ki_Q|mJJza`>Aj{j`4yUSvPHz+7s9igPMMYmO z2Bq#{Bp9yJY9>$#$<}o=aFKUTq(~Lvy{-)3>&Z1A2xA=JosfkZwl01tG+>Y~cn)r5 z+>Kf3w-TKtUfA0XGRj+0aHOq*#c6kz>c(xP!feqtF@Y!U-}D-HhbZmzIeElhfD>Hq zDbHh-@t6r|d^&I3dW{R*tYlU~n28abQd1U9+8%Nle#~xeeHuTx`)x(lfkp3B9cL}; z`;zmR9X2kU^+l5oKv^e@^tnXv;+(#0k!&y?-QB^Qwl>UI2W{{x+@32yuNGU%JsYfi zA6Wwm@_r$xEQ;Mt2m=lyNWGX(q4aB>hr5@n44$QKeDi>9@TGKnM+Ux8DrUFyE^l@h zWC)PYFa)<0^k;a?}ow`mMImf5I;4Y6ZFzMNs}_9O8|R&!f8K+1ofSGLqM5N!)-}y@+ys zwFD>nLIy8P_qdQ;+S9Bzg6I@krURzo9=G1qSWC}LE%8!be7k~W@9rcs`a3~09jJ?1 zPm=)&$nyAO7I*OO^hxQuo6gygEex0-^X!w%@a~zF!r8s!MoxU})G7!)_f_sgf7%=n zmiY)C{t#_9s-?sr)8E1v4p3aGvWyYIPw%s60s?wqt6T4iQW?FkI;Ng8t?9gp!W*A` z0T@ezC<|r6Gg$ucVNK@U)Ks8U@EG7fjxQ$rvU->=zjs7k-R_9U#g6XGz86-e4r&b2 zScm)}jGj>p-Qgv&JPBg)YJB|6I)J01R`~Ev96y@7@@FOo-D1+1DUH5#Z*hq2V2MOC z_ZCAoW|>KBcG3x=@Yb78h9$dqqUf|=@KEP^l=58&>L(ShQtLo`glUbfGk46JUWt}_Hx=EJkYl|72MAgK*ae#%vKdL-7`5Sc)IN#rp=~aRNqTdg zqPtw{ke7brM}TC8lC)9~uVubwFdL651f|+c6z!!8yq#T^2Q$VA3Y@>%VCwKj$NajD zjpOcn0R=gH{nCa5-!qiN382?)f_ss9s>*8;QgLHsew7dk=SZ3MAWKWKe8`7AtT>;V|dT645jTau{Bv~RVLT#rJ@Mj>Kps*8wca7Ie%yQ{FC=S$S4vlBgUN)%)-3u#Da$~AoX zDX{VG5{8ECcp-cDR=QMr(Qr>X)-AL=HffdKS7-EH=ewm# z9T%oJKf+jNsvs~apaD~A*WJhnxIT0lRPv|=`o$#-&ArC94hTJmF%y((JbnwO4Z6hs zXnr`lb#^&7xEIgemU0!OYg__rhsXnGagn<%b{`B#oR0A*y0{(acryxO3)|=-@Z?lx z&%}E>%8t>v{jeTs7sD>m+w7B}?^ht*D@c4H`(RTIY=Y&`R%1iI--rXj^ORsvDxiAF zB^8)2-p}$nYY7D=RvaE74ubx0-x+bv+p~kyw?@7xXJOxrhG0fF&JR0go;gc;8D(!x zhS>6gd%FB{1`OT8htC+WI(t*@LX&;8_QAS1@9kWerajzUKUxHCQ&}uM9pOsO6>tgB zm5i4QC0M9+!7R>UPtRT9U4j1bYlmwedM6HU&~cc451g#4fUQ{_p3RWK=NRj)owyAS zCh%iG#w-hL$_7KXw>YG=WgX>{EGkiyFkk^G6@+CRAyC)8$s+6EbVn^U=gYFFvp^kj zmKR1AwP<63ajz{?1Nsw0p{~WKbgSdu#gQ5J?E*Z74>^6d851<(5JfOBT$qw^MYUdq zeBN3eSv!kAE~s1g)2oNN)(lU%g2luL#jwb?Eu)vFq@1^l*zB_tl)gU9h2H#4mYlQ> z5x$RMoYBx~UI|WvhF63HK|%{Zb%8*vqf<3EKB@5ydTQn7$_*ZO$T&>vn9%M5#dN=O z3m}~RfUA5Q1y)6>^(<-tn{z}+{}p$zh!_?QrZc%8+_5_12sT} zYiPd(q&Y}F4;m*N5kR=&Q=SW02eH*6G)-`PP^`F!s_t6o$~SliZt7=9f6+>|va_%> z=jr#J3tF27ehb_RDBk#k0USZ-V{~?Fg@~8%+P)W<^4$yC++<53+GbhSKSa0Z3){ja!(cgMwU5WUw>FZ(6edX z-=gj8Hvp`ycEUm9_&^>#3-Q1Ccq}Ewhus|elvhKhl$y6toV_oDG9vS3vJ*MnOa8}_iy1FqcZ4yvSV47G@F6Y>!UlHTd+z}%^~Y`Cwx}N zy8tcWQ5UD(y7)z`Nf=|T;a54S#+>Ki>DtR&Biq@{$Qp8T=$oX&c~Iw=NNv_7eh9mG z_2HyV>f9s=mi2qBZdKNxzLDA+#VCFx+8PiFPI)9`D{W6_3o|rT@X?hlV=i>Z+2(X% zS*HTDX}SA=?TWrECpdb97Wb@@aYe_T`!Yuy%XhyPOhBnKl!p!m+o;U&s^^UT>ux=xGwJ=u=h<>ejuBPYBEAsD4f%XWPcpwN|_f*!TD?eRo%`th~!a^3hgMJxMQ3PT|>U9XTQz;E;=VAFS(X& zJDbn2a`?m+pKQOnG*!EIsTY9oGP?gS~48Z(@)Jx#JZE8sjm?&H`ah`=eQ!cg) zxrkB?n{{9EL7q0oY!wuIdG@wpb8%!Dqm*u_h==fhp5R9bO3XdSnU%n}Pwf{U9%v*o z0p7yw`hLaKarSD6PmyG%2`4lJZWm#Q89989GmIuWtq{jq4KBRiO;Dn+S5yE>gD@VMuU7MvrQvU zd1;6t!NvPdiKekjVkyel&5$jK_98I%QfzlKH|o3UrF0(yr$l|y^PUX>tXyB#~$dqkvAA_4Q|%x zR{5fhwziILoShA-0pdS4{xEkr9<2P2xpO;`CD*m2N(A^8ha>>~MJRJb36WoO=U6{> zS7k?df9EE3FI^KplcnK{sey4tZJlc=)lXv>slOa(wZHiwGmxCy^YrG zX+qkWsqGsvkitS?XjMje3f*h%@b->|U=zNS@^IZ9=b-~-W@z&>Ff6rKDbDamBSl8A zya@WDhH9xD(gPg5>b8cpfJ$^-b!2!zn+ZVbvw7L_^(|#C5Bd~wM-1N983iD8S|}il zRWW#Op6+O{IEilVOpjf^TwHtrKA-sAh4yw7KfBJ0**OeS?7CbYD_q z))-e}WXsyWG9UB0SeXE_)F{AZ_qc8La1{>e3*Q^6%%}7M{kpiCay76d4w%ERQ6n+nOr++ zWXq~jei1U2T3ROz*L`xnv#xrsIBR_n6&++c*?DfZeBWNM@2nO#KR}E)V7cz#6EFr7 z0H1|i5Fo{SqJ>oGHz)~66La6}D+Y4c6T8y_C*<O;pkH z8&}sbE{tU~weh;+g%tQbBjeM|5N4nysi|X@lu1L$IBsy+H9PGgt!%5BQ=U4zw_u6ZWI!5Gc zswBm+KjvtA?Vbz#I=3QlC)OCtj4Lk4kYnQsjG?`bP}>>S$X}sz7Ez% zE0`H-B_{F+Ycf=+bm~A(?mn@A9tzbn#8w);c?&Qgdrr<;SMyuh(5dZdoDQ<2e0jfK zd%WKn7o{jvj|vt@-cZlpv5}iZ+7cB-jL4Wu^3!obKj5OUkPpiPn!_wCKqw6!u+QF; zX8~MA3%~Y9kF1@$YG--4^w{Ev?sdbb&DT_fSl_v{xW*^Hk=)&Eb-iP*I^24k(>y_+ z$LrV_>POA|hVq))`vv5L2!=FcHd;e0y%~c-sOKo$k<_a zCD8!MA!v|Q#IEYZ zt5jAfjxc!b;q=6_XU#bUPK%tw04`)VC)=-EWIdcp=qL}FP9pk^Y-84307LpjwVa? z-VTYn2r)O3htN__hm8XrCF6>nFbA5|PF->62#yNIaUC9Ng=ff+Mmm--902=eh^IEY z91?I_x8dgGI~xzuIC*v)1q^v_ai9veO&siWJA8g8v#Zt@FjEBSw-0fz5Mvj~=WW>* zki#Qm_=S869arin6F>LXHv>_NKE8vo&x7($E+g2O?o?Pvxy`}pZpy5@pf`*fR#5km z%VX#Yj#wKP|AbOh)VTN>CZnEyYs0d3qQ^V6}U> zDm9xRrURAvphE;}m&*>M97!?h~<`P3|q3dMq!Sd#lS+_0a@maE1BbM=5o@52O zyv9@w)p2=BZ(vgib`R|B>?t_7p(mh!j$su;Ri!*}X$AmfTqqVh_)hjS2VXV)zQJ%5 ziHq{>!Qj=ZNx}4E1Xo`%DkCe#mzb)JWa!?nV+JZUp=ab)BTvxJd(4%MHXH2Ns>9ip z3*7zofN?(#IPazEO)g(@l3on(uT!sRM{7~<IQ)WLm7}ve-+Ai`H z5EKpEYsP7$kIp5AEHJr$CNl>3tL;+PVb+0LoHt9II|zwZ>tazXSg`KK7Df#4anv)T zP?6@ic1WG{@z@-g_eUDX{nX6a(vI1gabsJ}cZq*LFylM{T1tndpM+{OU^?1UfKJ`OINY4wF8 zQU*O(r{~5-0)p^Z>)qB7&`LvFKj|Fy+h@@8<#yYtwDKGw)inpOy1o=21x5=vrx+X^ zH_EX%crJm%YchJWqEk5mSgb(aMrqQ7ZD#RB197)8gB*9+Z2*tHNxUFecgZHyo3tyy z4TU)7@r~(}nPes9(ahr1bP&RoJ`(w{*5E|SY>yc0y$teW3f{N| z17JU{DK_h2w!Q7uD1D_i{8cgXx1>RO-2}C@3UVnTzh~k;uCwdDQRC5K=Qxo4h`H97 zCFQx^@2O)WaRju~w8UwTE>cjxAg$9`51CKnJo78JLm0(`>hcQ zi%wMpZBT`P92t$qmSuxq9B6=dg$wa~i;L!DZ^TuBDy6&3JWo@YR!}*M*!UQXMQ|WRr zxJPM|css!flmvP!r!rVRoj`Inj7wkm#1FGHxcEAhs0bF8*t*%cpm-sR zt^DTc6PTT|`(6ExkVhkPgyFZ_L$5is3dTn*g_fPXQQADI6lK^@3BZ_A_oA6=B?76A@OLB5GliekQ1jbRjatK-VQEEou4^pypw%RZy-e{TC2K} z05guLF~st<&e(Ju-s!SJTh3S*MZew$4fc_Gqt`0|kDglq#*l@ct#4g^Th?`uePNYV(*M(tyO6~mq2(ie4kdB9U*E<-%@|Csx|E_B^C%Zictx|PymG{x8^U^=F zo`dkR4w-F`O<)!z`;?G7IoDKT<$`N#zbZmh@J*#s*fmJ+QQqz@RsA6Z<=4>JoY3NA zS-3ez-QMsS52r*+y`mMeCpy8TG6)Tty&6dJqOAQ&+W4r3Fsh)~^WhKs;B$Q1?O>$*YQQJi-GZEe{fjg@MNHdZkk@1 z8N%nkCJ1d%=$FFLkGPgMu9<8f*+rZc^yn}D9tLoXqJ<7v)Xl7h1@3^L(QJFHO^e_m zVu6O=6oXrDjhJeYjjtQW0>{@b1^Fvqy~mNnSt?-P1f4b*qu=y!Zl^0Pka6)W@Tw|8 z-}_7!V6K=*~MiJ!=+pP*D5wZw*d_^kOFIlSwXnUFfstvZ- zW0g4|G;%!U%8Hx}3iWuaI;6A0nGUr!n1fYXP$G>Z)yt&4+Ng(LU#&3QnGJ1rAXcrs zDCT-eJmoIO|JK8&N3ix2BVK(kr}x()1s`RM-b4rR1~dVH`TR68)U_1i?5oe5^7+kL z+Ywq)EM_T`%}CZfkZ^L&pgwUboUbvoK}-ems32F7QIm=q?1UWzEVt5Nf&I2RkxoMK z+rD4S0iVO z>_V4A=(~?H-tvGi#DkruC^ckffGa^ z=U+k59hpvfHIz$dt^zlb{ zuWY7Mi?KRmK>)a%fanQ4lo_&Ioc;IiZP()H;GFte!yYxk z1iYdL!Bf5Z?jw9Pdnl+oQ%Kk5bt%mC%@7v^)1VI4H|}l@eK`Q8ZGrL`of3^fu8osb zfQw#Eog2F682bWu*?bcjt8-uDD?oFqLCqp0e>`2i?U7a(Xh$1y1kyCHfJINIZ#(FC zRQ}B6BrFN-F32Tz5wIky#nOwTkpnnE&(|84r!Ef62sLHV!`_G}d^$dba}wT6Ue(6D zsh2_+XLgcBlm`xPecET0E5MltL~U65rs8BM-V1rU#F0m~KThDoY_Co|H@GntGHB?H z-h-q(?_C7vEv}3Ky(VI_@HrL4w%Ay2%_oiBF(SS-DDf&-FSWT@vbFEIu=Pm0AV_s$ zWCik9j0NF^HQDI&LjjjU7;$rJD%94-%i9V5LJkkRuhv?joxqi-nC1?)phRDrFWLnY zU05<8?QV1SJj65fsdw&LWKscZMegCqnidfp zD)o$O1k-ZyZP_NO0d$(vEq?Po`~J^(X=AUY6Vy7w9QYff~8*ke#<;1xW*T9 zX(9GXjlG-n19FF3np%4zbuFIapd9O3qY?YUv3t?8I$f-@m&A%QD^|j+-5;C=<2P6w zwKcFwlZ(Kbtc`)2`6-2PR*T6z;Cy>}eZ>4gR{3i@nq{%2B>V3;5gEj0{uJ0!ksvi) z$n%~F2CdpOKEH&-=%YaiP_Q%DHT}TQ0@pLz;dWg zc6kz_heyxg`=M>hkALHb+~Bb)%l_S)Jkx^@oJuuQWmgYwj--0_MNn_jL0#~xVr~` ze*Qw-ZoRYsSQ~_dH)9>0%Dk_phbG8LE=GivJK1{7TKGd>U?MXDI>MEOs69{h ztrvb2-p)5`(o;y5f=b|Cwyq~@-|GN3)F?dds30b(1onF@pNYVA28R?$zCH&J_IRZfZ8#?B#+6uemND2U`LM&f>uXcMZ-i9-;df zN3LvhGXD>wokuf zGDUJeF1*j(PjJd#YfS=mY-}f)$3s<9rq)65X7wo*$MPC4&{KB8 z>P%I=0f&E~x!N|efx6#p4Y#H2MjYcFS(g_qpBjo`JI@Q{uyG*)unBUWGFb3d^G2Yt z=(?lQsr^jG-qkx@WH~|+xp-o38a$~-Uv%=~?iw?-O^+m)RAj3Fhk7L>L#o%{i;Qz` zCV-VwFyEX#n0xhS@GA*3H_kZ19E`q@$GW{&jLLVf`}&&8FQ9uawlshmK^%t)HS_OW zvpKbQushjl-+fDm(5drP7hIw_^y3{uaTuLV7_fg))q*B^s)Dkbe&iVv5yvnc+C2C@dL5fa>xq$OfrxzOa^E`#|U6f(wOKp zMgzRtDoGF^+18+ydRUNCoJcJ$DVIZkEPoqwbCa2qP}Mr@c7^mqX%B!LEsIGckFbU| z*^p2ZmIUpzGIl1rsKME`mW|Bq z;0HfW2Eo{_p#kOGIu2fFv;kvw2UMRg>mDg*sorWv>ty8GM6X)lC%f#OFs>507zmW< z7+|eY(ro)@rCjRBt2mQHYc|fmfmEBp;cerd-fY?@a0VPHmLAk zQ%N8JmV?02lvf>h%tJf~2jSe~!XBBI0wMP>v zX&uxQz#b08=@R!N8zK|MS_PAkGh74021x_6O4(qX&T6j_uWjksdWR(Vop)50T>HS{ zUTFpE8Kc$VEsqaaO{p(OCzl2Lntu+hxX=yCC!dZFmFv(0-5Oj8FDS4wlQAeuTu3QR ztDahsA=kMfhY?_dfilWgt&cZSP$TM~pDw@$0ylhe$a6k5wk)l&XrT6a*rmSnBfTjp z(BDbqmE-wVzo%=V}SVxY4dJIS^iuGP`5hsa|Qj%DWpFoM$2ToYB}}D6|)QfoMc1) zjftBoaTroxtdGibo-=D=j&5Z$-(M>H-iHrZ)0-CiU6a%jL&XV{Ysnfp4+)5VR7Q>Y zjv9H6p;)r}8}lwHcL!TqJas|4kuPPNozZP)(2c?TRpR z8f7>$TT@QEBinPQEpi9lNjWm>9A^-8TSES+7A=I$@Ha1^A4c?aWw%x?WpBWi?7ECS}Q?sWO&e^WwItcjGWr`>DB9FI=linJ_)jVMt|!CV6M_GY=j&+&Ry8H z+JbrbC>m2(1M4Ld5#-ay7;~ZjU3IPdwxF5hj}T@npr+u-3a05eE~J*&b4`p_6&sms z_Lct1esd}V^NM4MJSwDJycJWcC0utBsZPBRmZ z!QD~x`66S;QR?z+@6);KG}utS;b$}@SQ8~y7{`-L0B=X%NZ#Geac=SKGRU_qA8-`T zy^B0r&cu3vlYvgTZm%7=edW?|(h|5A{rU=YD)^2HAJ#mo1AY4HfXbVgwu zS(@V=to+)$VZ7=fk>Gg_nId+Wl4E~L6ABa}%n7d%W*~j5noJK>?BXvq)bkkD9`N7JR;; z5U*NjVph%iL3>bncA}v{KJhd=7XlKomX(o9u+xYi`DhKAr58<8&@`|oLKUX$JT(NIakYtD zx#YQrWGjphz22(PzE+ZbU{(MHJj01_o{n>mh)t~Puhy}rc)UyaB87k?nH^Fsm+1e0yD0mOI&nr5cU zJEonk0);`~l^a%HGWRW#ph4*GZsfRBi35n|<7?CVt*@TFt#D5RR_U9XR_f1~Hka;P zKmm`FRcY@O1?+JPN4RlXL*O8(!c5mn4A}ZLT8w=~kO(((J5i&sk)^(qk5I(Vmra+-VA7$k= z6c0^>NV`*Z>6|3zFn*N1DW+shokM~wFXL2sul!PdLCxpnFpzS0ZAtPYsmROV($3gnTCc(&mf^u{pWhd93GhaNpr{q3RMRud}E@m z=4IOJZIsQ0s0eDXyYf%GvzR-_z#4SHy;^Jhu+O%#oh>_47QW&K{v8MoAOSRSE~i|C zgtH99q%X28%Gl_?0yQ97;>4smas!T494lC;t)q4X8YT>LZ^MI9s z2rY>x=dl=I^L(7ONFoj_Kxt!&HH&z^YziL-IaIljA*~&2+)~~ZMbf~ljU9a(%g~?E zM!g&_7sJb7vavk>?P~xbEv&j)vOYIks?uPf1&b@@ik7)lvswB=;|wl&P0!ZSEv zr-oE+9s5*5iNa!c%|x7PuKFG~2fchRkmr;RfhYOFc#2M+(XpKHS!iR{XAGk1!5Qc^ zlVmi(c=YuZQVxF4TPCM3=)>o-ggyiI8h~tzB**LPXv8`GJb=3pQm+i=TZ^Fzb8Y%h z-l#Ck+gn~%G@ANe&MNibv)bCgp09RKJdF_^6x}ziO(xsQGtlh;EFx$a0@LkQAbssEe-D-!)sEVx`%Zp)%MIY<^{jE-`Ane zHhxm9*Lp&F-lQKe4l>pvoKK+4?GkI!9SVL6dw_W74)cV5L<;)3nOZE z@X$bjR_rYxtbRK~DF;qPqlx_LE?no+pj(cw1XsflFO0(ha z^pv~=@5DpSrnY-JNzAKP8fgs5tAQ6nbGybhc6ml9=D`=8R+Luyl7KnD9kdhGJnxj= z!O_+iz3aomu!9{9ms{R|EBqv8uJzCeJdjCPQ0(-kmTaN4u7~$F}lI zN!AC;7OV*(q!dId8u?Q}5B0^^5diWDD0N(f!T@nrU$cyQ{Zg_fGUCGLrox~F-z!w^ z26hP!kwh~)^D6Y5`>mqvGv;sjrna+UOicBg+=3dKM5<}Rw&aOJT~pGfE^kL+D=9rF zf$V8bZcQBwJ21r0o5uAy1;KT=9FRPn2x)L+yibI&=~!W$EnfSLKf>6N4Q_?uw(qh+ zO>%hcfTTMkgX42w4BZ1{s!+R;O}e&trx>w2U^m&Xz0}KR44+2>?yFuFq5I$*ItNyC z0=Q+v@CfPiH~5a_p@;w)qoyRE`khIBgR2g!uruej(EB#r^@S?9HP(mXYeU{;)m93- zLoc^>mc-zR2hn=S5Y9BLamlAC%P_ez{pDHv4gI=4*t?W(6mr3?us4ObYHje929qWAcJQIa|yGk~tpfZrXp28+1s9T@j3RfsnrJm}q5BdnjBd*%=H zZ5DPV@;lnHjn)hFN=8{@56oGE+qg}hK|ZN=o6Gcxgt?x}ic!I$^F>C*%aA%ZS;44v zjIdhyXb%3;b+FI?ElW(0x#s2jbOO}Y+69PqFGdZFtvU~}MNoozJ3Zn{_oX$LGpWd_?3UPb;P$%0*ouD<5GEEIVhwjm}9Q`%JA8vH@@U6r(M zMW-9haaUy*BX!Du@~8{EgG;9cB4ml^Cn}?D1x88at#GOJvTy6~YZuEA-pp4!0I>m@ zwJR8l!LMvxl1f(ul*kbhh3jMb36L9{cT}FVQYi4ckeCSG5qJ*r7$@$g41CK0#n}%k zYgSofvPoTw=$`s*Agf*mjVr(1h`FbuPv!bf%6SOE+(2&scvC8bpVLhM6V}IRA2?KD z<5FwajZ=k2p&;>mtQk!}M#YE)tS(yUj`dyr8H1{Vf(;RW^L%$b7emTpI zb*?aLRh}FLJ{ZUP(8cao_qj@L3f)-DWIc>iZ;?@oq~c&;Ub+zPU&%B~B~LW?(H2fC z{gWY9Nvq$@iQCHeja|`!PV;cKS_Prg86A~SAD4aq zvzh%VulHB6ehfz9S8F3`uewOkFXS~1K6i;rPj7XiD@0FIbA+D$uCrjT-eCO6o*tM1 z<#f_c{uUap#rV<77K1NfI+xk$;A@nv2`}na#w0YU31UGfeJvg~K>|KD+xABG4Bp<+ zxyNU6J_o(U5J+0vMsnW0A$f#&0{adT1=C5UT^4aP?&Ai30Qm!t!Ff(N=9~x$UA5p; z2e4S0)%y7A77`^{B^U@0l?>EL5Qb1QYus1S*>sXL!wSGZsK=m|AuXUagc_rVYjnGZ z8|;(X2Xs&9{Hm+e-2^p630f@EONV=qXD(pYgcG|2q_OR)I{z6xYfgwM0n)`M4%}8p zFK~%TlXQC2`fAnWgP%ucyj^8QZ~SelofFW`o2s1bkoHFB zfcl)rA#(0rSBkE{?#}47$1Kuj*_6AhrctHMOGu0Y<;i52HPOiTC6&l@nHREmv<_KLE308ZRw!S)#vG&Xv zYs1!FQNOz3x-!II&z~B-@Ump8Sm8Ttb0|85)d2+QYKljF-pWv>$E2C`-US_$bH_%r zo*a z?L*B7TLtNcElFq>%6TJG9G!+G1dBP>DHJZ2@b5c5c#+gqv|R+ioVjS4PpoFqI5amD z*61tm+hn$BS38gR5oJ7S1@xv<>hlR0%uA)VHpglOjMU4>WhNY&PZ1?k0;PqYnFoid z(F}{8@~~;AkS$B<4YYO=LD&c4aJe9(s3WhdXKsapMlF>{(?H-%lEikF&}q)FzTP~} z$JdW=uEhIMN9oa8-C#LhrCNA^pc~j5K*+`Ee8zpG%ci-=<*kEQehPk3CP1VHVRy|2 z9vYU_fVXlx9OKE9A*juxx092F_k;ZWnV*3t4CdKM9$w3%`r?BEC}j~3++L%_#1GPM zI&ANu>Lv8r`s0oHU`?Y)tWX3-seJp#6^$4(Z6tdDXyL29n~`j;{>nvX=B~SAmf~ImIV-LOJ7{O6*Vv>~WCe5=6b=Tw zwkz{3&7mKYM7Esn(mh#Cvzug1#%gHy7c0!8^nmw>OLz=rWSIIh})#qrrJi*v|_239&m>_NzN6>U&)r< zJ1Mq7#@GvdUvxgFT^Ly~M&bNF53^?%V;W>p5(?NF1jn1` zQ^Eav$AXFJ00EeGp}E_U7(WiwV^ARB6=HkzDii^tb&R}#PK>-5qM>wrtz*B@Hunli zr$zRqr|sbEF>qxwYP!C6XUZ%`77MMHKh1sXmN^cDDOTi#>4@FU-1aflqzQZPF&me! zyH0w=C-}--cRgM<=Zao)%F?wGb(qTpGsNQ#CIlttO|5Zfn;iPYS)(xuF&LckSuBHP z6Ztz}PeS6J+BovkFpU}#yd8Cq>BIJ=GjVQl#vctPSWetjb<7d3)q2kL(IGi;7=@YB zvA607c)ee2hEiZtuG} zllkH4f9DQo0PMKeD{XsWs)@#zZOpJ4eeU5GeJ?VGz_zGF(ES^Oi<6f|wmB{wjCopJ zH6^Z5c~TxgbkSRZiV=cu8f+yF8o`uu=HtDps2d4sbif#cH$B3#%jlX<@0-+jZlI^x z_OjI0PgXRbPrCC+dA9~jPm?U&T)YSTo4hS5<_I~DO|Y7^83dqXbS>WkCM1h=SMB-n zqqTNAdr4!6+)2eOBA)~;ncft=Zx;4?8KLlk#jIg93w31+2#G}=nOt`2%MaI)g$dbl zuc1nPgvHxDaCtjpzIFI2UE_%~mQx6>eLxCLZ&H316w)HXhUqsjO-{j+UN* zqE6R-4I1{`)HygG+jd&yeW8x?<{h(U#q0-D0m3;Gawv;SZTKRJ4k}tNvd7wI zy(3|t=H)6Q)Wx*YW1hW*f&1!hkw=w4fg-%n91iBk01mO?g$o%0(?+aL>Z~k?t%qYu z#JG#v6NZ@#nfw#E7@;Fu0%=*v1drHK=`iw!;_HeL`av|z)S&QQRBa`!3YsX26p|CS zG4R4ZZh#TpN=(Mf42*`%l(uunDd zi*cB|P9LOA3(Xzw9|tN%*T&h4LRk%#GBN?UacE#ZLH_N^`&J@0sBe~OjhD0&oN<7~ z>%IU`w3>E1Jd@DrBq50DcX$)H`)AO8CJ%NHClzukcUk4b*L*Y0hZN}r?O653XWDVK z-;DLmltUhxP7UE6?b`r76V_r3Rct9M>y(rf@KYiu!N4X?dNQ7uaoG?dUMw7wB?(6R>N}MSI|sn#HdQ?{A@8L^?RE?3OI!;%8Sj3 z%eniA@I1hgqdobNVl-`b|Imd`q2L`qUpb*VWpcOuRHL%jiF;FqTH>j0yHhIzih8JW zN@Yn1*D62P@N(db?NAsaG*AvF;0AZ)#tBGn6u+NVhHlKmSHbgT2a{6jQX5#KbHOH5 z0w>mcH5wzeaVs^9*38J}B#}~R2caVwMSI&^>@h4}5(%YH3L4}-&Ww6vF|8X@%vdhn zUACSkk2n)qd;DlQaf7h=faZai)I~&Y!S|PUz3yuzoci~$0ft2@iS`X<8`%m0lm~g4 z&|Kkz>X;(H{9^J@JH~i|@-)D07k;37F5cqi z>E_vSjZHaE8J{q#8Dq&j@{Uxj=%2D<6RExeR36n;e?B93om>HcuN#@eRbMF<)pGO+ z%hvi5mPh#3Y@9yMsrznF^JS4HTYKN?-7AM%0BFK2uCNW|=?ZZ&*1puQSxnx-Bl;Zy zW>~5-zvl-+*6cCCzR*9(m*kSPYZ$g_7WcHce>%-Gd(TM)MjrW9YKcvU~3Ou9^ zNVnvOqu`!q)2_$noP~iUt>;N4GPxQwgt{z@Cj*+c-baIK%~mJ19qFe&y1QC2-t8$` zI+HOyY&YB=DR?L#{p3v)=jdbtY9}k5z1V}|>bGPnh)n&>a}ZBK=PFFzn1w0>bdotrpRaqXdvRxd4rh=x zK1mP4!k1Ip^M=xd?Sqm&Dfpz3(zVCXkXcaz`&ZPtEqo4c%$R#7jk3ae`n=~z+Jo$u zGukJ?U*8K_>^qcD*knV5C30?V%=TJk4zdV77uU53kVkQR$IL+v?a)(n56?6>`7|C> zC<T0e5;h){@{;itx3l?y|YKk7S=d)5898 zMXj_S{LTb@`>wCPI|)Lt&p`6$NX3m~k(AYRB-eZ(DSuwVl{T?uLti$*bz#TX%S{u;7 zlt=ZVo(}~z<&foxmD_8>V9ilH-e_Kr8(TD}iKLu;L+J-0DMSg|3&ipUMYnCQb-2x2 zYrGx2{b7HTD5MvIx@qU8#9Pg#AKoU+F5~2^sj%nSW%a|s3e04cF~z~);_iL0tRb1~ z#RXq4^~k58^R(`y0$LQHPvel_Hm){bO2zgyA zoR|&5dL2=>R7tonm^xI(>NHJG$=6ix^qD!d3Tc}oSL@Sg#QM#U#mit910Z7)E;=1I z4eFzs%2bvUD6o=uV22vWVyEP~NrY-7@fuA#_}qY{|=U7fm<3tK>u@AUp1V zClUIF2Rn@;S^+zfL{@|=q{Sd58wzR)# z&|fOYfYvjq8C1D_V-{{B1`LZ$ntqjVpRcqE2+*Ml@hqn41OIkYyZ8+Ta80BcVu4sp zd$-pz=~(s4ox8lLH#O(2ToT;){^n42`W^I!uED6B8IfFVtE|fVw6{x!LFq4MU3N)z z#&3*q?j7cHo81%w-tppQahaD!HzJW{(bbt9>Qrb7h{Q@+v-e|wkr06P+3@9@S86Sz z0L@$^k->9R7JTnADxHOp9f@WNYoI63vZ|m<1>Rb2=&GtTjDXeTEx?!~ zvlGO6coAtVHrgh;E`ENj^YZw5gi3z{p9`pK4%~%H2Z4nf`I!a<9mL7)5GS{GYwJ6C zD%fAJ((gSwByw<@O*@{O%^=stKIN6ihKK9!niW3fW*CR|KBupYz|UQg%c0qa%i7BzvOa<8-|hQXN#{ zLT@`S_d!9}?~vl;V1xQksCAD9*fZ3|MNk$E=; z85m94sif?k@q?3m%o6%|9weLVZuK|blnMX!a^`Xjkf*^^S@A9GNJVV+DC~n;dnkH3 z)uYE`t5qT4K%YwP#^b>^jbu{3C|E$DnkSmUw3a!>)rZh>jCRheM z#$_wVxLM(R)msw_VszV))al@uW?oMtPlydq4)5UfbbrDejNkF#0*LRUb?6i2AKU%*+zZ|7DCxOX?cAmpo!Rbn z&!q0{KmiIUkr?aSFrzU$tp`|*Qvxt2_;+(ndWu=g4rGemmt9{lrt5DodU#RyF2qH~ z>0v`wA2M|3(3s2XDpmPmmWK4R^>u95nRUTwxOO;Wketv3YhxlVUZ|2bW}6oN2n?}e z;=dGua!|LZB=_@j?=7PGfDBMB^Vy4Bb%k-xo(tH5_RFjQ-!nA$e6W_jxq||k1|K4* z#pGdEr_>9$VM4e=b84q5(NTateLzFDMcncM-c9ii*z95flGYzpzE}3hs zP!W{2Y4+(6z7I=-emCkUc({$PHCoc`0Ijagq}ezEhdM^>d;5dQFeYt0!UYn$rP_tZ za}C_l3uAl4SdWmZFz(Sgz8SP*ispuL@YJGLnP-;Ti1{@y(45P1-4o^gf_>6)nT#@axFuf&*;$x6Xo#y$m*d|^+RA`h;u?+o(zLwU^ii3F6| zc;kdL*%&^a;g>(vZGm!(WmIRM3nXW42EcgH<%2@pFk!Z@rJ!}#>^^1F&p~RV}$YkdnD39Sd!vw=bN(m2 z13R5TD-T#4IOf)%$X%w;>>=@ueNJiyN${VtY;_@zZ{+t^-S^a|gSn-nWIQW-)$LW{ zH$4~sbcp7C6;dqq>Izq^Vp5maj$@sS=>rszg&}!DW>qwk>!GR*Yc*Y>YRJLTH6k|YnXx^lg+*c z;cXrhX#rF|r0Q!9A9c-1@2IG@dI}MLRo1REMII1C zkk{`p<5F}xSE5XEZ=MifYV|CR$r%kgn z#?BIFY6*9J#+jnOel4=nNfqOfFIk%)PvxKtVpX=&(=3Qtp%?gS9DCcM5FRL@jB_64 zC(0$bV()$p9d1DDeX_jPUAPWaLpUbmmLmlBAt^IAxJjpZJ$Z307@j4%;51;zPf*c@ z#cQ$@DguTiz7?U2bZR<#CjuH$Mbyj+kgmG5#<=|1pE1S10*KhwPBIv@o7QpE0ovW! z9+QQVy&&G}bwF=rP&9-_42%V8U3C1Q&GGp4R19Swel$*A%HDVIm2Rt(JQ!v;H@bU* zP~iPWdfuxjT%(Tgg*i>1l0NITx$^I%PFve~DU3>3pjY9Kjf`{>>MiM3bY9{x@TpI|>DNBq+9xe!62rM% zZe9HTIlE9IpEi443z;5ckIA}(VE|^3+b8`LJG({ZIhfp&x2$7~+_uWf{DRVO#r~K0 z`J+5_R3ph+xVG!$77@DUeYEnJ*!3YWSC}QnJGWo6%U`i-V0z){e^4y#V)?8nAYr+d z5syHsEp!C?k(Y=`o?{t02zj{O*Tde!b=_PFjn{*pp~>VM{V1A_$D1Z@;HYNcj~PA1 zv;6^}l~WGcYb>?cvNtujYdYE~iByM&ON!YOv{^$YKXtTKdLYE|V!z7h`dq*BQS@(% z705<=^M-)00TmF3pe`+BU+-1A(xb{1MOKbhz*txW4-qDg;dCuKLSvh3bkT3#o=I$ivWJ-2p=sLC0t<-I}taf4IdCcE}Pi)}PTN+w= zI=^s%Y_>8Ien(QJozk;M17sU;8Bp5VEk#HZF}w3*aU8`?^Kc=(VRN>%4xF(=oO^<4 zwLUjdkkgn`(97ooFj*8s`YZEjmB&LF(pkX6MfRR&uPWg#b3d$l;!Rh+Qy@M(gLRU7 z%B^Qk*xX1onKSZQMyE~|m1V!)$*cs_>nu9j2vWV|UMo0TEo(F|ozXkcx2i9HP!M%l zy>11e^tj{j+ecgyD`*|e*7L~HeQ480XrFo?JWgPF7I;qhQbKuV=|$(q26QYtbqc5h zZoaFL5v68#Nl{>#fr3$Jr}4q^ir1WuKT{V&sZ`fz(Y&Ng%hb>Fn;N^;EkT+KSpAy<(K#yB|uRyOa~Ni`>&VIIrLj zr8Do8Wm8~*5oKqz6IRR?!{I%-Eb%+1-TPjlA%SUX?^V&5mf_6^GQM+G9hmHVwb72u z2v&PaZtw9M-q@fX-nRWPb+<`^IM%WB)&ebs8h$4t_*V{$HogXIiD%Om_}U1S9Ua?m zc_i;q92L4BwEdfPqqKC$&7U{M<8*?TaR5Pb6u`_@PB*mWxmcL1+%a=!t&7ScV9Yc_ z-cC=EPtQ5x?7svmqi7XJGN?SP+v>SXV#r#t#opE`L(M@=hI~>yQUuVh8d>i__L9=a zgQ;p`v;J3oHrj9e5qwp;0F7YMy$fRwXnKe|jeR9f>9=e=oP39MgcK(Z-m$Ki3W9Bh za(6QZr!9ufa#D2fUG;25jYfkAoS~8|e#J)r7Fg*vM~FUeuBW|gyNF>S3Q$JOpHJ03 zyzqAZGN-K;F4Df>CP5&V@vPp;yHDdNBWYZDws@Uw-iw`A95@mkJ<6HQxX980*QDPX zX)0=`^R@;?v0P*A(z5k}m@UyO@cZu5tpIG6Pe(>+&5{yY7B5PJOJ-yGom7&O)pPW=-SU8>dG#zCgKEhO31q?c}@%ftL~lC5+MW_C#CCv?}~cr z8e02{lJP+qSl-5D8CSwp%Ding*!kSx!II7%?TmPR!d>X0CDU?$%$?hjB(ZJO@P+Att~2q!wbr;#!3o8uiFGeF z>y(}$C!jt6O!JC08;cd@{e!E#xASiAWV0x%T8zCKc!mfAP_l#KhaAx#SO zjoNbbfm3@}liMnYQCaxlcGepwQd?$H2wHI!-=dx6Yuj=UH;64ehSBR<47e(5VL?qe zSFNByl_o&OFI*GYZ-AsBXDJmGx5A3X$0+j>NMO9y$9-INj9)w}+*Tf^{!XJ>7G*fd z^WA8u@EcsprFRLmU&)%i_y1W-u8shPuDJ={^K>LZ4HoqD?BNfFtIx_KZo=w?4;hM7 z?1X#3xd74Ka(_HlJ;+!=)Pe9iDPmEsH>A+y?8T`dTE+Mr7pOV}qYeEL(O)hD;@prD z^zzy@8*gFie50T8IKUlbXG+VP9|d*;2tWcBC!I<#Y53jGaaL(IpzCh7EA1@5JT{^@xnp%OcUTc1lIB$=g)ULuXuD6dN)okoq$E%} zeNiAetk6yayNBksbwl-h$-chL7htZ+Q|z#D=NaseT{V|v>`*%3{gi5Ei>Uia(X$8* zv!v6&YDN*A`EZu-?saDL$)taYOKdL_z!D?`=Y`u;qXre-@|*)ZN7|0s!CY)zTTh(q%`; z%1noN7?{!{z8vFmAIH99?T!lc9?)9HO#!LABNDY)%4;=e&_zap?L85?(V2=4?7CXH zY|}?+1I(yA;^wb6;am!!m`5eg)k6M!jIxQP9n0?hY*Bcti-*CG9Z1jU4AY@63D~WJ zP%u{+z-+){#5sCSFU3w~=Z&48&DLbIst}wWa+^#H7XbVoFFu)1IgC@A83p=G zzp&Dw>kAv-Tbc2~Fk_(%3V1)ZykECg;`JhdsH5$FIHg zd80Ob_iUC1nV%L0B8jA+TrQiSVA{%F$=CqPqhmsPSg1LcP6RdG zrJq$g(US?ZEZBDz=A@jYxqX{WXEj8(hgBTu6__dDZ|RiNn7>?KoizmyXry#y(3V7; z?T;e~FMICIoZpOn@1*lg!o8j&DXlyNSK+XL2&L0|S6pM?e4Bxbrb>F4crmx9)f-Ew zenB$OIOG|L@9|fd8{rHajxKY8Yo4Hic+w6y7|xyEu2iQcsZj@=rNsgsbl6~84BioM;6WT^Y~$%7-(lH*IonA2jdVVSSK=*Yx4<6 z2ct3cC4%_AiY(o<+Z#?>><^@r$I(qUx;bL1iTDNW9YpzJLi@fg>8P?D1K~)JJ}NPq z#-_x?5rHxWS+I<`|Fa&OOJ7GGkvlzZrp=4J%W|>i44TQ;Sm(V`_AK|^ zQVeSn>F-!&`FxR0iDp$ssodfoQ8|PK3_l6|*!gm53jA%_l+0JnxQQC& zHF_~v*0Mh;Hc|+5#f=7zsMgim0qR#D7qts!_<@i=b2FVB-p4{Y^MGuZbw(ptkmp-hkrUrJ|NSYt|AE^uWAX2%%oaE|mWMnXmQh zN~}8tAgfUGq3^Sbgf;5Ytv@zIJ^Bgj%S8S#TO#XFfGpost&egQKa$*D##ch%_Pu&g+ap~S&b@HI1=8hx6D8Y2 z37lp|B8_BCJU^t1!WDy{!d4X=fkA%Zwy+CrC7Ex*hq$L->Fhj%_73xCWysY}t460- z!uf1TpX5xq>&>go9LDn;Fh{@iK@&;M4ISf49e4)ot~2x!8NKxHIwFX5@F&f}J)U6i z+O#RTY%IQUt#78lD7gS_;6@>d{x0jg%4GuDPc^N7p=0xeV0fD8q-P$FsI5nDpq50;wFA~%}v0imVp>3}?1JqY5_p>QwI zn$!Q$Ze?-iOh53G_+j+Mb3q`tnuC=;l_Sn>MX`6}$um`;91h}}95yCsIfH(0HyNa2 zaeEi&pjEVN&Y_iK9qU1^s#eM_!+;x4=# z-T^XXvmM9|1J|VTBi5}0U=E2SL7>7?#z?~LMZ$k`gq)W^(!TkmffJh27VDjs;oz3N zVK3d%8JIIyLNbQP`0>iz&dnc>t))K^FMAtXIb) z1k0(5Ofpu+J7OqsMc;klB$zt)gl|dX$ijnD{9nz>}ePtNp|@hc+L`x0HYiHD{3ynRl%?ez+^j-^DJ^9y%^bt z<9wkYTg~1FABL6XUJOcfT1kmgpEb?7BU(}Z0xQ;XZj__55k#-mUZJ1(pon$S=944w zKC7)(790UABuHY%g2j=esexyNR3;^R1R&43wjwAi>JVJAWR_V1=z_c>fIi`%$W>}< zr8gk#10AOB$DD6Cq0Tx19&u|0atE|2yp;x8v6!|V7>8@R9Tvcqa@b4Owt2mFnke08 z;GWW3H<27KA1sNYV{=B=3#l)3e0}Pt)q2HGLvgs(N+l)S&NR@j(ys0Duu0U7s;BQt zK-05#BmG>~1wfMU5$}F!waV?AP%bD>sY7UKerHFB4ZZ+-bOi^foNx&619Ta4W3WBT zj#;%(k1e)Y*Yc5CiqTmhF6gC{tKb3-8q9jA9oDji80g8Z6opeSE5@3~sO#3HAK6fa zGWEWiVboyBGwPy@aA1zTh$YwBDu_zXhBp22Ta1=2yn{~MS0k4oq={tIL%>vOA7(KA zHnBdIf?e9{{US)jG4u%mZ#QBaAcb{J8DrlN4)u$x6A?bAJo((B)A6Ai42->%UAT6& zwpk&<+l^6eqGuuF!#t8DkxC7}XtGDDK!DwW5&|lo#nzG>z*XPa&c~VGT0DLpb4;|Z zbUgT+ybGAx1}ml|kNE?>LK(e!UNL0jT=kfS`V%)A?={}RT zxQ_Xe%UOfR8myOfE3r?9fZSF5wpm8QuFE>Km9gGc1w=JZjmEWhz6WTUvZa?*Ujr?% z(6NTPyGbEmvys@k+i8 zcaTpQIqpL4{Dz6mHs%~Q!ug31+G>+)^hI=u7TP9av$9nfyzs}=lDsbpnXTBKEXt>Y zX|R3g3f$h(X-=+0_%$XYYlZL#v~l*miHvGzWt3^n3XWnBj2xYv7*G=Wf=B^O_yfDM z(_EU#UKSuwws)Y4HqHj{7jBt#HwJ$Lx$MJKedEv%pfLS1(QF$jFT2;2z(I9&u!098 zJsn;;z4R59GL1$+&CS}nE|~}DG(>7P!vE1SLrzQ(D6e z!ra564DK{IRRrsjQVIZ1It=bGnAzt;ATgIIADfv8&9x<92q4-&~{t(>x_-y?s{f0+@TL zrNUHvOa|}c5qvqIK&}3bH|4@C3A!4_6(kc*;SB!EYWVO-zcI0^uGa`KdG2}Y-3Z=C zuo{LwNi_7(r`>(vRW{MKH^LEhPUQsLU!0N{;n!xA3shtM#+$O$dPGY++vIg#(2AZad7fG=^pUoughG$soPB34n>jfRU)oL@u*s+= z1TsISEORsB&U_h{ui296nCC0v`CLeJ00{TXn&?@90XQJ-ElNmSfD@4RK+K?_2Rg5f z&q*P|?N^l4WoN0J^Y9ylx~Y=n&KiQxKnu8479Vss71vkwQ?{m8moP~(kt?4 z0WVfZ>4mVNNTE))!d71CRsRjuwh!6;xE*w#L=N-AFjGz zWQM2=fn(g2C>!_^t$+#GsRjrY8@uwZE-*exP{uohtya-zAVIcEm_!bGP(*dzY+E+r zp~{MFlvI(|KA=~f@w@|sLps3Xs)PG(!nWZ`;kc+rnb5(1WX?gjpw(I`b6{?09V`oq z`8t5i@*@tuE}8BchjFrxvt6?Z(N^S6OY(jE?QUW7t%dn-?Ou6q8f>HDl{Cho4;pYW zeWO4n{|+4c+~r&)$LoE{VVSTP48k5$E;;*Jf-v$Y%#O)8+|mGn>c*X!iP|8(Y=%xi z7C8iCf(}k^gFkA6La*Kntd=Iu$y37Y1r88Xa5_dKGLNO!UUE!AXe=%`8hjQCOZ(1w z(OKdF8<9(dp0?^eDYZ>dDP(2*hZR>H|7!emXs8HV@$zrcYsgH5rOL9~ma|JMg*4=- zXeSx*yuyC#2?XPiG%Yq(Z;?EOM>J4(OA z8*q0mfSs488r;@k-I&Qip>56gbX994h1%d4wwuIay(T!wTEB(BjE@To5Zq~0OO5hV zzIegi-;8IN-eK{2T>^sJ(xEqX-f57OiLUKRtC{X9mv8gETkel-Z{1yqau57c^RaN- z4>9$jP$&q?^e(pJAPidMpvNe_5$_c)FMOE_*dGF79SIJU|AQ&uQRRoxquj;#$1HlD zOb&JlKAVy)0y~{#a;No?kliwxATUSX$ShzuCxD7?jj*+6#e~t2`D#2WmxmgBlBt zC+?DK%fO0Ar{DntgfPBS8w)yo4=BZHY#nh6*{}{m3>UKCb%)b(T1RmSm3lW?Nuea2 zSPNoGn<-nr&vc@OvL3d#$AF!IP&2Gxoa0^(CXiU|+B4p>$`K(&61kxp6Trr`;t_T( zu-Qr^jN2{=Ba9Mb0<5bqa@y|7mn~zjIJoh(d*|#OZ6_{zR zUu+fxUtxWo&CaUrt_j4_-Z?y6uZ@NcleHZ5z*?WJ)r13fI$k1kP&^r+0vmqVq`Pow z83ik7CtJUx7v5C)%5hR8gu93y?C~CCX*vmekjg3~u_k$=CHcpeI|=BIE9sjmV?&WY z+UN}e4&Ood;k84oGWhC|%37~n{sqJHCl#mD{;K3lUi1`uj3_5 z>s{((PIJICKI&!m#w|iFdMbH&rVrN&y`xGj4mpghWP@`Kn%T@R9a!-zdn(HTXqL*U z!+f~#e!YxpR_V2j%g{d(NnTQKP7P1*&C2Q7sl9!uuV$l$&8@DW{#uKgZ#<&iu{F0c zS0@4E3K)8MjnlNgQk2I5rlL3%b=D0)9jDc7x2@%kuxfu90SULtH`9wBFx%jdD7b)j zeT7t?Fys-`pfH(GjnzIer{(}S?#rkVvMh`*VVrhn<*7KthQqmJYenKF9&=ma{A-+y z9z0S`j1w3vaVp+$kep!AL_5oUW6tsQcIU705 zQ_20Q!kMnS(>l2TSZhH)HMp!0p>gt4i-!o|&Osk%ozr1J*&O(xXcXSvg2ma1dM1ba zijRw=Ut5AgiS_tBw=NGbP>e`}dTDgg23>A!dQci9+YK#~3!Rl+>;V56z{+;E!2XU7$+70Fwogw5I8KDpk zl<_)DNiVbOQ@$Z3(KqqXmOQ8Dzbc`=P*ObfrVJAiBaqT|v%aug*a6*jP&>T!kuquH z?!pu#vAl1tF(#K1y{^*E*P$aXL;yKE68j=&vBkLL0UTl(&Z3`Z2dH9&`Q#5=iBpn4 zliLDfrr_YWz@iTiLR7s=UFguxMyCU6l<1(IIYwvxx{_dqrngicd|^PAxrf3OObSQ^ zZouOdTl9q@?d&>*zuWTn7TA6;0EZqR$#22XcEwx)&(@9K0$BUY!3EA*LVN&;7V5{O zVjm_mh#YN_xJ{J3s8q@Uv(23IHM3r_E(>0fYoB4!Y+f^KPRFY;lP**Yg3e~SO+lC- zU~C zbGqG?=p64$3RK*8CTZu|2??Ct*C$+?j1RoYsQTESI%eZpX<-Zu&k)?V2nev z712CP_8VTbm~Z*yA=LYh>#NijdljwnMuK@jN5xO$)o%!p~R{gvy)PnVzrmk z36YbdH+Bb+T$ZDb2?es3jng>Yu01aZY~dWjwUV=F5b=4aO(}kLQv8K5#MvF2X!@29 zY@j0M3oTkHb5+YgG*T{By91-N=`oO2>t+<&j?5FKLm>zEYvn4$h~tRBoglauQ_iPQ z4xVv(!bl2MhtE@4F;y6(7xA?U5unr8KGe_x6(QXMqI0hm#eLSs1l1mxmh-c~Lc}uF zCJmZr?9TWy$9CW(N36SZWlbCJI!YuNPKJLqrZNDW$s{f&YSU2Dc|6rFlRetOuhV=n ziGk$@uGUiW)7B3A4K53oJ=Nom^|tChgIxO_$6AkqZ1Z(!fzEg8p3>oIu#W-_+8V7c zA#da?2hoRCjx5w{jSQRo%y@H+}Qto2acWaN_TgzUGSAa*^<@_P%VZT?mu z952za!u6~I+kd&HTpNEX4#_H=xdljUm#2>eb09(P#HTO7O>ee~24|3Km6R4Zjq+BT zd?^e3k2rXT^R|Q%>^gd#=MA(b>}0`1cF_>AWUQ5+Mp@o&r-duMKHefb=0w&xd431$SUw0i*Z?TzY7X|+1AJXEJhmy@>%21Yj1P1!)GXm z#T^S7{mv6LO8;mmy0+CsD&)4kC3HRZ8rTj^af?}BBbUCS`I#V>%{Y(n7a#DEm=nHifG&s_m2 zkXnN$Jz2*FNYgKqRJbJjEb1~L3FI??11)T3Xlr`V zU+SYSTcCL=o9NgDc$!R746&bT0#ks~>`S?UiQBm790I}{+QqVA;GG;f_-IJ3m8u?w z#?cgmMca2*63ve-fr05rbaw5t10b)=*{%}*kx@>;{vM@TdP1!4!Np&BlUO)sM`p1| z-tvj;8?0AA?IyC@;Z@D#fNnox03}wwQ^+94!q+M6^d>1T;fdo8CVUC`dH@PF0oYU; z3iwi&!}OjgqmcX0tqji|14VUr@8r}KlFc^EEAxc*S^%Pf&aAwailddk41Ds~UmUe@ z8FjsS=oRr(o_&`AL`TNs;AiXx&uk11o1FsDge8QhUY&|0ZzK_3d!Mp%91k2A?%LwY~ZKPS{nkP1KlX#P-~MB92GBg%+*S{yC`DaHRi<3kj$T;1>4hS z4Lf1&evB3Hl|Xq4t6a{QV<7!pNJCd5`OqmKNeDe6rve|9Tw`5BD^5u_9miU@^b}tN ze^1S#Gp^qrjq2T;VTvfcNp@=k5CMS&v}Mw?LrRR+Dv4v@hD*;LP^i5DvSPa020Iv} z@C<047l^XA;ex-!onPb7AC3j`a?AjSy57o<6Y^B64GT%-yil&$joGT`@I#J$9O!au z5lk)=Dz)k@JNBsyE(UlpAeJ<&w@fg2G`K0M^Mhmd))WQ+wd3j6JI#$Ui3Y9=#b>lD!|)Y&rlqX&5o67v)I7M1qi zxvR8R%~7J75{F^?pUk4Ghx;hixFj21LM!6H@R7eGqP*MnkRR%K5a~3})@n&{x@fnV zu+{1`g|4irqw&+~kV)>YC?Y56ewr!-q*0}V%^-x-_Mo#4U7k{Go}f+Fh&f9KO+4ni z$aLfdut9Ce*cPc|l;5xfy_wH41~6Zw9!AE8HURCGWx#udVL`umpA5qG6?itxP`UGT zl1NJakr!*`ni@H)H|hiSTD%MnOU%&|m`Mke76U3gsoFMt1ukZ%dTEh4B?U+cC375k z)QH|5vDN4nfwf{z%M#fj`qGldak#HhG4?#fD@^+8RSVP4USj%5`CmJ0Z|JjHFBhYK z?J3cf$9m!z-r{-NMARyQ9+&p&>2%9A3luaIoUuqh)2qZKw-h_7@%aW;NhUOyt46x)QqzL<#KNMz#MMn z5aKwi8Smak2|5eE-Qqd*QJQ9ZR_SIi>J?ZV9ixwChh7cwusHC62qgr-S$>ht?b&K1 zgVuSgnzc;<1(Tds#WbfF%GN~Q_Xr=-VuZnKV%>`!C8D1fJI)J7z$M>L8jwK}1GW&3L?qYY6EQ78bB|PQmEb`*asi~})GHF1NDTha~`Zf!H(ec298FJN)bgj3n72wU_^e9KijxHCqEqXJj zclS0TxJsRS!pON05^igaX&Wi9bK(eq;JO{k{iLpzVDA3hJLi24`%!R{4HA4*`f1M1 z4nP?Lx&gjrb3si4TjF_U=b~Pqxhb6@(knt6={9~EM0_~N)wS>}Ei+Sg3R>3p@lGg; zl&u8HOB90nMD&~}0tcyAVg_CvQfE}cUg!5aY~m1wZ$fVaiW;tu4IiVEZvdDPyK$p` z_{z?~P*|W3@3!iAIwp_8cr`5=l~wE|j0gOH+vcX2G_ae5X;6&omTDpgG zcg?Cdr@+|zHNJY6a^TRiPTG2s0G@{)Y{nAp-;1s54S$@4~fTUUB=kk1!*>2%?udRKwd}0g8E(y0w71lh! zha0qTGoo(@0f0LU2nEs`Wy3x>2v7dJjXipEubLDj+RIyOn~huBdgy|<^i2k*x$|9% z7+AnvNr+km{upB5G`8lRW+FnJHs`8FdIzNLK zB8ShmjZ*J=1ttqy4_L~Hs?hDqqQH7#RV_2jSwOBLqah_ycY=O1B2zk6tSGkX{&P^)iT?SU+oQsc`@A z+l*DJa;G_Dr3$m?WB^0q-#G= zHxk;qu26mMa?vNf10TXVo0N%0eq+>{h_QPUN`AlbR|wlAvv~AQyDa*pbCtflbgHfEI*dxrg`P=v^uyq4u zolqRPoAU>57Y~N2M}#kXl#E>7JxZq!-PjfKa|7tYm6UYIM}6TVlK;WBMJw3Tw{wf@!n0M* zdpx>jzYev8Ugzc9D4oxIL5wiz7wo)QBgmQ|gI2XRD>|a~yQnKBu-;?i)PSY&KnP=$LcXbba$1uTOoV z|CW6qxz#|*kw`DJjw;3l%YC42&KMEL!8#v%j|muLddm~4V`3;!MC*4E6alS ztd#{E&B6(E&2Lq@3z^>=8M60939(UM+m+v5F_L}v-eU|JVZI z2Rme)P|v^(PCq~#jA0u-)m3&;=fF1*g&yg7mASz#W0jNPG28ZhaAx4v!gq<2gyk6; zD-nC<{puvUYTMvllb@PTWIfJM%5Tv5n%D7Of`G5b?5vb8kf13Q0pM;tCRSeVf1q0n z67)UsMj#!WGW(#x8CAL6?pWaRm^xJKit7Lz#sdr*tQIDj${Zi{IL*@vw1N$fG{EZo z@atY4uyoW|_HOQK48%b>=E04i$#jzM^Dx>1Zm5t&-ik{AkQZ^mQmxW)^5T_)NXA{2 z1AtdD%E(O$lA;6~n9NZ+(?H_=_tac6l!s%19n654`sCRcJUwEz3NP%+BCgzMa;em? zLSAx0H=&8Kj<0fnvTW*9((Ede^P?yGM^&BECjs>Z(wwAe%&f;)djZ_8LkX?*BH*02 zvGM1;u&{MW;B57#Pt5KVyj#ZoPak`3CXL<@bsrK1#;=ND#locH}&pujq?Io;>AGjv7iN#q9iUE%_%J(^A;7;jvv~qi|78N6; z!(W{fGa>QrRIdv3TN%7BxDPSbtC!87Gqv9b8ZT|zxG>jV&Y3=-Ay|$h;5WJ4cQr4A zT8)xko0eEX*_BbVZCszVngw-W%!Xl*NZ%=sYyxO+_^p-c?2|yuTx*9<)^{7S1#s`` z*bsy)5L&ya4PggX$o%%A+)3k3Sr?~5WWBfY>3b)9lSARmFu4TA!CoS7$zY*A0h_T9 zW)r@(G4`xuGFug3nghfX$HE3-Qya{L%FCw>*1OH`V0-1I^{UaPl0LT~nte)hL~=L> z>wuhIM!~JNDA)L|z})?5b+n=VKK}aUyt^^y)c6pr(*{_hami~4*tI!W&b~p3qHSDk ztNOib<_?-unIb&NjGO!?yDHOubSCw6JYim;!f*t8kD@~2+PAFTY}d_1(&U2US+bxS zy#a=|HQd81u!5E9HH%>nB4C!WuqY5n?J)LM#~Q~^p#s}pVX^#dg!9(YrJHR6q3x}D+2_A|%dQJMg|sXu z9NRlA>OBX7P@~yzOCRqU>+~QQurYfqRKx5*Xy^O_=KH3UP>Io7UV$KKj` zQ(TI1@m6c)Yzi8W7Z+Vf%XT~e&Bm2}8HtTi8WrGf*JFc+fgO9ct(co-hdnkCgb?0X zuX`=vmlLQrJlu;?1cY9+(2#>z5qi_4xz7eZcDMHV2HA28sYL~J8ZY;^jbJ6o28Jap ze2Ac2d7Y;vbmGb9b`S|GqH8ZR)B_!oP`)9m02K2v*0I=2sf2rZ*dc@8W8Wo9?e(!QK7@lH0_0PpQxr+9(wr6;62uiR z{0LHHwvUI9)<#xFcbehyLN+%XS`m1y%)KFKp4{SUv(ttj%LY$*w~X1ib@Tsr#W8j@ zhW>45H;=Z-%M`~CG>j=d0)0)P(b%>RIcUPM&$)2XSi5Vz#dei;U6fU>_Y07`!4|&c z8JT@=m~BVFPpqK3*mn|Xs5rS#y>t(l>6<YW>W)Q`X)*Eh@X*$t_WR!8nS=h*;-PFvOQx87~5?7Ph0P9(0MY6c1oH zS)f}y)R<@TfOhU2q#GWw;59pg#pQPoX0^f8y7Z`fGyu-JYL!Db7$R0*-77Dpe4V{) zyx3)i2|SNIM$9VkF0&;~JC z6-r3az8u|aMVxfN-496bD{t1M-ez}|Dd*f>fm?7+kEl$-Mgz>CWFk<2J@Obh8W_1f z9&1kci1Uenzc)FUjqZ8F1*V!bSsdzhwtuxZ4kHg0tyOr_qZCo(OMJ)+MXiBkiiXBP6Nrk?xPle- zf&>Cc!vIl0uD@}~e^FbnX{nKJg~#8;YP9>6msc5XftS2ti40~^BCd6vi|nwxJq{CV z2E@J<49un}1gFT~;m?AP&@GF#DN$vnSsJCN0@8g~fV0?ekM(E;Z+stR_fDFUpF$kV zUcmt#8N>SwBE!rDHkU6}6|yejB4yDbnWSSuUYNl0f2?Gv`&89^U(uYhJ&qf9z#SyB z79Ay*t$^P|ZVPINexpxX6g;g;NaXyxaZlsq5zRerfqpbkyEj)LwXIXeVGOx3W03Bk z$rRTg9oPyu)F(ujIW zqtLXmW!&v;fx&8}86is8QG9+H+^A};jY3W!k+l244qTXEp9v*2!WfL=TGcb_hM>RV z+gUq0GEnR60xba9=5#9<-ncIkbCL=K7X?dt#=63P})AzWPeGjCm zi_SD2vl%3~((2*F_Aa&M_ZZaW0JukZW|?>E?&ucyT~SA3)oNS-rl=c7{+i5~K^F?ru56n##Vh7d-y2oUqv$OINB-!r*T- z(a99|_EdOQeCkUangn|>mMypNT&;j?BDn6&#sAZOKJKGuZQ=)@@)-d%c^=F>%s0zg zJg_?-to%44IJ@Ae%90AgA*od*Wd|qpga^hzfO!g}5lH-(I!QT6qDC zC1vo}N=Sze%J3P%PId@_WRXsqHyWT~_$e5Xpj|gL(8ueTl+LTP;2eyVVxEADX~4a> zePStP_o>tl59e=;SuarRs>%z7c^H@Aq6amDcBXdi4+zA*z=@%*<~k^=-iYm(#zgSl zIsy}3&O7=1yuQ1&W?1%y5a_Q|Z2?Lad@;|dYLW}!zz%M+_V&WmY*o5kabpl+lZX3< zibkOz7KgcYS(2qC0M-kBtg&ZJ+mx17>h0H=JWg+hB7i2OTn~&!xyH*-o8aVAr4z}LU{WV z#izX4+b8XaDCVjdQsptA1V9S}|26 zSiB-q+vzbuDt5H)Lnrc83!-wdiSk_7ckC8=*SMtVBvBdnkcpwBvw7>*Mc?cYr!Q6~ zp&YWD#)4uEL^SzV02uwu@L&NGeoY%Mg*W`x6V7nBBwFXX>widLx3jENgJzTq7A2Jko$;oNQ@rvl+=3nQ2JO=6{ue4OA6A$ znYReD5~SqpT2(IRk6Kv9QE#fIyVQxy`?7l|n7`Vp{QzAW^>Uo_^3IzW0BE?OH{=^3 z)wk^>Ui!g!*PtLrIKPv-hzh7P&!Z@b25ZcK&U37gY$L|M0UL~2&-Nfkj0hEI@*DVH z-hmF+T2NKjN-&Ccz}%Q4GvoGPZ?@(RYx|j=4jt%hl-|Oy0>$mXD9?4o@L#OXGKl-u zTi%{$-+4{qJaw@7<|#~ugEuKtNaewEne(=&%(ZbAtfl%MuPJ@)?MBnn8RwL{fXy*9 z>xGnUzqqEUBhNK!Oz^-!!M4!A5#}#IpQ-p8>Wy;q9Sk9ef#%^VIyzE9NO_c!)>Wy~ z<-m4IrM8*F7zW_dl21B-FqX4n|HOb@D$bud03c=f49CZi%oTC4KlMyDdCdJ1#aFaD z(x}51h29d+rleOdd}9bDXT1{%=+5<6!+t|ce4M*l!9;W9_QH}Z-|3wgV~0*=*PV9G zU^CwpU>68z)z(M5fNl5b{|AGXPxDIVOv) z!q6CwD}eecPrer(A7q1l?PSXARrMU(Ogu7FvN)eWi-l- zTw0JI0uIjE(eP{@o6cDOQ3XWng4z~SA(fnMGKTq3@7xGSZ#wCM2yPD`Ynb>bEiLoC=nv`mTn_rH-wU|PWV!VHWg#|O*8X3 zIlo&N)B}{>PSl>b;W03qFF1Fcv1s^lXN0`^Ha+(;{wYV$gkPP7w_NHZa>`PO?`$Xa zjUwvFh5RztBYsgwa9wM>Kj=(u%ND*oaQPU~0uQuz6-N0nefB1c{kZKZA;$Nc*VJfB z++H;-KKx+UJEP~dcGI(PIgHu3pm6*k(pWc4wFp+72<2Jz8NJ?EnK1ocCo~aV&GyJTXTh za&|_|Z0*A&yJ-Q^gdHj;DVH}Nag<-jnEb}q19;Xu4l2Lj zquh@7^yD0RAi%s#UMk^;_h=&a!}lU7MSg_I1d!S*n-A`AG?_W#03V7DUf4fekRfQX zb>MJwIHa<8F|s?S#xAYCbV8vmEezNy_3B+V*T&Fx>lgxQ^>P#@2^>PZHgAdf-MM*G zWSDQs`V91o{RuM+#xINu`#FUx1<5lK8H#d_vmQIjO@RDTl!s0m2h;F$q-YC`{MF)n z9|F~7Y_30@>of-nmDVmeQfK>cir)TJy-x)tUp>Xyr$b2f8o_m#<8OJL_C@fNKSq9m zVb-HVyPaJ{oZ#wjB!vkyl6{giQw_G~boh##MgL@Pt3zjfmxIAWkC-eDSx!{^E#B#R zFK-2aCV67*ivuic|AB#la~Wrn*u(U0z8H9n@xefvN+L2knmcYBNoVTf(LkmcPRZLK zd&!S(zB-a(@k*0G03Mhc%~-IzmHQzwj5B&GUP~Vx;j;%#AA%(m$@%pr0kP5YfC6zo zXcfcg$A|vKL55I*r44Em`UXHSI+WXYhVxl?0BQK$^5w^v!aWVeY?QHsW9r?PW$0dy zz&mTg&3&#uAVK#;qZ!+XDlnh3zMY=|)uZa@Hc4cMZ1jL6mv9MRd21}Lqj{Uco|o1n zYLH!Dn%%&N%Y` z9cs>`hfByg4bd87Faj_z*G~x6&&$!#xRs>rR1&}&;#%7~4!fJq8jc9Y5F}Zw&@=K5 zKR5u61xUji)M9ZLJ(y;rZS{6v6&jI~JFi8iqSF%Z;sXR2#*2Nh%aDMQdJ;g8b4Q!4 zkiG_4Kt^&!@KNwW#*&oK0gZcF!ys&sl~zUOU099yT(`AXgzdp@ycW6CzH&}u+A*cw zRrj2P{xL?qn8bUl?MDIqCN00VIP^=9B5z9S3nKl4az?O}k!N-Ckx;VahRqAyAr7hX zo>8tVmvRtM10t&QM#ew`43f6tkwKJo+Jq)Qd#^GjTf8GX_asMHSS$m{6f0(C(uG3{ zATB9V#gj0x(ewcDFW@jZq{~$+`!)JNWw%>!9Mj$DWjwx(4<23Pb!BzjeQptE)0jhQ zG$0X~Ya$`De0dWr!Q}YG2^JBOsf7qi7tWf#7GJqGQ;w?&%>t1BX<-`%^!8}tp1FnI zW<3FpIr!?q6-F#tqu0glPj)D{#;khtPv2u$?NuF2tWla~V|7&l z)a@OXEOPwDRyr&9@sm zY;BE!`YBFjcIujBxOlN2a;NiEL}StoNXmUDBIIo_rWXa>8gv^B^-|LEHyMw~p1-T}n6i0KL$`wbt;4HO3?;?hDZ!O86ZZrIMK2 zatJo;y*Q>t^TDNxelqWJ<_ESKZnD!D{BXKFo>gxjB`Y46N)AiGflY5z@@+l(@aTO% zy)$ejHj(lAu5U5(M4K`TE(%_1-t$&UygXKNVIc68buD+fwjD zq65!{5`ybqSLC;1#*GGuFcP}TjBQP#yn?T5cqenmKj`pjW4Pe-XAm*lPGzEoIk+;^ z)Yz{nU;Cs?vY-p_7rxFIdvJ|Ut~h2SVsJr$WMNZGAZJZ~1nnE3Ze?mb9r!r{VoL{)A$>#eKjuxNt~hd0m0ZH6H8T1 z;{d!v{_|k^SBix9gayR)V1ih9B0S*Gd7FwMYYAcLhf~#D!DDq1V|q3_0Z{$}VhvQ< zW{39}=k3SvYzTXn*kgkLoj~OS+8T;!#LHHr$K!hVXk1gWKo6xf9@5fp0SFtnJQz{DgB{n1e&(FTjGLXIrEetChAO7=5pP&@4EM~vj{$-$dOpX zRthOFr_k0q+H-AwWjotPgUi%inGi`swsxWw0jk3EE*z)}6R2wxAt<9rVJZv+4zyR) z^a~L>>B0{hm`UOpi8hu@S11%PI}ey_Ell{=CvO1Id9$-~&QoqWJuRp26}T@T$4a(1 zfK3tO9B!8keh+4auB_qSNc!&}E(AKE>C=KrmME2OG2pZd#9EzIVcqq+OMVvK-qe?i zH@(tnYtb!g#6B06wt|ibF)-e8JUGdA@ssZzdTRjh@F(&@1HDF*#u9^gTNNO{a}2gP zWs1o@tMIdZfQkO2*tbJ*B0JS|kd%A~fZ6_lks3IA22|AXqMX@4iQG`22J<;>>sEnN z^bwbR)@1iEF0dvrmlMnllX7Nhs9)_hVZ~K}6<$vj-Vgj0-UMvH?|{nYZOZ+CIMP@J z8cE78z$mhbV3mV65a)PZ0vC3O0znFfi^<0<-3w26^zPoVjVR}ypOMNqs^v2Idm5B0{C^*lk}u`l!I zaiK&P2I{FhhKHRyCua4`$4<<=%Glh2H@ff#_$cJ+R3H9>8B?HVU(vUHLs71TD;-(# z*(99U7}V>fKx?%+LP)`%+t(huMmd?0JAA|k07dZdOMB;Dq-iPV$kHlL2z*}8Nsyn* zR`c!>4>lj?PP0u;tycgRJb8C*O1^$~hSK;QQjchRECAxYtf!dWq`h<6;+SNli5ag_ zFN2qe9klKge*t*$To*S$;(?k(tP@-`o|Lci6)S8<13>(Qc+}+?ZZbr-{WF~f3>SFBv(raH&K4Qn$d~n_Bcch}ecA$V*>#U#TD;2Y@AWr`vNyJ} zy?K8I`L%Lwwpy)M5Iq}dip*Y(N+u_q~Ne7|xd(i?CZ}UndZz&;u+BC$DX(uaAC09zX)#DwkY782WLlR09fUOf^vUT2=3B zwezU1FjSfje;Ac4H#h{KaG28Qap0iBTkNx4q|h(1f+CraTC?5i+^N@EvY#<=b}5{y zz(1PF>D^fTG&|gB0hv#LwnCeZu&pb0;#Kj=G=vpf`yH{BEUEurB6*?98ZhCnY?CW#mFGpbAi(w>8HXVkn9?ExX zD;T=Iw>}rp?H7gNoApv!xcQ41sCVmN( zXtE#r==wHyr_Id~8ib%iZ(QNFQ8(dvVG(vHNC7-SGO zch_a58wMe`(*o)q+|GEb_IpQN$+e-F)^C5kZ+lg6wv0+qXQH)Wv=Z|}JISlFV_l3< zC~96wOb~pCp*-zp+a+%GCw|o#E<2lapxgp6uwW6FT{nQsVH6s&icuyM`pqaCWC=iW zEE5u(K;MdnvP-ohXzSP=Sa#CEEs<}^&GKgje0(LTi#4k*_qVr9aDLs!>Wr7xYGEGZ zz6_UNgGW8%3Ys*CaU`lJX{=h2LLpBZaP7_;-8ZkSy721}FyO|KVd*m!TR>nJ}P$U|>LiXh>-ZtMBtR zB7?^x%I!^kvkT)u9Kt zNkh6gdS^;zM7C?;bA;^ckGZowk|f8Wq)GrkL2(Fz)L(=)N7TqL`Qz;DZgyv@t1}}= z;5~PllAC+;J6or>he&TQuufhC)>uH|xX=sFh4DaW#ADrdTw+hO&Y*5{1t46}>eVv_ zV)j`fLR^Pn3gw(d;(p0ryF+w^*rSu4A>?D&#SX*9-GG&1YVW$I@hT{-<$nTCG=_@v zy0)g5)&~p)7<+s=MPT|>lGu-24M|Lf-qua?{g14SL6;uJj9f`cpC*zT1`WDGM3y$V z%C#|yXcIEg_x+V?bg*&d>Urc50t7i0Odr?*jzTEwqE(GR8s%iv3p_f>YBNb7Zy;_a z2^DACv|9hnj8rt>4_QVvC=V9ZrxS(;tY-E3#>~+ zUyAptnNCJ2_W3@H;lg`ojLjyp%ZLMxCea}=4`gt!2 zURC-vjTf8(?TkDM)o%v=U6p4r<+ zqvWeR+gQ0HND5*-B7NuPOHUz?+!*(+A@5F4`WrdDShnvfx9&}|CfY4)bk@VNq)!IQ zilw%4Vd}6kww9$Y6FqFQ3r?umt2w`Jh)vo?+**Z6l04W?4v~me8#%b_-6A>aWG^c6OQc!{f-r~4Hb6aUZsFbD;QjA*OpbcSz_#x zKlFTM^-vaEn3W_t@A#NVmVz2t3?X9P+xwdJ;%K^4$U2-3ETck2rEv-it6AeIL(O>r&?LsU z*cfE5_^?pkeJLDO4bBKo3%g98fCAMqU`Ez;SW9c07<9nm7wVt92X5_C`kWGD^-V+7 zjZDNneL_a)s6K#4IcVxu*`Cw<3<3wIqI}kRTnzSt^ix=48~g!k9=&ReIr9+Dq{5ji zgWo6)_XFAk9r^1;E-Qd)!JluGMS8F)j=QROHAnA{h28MU(0Q)H`i$Yvo6tU&4ed-~ zLX;2LQLgtydJsrTTb~4u^YUcR4l-*|=SL6(EeH0}98{^TkS}>d7T>f>@ztQ`lS3d> z3ceR;?t8TN*MMw@z9A$crIJT|c*JZ)b?7s#~>Wshd&BNK=a!C0<305NAJ-LLoZE+R`_RY`naX7l6I~W zbAq~=0y~=PJ#@0l;?kwhn}^RDJjWWiDyQ}kkcD`$=zibLTI=j9n3K(s3mQZDiDV-Y zR!AGX?L8pY4~p(cEPz(nh7cNrhjqVmOK#32$~g$paFh-uAH{f;gbFK*$DigfL+uU3 z0tYvw@;DiAR$aDvh)T-VL!_@N*J6j*6RLQ`P%MB~0PfLEtM29XM2W=2fojg0vM}K0?5iH$+-OAmV za;u?MuHi+oD-xzwuGxa9ge3%X6svgrT+ezNF!aTeJ1?zU*FI_zQjen!?vm$sdc#Lw zi^FCxXHEAJ`mH<6@9ESE&+Wh`P<*hWry~nhu(CSAeMa!CqM-tE3JR7Y`a{0V>bfg= zL^?!tq~#Ezz%FxdIdab2V?QiT(hSM)Z|tV%H&Uq@{9&_?Pc3o}#pB9qW^+aYm%kKd z8vs{$e!M@JqzGbTZ+a(*ZRkKeH2sbq{Fk0XT%&%6s58)Wn-V2;#}}RD1m>(6nwy*u zscW55cW2M?pu*z}AeV);0AGk4FrpZmf?V>+`r9FK= z{`Gg8^}e<;ghtxZ^YP&q^5HX1Ubgr$KtRLv`x}H9F^)W zd^XQQyZbnCk|*ZOP1rep8ptFmoweAL%h_tSW^#)W1>Z}a<6Qxa(meC1P9i$2}X)d>i>eI%psB=I4 z8P5rOb8f8IueU}|`w|xwfCB<8VXSZ5rIS1mUi1Elw$7dw zii%L>C0;f%QYj%7PS!d_9;aLr{0i7W;URz$@rwZ#^wgD%-)TH;;o)zRsf`{PWItg z8`) zB6>JRm_Zfqh}DB~Bh5X`Wi~*DQL3E9)%)~`EP%1W3b-EO^?8$S0{1z)wQuKn%-;;6 z$bvV9IAhC}3Ekfiav@9vJF|Fi3E~ySr;Sa(I>(dGGx20#b583q`EUUS$kn74 zzR$2E?nW;E2+R)_Og*o)_*%vVT3U8>wju{C`2*!`__4>ij1M7mQ!45KuD?_B%90jX zUTE+Av1p^UGiJkkLK04<1PyQ8-+ z(vY^2kpG0KCKAjDps*Nxg5RXE?pkdD zgri7^ktczA^SCsH{dwmquLOFlOJ-Pj8x&gwwhA^tTTbLEs2i+7_2u<9R!Q$JhX~5v z+RiTEYDmay$B%UaZtI9AXj7&L`(IcXnFdE&Ijc=j{exZOX+XZ(9E4S^7`O*iLhDm) zF4*lrHh3I0!nx;$p0n%_bK1)~+X+7NAavkQqPiJOH(7QvCRi@GB)6@kPy|{al75^o zRL7k3OYv^60HAr#v-%_9W0o@j)CZt>5=EBTzWFp^vhy2Tk^*SKjIPfZ)0t>9X zHs~U=uVh7KxO~%9YPf$lEv$A)b(%X%F+aOCxevz5d;^*}3aMg3Q!W-d*nus3mwI<* zmk(ouUdEzO4gpw|L-_VSr*`Uv_{qw`UFpi{;N)k)9792`oqfCPvcBM0)$JQ#!2#5R zs`s$UcD7t^pma0qSG}7UcveJo7h&+mE~;Ea_}j)VjxTwyp)CLcHV?an!gR9J= z_e)x%EqaY**3#cx?`667yotggZ%w4_oQOL#Zea?*WexZmx#6MMr^}=`HV)_?4*V5d zC%OKQPa|~~{t~bY$(!}$!kFNN;mP*dLU8rgxyu68ay+Tau~ye5l*U=c*qBohlq>3g`!7$+$9?1gng;XQ;YCFe;@ zDp{h+4cxU(6)GTr2~}ycJI_L`&6gvM(SyWKau2v7s{$hEWmS+zj zl^!}cToB6211e-GP%c4>>Q(&+L0aM{|@V>NI`izkJ3<^Hd%y zy}CM-RLH$dFZR)@N;?(8dvsf$pR&P8sI}}gO9BNDSql4zaSW(Vs)2B2jN+06IVs#! zl~X;v)?TWVatr$eqxH;PdGu|g93s%lRo9#klns`~=RM9%_~8pBC*&8E}exj=V5*BB-VM>#RKS~k-ydwZ`% zla}wQ0Q;auRQ0K>s1E=qrTS*D6&Q-PKKAjE^e!x67LY#ZC^s-pJFpDrwH7VuW6Ni2 zT*jbYBwi!p0%9?#_>t2^1}JU0p2Bu#5bc{ELFd2n+iM|6=9 z;T}*iR+e>lF}@K{0!am<{=^>&g=MF_s#zYVMi1?DDdK?I9mdT{m6J}-ZHvqFqovxI&Do2ZQI%o)n{9L9{2I5;M=qcuUO^C-+x|UDa0G=&dlv;rHxrjx#pK|YGs!{`|B9@s7_BO4ZhdgEfo+na+lCPAS(^mUz-VFS%W%Sa zqdM_QEUU8#Q99dwy|Tu>ox6W^9{R1zF+@!Fb+)ua+TkWb)cd8em9dBJ%@C%dk9Our zOXCU%EoqS1*bN|}o3!g1e|HZ1fAEBOM#FPG^4Ul{tXkoi22WPmCX<&CMNqzo!a}|Q z2G|-m^vtqQU1WfHdhte>k-=5M^2x~VT0snU9d%arcXgc8?xXspV`q?OKVmn4y~_Kv zUT{`P^cqN(l18kKxPxqj?zXkFzlk1^ZgVv(h6Px)bhc@glV6Dy#6VduV+!kl)@~fw ze+=+)KC5`lRQOn~5vIDvK0FQRoPxU8612gJ9oid(KBD2{uYV+d8UTVLf- zo?kzmmA70zpnsq}X5MKR6Ju1$d09Up%$fBgGio^ca#E!Cwn0FZL=U{XnZvlk4{}_2Z_SOPQK=SF-@ix7 zDVGH`3;6U{(u5GBt_(ad>b$Sbfg5zy=8-Rhf!&2z$N-^?u?OHRgk+p3FcSY(r8F4G zArp$djL4Wd32bR@;xipW<%;r}vPPc2pkq49&;sK+Q9Bhm>o$a9qvX_&K}18Y)e#0X zh521}Z6P^{i_I`8v#-qMAv+?Nzw2yBuGG+u9-F;$x5!e{;xulZvka41BG=&Ox%f>m zNI>%l1#cos{kF3doHOT~=G(EESLw8X=~6PS=fAqMF*GSX?@DWEO4&$ZX4z2EgTMrN zyx!Rb>R_xpT{yO`D=<>9Tb8~jGo=AFLFamny9@7&!{nBrX}hywv{PZHn;b2tq`W!Jd292$d~7%O zd!X`N^YKnMcwxA}l$p6EJxQ`E`sx8Tx0}`uvGAx`@g(i@=a{kyoi|lkaIDia!SKO?efPb=4^VutsdamBt!yo4gLXGSzK%knU?nDX!jGPwXx?>2jd zt{m$U9_a>Qk08w0WEQB;fbyG(hmywv5E2kb*D?`~%&WjYF?CTL(yGg7P z+seKSpaOJTk<$u57CNmYN+~-rY{B<7e6b9%)fyci4259F zO@U}2IWAXf9$)D#lY&oUf=T8E7K}sTH3X%!Q7E&$lgo*TrSK*+^Pto}P7IUWhebj53BaSC^-(TcgKe8&gbAE#*Fm$?0IYjaRu3l^v9c!j zvvMA2?0&AXz5*+7N!tlLXI>!CpWdp8S{_KjpWk6HsK=RwLxjs|j1;?kO~Upj<|S*K z@c<8O3?;8D-(E8>!eJ7=1B0>%-vHfVqmqjrbvYE9Bk$bJ0~Y}SX!#OUW0?goN}D9| z8+ZStAHED^JZAKq9gnm(2lUY)9)``Dfk_#XodQ4E3%*7vx}DmULSzKy=yu_w_Klqf zm7`K%!3jsKU=Rj(A z|HhQ1pgB^us&EphOM{mz>?d%PGi9aO&UN~o$XmY)Rdz~VeaMFMg2wnl@{?+?dh71z z5#b%<_~iSA77@DB0O<^mXw}*H3gplai{DzDASOqj;GBAgu=D2a1I2?>{DoD55^)bu z2%67O0EDjQQV$cD2$1z{ z4BS?gI~yvz3W#cu?Nd(Ym8HAA=V;{`=23gM?hK?~D_}2rlIA;%E?|Y`k06QEF7v`N z1YQTl^&Pyh(}C`firr@2 z6RMcs`*_-qJpBn*98{1u-lY=}F<&p4MblF0f#ogkpf_KsW^i`#=ZTZY0ozt+^_*^} zL*^u@){jouUw1TgHA$hMmIsi%;Ppk>G@oYW@+yw6bvFEedGOgK3V-z8`!<- zYvRt89&*cMaL*;|^0|d?N*vrdAF0jGQxw_*iSAc`r`B$z2GAA zY@4smuXXBKzD^^nFh&#h>s&^_>o>rIeiJ^bS(e`qsAArSqb^GpKVRhY`@(;mBHB zBhABM(&|8dGGWHoa`mX;J4#V3@n7!seLm} zUFsXakCjbJ?v*X(TY=qNuZ%5~C- zL=~#S7mMqViDbUkOoP#imzvrlkm2<}ANq|SVbj)N+r8#ymJ~?JTjwMmvTr+6lEDYz z)6vCj9}ErQe56?g!tAKNH~%i9o`xuEz`hf9E}Okw;M}9ERT4?&60=IF2A@s_?uP|*+k2dx^ehNIDU{75 zQXDpzNa%!PuH*NlGD-R4Ot5MK{Xi$ltL;2ZD;rADS}Q;|9cwg^k&9%hR~BU3$x(_q zNxxqv{^1lDcr(!iIwp%K+O_8Fk80$!@g}lj=B%}y1<+_~863vQo3+*}yoMc zmBeZVnfRuAS^+#j04^`pCEkOAUb@XEqkNHvpMd`I<1Geh4TA3RBlV$8x(Z;F^ExA1 zCAuVctbvbV-tr!3xoxX2glM<+wjc#ki`IDjqe^n1m9p8Ms+<6s_#5wtNlnC5$GVD2 zDKKwEhqk_@uU^NA*z2zPlqi#35E6GF(SC=F|FiOBWlN&H-bOFwyolm;_KPIV(?_`T zi41Z`yq1JFx0YU+ANUbUucXuFW2(4nelGfJDr9A-;U(`7N&s&g#{YJIs(yXYY@1O@?+q*jp#70M~uX}RL(iS(NmIGiY7C3?in65!(1t>9zx?2|J z9c5(cw8(w-eP^6)n>G=9Q;+;QZ88d#SUmihf@KLnpGUjLiyb_qgu`WG^a3Q$NWzlc zMMIP4N~x#SZEfySP#UjXV-ZF_cHiEzXdMCdfM&0G%tuf{nHCe4;iKwpH2$PmRy`cE z0({HFN(9Y>EZ-1#!}r4SI+a(cwsX90QuaR1oV)eSImUWrA3oMXY7*s@_h!154;Q%t zT)Kj*ok{9_Zllf8PNxEWDtH31o3)k2%2l$2ZTc7uMDJ!<(O_@i?^1U0>>zm}Fyo>E zQHX5+4Y@c})BtV8^QDwwUJkI9CUo>MQRK8k`g{ zfjm*QdQ!Nl9e=ire>o;Pj3Ilj$M~dk5$844Td8Yaf#u20>RnlMn`_Vf41&~0y{=DA z5u^u*|J-MaZRN88%!GMvveexeTQ5niy}J&HQbH7H&C+`JRv%}O`lJ6zEL_R6b!H+0^{ z*eY;ytlc}XQ$sm6@@BnTFPq8gqZo^&R>)HqAL^YV#>0^7r47G!pq0W=nZBd=y^T*Z zWtMVaE{+RuVEd&+x`kjj^|iZZ(kG`f$2Ll&Mmj4#PWH;q(e4zG0s>UZ}hRhj{3qeIz%uCZnf-S6!IPhMgY#_O6ex zyA!N;Y~}DWc3fUdKg)iAbTQ>1-0ju_o7PXC@yxxKW%!WA0h_+qgW#V^4bN zG!}I7rW8;l-R~?=WAB1Td1ct`4T%Z=X3BC*sNjYWZ=w|RWY3CUT@JODlI(r zAYcszhcg|mFk z4EYj9!ioAWw?PQgAspNr%|_vtv+8ua?~%cAEPK1I-g;t(7fvexK z*&k$tu+@XIV&)i}diOo2uSK_bX#`=g-jIW$d!AakbO= zj5?$Y5T0t4EF?KvK>bJ$_Cy;5=&NwC@Qx60X40=;%H3T{7?}5R+f2Sy3(n*A8U|Pi zqp0{a#277Xf0fRBwYD9)d2g(y{1xuO=)23-(IQh}eOW`s(Y-<@t;@Pm6W|+m)3ihc z^me$d!EUrq-mdGhG(d?IWIPafMmmVWh*IGz6anX|z(*9aBYVaQaITc*O3@-P{*cHg zIkqaBoaIKVlKUkoG(TT60KwUlQt-t^1x~pfUJN`!2XdFIYG^^NRz~O*C*R4I-??Ik z0h^(w^DNa-*=!)`**2B&MhH`1W>Dpj4cg6>={CNu@5nMvtbVl7|ETEGv3?3WERak9 z3JGQzkC{3)4pyUTF<(VC=Ju7bUxJ$1)h6@w@w{VVqpKsP)zcm ztp#GHQ}x)RaIo%LBYfZc6kb+SL|#rxq&uo|Y>k=8k~QLD8TQx%tnW}PpPwAT^ypzLW#{gp`Wpp4RV`^gXOeA z1D1kWE(y^uTx?gT3Y(jRTSN{LOJNA)b4YC+08{Q*`J(IJ=w1R9*2gfP9&bH?QSE2YZm?G3SrKhoVyk_U@aaIG( zsfdbhoiwC*7J!%oJUlOh=}ow2i>8Gq0TmBoSvy*N92vVBeJvdDf=8IZ#N5$BI%2vGX6!f#k1V($RAx2p2(|7= z120?qO=+kU{GMejKoz)Yl-GP{SnI(8i`_>C%na%GZle{HQk0N5%%Yu=@yPY>G-fft zucyk;8t*+g9K2nnCx77Gg@wiAUIyjI_14Y;xJ2g%K_PdKLjWZha(d7Lp&FjkS2>gR z8F^n09)P{zKm)>fo7TH5g$?7zo6ylatV7fXqKjL(QCFa~ng^&DLDM-|?MLz`$OCj< z;o#G2u?m9~=wHj#b^`k)?YACRu{Cgs`&S?+Kna%?FVmN~_$iJ8`c6vJt?Oc%TGgg&H5oS5} zAU4%$3Z;A|rNFkIXKJo-c{EwYS)kmCP}*OTNQG4JOm-0ioa>8AHZr-kPMmwaE%Z(T z^PrPMgbfK4g9Y)hQtceBrAWdKIsyZnOYh3bKQf9Tsd;r}EdQ8_o<*9QZiv6Z=Ve@F zyD*65N}pOvtz|g)Flh{K_5NSfCLk^wrv|e07(G2rTd#Za@Kj9V?t>i+P5rT zK2gy^c953DhSH{G%!+vpJYAa)UI~(P{aw91_k{XZCy_lADAc80R~F`rYZ%A~@^fCw zn;k#fES8v{MxhKjdENkUUZDvm@LEO5lnm8=Xy$G|TnQhgTez#dp|=4^rBh>gDsbum zGfztYc^!-8v(XOz^|!R0%NBe!tKEA2979$JBpp(|_uSX26HOeWS8kU8LqNR0Y->yR zJnwFP4RIGXGF(VwUcyP%M;qD!rEanxY;=ekY72noS}e$Ya?RX$#W6jt#7Q0gzNi9}Gwl@x&p;sSl(-Ik7$w~>eee#z zv^#i_m9lK0EE6{9NJOdiDTD2jB;2&|;dnGb%Oa@l!l8YiO`eeO_c>tof)aOwyvnME zQ#xLN2{0!YRkbnP-SJv|11t7}BR|+WGev$-Aga7=;3;nBNq#||=9I-PRwbndPNutz z+9FOiEmn`VNL@=WNmkse@a|CT*?=$F;fTH-v4o|K(}3`bxV+n^sLuwKnOyU0V1GCQ z@@=kjUouCYu2Q~84OoV+C8w=Yoz#5m1j{ci9nRyVVR|*;K(cS3f`T77tWbAX2zYZY zU>1e!8KWl5OV%y&&AnD z4^EN{Zp_vSp_E78TS;t{9SOqVcE`D=#w5?q+ZL-l!6&;16_yfc+K%xs3F;;8X$$jE zkbJ2;DW&wX>l2|umrp>h60`ScozFioDEJUmm-*x0dQYsCr6vB7AZy#)@WZav6r!UH zxL|pQpQY40b-P8C7KpR-E&luk{s`rv!9}7mLqmlG@q7v3tijf4yb#b^z(M(Y-O4{I z>e2GIa5u;ZPLr=fozr<|H6EW+RUdx^m1|V(7&T&)Gcg)MQf)jVAU0P-cked31_8))L?QxpP@TrW2Vw$ zX5e|>dY7{m*nJI|q2vpIk2&cVI>C_b@fKu_PniZ_-gMH_W5Qf!dv%dJdvSRX#Y`$e zW{gR?Z3d|wh-)503&?05P+cP0?RV2rmc`YqJgXjucyvG^0W@-j$ovfiyh#f}{_8>1{btEyTG_&Ib=UCZ@Mr){I42 zOf#W`@$G>;TzT`zP|+T*hso=KcJ?i=XAOf{W8|vTFZDQwP<$(dm|1uT?UmR=<=o&_ z87>U6wGFP^!axXIZZ1Fx6-4{FUp&cO`x+!(+RcpHFYur%w2M||qdd_Fns=z&T*$dd z9w?dtJ3GgWUFGygESqq+2<8YamgX9~E%zT9*1 z+l5WjP9+(rgR~r#<$Y#_48W<$Ivl&~a@Vcbr3Um3K0FIyQv)GAZ{>mT&H)M%(3ScI z(1JWi@LDfLaoRR2l-69A_?@x&5EfWnrP*7Sn{FA7alIWL)qED>v`cVzHKIQn%@`E4 z(|Rz2R?g%eGcd)*g;iEGzaV?;!W|5?-v`&=7fJ__f#Tj=PdZzs*B%yCkn`dv_}gxP ze8=l28NmC-5?vlg8D&;|T_4bv)iAUx1+5}l6{U~#BYTuJ`G{DYyr3*DV_OR$uHED< ze8VG||K+{aWGwi3W>p45IPm4R94R<44ruL%O;$x$EFI! zR$a7@1{r#I-|*0dL>o*W-s&CZKIh3=)u=&fX+xmM3nWY={;hE!+Gizzpqf)JZEWV?!)2%`YNFyIMH8k)S zURl|NahR}26C49K!<*z^Z(;Cs0fAzGm=&-{LQ#M{wzb#0F;`h{7ut}FIZ#kZE6C(o z5|H*ld!vhWA8vbyk36Iz8%xWcwTMeB$Fa3NL1M>DRnNLs>NRN~X)d*nf;x5Q0~)AV zS!01M)<^u&;H_DCo6o0{?}crRq_!O6MQG}moQ6{m(R%?&v$1`7vR!os1}^7@69Usx z$JZ~oLpFD#)*y=Q_L7he{f{gx-|~)-@SR~J7%EO?<-BM&r*}2L-m{?~PwcVL?2lsz zJ)c7c=M0ednMf^Xc)cZf&Z8RSJmI9biuLQng>#BV_x zcyo;nonCFM6wo60tH5Ab&b(R)FIE)bQ2k+y-o6{`S6neT=gw2(7(cG|GqF$gY79d2 zavvcTG>#UnvLfB96$)-YfZ+m$eJyy0nXqBM$gKO7f*PsY$#3H7r}qn?ZKDk5a~gQO zB_2gB+Li!yHAc^u1?0%ScCtSE`WCN@OhV=6=A-cxX%%)Eh4nx#NjQxw!wp_@7>?LL z=zY%orvRdI=l@qKO5;VFaa4>ScW@M^HkJYeZC6FLThy1Dqk(ZuQy`1T2i^!TFL!u_uk!oxu5Sg(eP_P%x;10D#5UXOJ91v*wdm)J zBdn6a3zcJI*G@7Zp^+y*7n+S@4N4M&G)!l#uQ$yC7D9s)eIWpYtbhmfxd_2gqY&ln zPU4#SjSwCpC^L6r$8E#iCXGP?i7VIa`dw-|uo>3#fbz5h7G$N94;x(d(_!P*(uj-p z03h3&LVC-VNQ=S4aW97DbYCjqmnUAO0sk2HUC!eLJggq&H;z>x+SNuKibWT(>({Z? za6BKzA)3De;A8AfF(@3n9emP!%jyDfdFx8VB=GyfCl_vSJ(H;-@8+bdI)$2my|zz# zXPki?7nd0UAP6Q<*;dIVZ6igo=H_gL`Jq;remiyDt4*ip*A<1DVWi!{LndESlQJjM zu?71a9D2|6wE*v0bqK6!(I~Aw_+5NlWj40F+tLJs%A8m5W`Bd+o&{Ybt2D!_ME3X= zK@P((xh6$H*aXE>XCiC2F?K(8Tfy(9r@dQWm(}^xVrgZJ+k3KcJDY_$0d>N0y}))9 z8C}NeMo+P&zP{L<{3_q|HLPKU>2%{Vi5(O*KYBrq^ugrvloXu+S@TzFI<5AHAU#zxx zbLojb0Bj11is!xKjGJ9PK+fH`88<701<-XdtmS;(%Ttuzk7i5Ix-Cpn+B&`75v5G? zda9Nc`2+-=$HYo0%(Lb8YWs^>SDs>_2g6&T{MzXu3<}ab7uK1;NzN|iT^(aJ0B|wX z-p26K*I~j<{uQ7%xjr#`np)9?gF{AijdZ2XW`n$@a`-q_gsBp28fx>0Xb5sVLZa`H zCchax{ed6hJmszQ&GQ574)MY$Z%nPL?pnb=Ae@Ue64$NJQiEdpSvc+&zRdfG7G*jL zfDXU#n1yE~EqLa94Cz8@VJ%SU+|wq^rFm6+A3uy^h~NQ5bWZIBg>sUd3nk6oo$Lu?di4 zyoL}g%AKSVTHCN-8^Q?SBT&hqtDZ^0YxTqV>VR${byCY_@bo%_-*?_CeYrC93Kl}` zH2y}&>W~WB_6P-PMzOc;cB<7n%i0(V&Uio&9j_9aR9=8^^c#%T0bTgYnbi5T)K$*l zRzRaos2I_h114RDD%-s9v*A> zfz)y-WZ&vRs`9l;EjA4SexYb@}`Z%{^DR+fX1IF31{k)~n$_IzcfXRyX@p$qn%i0%cj1o( z3{i&>Bv)Vxx3^gz!=^Q4DH<-7!qFPAUa>3v)Y6zKgT4TALUbF_Oz(Jt-aX@7UUk4t zTNN3wg=$t@f{WBFC-;;T%so(Hm;7s}i8unRG>%Ss39sB_tGe|4I>%*N=n!aqCk#W7 z5rC-OvOpVxmkJ0OA+}$D_E-R&E3K-#FY^u@@=Tnv8Ne;^5P)G16!T%XU}azFv~s{Y z)UJ)YvNW$j`?Y!BAnXY+8?+u4VQgg=_wl<9dFuz#nCXObwAk7IMD^jy+lzVPYs1nv zbr$B?vbgE;0lNs+lt3DZWP-I;M~opWt=0Ec=nA!M*^xZ6w!()DKbWp@h-bbFo4Lk< zXm-&qvO&^OTVmv0Sr^VbQenY_2;2eO2UEIwr)dcSMTCAP0C{$)r2D3y%9FiuaRU2B z&+U-Y8vJyVHFl$@zlUFuw3^0W-%-$q3 zwE2I4{r2Jvi18P{z3sApgl3n%6!=MGkruyXT1!R^(3jDPU}4?7z^Ym3mxb^y z&U3EK`(|rrXlb_5d!JCz2{WAlC#bA4`5RfhFz<#m)3DKa*cZtoBt0rYlfGblXpd{7MXu4G|bVd)XqSsU^k zmQUW8^Y&Q$k7Uu4z(_H6K8rM!R=3J^} zcJM9_E8=;Wf?)SJ@VI6+uL_y5F$ZaGYv*+*zYwfK5}UHX*tR=2_rM-=&b5hxj%A#W zx!kWJ+}t3BjW%-z{SFh&eM^rT*al$W8M{KC0MDuQ(XxoAI14Daa%szPOkwj~baCPy z1b8^4%A?k}2`uqexHVuf|2nURv& z?HbYc!%MV$KP}i!_EP4lvkuq^cBv)$kbWLAO(^Z$BbIE*kvPCA;383Hor!EK@?gS+ z9z@-PPvI!otA7U*0UcX05uxo#P7Fg*Jal9^EY9`hZ*RBhDo3s#ki z`SFPqd{kLfg~CHS>#&g}Vf6Mr_b63_(pDcn zbArE5XoYLVnP8Au>NobI{UrV*OU{9X=dyRk?1^tvfk1-0X4Z-T9xM4OzDi z1XCB1(zHqwW#;~59>xW%8>sKC6kVxak|$ojdhh?=HvfTTzz_Tg15t(JZxmL$9WO{W z3Qw!Gq-}G)clr(*rlZfc>th^8yc1?SC#6a0R(!w7GLF`E6X{lHyLR0=j?K$!)bLE% z(0bCYd-A;S1Kd|qkOtBdI2*1ZM0g~6Z{xx}O0b%-tJhI$muJ-d$nFFg4TNAF@)xaw z!PS8qQ{-jM4~DvYlR9xQ4y|*r-{`y+*9xtX>fE}p6zAUg=@x zRhKzq^Y;2Gm-fZoTBp~k?Q(oxtrHx(Aa5E(*4P^-$#Xkg0D{>aW&zQ9V zKM4*~i^r{jFPTT}#;6Hh^{&!yDrmVZpO+iH0qw~UJuVu4$9mL0`+~_puvtk%TL8D0 zi25n~iw3Q$PX3BsFejV?0;>h!O%!F3V&#EkJN*$@UZC36K9X=X?k0JJJ#2V9 zg`@N~>5ozppji*tX~(9zs5#5*!`57cPs18SBdHkrCZ2Gp@^i0Qy1)6l?z7l&X`&MH z8*!^$x%>pJ)~MsUh0yuKd9x7ra0lO5+8-_p@IJFdz!`qsA>ljIXo5?|pQhfX)Gw7@ zIDVs!gc}fp-HcH33ZWq~4+{z&O~>N}AWp7>08g3iv(04~47!)SHGxLvrH%1Jt=ylG z#ykUxAjgq@;cB{k(y;_mUgt{J$Pu-n)#(LBm0PB?NrqP;fTgkZQAr3KRfzkbm2Na+ zmmN0U5+7sQI;Gn=9go#BP|M)@rDtiUZl(ihM1@lW@J(t@{BjBhINm8%N}D)SXJPZo zF1*r(?ui4*G6eL*$xW3gWN!nE4L#>l$0D0um}Ney1_s`sKji5;D9`ufvcPO|h14~A zjbMQmypUKNwt4sKjKx4TGW$HSU4)BE`;9*3;i6^l_+B{47$A?f2f`#;7(3ve({Dc$ zMdk&NV4V-NF9?b#76t+L=3^42Mn}R_^Vu`ZvUi=QN3H?`;^PdGy`hiu6ZbBn>m=CtAyXt&oN#8@duwcRWM#g3)rmt>ojkL}l^c{;XjI6I!yM;xsw9I*8bqM0!89bli_-YQh|rnGC%t6eAroMz_YWkch%t4?He zq#Z>{kw+;N+|zrm?-hDWQc9wv+`R88j2~ejBk;}(-C^vS02cD^#BRMD^Kl{D#u~HE zMO#bStn+!PgxbbDgUctd>`Q7NXfTU(*%7{$KaKYyZMMa?F6v*T+H#lgs|54uUPs9w z3BGJ!G;PYH`-p3#)a4V*tq6aKwu_p-3;uu>T`kmt4piq`+1@P05f!O$sT>t(RSOpK zj`^~zz4G_j;mkc4aBC?a<3vDknF|Af9gS@@Gq1rJkpCBn5qW$v+nJ{Qo&;W0(5eIc zqcRwJA%Y`{ehB?TCq~T~i%=br#On~|bQ-W&TpaDr;`qCAF*Fe1_{tHq#{gs#fZ?nr zb9!)=Wt2foy+3wi1lSl*y>oHN(vEO8VtY`T@8k&pv6rNUQ!C|X#r(oxh})M=$gx*0 zhrD6w%h9Ak(Bfa^Pi`p}Bo0QVYE zn?7dd~WAN4g|ydwF~z*C+pmJq9eFqR5d$)276^1QQ9)b_8Xs5eG zk;i+KJO}xZ+*x>?zmajXEZh)k;K{gp>B@b7!UIu68HaBv-0ivMm{yI;cP&XUA1CBq zQ1M7iV-lVj8jQ`?7`=2c?$m|F^7e^ec|ct!@|a~tj$s2`vcYJybs7B~0kE`Y zHKZ&dwCs-2A*^+fxEmoY6E0>|hI19F4dgU%H0Gi_;vjPIw!;SvCZN;mVhx+h&RM;F zSV4ARBH@6gu-8vRbg-uC403z~yg8dT-heQ>h@r=)k9oy3Gk|m#J1dgbHh8Y}FuFT? zm709`lCA(+ig4{^(LEmVa$5_yl#4R9Q`T?&`gzZt&^iYW>9Byg>a1Fl!RK;F39UCGu`9qfI-IVLG`;Ocn|~J~^Db;N-jk&b<$J4&OZxYL?4{GJ_=cmO8-< zAPX#cPz7z`wBwdO>7)6<+bc?ULzdO<5#;F(QcWOwwVhUY&#_BKk{a3r3#{JuE_+Bw zGKYUP6Rpjt;9&7f16w3P5%%1f>4U>R#Q=w#P2W2-AbcyMF(7(ukX9%%CwI`+B@Q~ zUX%+(v_PgChQ=6vFE+O4Aq$|?$zOieSj;eBCD+}kwDwRSH7A*YU;(D(vO48@v^nS5 zzQ}&pJVVCm)X!mM)@Lll zoxn=tGQ*KkVK#K)7ZrBL3RVKkUk-X%x^eo;!9Z$P9OtJv7L`KLjjm9zC}mswM9gc( zV0!P~%xZybq;^`=4gD7S#)96DcG2HJ$M-7+W%)#|n9RAvq zM^^TQeBSbr!sMDAVmg&5b$2d`0yJaGI(5@+AHE1pt#jwvwuI@^}_vQEss+5uU>CA3(? z^xK>_U`F`khWANEruu+>?j#=2B%M%N#cLloyib!JP=dy^e7lXs7wOFNxGWJBJ#T|X zMTyQ&sr$8JMRsdD+}Hg6!U zV9mnQXSLACpc)nF+^)9RQ|H00VKcL7DYXvRqSIo~gP)}(+XfRFoYR;J;dE`Ph1w=Z z(Ok}=x4z3<3&Qpo?07nMzqRF?sX3LKCRB!py=)qqoVH7<&Oo)&o{=S*>6FEIqR9(bJ@^Y= zexaN>quv1`y4nCrUZ=oq-{vC+2ULZ3i+Q`%&hO1o&+~``jlcAA*W1p(EbgRia)a;p zIU~4e+?Bbc9TNZV52)vjDv9pGpbo*avz(d(HN4eJ2GG=Sz7dLDWQg0b zk0-}m)z|YOg4H5BA^;O0?+N(h1n+};6mc;tNZw=pH84|k-4~&NWdu#}-VM~`@*4-e zwxqx+TZQy@p;fz?6Ib9|2bo*&Cok#Zu1xFwVsfA)=%45oQyER1vu@G}w_V4Ao`v>` z3kt1n#^7$*kCc=8s=AweH>titzTJ5^l>6ce+=sK`!KuS1LI|80e7q|8_UE{Oy9?ix z(8KnKiQ)#86EGy&UQ7o-B?AF}l^D(oeGDNUocv1`HlIr)uvg*lskc5G^$wIdO*tKm z5rnD-#45&At?rd=f+L`p-Qx6^Z?6Gtnz(ssaW7dvI1|p`i`Fi`r1o}GAWsUuhM<(r z(_Z!{@D+#i0uD{Qglp3c{v!N=Je9bb)@XL1Q<9WOy@ujO^gQPD-IGs1*D{g*4$ch1 zl|s5e+wE3A-_&(-2QX}#wtYy2YK%pvXQRY?+lhvmdhVuI+hHESyrPX^lbpbs^aq9x zJ_hZ8bV&&EF$NUy%z{O@u{juCjj7=9K%1s*}A z;$J%r{FCj<3?^W2&^rktkciRl)e?yDM3OVss(k<6#iuPnut@XP+e7+^0{IILEaN(0Lc_)b5$D3P0=$r%X z3UU&KV`6++;^**#WI#)t8gKf%l0(cS(h0EoLp);q*o=V|VJp^qi@V8=SR8EmI5hpH zuehc()&zVoy9dzm=J4H(X4KAHhexNLU6FmhILn3|v@hyLkEu|H_#B>!F5r5MFt=QI)e_?w z&4h`3yENWJ>V3ABnD&%eUXl$$?fgB&B6(l3a+}nZPUn;_56sQG`=KLY=alO(1$990 zm^ashy<7+fB($mLjPcI4XCfVaI~sj|3+!C4N;q(g%~89iRNBg(Adt(b@KBaPE33QY zo%;dxI#nKikv?PWyu}6~Ct_P8`sLueSrlI5n}|amRu&;vxvB0c7p(>pNFX3l4Xet~ zJs{-K1n3oj-X+-_iYE++aJ%dfj+`J^3#xD&mpkNsC9Ot37qcHx zhFZPB9Gmp+8wRQbqk4i+OTC!Xc~_lh_b?UfrPj&0jk_6+PJEH~(P@Bh9jJ+3=nI{> zsI*T*2!Ae*!3zvLb8dE9Fnpf7KsL~72D2=9_durUqu88|`AGugA<}@BnJ?KtUYmt~ z2UxMq_IjVk;wS>LYGGK=7{%#6Z%qeDTCx#7OG9Phwr*ggeC+SxrTRMHCa%Y~_I zT}tTvj4|zAtDL~cHaJ?u$1jbC+B+HD+Oxg3IbByqy_BCS37F|T*{1FODlqE-A||Vv zMaJYD)TUI@p2DQk2j?J(L32WqGZ@h|=;nsRB6=q!tXINU#7A#=BMW4q_OODZt@@~w zprdA{NuSczB2l9<_PW|aw>_fGxD&h!IlDoyrOla}%P(_`q?Vd6XO^{nVvw;QuUlZ} z8L{!pSN5XNbWs1*kHw))BXZd8e1i6(R2!Yizx1q}jo~^j>mX3b zoQBfYpKK&Z)wnYKZNN)w+mGb*k#GT#mN>eLFosz zw3JGgM=q`m2<+!F0O=65xTAT;b-TGf;^$nic**MEP=~GAsDbSVURxwV_=GIJUG@|F zG`{r+gVp&!w~6|2&r6rIp&Oj7+~o^Ol{ytzq`hUzV(P?(Q$$TS8)4^X%XEMh*kBi- z^GsWXt^2<7c=l;EnzG2g*y%n51ThpmyX*zI0bDJN2+AY`YDwKc7h;YU!j*O-`8a-! zj1$@a+w74c2gPW5XlJ1AaKIMJ4-N_-yi<0$hwvj+$KdSp!UL-p{LSn)t;s#B6bQp* z@&WFEthzGGKjeZCLZfjthAF!;)dh-EP?hr!8J-BlXEdoNYzXWim<#ehp|BIOolBX3G6aZBe1JJLvRt3>Hr1W5z(4Z_D)F2>KDAkSKC3QMCsbq1{P87wd$MI%)`sxJp^U6LHS2#3$w zb@7e4IftPh=08&~ucTRJSZk`}D`{RzV5A=OjMtDC)de^N5dMX#+=#`4F>1^Yn0J)Z z+1E@~_)1>n(d>GG*#Y!=I-eEpM3vXljr>3U;T^IE#oohl3DSojD1(qrc~8Qt3jqy6 z){F((BtAmbzrfL&;YkIgF?(}4AYg82@8xY}z?=8etxkHi-EHmzzK%;A2W|7XJcF4- zfCwR}V|XF4JHvrFVG&ZBHi zmV?SVYeiX9YS<1oq56L=wje$km$-DlxW3n0Lyt3Jy^~X4>j~3fnHt(*me$yan$}GZ zeP700&m45L;G*I@_8SDV;u!0Cfrrzo9~?RD6skjLcoK**Ug~-7MfgtmiGwlEl8>>chTGL9K5}5 zmh6CUY1I2omMp3Q@zgM$rZ5pA45$shkng)r4(1@uU(=YqCX~4y8BxwzEq6?~hSWEo zKjKIrWDuHI=(A`QWePDV=#bnHbxS`slm`;9|G1o{pIIJ%;q=?9oO49Y2);y5vaG_p|00~XKDW`4TUl^aI(8!h zg0%#eZnhoDFNo%0qHwOQRVS7Y9(jvXlFCZj&o8~*e9Y9lztYm|>n6@{G`B?u<(<)X z?%VM!k>kcH=GY_}vqr(ELL5x@VMxce$sw7otsJZZ52U}15}#jF-IX6^*hbjTM0760N8#%O|#S&{60jm zdcDiXEx;dH&=h{~<((=3M&UiNf_&$_7Z4=0D0c|OseFAU--sKX+pKF>6hHU1WvN_L z8t3I*YuD>AEP)?Cu9%Ur(?P0$^0orVyL~N`qqo;a=4`!g-RZ>web#dZjH2Bs)!4N1 zLhMl@4*MzZ6oyc(E77w^XHw?JLmqs!|3%gZoT_MhSy{ z>s0p2`?U=U_hwnS9bxOD%oNg5N5~m(%VW5rIYj^agk-ntdIF~VP$b==Ze*Q&A9W;pzD6* zZMX(ECvzBk{%cZfXX-?&*pCCq(zde!>aEO;GQhu=0RW@YQ*~pWqnBj7*7mA|;x+LJ zk~`gd^A(28jw_Fd%B=O9xDj!ZR@EoNM}iZ4*0zcEve0}rWtbPIv462(NqOdE3(1g+ z?<01IM9qEp9-GMmE`>Vom^nKS5Eg;ab~0~gql&t&ofp5o3#vECXeQ2>0orSP#D@P% z56U7jT!xS#8dP`{9#KUYciRSRS&;Bi1c-zdc5t_7xt`-%VJHxk2e%Mu0tT{zif7@N z$aCTD-7;39y<@ERgWyswdYxTG>qv=GnPk5 zp~Zs`u5`z4T*x!&-WXlOcUFn>PED*`>U&z(_dAC)?F(+hgae=)mL{|9^Hd*#gpA?s z*ntx4tonLr*dQbskCHrNbswU!~25gs3cNJ{{pphHr131F`EpC=)em>++x015Jua6J^%U+fIi0PVmzi- zozP7%UI=(+AMw27)_doxCD_8eyrW7XXy6!3 zd%<}|Ke~ZB)=JHjfE0nRwaIATO~_rn@L!>^ZM>mf76%G1jl~hz{aMqtSC z&0Coa3lc4u1cTUc_hY$QZ?R$yCG`P`^)d$QW4??V$$x2u;v>4ZJC|Z0tpvigFGEhq z%###p+<9oV5-9^o3UF*ICIO-bo1m||Wbg(y3NV)zCM>)-GB$dcG<%a2VytTQ?W|+$ zO%G>ck1x*fq%dVTy~6pll}Pu7u4jBc?ggRq*{8RH4JSe&uFcMc(`T8irDss$$?CiT zI8eRa3PqIO+32=dxcl56R&d2#lkt;MQOH16bAFhi4!&U?L2;^zE74g z6h|1~UPdR7GJ1d>_%9v zY(EvAFk?dQfEd57B$3qT!RXWtzo%nwjnMxAK9*(&jBdcBq{0B!lPv;%Q5tBRW)XrM zzC<`GmRi~y3DEhxO*Wk6HTLmKT$WlA8OT;46uT<=_)1t5=ndG8w<2P0(sC41>u0mXM9lp=iV~|RA zlC6ak0s?HtZuLMsT|IiA+DduC;2u+AG$o$y{cLe`ZD^GZ=m`J@BccT+d(ta%(B1^Jk~NaCId%gs2^zz&WHGXqI#> zs8IJZkr}Huy{xI4@s)fsrgJ61f$hZkZ=>(e^^O~R{Kj+P3~IvOtLa@Y(ciftc&srO z+S9!NI=9ONuOkkjMp%_VbA_c7J)1zl6xbVJ0PcnR@YdC27LkaLN(pJ`dfwJC3DC6` z>s2&g#aF#h6$`*VdEx}^j7YvdCx2(K!kMTLgKxBQr zYe9uC)fmDEB+7^*jOq1vz^^>X8{%TkWtWem-Z}t zZaBe~?C4mwZMxf}QQ-%lj`EbPTU+(k)dWcNZ5A{gZIyA%Ug(WJX94U)&8TYI(isfG zTf@#nN~4BBY?kj6@%QO2ZsCniLP#5PC-YfwhFC>HY~xs=e%R)@kSxzyEXAy7Z};LV z1olK8UdCy7cucf#W9qxEP^zS7)MR~l@+K5QD^_~%q?A&QK;5EB zS?^#i$ca3rxfaahuX`{EEbKALE1*hR!BTANl2XvWB?M#XGxaz&P75Q5=!xQPKmG>=!2 zt&?mZLBWYq#4!i6IUX<(=PskkZ@h%*u~DF)X|PyW-Y8U2<+2#~wW<5+Wg5C4IO_+tGCc0@S}0+x z?ggNX%^B$}cIDZ+^ugT)S-9Lg?m5i5hUp0g$&7L-99&QU62$F6?Omm={m3-8*rc$W zDcYG#<1iQyL+^Kd{rjH+s6w8`r&&U7r+%={989%}g%`GTh^ZR;F!!obQ7v za>s6BTAq2{N5|kj%T3)QxL8sww~9hrxp|B?z3Y>*H@lV%!9|^pg)L^$>#AM$_ zW3A-{%7eUf8)_x&tTxLT_^fNbsb52O1HHoQ69USSSzwkU&w(bf+bNB&w%u9AY)eS`3kw%V;~S06Hz^Mr zPTC1L!pvTT=RZ!bhU@X&DLE&Aq{7KQw-VT*&0SrDq)=b9YWfD=5y3VYD9q)qxZgTR z^Qz}!;P*n9Z2A$7PQed==87!6ZY~zv{2H=yGOu~iYm+a`cf1Lpz@!j%TBLh zm%jlye3^FY(n9jpJO}U32J}M4bdLu>8q{XC+zaZx4b(vQ?p{>b=JKthWE!)yGq~wK zPQ3fEk%h)5?ULJ6`$Fj^XRZosGr5MX#`+9-z%mr*gh01C=*r=Ig~0N!M)GZi16S>Y zyULxn=}{)PyK{4Ib!bAW1$7qr3T*vA9OASzG|N5;>VQ}q+Jd{sH4|^I1ycfH=)FZI z%L>+`wriJDaI@h<^5|u*Br};Gb&Gi1=?%letg~N4 zaObqz7u$WH;bQ~tvs%Eb*6G_vD48^fp_qOGc6rA-(o)5e1*Ni2LM3_Gg>6J4XuFZB zg#dwLNYmf+6^%-g^pz#UP_(hlaJH!?FVIjk<7F7^@!ayuUGtpJ`WYwE`tXOW_AV#4%36b)k3rX43<# zkmy}AB+UJxtl&Q)cI~Y~ptx~a%uk@`&MKlh;*1ah1Ohu1h<0Bw*Ju<5pd|hX6hUY(BiR~_#N~T)Eu~2-=TgQ{q_iD zzUK_6*tu%AV=V0&OV!qoO#@`h zn=)9oZ9H};QCGMeyH3c@71P*?%QLY?!bVvbYL3uk)srwV~?S0t%CB zT-nKPrCpYhNM8xK++K5O?d79l(?q{6BQs?7+H#>t=d4+`sv^SRZVU4yxu?_lB6NEf z&)J;@;=9ZdejQ%`{Jrkao#}!L21w(<$}7k;ksMY4BEHCLKDRjsA3@EvXD}P!%2IUR z`+`y>MQij0lg)%<#CFT}aQXvN$^o)mTZdX8>l+8s!NM!md2ZiR)s-{TU;W$|kBfd4>vXE%ybdfFA# z$$o^?+n@jJlZ10pa0VQ8vQ7m&TfEobcnO^^HHvk2kW%KPzoF0OB5>iGhpx_5saItq z&1<8io^YURF5^1T(-R!LnPB?73&6x$#efB^_q$jk6xP?&ZkupJanClF{>Dpa4^%R& z+MXtFS5e0cnhS#kh#x!&$1w0$wIA*4)JMFy7DU?8p6qx|k-U={wY8k9CIMWW)V08d z-OC}nWgYd3^&|>bTl~gL*ucuIA1$+6NwCpk_Mq#B{~eEOu#;@)Jf&u(IQIq`0XGgz zo*oF1BusD)RUjcv2BQGRU3%fStOePya9#)bN?Qg6{CZuPBEA`(cjS+4=bRVP@VgZo z<-Fuw&ezj6P}%#uAcKy*@7%ouVI;3z_>?`skS zquRrKsct~SoWfh-ikFj)l#(>=zwr_X#@WJw;Zr;F-OyDEeQ6@Sg}%y!K7grOfK-mC zR2e6^omux$(kmycP+X~eB#YNx8peXb1%~SDA-=f_Ap?+BeKvfk@ihbf{w1I|Vd~e> zmL5$9RC)x&RtOOD->h(z+XpNks;Kz~BB$-hK5YXUCj^%_4-a@Wg*08ed0xBox4GMdL zNxaDCVWqw=>)5=9BKSGy9x^YZ&hUV`z&^A|vzehi4vk!7L}Am6PN8>`Ip7}I+@m8725dEWT1cdF-xP9(^t2Rr-2 z!xjxKi6jXmz!57$F4)MGu>NgYG z=w^$2>tycqR1|TWZhbvIC@C=){$B@A&0zw7{BmTO2DV@@B9r;d+aipjvDh@2l?&kB zfD+7DE9PZ#wxzu9h=LBJ;9|Po&U+1X*q!V~GuUX0B}Q+HVzJj@1!r=XIS3CpngB;` zwVa_(n~MtVAp%2iofQUqH*LOsR=6C|pm@94@t5xUftPRz`Y^y>43B-HB}O8`QNB82 zRE7@Jy7yUiU~B+VP}UuYgcu3ylpK1;6)K3l6-?G#QK3k4UMDi*3##L|JJ2u2obBlF zSLq~rgea$g>u@Mh)bRRiSlJ_sEx%MP)i+%c-DH3WrVufj!2|ISaA(@QxM>GXu)8q-2Bp$Fkk=``RT_RWPwr)_El)tk{ZZYb|0|cPmT&x*mI}~iSz|tv&1G`P43d^ z2m>MK+(e}1#qwA3%z@wxLd8jERMxfIC$ULdGjAW^gAp8{`%{gSvTnWxUwcO}Zd~dd zr5OqI{od|qSsehN4eX7y>OclyFS^_A))BARx^CSu51~|F`Z9^P^(^}C-X&yXlEa)c zOj|FjRq~y#m`eskufge;L(VJU?seHt5>%W8)F9hg8CiFuLGOvV9aJbdZZE&_5{ec< zU(<$Oucw?XZJdYM9;7OWOx|mJErVg~(@=%#Dv0Aiy*>seP2k&g67$YRGa2HhSEn$uK%IB+X0xwo4q7-Vs*W-!6^=z;(J5$41!;`vSU8zYqMYDq zIlqyWynF*m>U|;yZ^Q{`i1W+AKsi@ulZOSg{>DovH_tv#D?Cb}F*z_A@=<5Ev#nbz zy(tNsL1_`J;UoxPwa>(o3y@{p3kYNi5Ktl)D~_IbegH^go!o#Tg8&oKm#jlm`kftr z;3d$NA+8TSg_`^>6$aAlI&g&U++qcjFlwX8Q6)ivKQTR-p;F2&X+t|oiaOnY2>mPNq_PAgi6_?s?Kpnsd6i%Y9-A9a(h+3z zR8}M3tZ9DbeMj)OKMaw&w_9J46%Kc+V}!e1f2si_(S3BtA}|q-643$60V!Q4(BIvb z>jBU_EN)ou*05>OpId#>_ro`PhTO$>D$~ISKlp){uZL5qAX8Sc%O|&R>Lapz69f_5clbB=NulRLkwOcgJ!b&DT{2XxcJS^TCXbd} zgizG);3CA4cODq`SqiYcxmrnCRt_PmhmckSj58jktR#V=3nh&;cHi|Vr?i0N zO#*Tc)wWShW+jj|&$D8g*u2NJKZ<0^tMSG1z9Fa-+Q_32#PXab!IgW<4vEC?H%>mS@*RVd%O%b&emm;H3_@GNa6;AMHO7j;mp-*Iao5@k;U)au&2uD znL`g;&N5qwclv^)TeGdhORIo$S2=*@U>a~oh9=bG?p5XVx}+s#3}a9z*cs8dfVO7X3G5y?4`iF_ z?lBvbm^@`gu|`@N_A?5cDEuKn9&DV`jo%aXWxyNHVO&w$gA0Wqv?~zULJ%RrRsxux z{2%F6Mj^?yaP9Xs{)z}IDZqiGr{QpTARW3ykHhVY%NRi zulAVFfTedQGrpK2PWaJnp7Jr87a-ixDpLslI8vy-2hVs&3^s8>78oJb8wAe5Fo2?A zLmb5e8n-XDkKIt>*ANC zc7H~hGtjCh1Jc?0#FG(Y%j)f>7+B605eXsG>2K@-2*$QL0xR4T=GG-~!ZSXQcoh53?Va z@-MyQcYc^)`u%yD6! z8=(-GTkli0y^c^=c|aFnzSQpT&f9e7PK?JB*)=Es)t^B42VMfwRS3nqD~J`kI8g)g z(l9O_n)&+gSyvM5>+@`LzB3gde_2!|7ko$LM-hNv*M(5n&4k%I=)_+@dr%K z^+D^9FHxsL1zVwt$KJk#M408?wZ&w551Lp=d-jSPS@0bBu5z3EYoftkY z;i%f%k!>A^u|su3EH`d;yp5!PK&Pv}u;CA!pnm`X@dGd6BKoOKC+(uPZ4KN7E)wOD zG3RaNvf{;hAseN=NS+2;(z6<|Y8qLPW(r%$vB|Y%5Kj6|{g9maZ8Lmm&oCiNZ7p;m z_8Tt&dcF@b6o1D`LI9Qjzzp-MESM5$75?G({iK zfMQ~Z1PguB3qvfGcAP0QEFR1*FHUn>j*JJUgzW;LO>lh>M(Y8Ww)A-`@b{e}-i07W z7TuI5FRqJ0pJ48Hu3|Jb>t3ehzwPM}XfpJQi<6p>+WP{cM78WGua;XfQ?O@q2yip? z)PAE~^cegy__9kD2CH}g*f^a`epG7rjGU-7^gxcgwv4x8vJ=_4)Su|>EK1&k*jB~i zetQul5*F_zOk&opsd28h1*w^g{#hUGvdnIZ1c)QBElcx-Um(x}5^NLA(xZP0wK zjgzB8o$e>rW>#MZ{NW)8UEfLL>_(IQt}_({NmmA@!>At1XuJB3jW`AMx%F|eM@)MJ>v5M8*#>CJ^2Gbxm zUG_6)01WNy{ht|IE&#%y3BjN8d{fi;{;bKEdG8QiY$egaW^BVMdFkzsz1KP7iOr=~ zgTTdjl9mFvR9gM2jQU!geFB5OQqSztsJ$_2Xv^t(ZPj9n-{;aQ@23F1fKMnoylI_; zbtUUDI~D2GOJd{}m)(G^-iN|9m*j?wjVkWexsld@{D*nXJeamR@o6k(rQLR?;gX_O zT%>mF93^Z1#!Hx!se2DLqX@!#0&km}di3D_(gTU@C=98PhF!o76o%0+?sgWy`OrBE zoMk>i8}llEk1i$x*a5Jif;K**)nJ{_V@KqCn4kmB82BYrG_V%vb@6!*WQGY&jafsk z!L!CQyB=eFMn68-*1yALijZ|JsJTmhIMjvR3h}2g=s@+!w;El>k*5MVka!(B?i=uX z5BnIx?CX@Odo*Gnxe&0GMo!K8>Wwbp)-}yiXCU~=o8($9Up~ERF7E?G1}ov_7v%za zU4InlZ5>)s?2WtOSiJB+0b)xAzcA9%Bstk6>M30QFrgQq65ccUirTe~TZvin6S*c0 z8dMoWrE=+`*-3-Y%Z7GLd$6}ghUPq{Tj*J1k^#N-d6_xHCk-CiXEnh9M-Wl~uT{>W zDss!}71mLla`A@sgM{o*ZeLpNxLyvnu)+{WF~UjBF#sT^!nQwWz7H^;$_7BXKi?m7 zt$gx^eGX)0o-jEP?eOE@d!?T<_vpbC9+lUlx$?84(C?2%PeI*Q(avfi&u(w1O5lCq zORvZ+CT=uz;8fG7lhuiovG5k+&>Q09y)40;U?H=V_oj%`Ty7kRlpIdjXEFcP0kxi~5P30elR0VtgNi zHDUKkpsV!P9%GG*uWID>e(?rYE}kHhdin<82X+OqcCd=eLDdrrUwK!tp1f0Fht1B! zm-g6NWdpr=dWFkj3=PTNwkoT8(WX`va{-?SX7uTRwl*YvY}{khG1hi7G&jdgbsOq? z`P{PXNcFt46+hRqS-ZP4ADJl37`LyHqaO~Tonr0M=9T>KULzDSx|?8$J1_OQ=uvD> zI==7%Pah~<0#EAX+5zqOEbwUE6?JCg7tJqr;8(u7{1Pzj2sB3lw<2{LX!he^XmIC@ zXA{IvI$JY#$I5EH*cV9WjQ|p=-3H`s@aHG&(>x(aa)x+$3wKUY3@MMfn=XRbd2fkx zll6!$J_oGUxR)@%Yj(Yo-T_yeNEi13ed4{YiZJTkBU+=;a|n7cONNt>g^c;eQOTKr zZ8K2!n*sv`6WNZpI1S=*xJwxnb#zCiT^6JK(uXCq~9-n-y~B z2eF0HYH6ibexr5N10aLdCPrN(%iT@+bBOd)$OKC;NHd4-h?-M zt2WtQ2D^1&Lw6S zuR`2x+U98*b6v;KvcMW0>1{**;)f)&GhgcXOhDZVx}E{Q!aUBzA(#CqNq_tp;LzIC?odD+Lp;64~2*|e`CqxC>U2o9x3 z)X`>#Ls;05JKtdMzSB-w>8Zdt)Mp*)pQSSk-7u32x=xOdr7y-cp^dl3MHN#`2A|}s zqIAn7D(Ji<-N{kK`0qmh)6=V+dwKD&k5v()GKF{=4`qIFmsYYu<9yxP=jq8rl8Mz; zaCJZPDrTv!3$oq@Alz0NZS)+imO0bPK=g5FqmB3AEi=(&R#+-(mB9Z!Bb69P3C=BX z7DTw)-{cto+^cAKlj{7zwt8K>Eo-eT%$rYH=OO6GP3_*%SF-0{s47-r_a1wgE}H+FwlR**el2VowFZY@jTZg|1_f(ZhdRq3d)$V?b&rSs=2!t2-C>3N-anzb^!*Z zT(<_IT3QOj_5>^Yd_=?WC63nZo&_Z7c7pQ^Xa<%nY}`B-3Xkm#4W!Vd-fG%lLa?>v zUL>1vWM61=JvN1i?_ONjjRjoO&++g{T7ns&c zQcas0J={h|{tXnyW-a)HRwgj6H+Oskq~>Rw?gifh^96w~JK(+Hz@yP#!7c#AqH)5) zcBW2)r^la2QzKrQJ8AGmjKh$!9)2*!gOgHY@a-dF%_fc+3+C3VA1(7qnk^t=FG+f z!{qc;%X5`p9(2w$&^k@sVh=l^9XLr zxD<297|xI47?=sbv6!d0pB25r(qKnp9Z-ns93*I{)OlFLW=1!1U#5vXN;mumh)|Z` z2umsO5@x1M7aQ`Z4E?SOlbIZyoD$SKdd=kU|vAHkStXmT!|{< z;oJ;BidpR@PKL?h+ThCB>hvKYxu`hcc;+4|<$EqHZslC*xYV#|p03z?E|Iw5m;1Yky#t&Syp>sNA|Ye55FeD$?ORb>X?Rc{>+WGhJi`qV-6=fW*s z(CM3I8>+KCHl8vI9KqyMsFD%*Ij+)djjZGf%Wk-M`h3RL_1=X{UPByTY;?k8rfXCT z%4)bZ+O6SS)P#~}>Fwf@!St@ZcAp!5{VcoalGci4=FWRIb`z*NU5ESS*QGo7dI1U9 ztGCB@jA=?c74_l-0nF7-ufP?Nn4ON zB=1k3&2{M-`>Es9Wp13K!08kUmNn?ANKv3(^TAF)kk?M4%ougPK)MOX*7YigmctSd zFEt6X3J1QB)!^GLm(E*&ojuB>Hh6ZVhdD`r*OX9!m1fe^S2O5`EGU>N=y1a~JGr&q zw)Ht;?$EEmh9@Fto^iy|kYKZx>5T&~B(}Wl;?Up+!Ufq~V5H?)f zya<`*^m!Q2!oQ*aS z`Pb9~9G;-lmLk_z@E2hW?IN<>dI8lCIyrpmYFz+Yyy|X{vEZ;Cl>5$Jx|ga+OYx(c;{hq=Qw!CLW}5q^5}kPa=lo zaI?PeKSu1l`;h2%@hPnulOtNXtvnXqdf6|8JP!=Tb(3H1sc$^TJfZL1Vkes3Q~SJIYSi47A(Yzla__SlXm^1KvWwKqSM}D*<$jLN!HtE*dV8^XYd!fAHLxWo z_er*Di!CfaMt`2MsVqfwgD(cuZL_eV!nMj=gL^)Pd$eVVxrd;DZdr4e+ZuJ*U6?u6 z!}RA{mFo5u!Ked$@f~Dw81QcdkV{@lKX}e+KEI65m4U*N0MHe`yUo_{Xq^^DY4i4C zL{;%sH5l^IWMD5e#?-Snjsdhq%d7FVMS`fu8y_qj=l62)XPVjPg$%`SScKrhoi-pU zBmE$|V!768J;10|PLBwwPboS&piC1mgR^qv1raccXl1RZ29kYM%?HkkDg@ zHUS7uUPUlgU$jt@-I8kqv6Z{hoG{+$@5HYak9g%M10{qwJU%%dlV)(&EXQf^V!>r# zbYS7p+uUu=`Ap8aICWF1r+DyWS53~r9Z^RoqSMF+OZlRh*cfbV#Eck@N9&tV6KdHY zk)B6)V`CX_8L9NR?T9?TuWcBJXUhWBp>@B5+W{)$3_;3`UW*(Lsk)dfWxFw9x>Mr> zKYV@4*sXTD1S#+P;{;HIbJZ(QL7?ft^ENu1r!81c%@?6*gfWH;WO+|5{ze>L@Q32Z zEf6pTj~!KLCU!zaV<2WzD6PbKGL8BK4o|n213ZJ#`{pX+_^&tebY6{gQb>Lh;g{Q;c@WFGD{l9ppmL-m^X$sUQ}cq9pF z))~6*fk1Fh%&hLfIto%hwAzypa|>y8cP6`CDyLwFitLCL{DlqcKux{Y<5J{HBy)|+ zSZylJ7oUaKWAJRy!)&|UBY29=K>2$o8;}79i;|xda%@98U9NgZ>@HL*^6*h9+Lbnp zf78t8449J>Kx5u;-d%xAPZra{nx7VNFB#egw5cdTN`76>Lfq$cXuQcg#V+U9W7tS4 z4#vAl;H+TkH5T#BGRtLJO*oT^NNrDT1M9%0E2v%)YLzdx_Y{lr1W^N!UOMyH=xpzf zH}DCS?7#A;QBrz@VWiK>nP`P9VTJ`2_mteyDa47!rMre%W)yjvM7}AHExzE0Y@#G* z0du<#6g&=phl40nAlz8Z|F7?S!4Zog_vkxtcOvOs1`qQF#N5$V5MU?XGc_QL77~np zH&Maz_N6zU98#^bSE;_7bIs^%PdT}Qrw{59Z`yly=YssCH%fzP^h!My-q+GD%oZ3h z%s$(=Fgs`A$Y*%C9nH#sBeei@vcPm!) zc2?o;vSPub=Tpiqx|Me4S;%}iCqhtpqSfB#$&q}=m0K7PAa2k8RMr=QYkAs&ZP_{y z4?-Ty*wovpFhbWJ$YMbSjo3mGhS9o@&d3hc6$e%@A0VfB+rzZCxnM#@zvU^GJVqsI zJLdrJLx6A_U8-QKfe#F)u2%cZ> zyhv#~JGm<*!5e~r8ojZ#Rm?;PiEvo9@hFpbt!|_$`IM%jVwvR*{hTz`C^x%_vP#+U1x+D((<; z;})=n)iI0_PmH-)=aY`J=x-7~kQ@Zp+Q!z0+E{F`y|kcYzN;$op7&LHJzgkLmPHUy zueYxeMTiRbvE5}aHdlEu3BP=JvSQAjCHq*Vh*HQc|tmm_Vc}DgAP;&d&*5UE4rtRG+Ukd9~4)D^SHi�!4{S> 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

  • +## Try It Out 🚀 + +Explore our project in action! It's live for a sneak peek and testing at: https://rocketchat.github.io/EmbeddedChat/ + +Test credentials: + +- **Username:** test_acc +- **Password:** test_acc + ## Installation and Usage -Installation and usage documentation could be found here [EmbeddedChat installation and usage](packages/react/README.md) +Installation and usage documentation could be found here [EmbeddedChat installation and usage](https://rocketchat.github.io/EmbeddedChat/docs/docs/Usage/embeddedchat_setup) ## Development @@ -158,21 +167,25 @@ This environment offers a complete setup for developing and testing the `Embedde ## References -- Embedded Chat Development: [EC Development](packages/docs/embeddedchat_dev.md) – Explore development techniques for Embedded Chat. +- **Documentation Overview**: For a comprehensive overview of Embedded Chat, including installation, usage, and advanced topics, visit our [Documentation Page](https://rocketchat.github.io/EmbeddedChat/docs/). + + Below are specific sections that cover various aspects of Embedded Chat: + + - Embedded Chat Development: [EC Development](https://rocketchat.github.io/EmbeddedChat/docs/docs/Development/dev_launch) – Explore development techniques for Embedded Chat. -- Embedded Chat Setup: [Setup Instructions](packages/docs/embeddedchat_setup.md) – Start setting up Embedded Chat in your app. + - Embedded Chat Setup: [Setup Instructions](https://rocketchat.github.io/EmbeddedChat/docs/docs/Usage/embeddedchat_setup) – Start setting up Embedded Chat in your app. -- UI Elements: [Setup & Dev Guide](packages/docs/ui-elements.md) – Integration and customization of UI elements. + - UI Elements: [Setup & Dev Guide](https://rocketchat.github.io/EmbeddedChat/docs/docs/Development/ui-elements) – Integration and customization of UI elements. -- Layout Editor: [Using the Editor](packages/docs/layout_editor.md) – Customize the chat interface with the layout editor. + - Layout Editor: [Using the Editor](https://rocketchat.github.io/EmbeddedChat/docs/docs/Usage/layout_editor) – Customize the chat interface with the layout editor. -- EmbeddedChat RC Setup: [Setup Instructions](packages/docs/ec_rc_setup.md) – Guide for setting up Embedded Chat RC App. + - EmbeddedChat RC Setup: [Setup Instructions](https://rocketchat.github.io/EmbeddedChat/docs/docs/Usage/ec_rc_setup) – Guide for setting up Embedded Chat RC App. -- Authentication: [Guide](packages/docs/authentication.md) – Configure and manage authentication for Embedded Chat. + - Authentication: [Guide](https://rocketchat.github.io/EmbeddedChat/docs/docs/Usage/authentication) – Configure and manage authentication for Embedded Chat. -- Theming Guide: [Guide](packages/docs/theming.md) – Guide to theming options and customization. + - Theming Guide: [Guide](https://rocketchat.github.io/EmbeddedChat/docs/docs/Usage/theming) – Guide to theming options and customization. -- Theming Technical: [Technical Overview](packages/docs/theming_technical.md) – Technical aspects of theming. + - Theming Technical: [Technical Overview](https://rocketchat.github.io/EmbeddedChat/docs/docs/Development/theming_technical) – Technical aspects of theming. ### Contributors diff --git a/packages/docs/blog/EmbeddedChat-2024.md b/packages/docs/blog/EmbeddedChat-2024.md index 60a244aaf..6827d5940 100644 --- a/packages/docs/blog/EmbeddedChat-2024.md +++ b/packages/docs/blog/EmbeddedChat-2024.md @@ -1,7 +1,7 @@ # Google Summer of Code 2024, RocketChat
    - google-summer-of-code + google-summer-of-code
    ## 📘 Introduction @@ -31,7 +31,7 @@ Explore a demonstration of the latest features and improvements. See firsthand h Here's a brief preview of EmbeddedChat integrated into a website, designed to demonstrate the functionality of RC apps without the need for local setup.

    - EC Integration + EC Integration

    ### Code Refactor: Separation of Concerns @@ -45,20 +45,21 @@ Key updates to the EmbeddedChat repository include: 3. **Markup and UI-Kit Separation**: Markups and the UI Kit are organized into a separate library (monorepo).

    - CSS styles in component.styles.js + CSS styles in component.styles.js
    CSS styles are now in `component.styles.js`

    - Separation into monorepo + Separation into monorepo
    Separation into monorepo for `ui-elements`, `markups`, and `ui-kit`

    The video below illustrates the development, usage, and setup of the ui-elements monorepo, and it also shows that EmbeddedChat functions as expected following this separation: -[UI-Elements Storybook](https://github.com/RocketChat/EmbeddedChat/assets/78961432/a399defd-cae7-495a-9f88-11f4b518df00) + + ### UI Theming Upgrade: Prebuilt Themes and Style Variants @@ -66,18 +67,18 @@ The theming system has been enhanced with several prebuilt themes, ensuring a co Once the Storybook is running, you can explore and experiment with various designs within the `Design Variants` folder, including `RCVariant`, `Bubble Variant`, and `Modern Variant`. These options enable you to either use the prebuilt themes or draw inspiration to create your own. Below are images and videos demonstrating the different variants; note that the videos also highlight fixes introduced with these PRs: -[RC Variant](https://github.com/RocketChat/EmbeddedChat/assets/78961432/d9fea331-fa32-44df-8322-36c9fb2baa6c) + -[Bubble Variant](https://github.com/RocketChat/EmbeddedChat/assets/78961432/06d61e66-8f17-423b-a339-1728323661b3) +

    - Automatically generated colors in usernames in dark mode + popup instead of sidebar + Automatically generated colors in usernames in dark mode + popup instead of sidebar
    Automatically generated colors in usernames in dark mode + popup instead of sidebar

    - Automatically generated colors in usernames in light mode + popup instead of sidebar + Automatically generated colors in usernames in light mode + popup instead of sidebar
    Automatically generated colors in usernames in light mode + popup instead of sidebar

    @@ -86,7 +87,7 @@ The theming system follows a convention similar to the ShadCN theming system. Us A demonstration video is available here: -[Theme Converter](https://github.com/user-attachments/assets/9078260f-1933-4be6-b019-61e9ac54be7d) + For further details on theming, you can visit the [documentation](https://github.com/RocketChat/EmbeddedChat/blob/develop/packages/docs/theming.md) or check out the [technical guide](https://github.com/RocketChat/EmbeddedChat/blob/develop/packages/docs/theming_technical.md) for insights on how theming is implemented in the repository. @@ -96,7 +97,7 @@ EmbeddedChat authentication security has been enhanced through the use of HTTP-O A video demonstration is available here: -[Http-Only-Cookie Auth](https://github.com/RocketChat/EmbeddedChat/assets/78961432/24fdf4bf-34b5-4e66-b045-802d6fc428dd) + For more information on authentication, refer to the [authentication guide](https://github.com/RocketChat/EmbeddedChat/blob/develop/packages/docs/authentication.md). @@ -113,15 +114,15 @@ Testing was conducted across three distinct RC apps, with video demonstrations p 1. **Reminder RC App**: -[Reminder App UI-Kit Test](https://github.com/RocketChat/EmbeddedChat/assets/78961432/eeb17fd6-68f2-4113-8ef1-dc0faf32ca05) + 2. **Notion RC App**: -[Notion App UI-Kit Test](https://github.com/RocketChat/EmbeddedChat/assets/78961432/71d9baa1-a54d-4077-9fbd-f7e005742f77) + 3. **News Aggregation App** (tested multi-select functionality): -[News App UI-Kit Test](https://github.com/RocketChat/EmbeddedChat/assets/78961432/d3f611b0-3205-483f-b00a-9800893b98fb) + ### EmbeddedChat Remote Configurability @@ -129,9 +130,9 @@ I have added support for remote configuration of EmbeddedChat props, including t The following videos demonstrate its usage: -[Remotely Configure EC](https://github.com/RocketChat/EmbeddedChat/assets/78961432/8f2e5027-2a8d-4723-8c2b-33ae7cbf9336) + -[CSS Validation Test](https://github.com/RocketChat/EmbeddedChat/assets/78961432/2eaa4e50-ad38-4ac8-8cc7-d8eebd875f26) + To set up the EmbeddedChat RC App, follow this guide: [EmbeddedChat RC App Setup](https://github.com/RocketChat/EmbeddedChat/blob/develop/packages/docs/ec_rc_setup.md). @@ -141,7 +142,7 @@ I also worked on a new sub-project called `layout-editor` during GSoC to enhance A video demonstration showcases the features: -[Layout Editor Demo](https://github.com/user-attachments/assets/3f846616-bf33-49ca-95c7-3a6e98685476) + To learn more about the layout editor, visit the guide: [Layout Editor Guide](https://github.com/RocketChat/EmbeddedChat/blob/develop/packages/docs/layout_editor.md). @@ -201,4 +202,4 @@ Interested in chatting about GSoC, Rocket.Chat, or open-source adventures? I'm a ## 📌 Closing Notes -This repository contains the final report and serves as a guide for future contributors to the EmbeddedChat project, which was developed and improved during Google Summer of Code (GSoC) 2024. The final report details the solutions implemented during the project, while the guide provides insights and instructions for new contributors to effectively engage with and build upon the project's foundation. \ No newline at end of file +This repository contains the final report and serves as a guide for future contributors to the EmbeddedChat project, which was developed and improved during Google Summer of Code (GSoC) 2024. The final report details the solutions implemented during the project, while the guide provides insights and instructions for new contributors to effectively engage with and build upon the project's foundation. diff --git a/packages/docs/docs/Development/ui-elements.md b/packages/docs/docs/Development/ui-elements.md index fefd676f6..47d0221fa 100644 --- a/packages/docs/docs/Development/ui-elements.md +++ b/packages/docs/docs/Development/ui-elements.md @@ -1,6 +1,7 @@ --- title: UI-Elements --- + # UI-Elements ![Embedded Chat Demo](https://github.com/RocketChat/EmbeddedChat/assets/78961432/b85c7b8a-65e2-4a90-a843-f4072c942ac0) @@ -9,6 +10,10 @@ This component is part of a monorepo, specifically within the `packages/ui-eleme ![image](https://github.com/user-attachments/assets/2fd76929-ce43-4bb3-8ea8-3a7318468923) +### Try It Out 🚀 + +Check out our Storybook showcasing all the components in action! Preview and test them here: https://rocketchat.github.io/EmbeddedChat/ui-elements/ + ### Development To develop and view the components: diff --git a/packages/docs/docs/Usage/layout_editor.md b/packages/docs/docs/Usage/layout_editor.md index bc3fbdac9..230a271fb 100644 --- a/packages/docs/docs/Usage/layout_editor.md +++ b/packages/docs/docs/Usage/layout_editor.md @@ -17,6 +17,10 @@ We offer a layout editor that lets you customize the design and appearance of th - **Resizable Sidebar**: Adjust the sidebar by dragging. - **Theme Lab**: Customize layout and theme settings, including palette colors and typography. +### Try It Out 🚀 + +Explore the Layout Editor to style and customize EmbeddedChat to your needs. Generate a theme object and pass it to EmbeddedChat via props. Start customizing here: [Layout Editor](https://rocketchat.github.io/EmbeddedChat/layout-editor/) + ### Theme Lab In the Theme Lab, you can: diff --git a/packages/docs/docs/introduction.md b/packages/docs/docs/introduction.md index 4f5dccfb3..5d595248d 100644 --- a/packages/docs/docs/introduction.md +++ b/packages/docs/docs/introduction.md @@ -18,6 +18,15 @@ _EmbeddedChat is a full-stack React component designed to integrate Rocket.Chat
    +## Try It Out 🚀 + +Explore our project in action! It's live for a sneak peek and testing at: https://rocketchat.github.io/EmbeddedChat/ + +Test credentials: + +- **Username:** test_acc +- **Password:** test_acc + ## Installation and usage Set up and start using the product in no time. Dive into our installation and usage docs [here](Usage/embeddedchat_setup.md) diff --git a/packages/layout_editor/README.md b/packages/layout_editor/README.md index 690a7d8bf..571294786 100644 --- a/packages/layout_editor/README.md +++ b/packages/layout_editor/README.md @@ -17,6 +17,10 @@ We offer a layout editor that lets you customize the design and appearance of th - **Resizable Sidebar**: Adjust the sidebar by dragging. - **Theme Lab**: Customize layout and theme settings, including palette colors and typography. +### Try It Out 🚀 + +Explore the Layout Editor to style and customize EmbeddedChat to your needs. Generate a theme object and pass it to EmbeddedChat via props. Start customizing here: [Layout Editor](https://rocketchat.github.io/EmbeddedChat/layout_editor/) + ### Theme Lab In the Theme Lab, you can: @@ -54,5 +58,5 @@ yarn preview # Preview build ### Additional Resources -- For installation instructions of the EmbeddedChat RC App, visit [this guide](../rc-app/README.md). -- For detailed prop usage, refer to [this guide](../react/README.md). +- For installation instructions of the EmbeddedChat RC App, visit [this guide](https://rocketchat.github.io/EmbeddedChat/docs/docs/Usage/ec_rc_setup). +- For detailed prop usage, refer to [this guide](https://rocketchat.github.io/EmbeddedChat/docs/docs/Usage/embeddedchat_setup). diff --git a/packages/react/README.md b/packages/react/README.md index 5478d4bf3..ce870a425 100644 --- a/packages/react/README.md +++ b/packages/react/README.md @@ -132,7 +132,7 @@ This section of the guide aims to provide a detailed explanation of these props. /> ``` - However, the `theme` object must follow a specific format. For detailed information on theming EmbeddedChat, refer to [theming.md](../docs/theming.md). + However, the `theme` object must follow a specific format. For detailed information on theming EmbeddedChat, refer to [theming.md](https://rocketchat.github.io/EmbeddedChat/docs/docs/Usage/theming). In Storybook, demonstrations of different themes and variants are provided in the 'Design Variants' section. @@ -151,11 +151,11 @@ This section of the guide aims to provide a detailed explanation of these props. 1. **Local Storage**: Store the `ec-token` in the browser's local storage. 2. **HTTP-Only Cookie**: Store the `ec-token` as an HTTP-only cookie. [This method requires the installation of the EmbeddedChat RC App on the Rocket.Chat server] - For a detailed guide on using each of these authentication methods with the `auth` and `secure` props, refer to the [authentication.md](../docs/authentication.md) file. + For a detailed guide on using each of these authentication methods with the `auth` and `secure` props, refer to the [authentication guide](../docs/authentication.md) file. ## Development -Follow this [EmbeddedChat Readme](https://github.com/RocketChat/EmbeddedChat) to setup EmbeddedChat for development. +Follow this [development guide](https://rocketchat.github.io/EmbeddedChat/docs/docs/Development/dev_launch) to setup EmbeddedChat for development. ## Conclusion diff --git a/packages/ui-elements/README.md b/packages/ui-elements/README.md index 5a17e4a48..bee7a2227 100644 --- a/packages/ui-elements/README.md +++ b/packages/ui-elements/README.md @@ -10,12 +10,16 @@ This component is part of a monorepo, specifically within the `packages/react` p ![image](https://github.com/user-attachments/assets/2fd76929-ce43-4bb3-8ea8-3a7318468923) +### Try It Out 🚀 + +Check out our Storybook showcasing all the components in action! Preview and test them here: https://rocketchat.github.io/EmbeddedChat/ui-elements/ + ### Development To develop and view the components: 1. Clone the repository. -2. Navigate to `packages/layout_editor`. +2. Navigate to `packages/ui-elements`. 3. Run the following commands: ```bash @@ -92,4 +96,4 @@ background-color: ${mode === 'light' : lighten(colors.background, 1)}; ``` -This hook allows you to dynamically switch modes or themes as needed. The `theme` object must adhere to a specific format, as outlined in the EmbeddedChat `react` project [Readme.md](../docs/theming.md). +This hook allows you to dynamically switch modes or themes as needed. The `theme` object must adhere to a specific format, as outlined in the [theming guide](https://rocketchat.github.io/EmbeddedChat/docs/docs/Usage/theming). From f2e00df5709bc42577f455a663670e73dd2644ea Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Mon, 26 Aug 2024 23:55:35 +0530 Subject: [PATCH 100/104] changed deployed room id to test_ec --- .github/workflows/deploy.yml | 5 +++-- .../src/stories/CurveVariantStories/Colorful.stories.js | 2 +- .../src/stories/CurveVariantStories/Simplistic.stories.js | 2 +- packages/react/src/stories/EmbeddedChat.stories.js | 2 +- packages/react/src/stories/EmbeddedChatAuthToken.stories.js | 2 +- packages/react/src/stories/EmbeddedChatSecureAuth.stories.js | 2 +- packages/react/src/stories/EmbeddedChatWithOAuth.stories.js | 2 +- packages/react/src/stories/EmbeddedChatWithRemote.stories.js | 2 +- .../src/stories/ModernVariantStories/Simplistic.stories.js | 2 +- .../react/src/stories/RCVariantStories/Colorful.stories.js | 2 +- .../react/src/stories/RCVariantStories/Simplistic.stories.js | 2 +- 11 files changed, 13 insertions(+), 12 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index de66ccd85..7336d89d1 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -10,9 +10,10 @@ permissions: pages: write id-token: write -env: +env: STORYBOOK_RC_HOST: "https://demo.qa.rocket.chat" - + RC_ROOM_ID: "66ccc4f1e050428c76256939" + jobs: build-and-deploy: runs-on: ubuntu-latest diff --git a/packages/react/src/stories/CurveVariantStories/Colorful.stories.js b/packages/react/src/stories/CurveVariantStories/Colorful.stories.js index 44c1bb315..1a0e9e09d 100644 --- a/packages/react/src/stories/CurveVariantStories/Colorful.stories.js +++ b/packages/react/src/stories/CurveVariantStories/Colorful.stories.js @@ -10,7 +10,7 @@ export default { export const Aqua_Breeze = { args: { host: process.env.STORYBOOK_RC_HOST || 'http://localhost:3000', - roomId: 'GENERAL', + roomId: process.env.RC_ROOM_ID || 'GENERAL', channelName: 'general', anonymousMode: true, headerColor: 'white', diff --git a/packages/react/src/stories/CurveVariantStories/Simplistic.stories.js b/packages/react/src/stories/CurveVariantStories/Simplistic.stories.js index 01b47a55b..41c3c9630 100644 --- a/packages/react/src/stories/CurveVariantStories/Simplistic.stories.js +++ b/packages/react/src/stories/CurveVariantStories/Simplistic.stories.js @@ -12,7 +12,7 @@ export default { export const Pine_Whisper = { args: { host: process.env.STORYBOOK_RC_HOST || 'http://localhost:3000', - roomId: 'GENERAL', + roomId: process.env.RC_ROOM_ID || 'GENERAL', channelName: 'general', anonymousMode: true, headerColor: 'white', diff --git a/packages/react/src/stories/EmbeddedChat.stories.js b/packages/react/src/stories/EmbeddedChat.stories.js index a06ada31e..d95bffccf 100644 --- a/packages/react/src/stories/EmbeddedChat.stories.js +++ b/packages/react/src/stories/EmbeddedChat.stories.js @@ -10,7 +10,7 @@ export default { export const Simple = { args: { host: process.env.STORYBOOK_RC_HOST || 'http://localhost:3000', - roomId: 'GENERAL', + roomId: process.env.RC_ROOM_ID || 'GENERAL', channelName: 'general', anonymousMode: true, headerColor: 'white', diff --git a/packages/react/src/stories/EmbeddedChatAuthToken.stories.js b/packages/react/src/stories/EmbeddedChatAuthToken.stories.js index d30cf45c4..5c2ad9ce2 100644 --- a/packages/react/src/stories/EmbeddedChatAuthToken.stories.js +++ b/packages/react/src/stories/EmbeddedChatAuthToken.stories.js @@ -10,7 +10,7 @@ export default { export const WithAuthToken = { args: { host: process.env.STORYBOOK_RC_HOST || 'http://localhost:3000', - roomId: 'GENERAL', + roomId: process.env.RC_ROOM_ID || 'GENERAL', channelName: 'general', anonymousMode: true, headerColor: 'white', diff --git a/packages/react/src/stories/EmbeddedChatSecureAuth.stories.js b/packages/react/src/stories/EmbeddedChatSecureAuth.stories.js index e06554d67..7bf422688 100644 --- a/packages/react/src/stories/EmbeddedChatSecureAuth.stories.js +++ b/packages/react/src/stories/EmbeddedChatSecureAuth.stories.js @@ -10,7 +10,7 @@ export default { export const Secure_Auth = { args: { host: process.env.STORYBOOK_RC_HOST || 'http://localhost:3000', - roomId: 'GENERAL', + roomId: process.env.RC_ROOM_ID || 'GENERAL', channelName: 'general', anonymousMode: true, headerColor: 'white', diff --git a/packages/react/src/stories/EmbeddedChatWithOAuth.stories.js b/packages/react/src/stories/EmbeddedChatWithOAuth.stories.js index ed7e716c0..9cfd1c4fc 100644 --- a/packages/react/src/stories/EmbeddedChatWithOAuth.stories.js +++ b/packages/react/src/stories/EmbeddedChatWithOAuth.stories.js @@ -10,7 +10,7 @@ export default { export const WithOAuth = { args: { host: process.env.STORYBOOK_RC_HOST || 'http://localhost:3000', - roomId: 'GENERAL', + roomId: process.env.RC_ROOM_ID || 'GENERAL', channelName: 'general', anonymousMode: true, headerColor: 'white', diff --git a/packages/react/src/stories/EmbeddedChatWithRemote.stories.js b/packages/react/src/stories/EmbeddedChatWithRemote.stories.js index 67542def5..564ccad06 100644 --- a/packages/react/src/stories/EmbeddedChatWithRemote.stories.js +++ b/packages/react/src/stories/EmbeddedChatWithRemote.stories.js @@ -11,7 +11,7 @@ export default { export const With_Remote_Opt = { args: { host: process.env.STORYBOOK_RC_HOST || 'http://localhost:3000', - roomId: 'GENERAL', + roomId: process.env.RC_ROOM_ID || 'GENERAL', channelName: 'general', anonymousMode: true, headerColor: 'white', diff --git a/packages/react/src/stories/ModernVariantStories/Simplistic.stories.js b/packages/react/src/stories/ModernVariantStories/Simplistic.stories.js index 56c6ebb2e..ae62cf985 100644 --- a/packages/react/src/stories/ModernVariantStories/Simplistic.stories.js +++ b/packages/react/src/stories/ModernVariantStories/Simplistic.stories.js @@ -11,7 +11,7 @@ export default { export const Stormy_Seas = { args: { host: process.env.STORYBOOK_RC_HOST || 'http://localhost:3000', - roomId: 'GENERAL', + roomId: process.env.RC_ROOM_ID || 'GENERAL', channelName: 'general', anonymousMode: true, headerColor: 'white', diff --git a/packages/react/src/stories/RCVariantStories/Colorful.stories.js b/packages/react/src/stories/RCVariantStories/Colorful.stories.js index 651ea64eb..f8cab1499 100644 --- a/packages/react/src/stories/RCVariantStories/Colorful.stories.js +++ b/packages/react/src/stories/RCVariantStories/Colorful.stories.js @@ -11,7 +11,7 @@ export const Mint_Meadow = { title: 'Colorful/MintMeadow', args: { host: process.env.STORYBOOK_RC_HOST || 'http://localhost:3000', - roomId: 'GENERAL', + roomId: process.env.RC_ROOM_ID || 'GENERAL', channelName: 'general', anonymousMode: true, headerColor: 'white', diff --git a/packages/react/src/stories/RCVariantStories/Simplistic.stories.js b/packages/react/src/stories/RCVariantStories/Simplistic.stories.js index f691faf70..338e9e79b 100644 --- a/packages/react/src/stories/RCVariantStories/Simplistic.stories.js +++ b/packages/react/src/stories/RCVariantStories/Simplistic.stories.js @@ -13,7 +13,7 @@ export default { export const Default = { args: { host: process.env.STORYBOOK_RC_HOST || 'http://localhost:3000', - roomId: 'GENERAL', + roomId: process.env.RC_ROOM_ID || 'GENERAL', channelName: 'general', anonymousMode: true, headerColor: 'white', From 158af13b641f6a7717860016bb40fdbddadf828a Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Thu, 5 Sep 2024 11:18:46 +0530 Subject: [PATCH 101/104] removed home --- .../react/src/stories/EmbeddedChat.stories.js | 2 +- packages/react/src/views/EmbeddedChat.js | 7 +-- packages/react/src/views/Home/Home.js | 46 ------------------- packages/react/src/views/Home/Home.styles.js | 18 -------- packages/react/src/views/Home/index.js | 1 - 5 files changed, 2 insertions(+), 72 deletions(-) delete mode 100644 packages/react/src/views/Home/Home.js delete mode 100644 packages/react/src/views/Home/Home.styles.js delete mode 100644 packages/react/src/views/Home/index.js diff --git a/packages/react/src/stories/EmbeddedChat.stories.js b/packages/react/src/stories/EmbeddedChat.stories.js index d95bffccf..9983a5da9 100644 --- a/packages/react/src/stories/EmbeddedChat.stories.js +++ b/packages/react/src/stories/EmbeddedChat.stories.js @@ -12,7 +12,7 @@ export const Simple = { host: process.env.STORYBOOK_RC_HOST || 'http://localhost:3000', roomId: process.env.RC_ROOM_ID || 'GENERAL', channelName: 'general', - anonymousMode: true, + anonymousMode: false, headerColor: 'white', toastBarPosition: 'bottom right', showRoles: true, diff --git a/packages/react/src/views/EmbeddedChat.js b/packages/react/src/views/EmbeddedChat.js index 4faa8cec4..2dc837987 100644 --- a/packages/react/src/views/EmbeddedChat.js +++ b/packages/react/src/views/EmbeddedChat.js @@ -17,7 +17,6 @@ import { } from '@embeddedchat/ui-elements'; import { ChatLayout } from './ChatLayout'; import { ChatHeader } from './ChatHeader'; -import { Home } from './Home'; import { RCInstanceProvider } from '../context/RCInstance'; import { useUserStore, useLoginStore } from '../store'; import DefaultTheme from '../theme/DefaultTheme'; @@ -251,11 +250,7 @@ const EmbeddedChat = (props) => { /> )} - {isUserAuthenticated || anonymousMode ? ( - - ) : ( - - )} +
    diff --git a/packages/react/src/views/Home/Home.js b/packages/react/src/views/Home/Home.js deleted file mode 100644 index 2b37aca61..000000000 --- a/packages/react/src/views/Home/Home.js +++ /dev/null @@ -1,46 +0,0 @@ -import { css } from '@emotion/react'; -import PropTypes from 'prop-types'; -import React from 'react'; -import { Box, Heading } from '@embeddedchat/ui-elements'; -import styles from './Home.styles'; - -const Home = ({ height }) => ( - - - EmbeddedChat | Home - -

    - For more documentation visit:{' '} - - README - -

    -

    - To enable anonymous mode pass in{' '} - anonymousMode prop as true and, then -

    -

    - Enable Anonymous read by going to ->{' '} - Admin -> Accounts -> Allow Anonymous Read. This will - allow users to see the chat without logging in. -

    -
    -); - -export default Home; - -Home.propTypes = { - height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), -}; diff --git a/packages/react/src/views/Home/Home.styles.js b/packages/react/src/views/Home/Home.styles.js deleted file mode 100644 index 15fc2d58c..000000000 --- a/packages/react/src/views/Home/Home.styles.js +++ /dev/null @@ -1,18 +0,0 @@ -import { css } from '@emotion/react'; - -const styles = { - paraText: css` - margin-top: 1rem; - font-size: 1rem; - `, - - paraTextMediaQuery: css` - @media (max-width: 768px) { - margin-top: 0.5rem; - font-size: 0.775rem; - line-height: 1rem; - } - `, -}; - -export default styles; diff --git a/packages/react/src/views/Home/index.js b/packages/react/src/views/Home/index.js deleted file mode 100644 index c2d92a574..000000000 --- a/packages/react/src/views/Home/index.js +++ /dev/null @@ -1 +0,0 @@ -export { default as Home } from './Home'; From 652e6902235c9f512430a455db6b3260822300ca Mon Sep 17 00:00:00 2001 From: Zishan Ahmad Date: Thu, 5 Sep 2024 11:25:24 +0530 Subject: [PATCH 102/104] removed playwright message test as abhinav server is no longer working, and demo.qa doesn't support anonymousMode --- packages/e2e-react/src/App.tsx | 5 ++--- packages/e2e-react/tests/example.spec.ts | 23 +++++++++-------------- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/packages/e2e-react/src/App.tsx b/packages/e2e-react/src/App.tsx index 5be050dd0..d0f16785a 100644 --- a/packages/e2e-react/src/App.tsx +++ b/packages/e2e-react/src/App.tsx @@ -4,9 +4,8 @@ import { EmbeddedChat } from "@embeddedchat/react"; function App() { return ( ); } diff --git a/packages/e2e-react/tests/example.spec.ts b/packages/e2e-react/tests/example.spec.ts index e309eeb4e..1189f4442 100644 --- a/packages/e2e-react/tests/example.spec.ts +++ b/packages/e2e-react/tests/example.spec.ts @@ -1,18 +1,13 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from "@playwright/test"; -test('EmbeddedChat should render', async ({ page }) => { - await page.goto('/'); - await expect(page.locator('.ec-embedded-chat')).toBeVisible(); +test("EmbeddedChat should render", async ({ page }) => { + await page.goto("/"); + await expect(page.locator(".ec-embedded-chat")).toBeVisible(); }); -test('EmbeddedChat has a title', async ({ page }) => { - await page.goto('/'); - await expect(page.locator('.ec-chat-header--channelName')).toHaveText('Login to chat'); -}); - -test('EmbeddedChat has messages', async ({ page }) => { - await page.goto('/'); - - await page.waitForSelector('.ec-message'); - expect(await page.locator('.ec-message').count()).toBeGreaterThan(0); +test("EmbeddedChat has a title", async ({ page }) => { + await page.goto("/"); + await expect(page.locator(".ec-chat-header--channelName")).toHaveText( + "Login to chat" + ); }); From 1c32ea570d74820549a2dc44a5c4ae3a830c2026 Mon Sep 17 00:00:00 2001 From: Julio Date: Wed, 11 Sep 2024 10:36:30 +0200 Subject: [PATCH 103/104] Add DOMPurify to sanitize DangerouslySetInnerHTML --- package.json | 3 +++ packages/markups/src/elements/Emoji.js | 3 ++- packages/react/src/views/EmojiReaction/EmojiReaction.js | 3 ++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index dc3d3f204..3868bafb9 100644 --- a/package.json +++ b/package.json @@ -23,5 +23,8 @@ "husky": "^9.0.11", "lerna": "^6.6.2", "typescript": "^5.1.3" + }, + "dependencies": { + "dompurify": "^3.1.6" } } diff --git a/packages/markups/src/elements/Emoji.js b/packages/markups/src/elements/Emoji.js index ebdcf4c0b..af1b13401 100644 --- a/packages/markups/src/elements/Emoji.js +++ b/packages/markups/src/elements/Emoji.js @@ -2,6 +2,7 @@ import React, { useMemo } from 'react'; import PropTypes from 'prop-types'; import emojione from 'emoji-toolkit'; import { Box } from '@embeddedchat/ui-elements'; +import DOMPurify from 'dompurify'; import { EmojiStyles as styles } from './elements.styles'; const Emoji = ({ big = false, emoji }) => { @@ -21,7 +22,7 @@ const Emoji = ({ big = false, emoji }) => { ); }; diff --git a/packages/react/src/views/EmojiReaction/EmojiReaction.js b/packages/react/src/views/EmojiReaction/EmojiReaction.js index 965afb5d1..a85dfc92f 100644 --- a/packages/react/src/views/EmojiReaction/EmojiReaction.js +++ b/packages/react/src/views/EmojiReaction/EmojiReaction.js @@ -3,6 +3,7 @@ import PropTypes from 'prop-types'; import emojione from 'emoji-toolkit'; import { css } from '@emotion/react'; import { Box } from '@embeddedchat/ui-elements'; +import DOMPurify from 'dompurify'; const EmojiReaction = ({ body }) => { const emojiHtml = emojione.toImage(body); @@ -12,7 +13,7 @@ const EmojiReaction = ({ body }) => { css={css` font-size: 1rem; `} - dangerouslySetInnerHTML={{ __html: emojiHtml }} + dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(emojiHtml) }} /> ); }; From 6e6c3b1a1f4e66d130b71b6f286250622202ebbc Mon Sep 17 00:00:00 2001 From: Julio Date: Wed, 11 Sep 2024 10:41:59 +0200 Subject: [PATCH 104/104] Update yarn.lock --- yarn.lock | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/yarn.lock b/yarn.lock index 46a99c22b..39464bc87 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15006,6 +15006,13 @@ __metadata: languageName: node linkType: hard +"dompurify@npm:^3.1.6": + version: 3.1.6 + resolution: "dompurify@npm:3.1.6" + checksum: cc4fc4ccd9261fbceb2a1627a985c70af231274a26ddd3f643fd0616a0a44099bd9e4480940ce3655612063be4a1fe9f5e9309967526f8c0a99f931602323866 + languageName: node + linkType: hard + "domutils@npm:^2.5.2, domutils@npm:^2.8.0": version: 2.8.0 resolution: "domutils@npm:2.8.0" @@ -15194,6 +15201,7 @@ __metadata: resolution: "embeddedchat@workspace:." dependencies: "@changesets/cli": ^2.26.2 + dompurify: ^3.1.6 esbuild: ^0.17.19 husky: ^9.0.11 lerna: ^6.6.2