From 8f2517ecf2b102f37011d2e59e7c1ae43fcf0454 Mon Sep 17 00:00:00 2001 From: Katie McFaul Date: Wed, 11 Dec 2024 13:47:59 -0500 Subject: [PATCH 1/5] feat(misc): chatbot support --- packages/dev/src/AppTabs.tsx | 215 +++++++++++++++++++ packages/dev/src/Nav.ts | 5 + packages/dev/src/index.tsx | 9 + packages/module/src/QuickStartController.tsx | 22 +- packages/module/src/index.ts | 1 + 5 files changed, 247 insertions(+), 5 deletions(-) create mode 100644 packages/dev/src/AppTabs.tsx diff --git a/packages/dev/src/AppTabs.tsx b/packages/dev/src/AppTabs.tsx new file mode 100644 index 00000000..e3b00d4a --- /dev/null +++ b/packages/dev/src/AppTabs.tsx @@ -0,0 +1,215 @@ +import './App.css'; +import { + Page, + Button, + Drawer, + DrawerContent, + Tabs, + Tab, + TabTitleText, + DrawerContentBody, + DrawerPanelContent, + DrawerHead, + DrawerActions, + DrawerCloseButton, + DrawerPanelDescription, + DrawerPanelBody, +} from '@patternfly/react-core'; +import { + LoadingBox, + QuickStartContainer, + QuickStartContainerProps, + QuickStartController, + QuickStartCloseModal, + QuickStartStatus, + useLocalStorage, + setQueryArgument, + removeQueryArgument, + QUICKSTART_ID_FILTER_KEY, +} from '@patternfly/quickstarts'; +import { allQuickStarts as yamlQuickStarts } from './quickstarts-data/quick-start-test-data'; +import React from 'react'; +import i18n from './i18n/i18n'; +import { AppHeader, AppSidebar } from './common/Page'; + +interface AppProps { + children?: React.ReactNode; + showCardFooters?: boolean; +} + +const App: React.FC = ({ children, showCardFooters }) => { + const [activeQuickStartID, setActiveQuickStartID] = useLocalStorage('quickstartId', ''); + const [allQuickStartStates, setAllQuickStartStates] = useLocalStorage('quickstarts', {}); + const language = localStorage.getItem('bridge/language') || 'en'; + const resourceBundle = i18n.getResourceBundle(language, 'quickstart'); + + // eslint-disable-next-line no-console + React.useEffect(() => console.log(activeQuickStartID), [activeQuickStartID]); + React.useEffect(() => { + // callback on state change + // eslint-disable-next-line no-console + console.log(allQuickStartStates); + }, [allQuickStartStates]); + + const withQueryParams = true; + + const containerProps: QuickStartContainerProps = { + quickStarts: yamlQuickStarts, + activeQuickStartID, + allQuickStartStates, + setActiveQuickStartID, + setAllQuickStartStates, + resourceBundle, + showCardFooters, + language, + useQueryParams: withQueryParams, + alwaysShowTaskReview: true, + markdown: { + extensions: [ + // variable substitution + { + type: 'output', + filter(html: string) { + html = html.replace(/\[APPLICATION\]/g, 'Mercury'); + html = html.replace(/\[PRODUCT\]/g, 'Lightning'); + + return html; + }, + }, + ], + }, + }; + + const toggleQuickStart = (quickStartId: string) => { + if (activeQuickStartID !== quickStartId) { + // activate + setActiveQuickStartID(quickStartId); + // optionally add the query param + withQueryParams && setQueryArgument(QUICKSTART_ID_FILTER_KEY, quickStartId); + } else { + // deactivate + setActiveQuickStartID(''); + // optionally remove the query param + withQueryParams && removeQueryArgument(QUICKSTART_ID_FILTER_KEY); + } + }; + + const [modalOpen, setModalOpen] = React.useState(false); + const onClose = () => { + setActiveQuickStartID(''); + setIsDrawerOpen(false); + }; + const handleClose = (activeQuickStartStatus: string | number) => { + // need to hook up to modal close button + if (activeQuickStartStatus === QuickStartStatus.IN_PROGRESS) { + setModalOpen(true); + } else { + onClose(); + } + onClose(); + }; + const onModalConfirm = () => { + setModalOpen(false); + onClose(); + }; + const onModalCancel = () => setModalOpen(false); + + const [isDrawerOpen, setIsDrawerOpen] = React.useState(false); + const [activeTabKey, setActiveTabKey] = React.useState(0); + // Toggle currently active tab + const handleTabClick = ( + event: React.MouseEvent | React.KeyboardEvent | MouseEvent, + tabIndex: string | number, + ) => { + setActiveTabKey(tabIndex); + }; + + // needed for QuickStartController and metadata filling out + // we're basically rendering the QS on the user code opposed to QuickStartPanelContent + const quickStart = yamlQuickStarts.find((qs) => qs.metadata.name === activeQuickStartID); + const nextQuickStart = yamlQuickStarts.filter((qs) => + quickStart?.spec.nextQuickStart?.includes(qs.metadata.name), + ); + const panelContent = ( + + + {activeQuickStartID !== '' ? quickStart?.spec.displayName : 'No QS title'} + + setIsDrawerOpen(false)} /> + + + Drawer panel description + + + {activeQuickStartID !== '' && ( + Quickstart} + aria-label="Default content - users" + style={{ flex: '1 1', display: 'flex', flexDirection: 'column' }} // not currently spread to tab - react issue opened https://github.com/patternfly/patternfly-react/issues/11342 + > + + + )} + + Chatbot}> + Chatbot + + + + + + ); + + return ( + }> + + + + + + + + {children} + + + + + + + + ); +}; +export default App; diff --git a/packages/dev/src/Nav.ts b/packages/dev/src/Nav.ts index f4701149..5fc7a08c 100644 --- a/packages/dev/src/Nav.ts +++ b/packages/dev/src/Nav.ts @@ -40,6 +40,11 @@ export const Nav: NavInterface[] = [ name: 'With custom drawer', to: '/quickstarts-drawer', }, + { + id: 'chatbot-drawer', + name: 'With chatbot drawer', + to: '/chatbot-drawer', + }, ]; export default Nav; diff --git a/packages/dev/src/index.tsx b/packages/dev/src/index.tsx index 8b6c8468..2fdb1fad 100755 --- a/packages/dev/src/index.tsx +++ b/packages/dev/src/index.tsx @@ -12,6 +12,7 @@ import AppProps from './AppProps'; import AppLocalized from './AppLocalized'; import AppHelpTopicDemo from './AppHelpTopicDemo'; import AppCustomDrawer from './AppCustomDrawer'; +import AppChatbotDrawer from './AppTabs'; import { DefaultCatalog } from './DefaultCatalog'; import { CustomCatalog } from './CustomCatalog'; import { MockConsole } from './MockConsole'; @@ -70,6 +71,14 @@ root.render( } /> + + + + } + /> , ); diff --git a/packages/module/src/QuickStartController.tsx b/packages/module/src/QuickStartController.tsx index e97ccd40..8caaa67f 100644 --- a/packages/module/src/QuickStartController.tsx +++ b/packages/module/src/QuickStartController.tsx @@ -5,18 +5,30 @@ import { QuickStartContext, QuickStartContextValues } from './utils/quick-start- import { QuickStart, QuickStartStatus, QuickStartTaskStatus } from './utils/quick-start-types'; interface QuickStartControllerProps { + /** The current active quickstart */ quickStart: QuickStart; + /** The next quickstart */ nextQuickStarts?: QuickStart[]; - footerClass: string; - contentRef: React.Ref; + /** Additional footer classes */ + footerClass?: string; + /** Ref for the quickstart content */ + contentRef?: React.Ref; } -const QuickStartController: React.FC = ({ - quickStart, - nextQuickStarts, +export const QuickStartController: React.FC = ({ + quickStart, // : propQS, might be able to have default value of current active QS using context? + nextQuickStarts, // : propNextQS, might be same contentRef, footerClass, }) => { + // Should work? + // const { allQuickStarts, activeQuickStartID } = + // React.useContext(QuickStartContext); + // const quickStart = propQS || allQuickStarts.find((qs) => qs.metadata.name === activeQuickStartID); + // const nextQuickStarts = + // propNextQS || + // allQuickStarts.filter((qs) => quickStart?.spec.nextQuickStart?.includes(qs.metadata.name)); + const { metadata: { name }, spec: { tasks = [] }, diff --git a/packages/module/src/index.ts b/packages/module/src/index.ts index 031184e7..5e0d4019 100644 --- a/packages/module/src/index.ts +++ b/packages/module/src/index.ts @@ -4,6 +4,7 @@ export * from './QuickStartCatalogPage'; export * from './catalog'; export * from './ConsoleInternal/components/utils'; export * from './QuickStartContainer'; +export * from './QuickStartController'; export * from './QuickStartDrawer'; export * from './QuickStartDrawerContent'; export * from './QuickStartCloseModal'; From b46edfaadac131d0e6cac1118e93e1be50c09e96 Mon Sep 17 00:00:00 2001 From: Katie McFaul Date: Wed, 11 Dec 2024 14:50:35 -0500 Subject: [PATCH 2/5] temp-chatbot --- packages/dev/package.json | 1 + packages/dev/src/AppTabs.tsx | 185 ++++- packages/dev/src/AppTabsStrings.tsx | 132 +++ packages/dev/src/index.tsx | 1 + yarn.lock | 1186 ++++++++++++++++++++++++++- 5 files changed, 1490 insertions(+), 15 deletions(-) create mode 100644 packages/dev/src/AppTabsStrings.tsx diff --git a/packages/dev/package.json b/packages/dev/package.json index 82b86ccd..c5273466 100644 --- a/packages/dev/package.json +++ b/packages/dev/package.json @@ -11,6 +11,7 @@ "dependencies": { "@patternfly/patternfly": "^6.0.0", "@patternfly/quickstarts": "^6.0.0-alpha.0", + "@patternfly/chatbot": "2.1.0-prerelease.26", "@patternfly/react-core": "^6.0.0", "i18next": "^19.8.3", "i18next-browser-languagedetector": "^8.0.0", diff --git a/packages/dev/src/AppTabs.tsx b/packages/dev/src/AppTabs.tsx index e3b00d4a..58db6643 100644 --- a/packages/dev/src/AppTabs.tsx +++ b/packages/dev/src/AppTabs.tsx @@ -14,6 +14,8 @@ import { DrawerCloseButton, DrawerPanelDescription, DrawerPanelBody, + DropdownList, + DropdownItem, } from '@patternfly/react-core'; import { LoadingBox, @@ -32,6 +34,22 @@ import React from 'react'; import i18n from './i18n/i18n'; import { AppHeader, AppSidebar } from './common/Page'; +import Chatbot, { ChatbotDisplayMode } from '@patternfly/chatbot/dist/dynamic/Chatbot'; +import ChatbotContent from '@patternfly/chatbot/dist/dynamic/ChatbotContent'; +import ChatbotWelcomePrompt from '@patternfly/chatbot/dist/dynamic/ChatbotWelcomePrompt'; +import ChatbotFooter, { ChatbotFootnote } from '@patternfly/chatbot/dist/dynamic/ChatbotFooter'; +import MessageBar from '@patternfly/chatbot/dist/dynamic/MessageBar'; +import MessageBox from '@patternfly/chatbot/dist/dynamic/MessageBox'; +import Message, { MessageProps } from '@patternfly/chatbot/dist/dynamic/Message'; +import ChatbotHeader, { + ChatbotHeaderMain, + ChatbotHeaderTitle, + ChatbotHeaderActions, + ChatbotHeaderSelectorDropdown, +} from '@patternfly/chatbot/dist/dynamic/ChatbotHeader'; + +import { welcomePrompts, footnoteProps, initialMessages } from './AppTabsStrings'; + interface AppProps { children?: React.ReactNode; showCardFooters?: boolean; @@ -130,6 +148,163 @@ const App: React.FC = ({ children, showCardFooters }) => { const nextQuickStart = yamlQuickStarts.filter((qs) => quickStart?.spec.nextQuickStart?.includes(qs.metadata.name), ); + + // Chatbot + const [messages, setMessages] = React.useState(initialMessages); + const [selectedModel, setSelectedModel] = React.useState('Granite 7B'); + const [isSendButtonDisabled, setIsSendButtonDisabled] = React.useState(false); + const [announcement, setAnnouncement] = React.useState(); + const scrollToBottomRef = React.useRef(null); + + const displayMode = ChatbotDisplayMode.embedded; + + React.useEffect(() => { + // don't scroll the first load - in this demo, we know we start with two messages + if (messages.length > 2) { + scrollToBottomRef.current?.scrollIntoView({ behavior: 'smooth' }); + } + }, [messages]); + + const onSelectModel = ( + _event: React.MouseEvent | undefined, + value: string | number | undefined, + ) => { + setSelectedModel(value as string); + }; + + // you will likely want to come up with your own unique id function; this is for demo purposes only + const generateId = () => { + const id = Date.now() + Math.random(); + return id.toString(); + }; + + const handleSend = (message: string) => { + setIsSendButtonDisabled(true); + const newMessages: MessageProps[] = []; + // We can't use structuredClone since messages contains functions, but we can't mutate + // items that are going into state or the UI won't update correctly + messages.forEach((message) => newMessages.push(message)); + // It's important to set a timestamp prop since the Message components re-render. + // The timestamps re-render with them. + const date = new Date(); + newMessages.push({ + id: generateId(), + role: 'user', + content: message, + name: 'User', + avatar: null, + timestamp: date.toLocaleString(), + avatarProps: { isBordered: true }, + }); + newMessages.push({ + id: generateId(), + role: 'bot', + content: 'API response goes here', + name: 'Bot', + avatar: null, + isLoading: true, + timestamp: date.toLocaleString(), + }); + setMessages(newMessages); + // make announcement to assistive devices that new messages have been added + setAnnouncement(`Message from User: ${message}. Message from Bot is loading.`); + + // this is for demo purposes only; in a real situation, there would be an API response we would wait for + setTimeout(() => { + const loadedMessages: MessageProps[] = []; + // we can't use structuredClone since messages contains functions, but we can't mutate + // items that are going into state or the UI won't update correctly + newMessages.forEach((message) => loadedMessages.push(message)); + loadedMessages.pop(); + loadedMessages.push({ + id: generateId(), + role: 'bot', + content: 'API response goes here', + name: 'Bot', + avatar: null, + isLoading: false, + actions: { + // eslint-disable-next-line no-console + positive: { onClick: () => console.log('Good response') }, + // eslint-disable-next-line no-console + negative: { onClick: () => console.log('Bad response') }, + // eslint-disable-next-line no-console + copy: { onClick: () => console.log('Copy') }, + // eslint-disable-next-line no-console + share: { onClick: () => console.log('Share') }, + // eslint-disable-next-line no-console + listen: { onClick: () => console.log('Listen') }, + }, + timestamp: date.toLocaleString(), + }); + setMessages(loadedMessages); + // make announcement to assistive devices that new message has loaded + setAnnouncement(`Message from Bot: API response goes here`); + setIsSendButtonDisabled(false); + }, 5000); + }; + + const chatbot = ( + + + + Title + + + + + + Granite 7B + + + Llama 3.0 + + + Mistral 3B + + + + + + + {/* Update the announcement prop on MessageBox whenever a new message is sent + so that users of assistive devices receive sufficient context */} + + + {/* This code block enables scrolling to the top of the last message. + You can instead choose to move the div with scrollToBottomRef on it below + the map of messages, so that users are forced to scroll to the bottom. + If you are using streaming, you will want to take a different approach; + see: https://github.com/patternfly/chatbot/issues/201#issuecomment-2400725173 */} + {messages.map((message, index) => { + if (index === messages.length - 1) { + return ( + <> +
+ + + ); + } + return ; + })} +
+
+ + + + +
+ ); + // Chatbot + const panelContent = ( @@ -160,15 +335,7 @@ const App: React.FC = ({ children, showCardFooters }) => { )} Chatbot}> - Chatbot - + {chatbot} diff --git a/packages/dev/src/AppTabsStrings.tsx b/packages/dev/src/AppTabsStrings.tsx new file mode 100644 index 00000000..0e90a7c2 --- /dev/null +++ b/packages/dev/src/AppTabsStrings.tsx @@ -0,0 +1,132 @@ +import { MessageProps } from '@patternfly/chatbot/dist/dynamic/Message'; + +export const footnoteProps = { + label: 'Lightspeed uses AI. Check for mistakes.', + popover: { + title: 'Verify accuracy', + description: `While Lightspeed strives for accuracy, there's always a possibility of errors. It's a good practice to verify critical information from reliable sources, especially if it's crucial for decision-making or actions.`, + bannerImage: { + src: 'https://cdn.dribbble.com/userupload/10651749/file/original-8a07b8e39d9e8bf002358c66fce1223e.gif', + alt: 'Example image for footnote popover', + }, + cta: { + label: 'Got it', + onClick: () => { + alert('Do something!'); + }, + }, + link: { + label: 'Learn more', + url: 'https://www.redhat.com/', + }, + }, +}; + +const markdown = `A paragraph with *emphasis* and **strong importance**. + +> A block quote with ~strikethrough~ and a URL: https://reactjs.org. + +Here is an inline code - \`() => void\` + +Here is some YAML code: + +~~~yaml +apiVersion: helm.openshift.io/v1beta1/ +kind: HelmChartRepository +metadata: + name: azure-sample-repo0oooo00ooo +spec: + connectionConfig: + url: https://raw.githubusercontent.com/Azure-Samples/helm-charts/master/docs +~~~ + +Here is some JavaScript code: + +~~~js +import React from 'react'; + +const MessageLoading = () => ( +
+ + Loading message + +
+); + +export default MessageLoading; + +~~~ +`; + +// It's important to set a date and timestamp prop since the Message components re-render. +// The timestamps re-render with them. +const date = new Date(); + +export const initialMessages: MessageProps[] = [ + { + id: '1', + role: 'user', + content: 'Hello, can you give me an example of what you can do?', + name: 'User', + avatar: null as any, + timestamp: date.toLocaleString(), + avatarProps: { isBordered: true }, + }, + { + id: '2', + role: 'bot', + content: markdown, + name: 'Bot', + avatar: null as any, + timestamp: date.toLocaleString(), + actions: { + // eslint-disable-next-line no-console + positive: { onClick: () => console.log('Good response') }, + // eslint-disable-next-line no-console + negative: { onClick: () => console.log('Bad response') }, + // eslint-disable-next-line no-console + copy: { onClick: () => console.log('Copy') }, + // eslint-disable-next-line no-console + share: { onClick: () => console.log('Share') }, + // eslint-disable-next-line no-console + listen: { onClick: () => console.log('Listen') }, + }, + }, +]; + +export const welcomePrompts = [ + { + title: 'Topic 1', + message: 'Helpful prompt for Topic 1', + }, + { + title: 'Topic 2', + message: 'Helpful prompt for Topic 2', + }, +]; + +export const initialConversations = { + Today: [{ id: '1', text: 'Hello, can you give me an example of what you can do?' }], + 'This month': [ + { + id: '2', + text: 'Enterprise Linux installation and setup', + }, + { id: '3', text: 'Troubleshoot system crash' }, + ], + March: [ + { id: '4', text: 'Ansible security and updates' }, + { id: '5', text: 'Red Hat certification' }, + { id: '6', text: 'Lightspeed user documentation' }, + ], + February: [ + { id: '7', text: 'Crashing pod assistance' }, + { id: '8', text: 'OpenShift AI pipelines' }, + { id: '9', text: 'Updating subscription plan' }, + { id: '10', text: 'Red Hat licensing options' }, + ], + January: [ + { id: '11', text: 'RHEL system performance' }, + { id: '12', text: 'Manage user accounts' }, + ], +}; diff --git a/packages/dev/src/index.tsx b/packages/dev/src/index.tsx index 2fdb1fad..914841a2 100755 --- a/packages/dev/src/index.tsx +++ b/packages/dev/src/index.tsx @@ -5,6 +5,7 @@ import { Route, BrowserRouter, Routes } from 'react-router-dom'; // fonts, variables import '@patternfly/patternfly/patternfly.css'; import '@patternfly/quickstarts/dist/quickstarts.css'; +import '@patternfly/chatbot/dist/css/main.css'; import './i18n/i18n'; import AppContext from './AppContext'; diff --git a/yarn.lock b/yarn.lock index a2f345c6..a2f51c4e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1036,6 +1036,13 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.3.1", "@babel/runtime@^7.8.3": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" + integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.10.4", "@babel/template@^7.22.15", "@babel/template@^7.24.0": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" @@ -1075,6 +1082,18 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== +"@emotion/is-prop-valid@^0.7.3": + version "0.7.3" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.7.3.tgz#a6bf4fa5387cbba59d44e698a4680f481a8da6cc" + integrity sha512-uxJqm/sqwXw3YPA5GXX365OBcJGFtxUVkB6WyezqFHlNe9jqUWH5ur2O2M8dGBz61kn1g3ZBlzUunFQXQIClhA== + dependencies: + "@emotion/memoize" "0.7.1" + +"@emotion/memoize@0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.1.tgz#e93c13942592cf5ef01aa8297444dc192beee52f" + integrity sha512-Qv4LTqO11jepd5Qmlp3M1YEjBumoTHcHFdgPTQ+sFlIL5myi/7xu/POwP7IRu6odBdmLXdtIs1D6TuW6kbwbbg== + "@esbuild/aix-ppc64@0.20.2": version "0.20.2" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537" @@ -1394,6 +1413,23 @@ acorn-static-class-features "^1.0.0" astring "^1.7.5" +"@patternfly/chatbot@2.1.0-prerelease.26": + version "2.1.0-prerelease.26" + resolved "https://registry.yarnpkg.com/@patternfly/chatbot/-/chatbot-2.1.0-prerelease.26.tgz#bfcc78e0c9d2a538e4d825926c764b592e0c8e68" + integrity sha512-Gaw2YgA53s2dikHun6asAV+QPhjgri5stYeAIwMK9jw+GNaniNh7dQTDwuoBcTjcapN3rdK/dOL7dPS2wzDMcw== + dependencies: + "@patternfly/react-code-editor" "^6.0.0" + "@patternfly/react-core" "^6.0.0" + "@patternfly/react-icons" "^6.0.0" + clsx "^2.1.0" + framer-motion "^11.3.28" + path-browserify "^1.0.1" + react-jss "^10.10.0" + react-markdown "^9.0.1" + react-syntax-highlighter "^15.5.0" + react-textarea-auto-witdth-height "^1.0.3" + remark-gfm "^4.0.0" + "@patternfly/documentation-framework@^6.0.6": version "6.0.6" resolved "https://registry.yarnpkg.com/@patternfly/documentation-framework/-/documentation-framework-6.0.6.tgz#27842a4403201e990150ebf4e261cc8eb79c42be" @@ -1779,6 +1815,13 @@ resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-3.0.2.tgz#70bbda77dc23aa727413e22e214afa3f0e852f70" integrity sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw== +"@types/debug@^4.0.0": + version "4.1.12" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" + integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== + dependencies: + "@types/ms" "*" + "@types/dompurify@^3.0.5": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/dompurify/-/dompurify-3.0.5.tgz#02069a2fcb89a163bacf1a788f73cb415dd75cb7" @@ -1817,7 +1860,14 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^1.0.5": +"@types/estree-jsx@^1.0.0": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree-jsx/-/estree-jsx-1.0.5.tgz#858a88ea20f34fe65111f005a689fa1ebf70dc18" + integrity sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg== + dependencies: + "@types/estree" "*" + +"@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.5": version "1.0.6" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== @@ -1867,6 +1917,20 @@ "@types/minimatch" "*" "@types/node" "*" +"@types/hast@^2.0.0": + version "2.3.10" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.10.tgz#5c9d9e0b304bbb8879b857225c5ebab2d81d7643" + integrity sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw== + dependencies: + "@types/unist" "^2" + +"@types/hast@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa" + integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== + dependencies: + "@types/unist" "*" + "@types/history@*", "@types/history@^4.7.11", "@types/history@^4.7.8": version "4.7.11" resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" @@ -1940,6 +2004,13 @@ dependencies: "@types/unist" "*" +"@types/mdast@^4.0.0": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.4.tgz#7ccf72edd2f1aa7dd3437e180c64373585804dd6" + integrity sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA== + dependencies: + "@types/unist" "*" + "@types/mime@*": version "3.0.1" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" @@ -1955,6 +2026,11 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== +"@types/ms@*": + version "0.7.34" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433" + integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== + "@types/node@*", "@types/node@^18.11.9": version "18.16.14" resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.14.tgz#ab67bb907f1146afc6fedb9ce60ae8a99c989631" @@ -2079,6 +2155,16 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== +"@types/unist@^2": + version "2.0.11" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.11.tgz#11af57b127e32487774841f7a4e54eab166d03c4" + integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA== + +"@types/unist@^3.0.0": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c" + integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== + "@types/ws@^8.5.1": version "8.5.4" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.4.tgz#bb10e36116d6e570dd943735f86c933c1587b8a5" @@ -2189,6 +2275,11 @@ "@typescript-eslint/types" "5.59.6" eslint-visitor-keys "^3.3.0" +"@ungap/structured-clone@^1.0.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.1.tgz#28fa185f67daaf7b7a1a8c1d445132c5d979f8bd" + integrity sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA== + "@webassemblyjs/ast@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" @@ -3379,6 +3470,11 @@ bail@^1.0.0: resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== +bail@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" + integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -3935,6 +4031,11 @@ ccount@^1.0.0: resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== +ccount@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" + integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== + chalk@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" @@ -4001,21 +4102,41 @@ character-entities-html4@^1.0.0: resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125" integrity sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g== +character-entities-html4@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" + integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== + character-entities-legacy@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== +character-entities-legacy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" + integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== + character-entities@^1.0.0: version "1.2.4" resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== +character-entities@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" + integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== + character-reference-invalid@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== +character-reference-invalid@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9" + integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw== + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -4291,6 +4412,11 @@ clone@^2.1.2: resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== +clsx@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" + integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== + co-body@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/co-body/-/co-body-6.1.0.tgz#d87a8efc3564f9bfe3aced8ef5cd04c7a8766547" @@ -4432,6 +4558,11 @@ comma-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== +comma-separated-tokens@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" + integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== + command-line-args@^5.0.2: version "5.1.1" resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.1.1.tgz#88e793e5bb3ceb30754a86863f0401ac92fd369a" @@ -4818,6 +4949,15 @@ crypto-random-string@^1.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" integrity sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg== +css-jss@10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/css-jss/-/css-jss-10.10.0.tgz#bd51fbd255cc24597ac0f0f32368394794d37ef3" + integrity sha512-YyMIS/LsSKEGXEaVJdjonWe18p4vXLo8CMA4FrW/kcaEyqdIGKCFXao31gbJddXEdIxSXFFURWrenBJPlKTgAA== + dependencies: + "@babel/runtime" "^7.3.1" + jss "^10.10.0" + jss-preset-default "^10.10.0" + css-loader@6.7.3, css-loader@^6.7.3: version "6.7.3" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.3.tgz#1e8799f3ccc5874fdd55461af51137fcc5befbcd" @@ -4858,6 +4998,14 @@ css-selector-extract@^3.3.6: dependencies: postcss "^6.0.14" +css-vendor@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/css-vendor/-/css-vendor-2.0.8.tgz#e47f91d3bd3117d49180a3c935e62e3d9f7f449d" + integrity sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ== + dependencies: + "@babel/runtime" "^7.8.3" + is-in-browser "^1.0.2" + css-what@^5.0.0, css-what@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad" @@ -5082,6 +5230,13 @@ debug@^3.1.0, debug@^3.2.7: dependencies: ms "^2.1.1" +debug@^4.0.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" + integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== + dependencies: + ms "^2.1.3" + debug@^4.3.7: version "4.3.7" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" @@ -5099,6 +5254,13 @@ decimal.js@^10.2.1: resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== +decode-named-character-reference@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" + integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== + dependencies: + character-entities "^2.0.0" + decode-uri-component@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" @@ -5309,6 +5471,11 @@ depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= +dequal@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + destroy@1.2.0, destroy@^1.0.4: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" @@ -5343,6 +5510,13 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== +devlop@^1.0.0, devlop@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" + integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== + dependencies: + dequal "^2.0.0" + devtools-protocol@0.0.1107588: version "0.0.1107588" resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1107588.tgz#f8cac707840b97cc30b029359341bcbbb0ad8ffa" @@ -5896,6 +6070,11 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +escape-string-regexp@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" + integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== + escodegen@^1.6.1, escodegen@^1.8.1: version "1.14.3" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" @@ -6350,6 +6529,11 @@ estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== +estree-util-is-identifier-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz#0b5ef4c4ff13508b34dcd01ecfa945f61fce5dbd" + integrity sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg== + estree-walker@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" @@ -6731,7 +6915,7 @@ fastq@^1.13.0, fastq@^1.6.0: dependencies: reusify "^1.0.4" -fault@^1.0.1: +fault@^1.0.0, fault@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== @@ -7075,6 +7259,15 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" +framer-motion@^11.3.28: + version "11.13.5" + resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-11.13.5.tgz#2cec307d2395ba6924a683abd79a517ec1f318f5" + integrity sha512-rArI0zPU9VkpS3Wt0J7dmRxAFUWtzPWoSofNQAP0UO276CmJ+Xlf5xN19GMw3w2QsdrS2sU+0+Q2vtuz4IEZaw== + dependencies: + motion-dom "^11.13.0" + motion-utils "^11.13.0" + tslib "^2.4.0" + fresh@0.5.2, fresh@~0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" @@ -7778,6 +7971,32 @@ hast-util-is-element@^1.0.0: resolved "https://registry.yarnpkg.com/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz#3b3ed5159a2707c6137b48637fbfe068e175a425" integrity sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ== +hast-util-parse-selector@^2.0.0: + version "2.2.5" + resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" + integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== + +hast-util-to-jsx-runtime@^2.0.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.2.tgz#6d11b027473e69adeaa00ca4cfb5bb68e3d282fa" + integrity sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg== + 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" + hast-util-to-text@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/hast-util-to-text/-/hast-util-to-text-2.0.0.tgz#c59afa8798145c10d40c2f34f92900f4dfc8ac69" @@ -7787,6 +8006,24 @@ hast-util-to-text@2.0.0: repeat-string "^1.0.0" unist-util-find-after "^3.0.0" +hast-util-whitespace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz#7778ed9d3c92dd9e8c5c8f648a49c21fc51cb621" + integrity sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw== + dependencies: + "@types/hast" "^3.0.0" + +hastscript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640" + integrity sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w== + 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" + he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -7815,6 +8052,16 @@ heimdalljs@^0.2.6: dependencies: rsvp "~3.2.1" +highlight.js@^10.4.1, highlight.js@~10.7.0: + version "10.7.3" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" + integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== + +highlightjs-vue@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/highlightjs-vue/-/highlightjs-vue-1.0.0.tgz#fdfe97fbea6354e70ee44e3a955875e114db086d" + integrity sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA== + history@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/history/-/history-5.0.0.tgz#0cabbb6c4bbf835addb874f8259f6d25101efd08" @@ -7822,6 +8069,13 @@ history@^5.0.0: dependencies: "@babel/runtime" "^7.7.6" +hoist-non-react-statics@^3.2.0, hoist-non-react-statics@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" @@ -7904,6 +8158,11 @@ html-parse-stringify@^3.0.1: dependencies: void-elements "3.1.0" +html-url-attributes@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/html-url-attributes/-/html-url-attributes-3.0.1.tgz#83b052cd5e437071b756cd74ae70f708870c2d87" + integrity sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ== + html-webpack-plugin@5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz#c3911936f57681c1f9f4d8b68c158cd9dfe52f50" @@ -8102,6 +8361,11 @@ humps@^2.0.1: resolved "https://registry.yarnpkg.com/humps/-/humps-2.0.1.tgz#dd02ea6081bd0568dc5d073184463957ba9ef9aa" integrity sha512-E0eIbrFWUhwfXJmsbdjRQFQPrl5pTEoKlz163j1mTqqUnU9PgR4AgB8AIITzuB3vLBdxZXyZ9TDIrwB2OASz4g== +hyphenate-style-name@^1.0.3: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz#1797bf50369588b47b72ca6d5e65374607cf4436" + integrity sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw== + i18next-browser-languagedetector@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.0.0.tgz#b6fdd9b43af67c47f2c26c9ba27710a1eaf31e2f" @@ -8261,6 +8525,11 @@ inline-style-parser@0.1.1: resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== +inline-style-parser@0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.2.4.tgz#f4af5fe72e612839fcd453d989a586566d695f22" + integrity sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q== + inquirer@^6.2.2: version "6.5.2" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" @@ -8358,6 +8627,11 @@ is-alphabetical@^1.0.0: resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== +is-alphabetical@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz#01072053ea7c1036df3c7d19a6daaec7f19e789b" + integrity sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ== + is-alphanumeric@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4" @@ -8371,6 +8645,14 @@ is-alphanumerical@^1.0.0: is-alphabetical "^1.0.0" is-decimal "^1.0.0" +is-alphanumerical@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz#7c03fbe96e3e931113e57f964b0a368cc2dfd875" + integrity sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw== + dependencies: + is-alphabetical "^2.0.0" + is-decimal "^2.0.0" + is-arguments@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" @@ -8493,6 +8775,11 @@ is-decimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== +is-decimal@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7" + integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A== + is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -8601,6 +8888,16 @@ is-hexadecimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== +is-hexadecimal@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027" + integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== + +is-in-browser@^1.0.2, is-in-browser@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" + integrity sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g== + is-inside-container@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" @@ -9591,6 +9888,140 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +jss-plugin-camel-case@10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz#27ea159bab67eb4837fa0260204eb7925d4daa1c" + integrity sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw== + dependencies: + "@babel/runtime" "^7.3.1" + hyphenate-style-name "^1.0.3" + jss "10.10.0" + +jss-plugin-compose@10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-compose/-/jss-plugin-compose-10.10.0.tgz#00d7a79adf7fcfe4927a792febdf0deceb0a7cd2" + integrity sha512-F5kgtWpI2XfZ3Z8eP78tZEYFdgTIbpA/TMuX3a8vwrNolYtN1N4qJR/Ob0LAsqIwCMLojtxN7c7Oo/+Vz6THow== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + tiny-warning "^1.0.2" + +jss-plugin-default-unit@10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz#db3925cf6a07f8e1dd459549d9c8aadff9804293" + integrity sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + +jss-plugin-expand@10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-expand/-/jss-plugin-expand-10.10.0.tgz#5debd80554174ca2d9b9e38d85d4cb6f3e0393ab" + integrity sha512-ymT62W2OyDxBxr7A6JR87vVX9vTq2ep5jZLIdUSusfBIEENLdkkc0lL/Xaq8W9s3opUq7R0sZQpzRWELrfVYzA== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + +jss-plugin-extend@10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-extend/-/jss-plugin-extend-10.10.0.tgz#94eb450847a8941777e77ea4533a579c1c578430" + integrity sha512-sKYrcMfr4xxigmIwqTjxNcHwXJIfvhvjTNxF+Tbc1NmNdyspGW47Ey6sGH8BcQ4FFQhLXctpWCQSpDwdNmXSwg== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + tiny-warning "^1.0.2" + +jss-plugin-global@10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz#1c55d3c35821fab67a538a38918292fc9c567efd" + integrity sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + +jss-plugin-nested@10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz#db872ed8925688806e77f1fc87f6e62264513219" + integrity sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + tiny-warning "^1.0.2" + +jss-plugin-props-sort@10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz#67f4dd4c70830c126f4ec49b4b37ccddb680a5d7" + integrity sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + +jss-plugin-rule-value-function@10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz#7d99e3229e78a3712f78ba50ab342e881d26a24b" + integrity sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + tiny-warning "^1.0.2" + +jss-plugin-rule-value-observable@10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-observable/-/jss-plugin-rule-value-observable-10.10.0.tgz#d17b28c4401156bbe4cd0c4a73a80aad70613e8b" + integrity sha512-ZLMaYrR3QE+vD7nl3oNXuj79VZl9Kp8/u6A1IbTPDcuOu8b56cFdWRZNZ0vNr8jHewooEeq2doy8Oxtymr2ZPA== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + symbol-observable "^1.2.0" + +jss-plugin-template@10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-template/-/jss-plugin-template-10.10.0.tgz#072cda74a94c91b02d3a895d9e2408fd978ce033" + integrity sha512-ocXZBIOJOA+jISPdsgkTs8wwpK6UbsvtZK5JI7VUggTD6LWKbtoxUzadd2TpfF+lEtlhUmMsCkTRNkITdPKa6w== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + tiny-warning "^1.0.2" + +jss-plugin-vendor-prefixer@10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz#c01428ef5a89f2b128ec0af87a314d0c767931c7" + integrity sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg== + dependencies: + "@babel/runtime" "^7.3.1" + css-vendor "^2.0.8" + jss "10.10.0" + +jss-preset-default@10.10.0, jss-preset-default@^10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-preset-default/-/jss-preset-default-10.10.0.tgz#c8209449a0f6d232526c2ba3a3a6ec69ee97e023" + integrity sha512-GL175Wt2FGhjE+f+Y3aWh+JioL06/QWFgZp53CbNNq6ZkVU0TDplD8Bxm9KnkotAYn3FlplNqoW5CjyLXcoJ7Q== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + jss-plugin-camel-case "10.10.0" + jss-plugin-compose "10.10.0" + jss-plugin-default-unit "10.10.0" + jss-plugin-expand "10.10.0" + jss-plugin-extend "10.10.0" + jss-plugin-global "10.10.0" + jss-plugin-nested "10.10.0" + jss-plugin-props-sort "10.10.0" + jss-plugin-rule-value-function "10.10.0" + jss-plugin-rule-value-observable "10.10.0" + jss-plugin-template "10.10.0" + jss-plugin-vendor-prefixer "10.10.0" + +jss@10.10.0, jss@^10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss/-/jss-10.10.0.tgz#a75cc85b0108c7ac8c7b7d296c520a3e4fbc6ccc" + integrity sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw== + dependencies: + "@babel/runtime" "^7.3.1" + csstype "^3.0.2" + is-in-browser "^1.1.3" + tiny-warning "^1.0.2" + "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" @@ -10069,6 +10500,11 @@ longest-streak@^2.0.1: resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg== +longest-streak@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.1.0.tgz#62fa67cd958742a1574af9f39866364102d90cd4" + integrity sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g== + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -10100,6 +10536,14 @@ lowercase-keys@^1.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== +lowlight@^1.17.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.20.0.tgz#ddb197d33462ad0d93bf19d17b6c301aa3941888" + integrity sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw== + dependencies: + fault "^1.0.0" + highlight.js "~10.7.0" + lru-cache@^10.2.0: version "10.2.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" @@ -10360,6 +10804,11 @@ markdown-table@^2.0.0: dependencies: repeat-string "^1.0.0" +markdown-table@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.4.tgz#fe44d6d410ff9d6f2ea1797a3f60aa4d2b631c2a" + integrity sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw== + marked@^4.0.16: version "4.3.0" resolved "https://registry.yarnpkg.com/marked/-/marked-4.3.0.tgz#796362821b019f734054582038b116481b456cf3" @@ -10399,6 +10848,149 @@ mdast-util-definitions@^3.0.0: dependencies: unist-util-visit "^2.0.0" +mdast-util-find-and-replace@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz#a6fc7b62f0994e973490e45262e4bc07607b04e0" + integrity sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA== + 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" + +mdast-util-from-markdown@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz#4850390ca7cf17413a9b9a0fbefcd1bc0eb4160a" + integrity sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA== + 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" + +mdast-util-gfm-autolink-literal@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz#abd557630337bd30a6d5a4bd8252e1c2dc0875d5" + integrity sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ== + 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" + +mdast-util-gfm-footnote@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz#25a1753c7d16db8bfd53cd84fe50562bd1e6d6a9" + integrity sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ== + 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" + +mdast-util-gfm-strikethrough@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz#d44ef9e8ed283ac8c1165ab0d0dfd058c2764c16" + integrity sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-gfm-table@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz#7a435fb6223a72b0862b33afbd712b6dae878d38" + integrity sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg== + 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" + +mdast-util-gfm-task-list-item@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz#e68095d2f8a4303ef24094ab642e1047b991a936" + integrity sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ== + dependencies: + "@types/mdast" "^4.0.0" + devlop "^1.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-gfm@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz#3f2aecc879785c3cb6a81ff3a243dc11eca61095" + integrity sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw== + 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" + +mdast-util-mdx-expression@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz#43f0abac9adc756e2086f63822a38c8d3c3a5096" + integrity sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ== + 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" + +mdast-util-mdx-jsx@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz#76b957b3da18ebcfd0de3a9b4451dcd6fdec2320" + integrity sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ== + 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-stringify-position "^4.0.0" + vfile-message "^4.0.0" + +mdast-util-mdxjs-esm@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz#019cfbe757ad62dd557db35a695e7314bcc9fa97" + integrity sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg== + 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" + +mdast-util-phrasing@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz#7cc0a8dec30eaf04b7b1a9661a92adb3382aa6e3" + integrity sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w== + dependencies: + "@types/mdast" "^4.0.0" + unist-util-is "^6.0.0" + mdast-util-to-hast@9.1.1: version "9.1.1" resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-9.1.1.tgz#953ff12aed57464b11d7e5549a45913e561909fa" @@ -10413,6 +11005,43 @@ mdast-util-to-hast@9.1.1: unist-util-position "^3.0.0" unist-util-visit "^2.0.0" +mdast-util-to-hast@^13.0.0: + version "13.2.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz#5ca58e5b921cc0a3ded1bc02eed79a4fe4fe41f4" + integrity sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA== + 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" + +mdast-util-to-markdown@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz#f910ffe60897f04bb4b7e7ee434486f76288361b" + integrity sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA== + 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-classify-character "^2.0.0" + micromark-util-decode-string "^2.0.0" + unist-util-visit "^5.0.0" + zwitch "^2.0.0" + +mdast-util-to-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz#7a5121475556a04e7eddeb67b264aae79d312814" + integrity sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg== + dependencies: + "@types/mdast" "^4.0.0" + mdurl@1.0.1, mdurl@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" @@ -10462,6 +11091,279 @@ methods@~1.1.0, methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= +micromark-core-commonmark@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz#6a45bbb139e126b3f8b361a10711ccc7c6e15e93" + integrity sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w== + 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" + +micromark-extension-gfm-autolink-literal@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz#6286aee9686c4462c1e3552a9d505feddceeb935" + integrity sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw== + 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" + +micromark-extension-gfm-footnote@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz#4dab56d4e398b9853f6fe4efac4fc9361f3e0750" + integrity sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw== + 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" + +micromark-extension-gfm-strikethrough@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz#86106df8b3a692b5f6a92280d3879be6be46d923" + integrity sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw== + 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" + +micromark-extension-gfm-table@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz#5cadedfbb29fca7abf752447967003dc3b6583c9" + integrity sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g== + 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" + +micromark-extension-gfm-tagfilter@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz#f26d8a7807b5985fba13cf61465b58ca5ff7dc57" + integrity sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg== + dependencies: + micromark-util-types "^2.0.0" + +micromark-extension-gfm-task-list-item@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz#bcc34d805639829990ec175c3eea12bb5b781f2c" + integrity sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw== + 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" + +micromark-extension-gfm@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz#3e13376ab95dd7a5cfd0e29560dfe999657b3c5b" + integrity sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w== + 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" + +micromark-factory-destination@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz#8fef8e0f7081f0474fbdd92deb50c990a0264639" + integrity sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-label@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz#5267efa97f1e5254efc7f20b459a38cb21058ba1" + integrity sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg== + dependencies: + devlop "^1.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-space@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz#36d0212e962b2b3121f8525fc7a3c7c029f334fc" + integrity sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-title@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz#237e4aa5d58a95863f01032d9ee9b090f1de6e94" + integrity sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw== + 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" + +micromark-factory-whitespace@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz#06b26b2983c4d27bfcc657b33e25134d4868b0b1" + integrity sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ== + 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" + +micromark-util-character@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-2.1.1.tgz#2f987831a40d4c510ac261e89852c4e9703ccda6" + integrity sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q== + dependencies: + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-chunked@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz#47fbcd93471a3fccab86cff03847fc3552db1051" + integrity sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA== + dependencies: + micromark-util-symbol "^2.0.0" + +micromark-util-classify-character@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz#d399faf9c45ca14c8b4be98b1ea481bced87b629" + integrity sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-combine-extensions@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz#2a0f490ab08bff5cc2fd5eec6dd0ca04f89b30a9" + integrity sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg== + dependencies: + micromark-util-chunked "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-decode-numeric-character-reference@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz#fcf15b660979388e6f118cdb6bf7d79d73d26fe5" + integrity sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw== + dependencies: + micromark-util-symbol "^2.0.0" + +micromark-util-decode-string@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz#6cb99582e5d271e84efca8e61a807994d7161eb2" + integrity sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ== + 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" + +micromark-util-encode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz#0d51d1c095551cfaac368326963cf55f15f540b8" + integrity sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw== + +micromark-util-html-tag-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz#e40403096481986b41c106627f98f72d4d10b825" + integrity sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA== + +micromark-util-normalize-identifier@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz#c30d77b2e832acf6526f8bf1aa47bc9c9438c16d" + integrity sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q== + dependencies: + micromark-util-symbol "^2.0.0" + +micromark-util-resolve-all@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz#e1a2d62cdd237230a2ae11839027b19381e31e8b" + integrity sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg== + dependencies: + micromark-util-types "^2.0.0" + +micromark-util-sanitize-uri@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz#ab89789b818a58752b73d6b55238621b7faa8fd7" + integrity sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-encode "^2.0.0" + micromark-util-symbol "^2.0.0" + +micromark-util-subtokenize@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.3.tgz#70ffb99a454bd8c913c8b709c3dc97baefb65f96" + integrity sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg== + dependencies: + devlop "^1.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-symbol@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz#e5da494e8eb2b071a0d08fb34f6cefec6c0a19b8" + integrity sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q== + +micromark-util-types@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.1.tgz#a3edfda3022c6c6b55bfb049ef5b75d70af50709" + integrity sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ== + +micromark@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-4.0.1.tgz#294c2f12364759e5f9e925a767ae3dfde72223ff" + integrity sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw== + 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" + micromatch@^2.1.5, micromatch@^2.3.11: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" @@ -10726,6 +11628,16 @@ morgan@^1.6.1: on-finished "~2.3.0" on-headers "~1.0.2" +motion-dom@^11.13.0: + version "11.13.0" + resolved "https://registry.yarnpkg.com/motion-dom/-/motion-dom-11.13.0.tgz#a8f86b3aedb55598a8e3dd4114f1c3347153baf2" + integrity sha512-Oc1MLGJQ6nrvXccXA89lXtOqFyBmvHtaDcTRGT66o8Czl7nuA8BeHAd9MQV1pQKX0d2RHFBFaw5g3k23hQJt0w== + +motion-utils@^11.13.0: + version "11.13.0" + resolved "https://registry.yarnpkg.com/motion-utils/-/motion-utils-11.13.0.tgz#e65fab5e26a1da3b18b4b4d1f3d0067977ccfd4a" + integrity sha512-lq6TzXkH5c/ysJQBxgLXgM01qwBH1b4goTPh57VvZWJbVJZF/0SB31UWEn4EIqbVPf3au88n2rvK17SpDTja1A== + move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -11551,6 +12463,20 @@ parse-entities@2.0.0, parse-entities@^2.0.0: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" +parse-entities@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-4.0.1.tgz#4e2a01111fb1c986549b944af39eeda258fc9e4e" + integrity sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w== + 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" + parse-git-config@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/parse-git-config/-/parse-git-config-0.2.0.tgz#272833fdd15fea146fb75d336d236b963b6ff706" @@ -11651,7 +12577,7 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -path-browserify@1.0.1: +path-browserify@1.0.1, path-browserify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== @@ -12027,6 +12953,16 @@ pretty-format@^26.0.0, pretty-format@^26.6.2: ansi-styles "^4.0.0" react-is "^17.0.1" +prismjs@^1.27.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" + integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== + +prismjs@~1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" + integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== + private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -12074,7 +13010,7 @@ prop-types-exact@^1.2.0: object.assign "^4.1.0" reflect.ownkeys "^0.2.0" -prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: +prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -12083,13 +13019,18 @@ prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: object-assign "^4.1.1" react-is "^16.13.1" -property-information@^5.3.0: +property-information@^5.0.0, property-information@^5.3.0: version "5.6.0" resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA== dependencies: xtend "^4.0.0" +property-information@^6.0.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.5.0.tgz#6212fbb52ba757e92ef4fb9d657563b933b7ffec" + integrity sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig== + protoduck@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-4.0.0.tgz#fe4874d8c7913366cfd9ead12453a22cd3657f8e" @@ -12393,6 +13334,11 @@ react-axe@^3.5.4: axe-core "^3.5.0" requestidlecallback "^0.3.0" +react-display-name@^0.2.4: + version "0.2.5" + resolved "https://registry.yarnpkg.com/react-display-name/-/react-display-name-0.2.5.tgz#304c7cbfb59ee40389d436e1a822c17fe27936c6" + integrity sha512-I+vcaK9t4+kypiSgaiVWAipqHRXYmZIuAiS8vzFvXHHXVigg/sMKwlRgLy6LH2i3rmP+0Vzfl5lFsFRwF1r3pg== + react-docgen-typescript-loader@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/react-docgen-typescript-loader/-/react-docgen-typescript-loader-3.7.2.tgz#45cb2305652c0602767242a8700ad1ebd66bbbbd" @@ -12451,7 +13397,7 @@ react-i18next@^11.7.3: "@babel/runtime" "^7.14.5" html-parse-stringify "^3.0.1" -react-is@^16.12.0, react-is@^16.13.1, react-is@^16.8.6: +react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.6: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -12461,11 +13407,44 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-jss@^10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/react-jss/-/react-jss-10.10.0.tgz#d08ab3257b0eed01e15d6d8275840055c279b0da" + integrity sha512-WLiq84UYWqNBF6579/uprcIUnM1TSywYq6AIjKTTTG5ziJl9Uy+pwuvpN3apuyVwflMbD60PraeTKT7uWH9XEQ== + dependencies: + "@babel/runtime" "^7.3.1" + "@emotion/is-prop-valid" "^0.7.3" + css-jss "10.10.0" + hoist-non-react-statics "^3.2.0" + is-in-browser "^1.1.3" + jss "10.10.0" + jss-preset-default "10.10.0" + prop-types "^15.6.0" + shallow-equal "^1.2.0" + theming "^3.3.0" + tiny-warning "^1.0.2" + react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== +react-markdown@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-9.0.1.tgz#c05ddbff67fd3b3f839f8c648e6fb35d022397d1" + integrity sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg== + dependencies: + "@types/hast" "^3.0.0" + devlop "^1.0.0" + hast-util-to-jsx-runtime "^2.0.0" + html-url-attributes "^3.0.0" + mdast-util-to-hast "^13.0.0" + remark-parse "^11.0.0" + remark-rehype "^11.0.0" + unified "^11.0.0" + unist-util-visit "^5.0.0" + vfile "^6.0.0" + react-monaco-editor@0.51.0: version "0.51.0" resolved "https://registry.yarnpkg.com/react-monaco-editor/-/react-monaco-editor-0.51.0.tgz#68d6afc912f7fcb7782e57b39889a5fd75fc0ceb" @@ -12493,6 +13472,18 @@ react-ssr-prepass@1.5.0: resolved "https://registry.yarnpkg.com/react-ssr-prepass/-/react-ssr-prepass-1.5.0.tgz#bc4ca7fcb52365e6aea11cc254a3d1bdcbd030c5" integrity sha512-yFNHrlVEReVYKsLI5lF05tZoHveA5pGzjFbFJY/3pOqqjGOmMmqx83N4hIjN2n6E1AOa+eQEUxs3CgRnPmT0RQ== +react-syntax-highlighter@^15.5.0: + version "15.6.1" + resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-15.6.1.tgz#fa567cb0a9f96be7bbccf2c13a3c4b5657d9543e" + integrity sha512-OqJ2/vL7lEeV5zTJyG7kmARppUjiB9h9udl4qHQjjgEos66z00Ia0OckwYfRxCSFrW8RJIBnsBwQsHZbVPspqg== + dependencies: + "@babel/runtime" "^7.3.1" + highlight.js "^10.4.1" + highlightjs-vue "^1.0.0" + lowlight "^1.17.0" + prismjs "^1.27.0" + refractor "^3.6.0" + react-test-renderer@^16.0.0-0: version "16.14.0" resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.14.0.tgz#e98360087348e260c56d4fe2315e970480c228ae" @@ -12503,6 +13494,11 @@ react-test-renderer@^16.0.0-0: react-is "^16.8.6" scheduler "^0.19.1" +react-textarea-auto-witdth-height@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/react-textarea-auto-witdth-height/-/react-textarea-auto-witdth-height-1.0.3.tgz#9f3bf76dca56b3dd057fc1139ad955a81224460b" + integrity sha512-12NbXe+OBmwv1VCMdOKmjrHwLHrsVbOHn2Wm/xER6jtvARj0bX73skhJnywhhbuQ2FfX9Y57AkpnkQTJbwwBxA== + react@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" @@ -12637,6 +13633,15 @@ reflect.ownkeys@^0.2.0: resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA= +refractor@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.6.0.tgz#ac318f5a0715ead790fcfb0c71f4dd83d977935a" + integrity sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA== + dependencies: + hastscript "^6.0.0" + parse-entities "^2.0.0" + prismjs "~1.27.0" + regenerate-unicode-properties@^10.1.0: version "10.1.1" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" @@ -12759,6 +13764,18 @@ remark-frontmatter@2.0.0: dependencies: fault "^1.0.1" +remark-gfm@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-4.0.0.tgz#aea777f0744701aa288b67d28c43565c7e8c35de" + integrity sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA== + 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" + remark-mdx@2.0.0-next.8: version "2.0.0-next.8" resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-2.0.0-next.8.tgz#db1c3cbc606ea0d01526242199bb134d99020363" @@ -12803,6 +13820,27 @@ remark-parse@8.0.3: vfile-location "^3.0.0" xtend "^4.0.1" +remark-parse@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-11.0.0.tgz#aa60743fcb37ebf6b069204eb4da304e40db45a1" + integrity sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-from-markdown "^2.0.0" + micromark-util-types "^2.0.0" + unified "^11.0.0" + +remark-rehype@^11.0.0: + version "11.1.1" + resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-11.1.1.tgz#f864dd2947889a11997c0a2667cd6b38f685bca7" + integrity sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ== + 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" + remark-squeeze-paragraphs@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz#76eb0e085295131c84748c8e43810159c5653ead" @@ -12810,6 +13848,15 @@ remark-squeeze-paragraphs@4.0.0: dependencies: mdast-squeeze-paragraphs "^4.0.0" +remark-stringify@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-11.0.0.tgz#4c5b01dd711c269df1aaae11743eb7e2e7636fd3" + integrity sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw== + dependencies: + "@types/mdast" "^4.0.0" + mdast-util-to-markdown "^2.0.0" + unified "^11.0.0" + remark-stringify@^8.1.0: version "8.1.1" resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-8.1.1.tgz#e2a9dc7a7bf44e46a155ec78996db896780d8ce5" @@ -13517,6 +14564,11 @@ shallow-clone@^3.0.0: dependencies: kind-of "^6.0.2" +shallow-equal@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/shallow-equal/-/shallow-equal-1.2.1.tgz#4c16abfa56043aa20d050324efa68940b0da79da" + integrity sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA== + sharp@0.32.6: version "0.32.6" resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.32.6.tgz#6ad30c0b7cd910df65d5f355f774aa4fce45732a" @@ -13819,6 +14871,11 @@ space-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== +space-separated-tokens@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" + integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== + spawn-command@^0.0.2-1: version "0.0.2-1" resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" @@ -14177,6 +15234,14 @@ stringify-entities@^3.0.0, stringify-entities@^3.0.1: character-entities-legacy "^1.0.0" xtend "^4.0.0" +stringify-entities@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.4.tgz#b3b79ef5f277cc4ac73caeb0236c5ba939b3a4f3" + integrity sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg== + dependencies: + character-entities-html4 "^2.0.0" + character-entities-legacy "^3.0.0" + strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -14261,6 +15326,13 @@ style-to-object@0.3.0, style-to-object@^0.3.0: dependencies: inline-style-parser "0.1.1" +style-to-object@^1.0.0: + version "1.0.8" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-1.0.8.tgz#67a29bca47eaa587db18118d68f9d95955e81292" + integrity sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g== + dependencies: + inline-style-parser "0.2.4" + subarg@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" @@ -14321,6 +15393,11 @@ swap-case@^1.1.0: lower-case "^1.1.1" upper-case "^1.1.1" +symbol-observable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + symbol-tree@^3.2.1, symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -14524,6 +15601,16 @@ textextensions@^2.5.0: resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.6.0.tgz#d7e4ab13fe54e32e08873be40d51b74229b00fc4" integrity sha512-49WtAWS+tcsy93dRt6P0P3AMD2m5PvXRhuEA0kaXos5ZLlujtYmpmFsB+QvWUSxE1ZsstmYXfQ7L40+EcQgpAQ== +theming@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/theming/-/theming-3.3.0.tgz#dacabf04aa689edde35f1e1c117ec6de73fbf870" + integrity sha512-u6l4qTJRDaWZsqa8JugaNt7Xd8PPl9+gonZaIe28vAhqgHMIG/DOyFPqiKN/gQLQYj05tHv+YQdNILL4zoiAVA== + dependencies: + hoist-non-react-statics "^3.3.0" + prop-types "^15.5.8" + react-display-name "^0.2.4" + tiny-warning "^1.0.2" + thenify-all@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" @@ -14566,6 +15653,11 @@ timed-out@^4.0.0: resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== +tiny-warning@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + title-case@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa" @@ -14702,6 +15794,11 @@ tree-kill@^1.2.2: resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== +trim-lines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" + integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== + trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" @@ -14722,6 +15819,11 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== +trough@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/trough/-/trough-2.2.0.tgz#94a60bd6bd375c152c1df911a4b11d5b0256f50f" + integrity sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw== + ts-jest@21.x: version "21.2.4" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-21.2.4.tgz#8fbcfbfbf0c58cced10dcc34a5190acc8c5312ef" @@ -14996,6 +16098,19 @@ unified@9.1.0: trough "^1.0.0" vfile "^4.0.0" +unified@^11.0.0: + version "11.0.5" + resolved "https://registry.yarnpkg.com/unified/-/unified-11.0.5.tgz#f66677610a5c0a9ee90cab2b8d4d66037026d9e1" + integrity sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA== + 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" + union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -15049,11 +16164,25 @@ unist-util-is@^4.0.0: resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797" integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg== +unist-util-is@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424" + integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== + dependencies: + "@types/unist" "^3.0.0" + unist-util-position@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47" integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA== +unist-util-position@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-5.0.0.tgz#678f20ab5ca1207a97d7ea8a388373c9cf896be4" + integrity sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA== + dependencies: + "@types/unist" "^3.0.0" + unist-util-remove-position@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz#5d19ca79fdba712301999b2b73553ca8f3b352cc" @@ -15082,6 +16211,13 @@ unist-util-stringify-position@^2.0.0, unist-util-stringify-position@^2.0.3: dependencies: "@types/unist" "^2.0.2" +unist-util-stringify-position@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz#449c6e21a880e0855bf5aabadeb3a740314abac2" + integrity sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ== + dependencies: + "@types/unist" "^3.0.0" + unist-util-visit-parents@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" @@ -15090,6 +16226,14 @@ unist-util-visit-parents@^3.0.0: "@types/unist" "^2.0.0" unist-util-is "^4.0.0" +unist-util-visit-parents@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815" + integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== + dependencies: + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" + unist-util-visit@2.0.3, unist-util-visit@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" @@ -15099,6 +16243,15 @@ unist-util-visit@2.0.3, unist-util-visit@^2.0.0: unist-util-is "^4.0.0" unist-util-visit-parents "^3.0.0" +unist-util-visit@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6" + integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg== + dependencies: + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" + unist-util-visit-parents "^6.0.0" + universalify@^0.1.0, universalify@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -15304,6 +16457,14 @@ vfile-message@^2.0.0: "@types/unist" "^2.0.0" unist-util-stringify-position "^2.0.0" +vfile-message@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.2.tgz#c883c9f677c72c166362fd635f21fc165a7d1181" + integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw== + dependencies: + "@types/unist" "^3.0.0" + unist-util-stringify-position "^4.0.0" + vfile-reporter@6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/vfile-reporter/-/vfile-reporter-6.0.1.tgz#45d4dc11df2e312196ea2ceb95e42a67fc8ce814" @@ -15336,6 +16497,14 @@ vfile@^4.0.0: unist-util-stringify-position "^2.0.0" vfile-message "^2.0.0" +vfile@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-6.0.3.tgz#3652ab1c496531852bf55a6bac57af981ebc38ab" + integrity sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q== + dependencies: + "@types/unist" "^3.0.0" + vfile-message "^4.0.0" + victory-area@37.3.2: version "37.3.2" resolved "https://registry.yarnpkg.com/victory-area/-/victory-area-37.3.2.tgz#390f494cb70b45cc7403a0670f46348b89f4b7c2" @@ -16488,3 +17657,8 @@ zod@3.23.8: version "3.23.8" resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d" integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g== + +zwitch@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" + integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A== From f778dc16416f10f8a05b9e52c46e09a43c2a7632 Mon Sep 17 00:00:00 2001 From: Katie McFaul Date: Wed, 11 Dec 2024 15:31:29 -0500 Subject: [PATCH 3/5] more chatbot updates --- packages/dev/src/AppTabs.tsx | 52 +++++++++++++++++++++++++++++------- 1 file changed, 42 insertions(+), 10 deletions(-) diff --git a/packages/dev/src/AppTabs.tsx b/packages/dev/src/AppTabs.tsx index 58db6643..0480eea6 100644 --- a/packages/dev/src/AppTabs.tsx +++ b/packages/dev/src/AppTabs.tsx @@ -16,6 +16,8 @@ import { DrawerPanelBody, DropdownList, DropdownItem, + TabContent, + TabContentBody, } from '@patternfly/react-core'; import { LoadingBox, @@ -102,6 +104,7 @@ const App: React.FC = ({ children, showCardFooters }) => { if (activeQuickStartID !== quickStartId) { // activate setActiveQuickStartID(quickStartId); + setActiveTabKey(1); // optionally add the query param withQueryParams && setQueryArgument(QUICKSTART_ID_FILTER_KEY, quickStartId); } else { @@ -133,7 +136,7 @@ const App: React.FC = ({ children, showCardFooters }) => { const onModalCancel = () => setModalOpen(false); const [isDrawerOpen, setIsDrawerOpen] = React.useState(false); - const [activeTabKey, setActiveTabKey] = React.useState(0); + const [activeTabKey, setActiveTabKey] = React.useState(1); // Toggle currently active tab const handleTabClick = ( event: React.MouseEvent | React.KeyboardEvent | MouseEvent, @@ -305,6 +308,9 @@ const App: React.FC = ({ children, showCardFooters }) => { ); // Chatbot + const contentRef1 = React.createRef(); + const contentRef2 = React.createRef(); + const panelContent = ( @@ -325,19 +331,45 @@ const App: React.FC = ({ children, showCardFooters }) => { > {activeQuickStartID !== '' && ( Quickstart} aria-label="Default content - users" - style={{ flex: '1 1', display: 'flex', flexDirection: 'column' }} // not currently spread to tab - react issue opened https://github.com/patternfly/patternfly-react/issues/11342 - > - - + tabContentId="tab1SectionBodyPadding" + tabContentRef={contentRef1} + /> )} - Chatbot}> - {chatbot} - + Chatbot} + tabContentId="tab2SectionBodyPadding" + tabContentRef={contentRef2} + /> + <> + {activeTabKey === 1 && ( + + + + + + )} + {activeTabKey === 2 && ( + + {chatbot} + + )} + ); @@ -363,7 +395,7 @@ const App: React.FC = ({ children, showCardFooters }) => { toggleQuickStart('getting-started-with-quick-starts'); }} > - Toggle QS + Toggle QS & set tab to QS {children} From a7fc4815591c29173b21da82414fb46874e56190 Mon Sep 17 00:00:00 2001 From: Katie McFaul Date: Wed, 11 Dec 2024 17:56:34 -0500 Subject: [PATCH 4/5] more chatbot support --- packages/dev/src/AppTabs.tsx | 136 +- packages/dev/src/AppTabsStrings.tsx | 6 +- .../src/assets/images/patternfly_avatar.jpg | Bin 0 -> 51083 bytes .../src/assets/images/patternfly_avatar.svg | 1904 +++++++++++++++++ .../dev/src/assets/images/user_avatar.svg | 18 + 5 files changed, 2002 insertions(+), 62 deletions(-) create mode 100644 packages/dev/src/assets/images/patternfly_avatar.jpg create mode 100644 packages/dev/src/assets/images/patternfly_avatar.svg create mode 100644 packages/dev/src/assets/images/user_avatar.svg diff --git a/packages/dev/src/AppTabs.tsx b/packages/dev/src/AppTabs.tsx index 0480eea6..e61973d5 100644 --- a/packages/dev/src/AppTabs.tsx +++ b/packages/dev/src/AppTabs.tsx @@ -24,12 +24,7 @@ import { QuickStartContainer, QuickStartContainerProps, QuickStartController, - QuickStartCloseModal, - QuickStartStatus, useLocalStorage, - setQueryArgument, - removeQueryArgument, - QUICKSTART_ID_FILTER_KEY, } from '@patternfly/quickstarts'; import { allQuickStarts as yamlQuickStarts } from './quickstarts-data/quick-start-test-data'; import React from 'react'; @@ -50,6 +45,9 @@ import ChatbotHeader, { ChatbotHeaderSelectorDropdown, } from '@patternfly/chatbot/dist/dynamic/ChatbotHeader'; +import userAvatar from './assets/images/user_avatar.svg'; +import pfAvatar from './assets/images/patternfly_avatar.svg'; + import { welcomePrompts, footnoteProps, initialMessages } from './AppTabsStrings'; interface AppProps { @@ -62,9 +60,18 @@ const App: React.FC = ({ children, showCardFooters }) => { const [allQuickStartStates, setAllQuickStartStates] = useLocalStorage('quickstarts', {}); const language = localStorage.getItem('bridge/language') || 'en'; const resourceBundle = i18n.getResourceBundle(language, 'quickstart'); + const [isDrawerOpen, setIsDrawerOpen] = React.useState(false); // eslint-disable-next-line no-console - React.useEffect(() => console.log(activeQuickStartID), [activeQuickStartID]); + React.useEffect(() => { + if (!isDrawerOpen && activeQuickStartID !== '') { + setActiveTabKey(1); + setIsDrawerOpen(!isDrawerOpen); + } + + console.log(activeQuickStartID); + }, [activeQuickStartID]); + React.useEffect(() => { // callback on state change // eslint-disable-next-line no-console @@ -100,43 +107,42 @@ const App: React.FC = ({ children, showCardFooters }) => { }, }; - const toggleQuickStart = (quickStartId: string) => { - if (activeQuickStartID !== quickStartId) { - // activate - setActiveQuickStartID(quickStartId); - setActiveTabKey(1); - // optionally add the query param - withQueryParams && setQueryArgument(QUICKSTART_ID_FILTER_KEY, quickStartId); - } else { - // deactivate - setActiveQuickStartID(''); - // optionally remove the query param - withQueryParams && removeQueryArgument(QUICKSTART_ID_FILTER_KEY); - } - }; + // const toggleQuickStart = (quickStartId: string) => { + // if (activeQuickStartID !== quickStartId) { + // // activate + // setActiveQuickStartID(quickStartId); + // setActiveTabKey(1); + // // optionally add the query param + // withQueryParams && setQueryArgument(QUICKSTART_ID_FILTER_KEY, quickStartId); + // } else { + // // deactivate + // setActiveQuickStartID(''); + // // optionally remove the query param + // withQueryParams && removeQueryArgument(QUICKSTART_ID_FILTER_KEY); + // } + // }; - const [modalOpen, setModalOpen] = React.useState(false); - const onClose = () => { - setActiveQuickStartID(''); - setIsDrawerOpen(false); - }; - const handleClose = (activeQuickStartStatus: string | number) => { - // need to hook up to modal close button - if (activeQuickStartStatus === QuickStartStatus.IN_PROGRESS) { - setModalOpen(true); - } else { - onClose(); - } - onClose(); - }; - const onModalConfirm = () => { - setModalOpen(false); - onClose(); - }; - const onModalCancel = () => setModalOpen(false); + // const [modalOpen, setModalOpen] = React.useState(false); + // const onClose = () => { + // setActiveQuickStartID(''); + // setIsDrawerOpen(false); + // }; + // const handleClose = (activeQuickStartStatus: string | number) => { + // // need to hook up to modal close button + // if (activeQuickStartStatus === QuickStartStatus.IN_PROGRESS) { + // setModalOpen(true); + // } else { + // onClose(); + // } + // onClose(); + // }; + // const onModalConfirm = () => { + // setModalOpen(false); + // onClose(); + // }; + // const onModalCancel = () => setModalOpen(false); - const [isDrawerOpen, setIsDrawerOpen] = React.useState(false); - const [activeTabKey, setActiveTabKey] = React.useState(1); + const [activeTabKey, setActiveTabKey] = React.useState(2); // Toggle currently active tab const handleTabClick = ( event: React.MouseEvent | React.KeyboardEvent | MouseEvent, @@ -145,13 +151,6 @@ const App: React.FC = ({ children, showCardFooters }) => { setActiveTabKey(tabIndex); }; - // needed for QuickStartController and metadata filling out - // we're basically rendering the QS on the user code opposed to QuickStartPanelContent - const quickStart = yamlQuickStarts.find((qs) => qs.metadata.name === activeQuickStartID); - const nextQuickStart = yamlQuickStarts.filter((qs) => - quickStart?.spec.nextQuickStart?.includes(qs.metadata.name), - ); - // Chatbot const [messages, setMessages] = React.useState(initialMessages); const [selectedModel, setSelectedModel] = React.useState('Granite 7B'); @@ -195,7 +194,7 @@ const App: React.FC = ({ children, showCardFooters }) => { role: 'user', content: message, name: 'User', - avatar: null, + avatar: userAvatar, timestamp: date.toLocaleString(), avatarProps: { isBordered: true }, }); @@ -204,7 +203,7 @@ const App: React.FC = ({ children, showCardFooters }) => { role: 'bot', content: 'API response goes here', name: 'Bot', - avatar: null, + avatar: pfAvatar, isLoading: true, timestamp: date.toLocaleString(), }); @@ -224,7 +223,7 @@ const App: React.FC = ({ children, showCardFooters }) => { role: 'bot', content: 'API response goes here', name: 'Bot', - avatar: null, + avatar: pfAvatar, isLoading: false, actions: { // eslint-disable-next-line no-console @@ -239,6 +238,13 @@ const App: React.FC = ({ children, showCardFooters }) => { listen: { onClick: () => console.log('Listen') }, }, timestamp: date.toLocaleString(), + quickStarts: { + quickStart: yamlQuickStarts[0], + onFooterClick: (id: string) => { + setActiveQuickStartID(id); + setActiveTabKey(1); + }, + }, }); setMessages(loadedMessages); // make announcement to assistive devices that new message has loaded @@ -311,6 +317,13 @@ const App: React.FC = ({ children, showCardFooters }) => { const contentRef1 = React.createRef(); const contentRef2 = React.createRef(); + // needed for QuickStartController and metadata filling out + // we're basically rendering the QS on the user code opposed to QuickStartPanelContent + const quickStart = yamlQuickStarts.find((qs) => qs.metadata.name === activeQuickStartID); + const nextQuickStart = yamlQuickStarts.filter((qs) => + quickStart?.spec.nextQuickStart?.includes(qs.metadata.name), + ); + const panelContent = ( @@ -347,14 +360,14 @@ const App: React.FC = ({ children, showCardFooters }) => { /> <> - {activeTabKey === 1 && ( + {activeTabKey === 1 && activeQuickStartID !== '' && ( - + @@ -366,7 +379,9 @@ const App: React.FC = ({ children, showCardFooters }) => { ref={contentRef2} style={{ flex: '1 1', display: 'flex', flexDirection: 'column' }} > - {chatbot} + + {chatbot} + )} @@ -384,29 +399,30 @@ const App: React.FC = ({ children, showCardFooters }) => { - + */} {children} - + /> */} ); diff --git a/packages/dev/src/AppTabsStrings.tsx b/packages/dev/src/AppTabsStrings.tsx index 0e90a7c2..d2657b0d 100644 --- a/packages/dev/src/AppTabsStrings.tsx +++ b/packages/dev/src/AppTabsStrings.tsx @@ -1,4 +1,6 @@ import { MessageProps } from '@patternfly/chatbot/dist/dynamic/Message'; +import userAvatar from './assets/images/user_avatar.svg'; +import pfAvatar from './assets/images/patternfly_avatar.svg'; export const footnoteProps = { label: 'Lightspeed uses AI. Check for mistakes.', @@ -68,7 +70,7 @@ export const initialMessages: MessageProps[] = [ role: 'user', content: 'Hello, can you give me an example of what you can do?', name: 'User', - avatar: null as any, + avatar: userAvatar, timestamp: date.toLocaleString(), avatarProps: { isBordered: true }, }, @@ -77,7 +79,7 @@ export const initialMessages: MessageProps[] = [ role: 'bot', content: markdown, name: 'Bot', - avatar: null as any, + avatar: pfAvatar, timestamp: date.toLocaleString(), actions: { // eslint-disable-next-line no-console diff --git a/packages/dev/src/assets/images/patternfly_avatar.jpg b/packages/dev/src/assets/images/patternfly_avatar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c292f6edceafc148b1807959332efbb4084a2225 GIT binary patch literal 51083 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 JL2N$;{tNwybie=r literal 0 HcmV?d00001 diff --git a/packages/dev/src/assets/images/patternfly_avatar.svg b/packages/dev/src/assets/images/patternfly_avatar.svg new file mode 100644 index 00000000..ba77d7c5 --- /dev/null +++ b/packages/dev/src/assets/images/patternfly_avatar.svg @@ -0,0 +1,1904 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/dev/src/assets/images/user_avatar.svg b/packages/dev/src/assets/images/user_avatar.svg new file mode 100644 index 00000000..73726f9b --- /dev/null +++ b/packages/dev/src/assets/images/user_avatar.svg @@ -0,0 +1,18 @@ + + + + + + + + + + From 80cc3d0eee690cc552cd17a0c328ebc6cc51b6c3 Mon Sep 17 00:00:00 2001 From: Katie McFaul Date: Wed, 11 Dec 2024 17:56:59 -0500 Subject: [PATCH 5/5] controller updates --- packages/module/src/QuickStartController.tsx | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/module/src/QuickStartController.tsx b/packages/module/src/QuickStartController.tsx index 8caaa67f..15697e0c 100644 --- a/packages/module/src/QuickStartController.tsx +++ b/packages/module/src/QuickStartController.tsx @@ -1,7 +1,11 @@ import * as React from 'react'; import QuickStartContent from './controller/QuickStartContent'; import QuickStartFooter from './controller/QuickStartFooter'; -import { QuickStartContext, QuickStartContextValues } from './utils/quick-start-context'; +import { + getDefaultQuickStartState, + QuickStartContext, + QuickStartContextValues, +} from './utils/quick-start-context'; import { QuickStart, QuickStartStatus, QuickStartTaskStatus } from './utils/quick-start-types'; interface QuickStartControllerProps { @@ -35,6 +39,9 @@ export const QuickStartController: React.FC = ({ } = quickStart; const totalTasks = tasks?.length; const { + activeQuickStartID, + allQuickStartStates, + setAllQuickStartStates, activeQuickStartState, setActiveQuickStart, setQuickStartTaskNumber, @@ -42,6 +49,16 @@ export const QuickStartController: React.FC = ({ nextStep, previousStep, } = React.useContext(QuickStartContext); + React.useEffect(() => { + // If activeQuickStartID was changed through prop from QuickStartContainer, need to init the state if it does not exist yet + if (activeQuickStartID && !allQuickStartStates[activeQuickStartID]) { + setAllQuickStartStates({ + ...allQuickStartStates, + [activeQuickStartID]: getDefaultQuickStartState(), + }); + } + }, [activeQuickStartID, allQuickStartStates, setAllQuickStartStates]); + const status = activeQuickStartState?.status as QuickStartStatus; const taskNumber = activeQuickStartState?.taskNumber as number; const allTaskStatuses = tasks.map(