diff --git a/src/ui/package.json b/src/ui/package.json index 126311d0..43316da1 100644 --- a/src/ui/package.json +++ b/src/ui/package.json @@ -28,7 +28,6 @@ "lodash-es": "^4.17.15", "lodash.isequal": "^4.5.0", "material-css": "^0.7.0", - "sass": "1.80.3", "plotly.js": "^2.11.1", "plotly.js-cartesian-dist-min": "^2.11.1", "prop-types": "^15.7.2", @@ -42,7 +41,7 @@ "react-i18next": "^11.8.9", "react-images-uploading": "^3.1.2", "react-loader-spinner": "^4.0.0", - "react-markdown": "^5.0.3", + "react-markdown": "8.0.7", "react-plotly.js": "^2.4.0", "react-redux": "^7.1.3", "react-router": "^5.2.0", @@ -56,6 +55,7 @@ "redux-promise-middleware": "^6.1.2", "redux-thunk": "^2.3.0", "regenerator-runtime": "^0.13.3", + "sass": "1.80.3", "start-server-and-test": "^1.11.0", "uuid": "^8.3.2", "wavefile": "^11.0.0" @@ -136,7 +136,6 @@ "cyheadless": "./node_modules/.bin/cypress run --headless --browser chrome", "test-e2e": "start-server-and-test start http://localhost:3000 cyheadless" }, - "devDependencies": { "@babel/core": "^7.7.4", "@babel/plugin-transform-runtime": "^7.7.4", diff --git a/src/ui/src/components/Layout/LayoutConstants.js b/src/ui/src/components/Layout/LayoutConstants.js index 72d9f788..7ca2ddb8 100644 --- a/src/ui/src/components/Layout/LayoutConstants.js +++ b/src/ui/src/components/Layout/LayoutConstants.js @@ -69,6 +69,7 @@ const MENU_ITEMS_INFO = { }, SUMMARY: { title: i18n.t("layout:nav-drawer.menu-item-project-summary"), + tooltip: i18n.t("layout:nav-drawer-tooltips.project-summary"), id: "navSummary", orderIndex: 2, iconfn: (iconProps) => , @@ -76,6 +77,7 @@ const MENU_ITEMS_INFO = { }, DATAMANAGER: { title: i18n.t("layout:nav-drawer.menu-item-data-manager"), + tooltip: i18n.t("layout:nav-drawer-tooltips.data-manager"), id: "navDataManager", orderIndex: 3, iconfn: (iconProps) => , @@ -83,6 +85,7 @@ const MENU_ITEMS_INFO = { }, PRERARE_DATA: { title: i18n.t("layout:nav-drawer.menu-item-queries"), + tooltip: i18n.t("layout:nav-drawer-tooltips.queries"), id: "navPrepareData", orderIndex: 4, iconfn: (iconProps) => , @@ -90,6 +93,7 @@ const MENU_ITEMS_INFO = { }, BUILD_MODEL: { title: i18n.t("layout:nav-drawer.menu-item-build-model"), + tooltip: i18n.t("layout:nav-drawer-tooltips.pipelines"), id: "navBuildModel", orderIndex: 5, iconfn: (iconProps) => , @@ -98,7 +102,7 @@ const MENU_ITEMS_INFO = { subItems: [ { title: i18n.t("layout:nav-drawer.menu-item-feature-extractor"), - tooltip: i18n.t("layout:nav-drawer.menu-item-pipeline-fe-tooltip"), + tooltip: i18n.t("layout:nav-drawer-tooltips.pipeline-fe"), id: "navFeatureExtractor", orderIndex: 1, iconfn: (iconProps) => , @@ -107,7 +111,7 @@ const MENU_ITEMS_INFO = { }, { title: i18n.t("layout:nav-drawer.menu-item-pipeline-custom"), - tooltip: i18n.t("layout:nav-drawer.menu-item-pipeline-custom-tooltip"), + tooltip: i18n.t("layout:nav-drawer-tooltips.pipeline-custom"), id: "navPipelineCustom", orderIndex: 3, iconfn: (iconProps) => , @@ -118,7 +122,7 @@ const MENU_ITEMS_INFO = { }, { title: i18n.t("layout:nav-drawer.menu-item-pipeline-automl"), - tooltip: i18n.t("layout:nav-drawer.menu-item-pipeline-automl-tooltip"), + tooltip: i18n.t("layout:nav-drawer-tooltips.pipeline-automl"), id: "navPipelineAutoML", orderIndex: 2, iconfn: (iconProps) => , @@ -131,6 +135,7 @@ const MENU_ITEMS_INFO = { }, MODELS: { title: i18n.t("layout:nav-drawer.menu-item-models"), + tooltip: i18n.t("layout:nav-drawer-tooltips.models"), id: "navOpenModel", orderIndex: 6, iconfn: (iconProps) => , @@ -138,6 +143,7 @@ const MENU_ITEMS_INFO = { subItems: [ { title: i18n.t("layout:nav-drawer.menu-item-explore-model"), + tooltip: i18n.t("layout:nav-drawer-tooltips.explore-model"), id: "navExploreModel", orderIndex: 7, iconfn: (iconProps) => , @@ -145,6 +151,7 @@ const MENU_ITEMS_INFO = { }, { title: i18n.t("layout:nav-drawer.menu-item-test-model"), + tooltip: i18n.t("layout:nav-drawer-tooltips.test-model"), id: "navTestModel", orderIndex: 8, iconfn: (iconProps) => , @@ -152,6 +159,7 @@ const MENU_ITEMS_INFO = { }, { title: i18n.t("layout:nav-drawer.menu-item-download-model"), + tooltip: i18n.t("layout:nav-drawer-tooltips.download-model"), id: "navDownloadModel", orderIndex: 9, iconfn: (iconProps) => , diff --git a/src/ui/src/components/Layout/NavDrawer.jsx b/src/ui/src/components/Layout/NavDrawer.jsx index 1d99deb3..9538b8d8 100644 --- a/src/ui/src/components/Layout/NavDrawer.jsx +++ b/src/ui/src/components/Layout/NavDrawer.jsx @@ -167,14 +167,18 @@ const NavDrawer = ({ })} disabled={selectedProject === null} > - - + + {menuItem.iconfn(getMenuProps(menuItem.orderIndex))} - - - + + + {menuItem?.subItems ? ( diff --git a/src/ui/src/components/ModelControlPanel/ModelControlPanel.jsx b/src/ui/src/components/ModelControlPanel/ModelControlPanel.jsx index c18527dd..866f2875 100644 --- a/src/ui/src/components/ModelControlPanel/ModelControlPanel.jsx +++ b/src/ui/src/components/ModelControlPanel/ModelControlPanel.jsx @@ -38,6 +38,7 @@ const ModelControlPanel = ({ onChangePlatform, downloading, handleDownloadRequest, + onShowInformation, }) => { const { t } = useTranslation("models"); const routersHistory = useHistory(); @@ -108,6 +109,7 @@ const ModelControlPanel = ({ /> } + onShowInformation={onShowInformation} /> ); }; diff --git a/src/ui/src/containers/BuildModel/TheSelectScreen/TheSelectScreen.jsx b/src/ui/src/containers/BuildModel/TheSelectScreen/TheSelectScreen.jsx index e619027e..d378c12f 100644 --- a/src/ui/src/containers/BuildModel/TheSelectScreen/TheSelectScreen.jsx +++ b/src/ui/src/containers/BuildModel/TheSelectScreen/TheSelectScreen.jsx @@ -27,7 +27,7 @@ import { useHistory, generatePath, useParams } from "react-router-dom"; import { useTranslation } from "react-i18next"; import { Box, Typography } from "@mui/material"; import { ROUTES } from "routers"; -import { useWindowResize } from "hooks"; +import { useWindowResize, useMainContext, useReadFileText } from "hooks"; import { RESPONSIVE } from "consts"; import { UIButtonConvertibleToShort } from "components/UIButtons"; @@ -40,6 +40,8 @@ import PipelineTemplateCreateForm from "components/PipelineTemplateCreateForm"; import { DEFAULT_CLASSIFIER, PIPELINE_STEP_TYPES } from "store/autoML/const"; +import infoFile from "i18n/locales/en/info-pipelines.md"; + import useStyles from "../BuildModeStyle"; import SelectCard from "../components/SelectCard"; @@ -73,6 +75,9 @@ const TheSelectScreen = ({ const [isShortBtnText, setIsShortBtnText] = useState(false); + const { showInformationWindow } = useMainContext(); + const screenInfoMd = useReadFileText(infoFile); + useWindowResize((data) => { setIsShortBtnText(data.innerWidth < RESPONSIVE.WIDTH_FOR_SHORT_TEXT); }); @@ -243,6 +248,7 @@ const TheSelectScreen = ({ /> } + onShowInformation={() => showInformationWindow("Pipelines", screenInfoMd)} /> diff --git a/src/ui/src/containers/DataExplorer/TheDataExplorer.jsx b/src/ui/src/containers/DataExplorer/TheDataExplorer.jsx index 36e3c4bd..bd313268 100644 --- a/src/ui/src/containers/DataExplorer/TheDataExplorer.jsx +++ b/src/ui/src/containers/DataExplorer/TheDataExplorer.jsx @@ -27,7 +27,9 @@ import { ROUTES } from "routers"; import TheQueryScreen from "./TheQueryScreen"; import { DataExplorerContext } from "./context"; +import { useMainContext, useReadFileText } from "hooks"; import { AppLoader } from "components/UILoaders"; +import infoFile from "i18n/locales/en/info-queries.md"; const TheQueryDetailScreen = lazy(() => import("./TheQueryDetailScreen")); const TheQueryCreateScreen = lazy(() => import("./TheQueryCreateScreen")); @@ -35,26 +37,35 @@ const TheQueryCreateScreen = lazy(() => import("./TheQueryCreateScreen")); const TheDataExplorer = () => { const { projectUUID } = useParams(); + const { showInformationWindow } = useMainContext(); + const screenInfoMd = useReadFileText(infoFile); + return ( - + showInformationWindow("Querying Data", screenInfoMd)} + /> }> - + showInformationWindow("Querying Data", screenInfoMd)} + /> }> - + showInformationWindow("Querying Data", screenInfoMd)} + /> diff --git a/src/ui/src/containers/DataExplorer/TheQueryDetailScreen/TheQueryDetailScreen.jsx b/src/ui/src/containers/DataExplorer/TheQueryDetailScreen/TheQueryDetailScreen.jsx index b4c1ed05..55849e3f 100644 --- a/src/ui/src/containers/DataExplorer/TheQueryDetailScreen/TheQueryDetailScreen.jsx +++ b/src/ui/src/containers/DataExplorer/TheQueryDetailScreen/TheQueryDetailScreen.jsx @@ -67,6 +67,7 @@ const TheQueryDetailScreen = ({ loadQueries, setHasUnsavedChanges, resetFeatureStats, + onShowInformation, }) => { const { projectUUID } = useParams(); const { queryUUID } = useParams(); @@ -290,6 +291,7 @@ const TheQueryDetailScreen = ({ ? RESPONSIVE.TRUNCATE_NAME_OVER_SHORT_TEXT : RESPONSIVE.TRUNCATE_NAME_OVER } + onShowInformation={onShowInformation} leftColumns={4} rightColumns={8} actionsBtns={ diff --git a/src/ui/src/containers/DataExplorer/TheQueryScreen/TheQueryScreen.jsx b/src/ui/src/containers/DataExplorer/TheQueryScreen/TheQueryScreen.jsx index 6870d79e..04d02926 100644 --- a/src/ui/src/containers/DataExplorer/TheQueryScreen/TheQueryScreen.jsx +++ b/src/ui/src/containers/DataExplorer/TheQueryScreen/TheQueryScreen.jsx @@ -28,7 +28,7 @@ import { useWindowResize } from "hooks"; import { RESPONSIVE } from "consts"; import { UIButtonConvertibleToShort } from "components/UIButtons"; -const TheQueryScreen = () => { +const TheQueryScreen = ({ onShowInformation }) => { // eslint-disable-next-line no-unused-vars const { projectUUID } = useParams(); const routersHistory = useHistory(); @@ -39,7 +39,7 @@ const TheQueryScreen = () => { setIsShortBtnText(data.innerWidth < RESPONSIVE.WIDTH_FOR_SHORT_TEXT); }); - const handledleUpdateAction = () => { + const handleUpdateAction = () => { routersHistory.push({ pathname: generatePath(ROUTES.MAIN.DATA_EXPLORER.child.QUERY_SCREEN.path, { projectUUID, @@ -59,7 +59,8 @@ const TheQueryScreen = () => { <> { /> - + ); diff --git a/src/ui/src/containers/DataManager/TheCaptureDetailsScreen/TheCaptureDetailsScreen.jsx b/src/ui/src/containers/DataManager/TheCaptureDetailsScreen/TheCaptureDetailsScreen.jsx index ee0922ac..aca99513 100644 --- a/src/ui/src/containers/DataManager/TheCaptureDetailsScreen/TheCaptureDetailsScreen.jsx +++ b/src/ui/src/containers/DataManager/TheCaptureDetailsScreen/TheCaptureDetailsScreen.jsx @@ -85,6 +85,7 @@ const TheCaptureDetailsScreen = ({ setHasUnsavedChanges, setSelectedLabel, updateCapturesStatisticsSegments, + onShowInformation, }) => { const classes = useStyles(); const routersHistory = useHistory(); @@ -548,6 +549,7 @@ const TheCaptureDetailsScreen = ({ /> } + onShowInformation={onShowInformation} /> diff --git a/src/ui/src/containers/DataManager/TheCapturesScreen/TheCapturesScreen.jsx b/src/ui/src/containers/DataManager/TheCapturesScreen/TheCapturesScreen.jsx index 097a879e..f04a1e61 100644 --- a/src/ui/src/containers/DataManager/TheCapturesScreen/TheCapturesScreen.jsx +++ b/src/ui/src/containers/DataManager/TheCapturesScreen/TheCapturesScreen.jsx @@ -72,6 +72,7 @@ const TheCapturesScreen = ({ loadSources, deleteCapture, createDefaultMetadata, + onShowInformation, }) => { const classes = useStyles(); const { projectUUID } = useParams(); @@ -193,6 +194,7 @@ const TheCapturesScreen = ({ /> } + onShowInformation={onShowInformation} /> diff --git a/src/ui/src/containers/DataManager/TheDataManager.jsx b/src/ui/src/containers/DataManager/TheDataManager.jsx index 7149892b..c4b88f9a 100644 --- a/src/ui/src/containers/DataManager/TheDataManager.jsx +++ b/src/ui/src/containers/DataManager/TheDataManager.jsx @@ -36,11 +36,13 @@ import DialogTableSelect from "components/UIDialogTableSelect"; import { ROUTES } from "routers"; -import { useRouterSearchParams } from "hooks"; +import { useRouterSearchParams, useMainContext, useReadFileText } from "hooks"; + import TheCapturesScreen from "./TheCapturesScreen"; import { DataManagerContext } from "./context"; import { AppLoader } from "components/UILoaders"; +import infoFile from "i18n/locales/en/info-data-manager.md"; // Lazy loading optional screen const TheCaptureDetailsScreen = lazy(() => import("./TheCaptureDetailsScreen")); @@ -59,6 +61,9 @@ const TheDataManager = ({ const { projectUUID } = useParams(); const { t } = useTranslation("data-manager"); + const { showInformationWindow } = useMainContext(); + const screenInfoMd = useReadFileText(infoFile); + const sessionsToSelect = useMemo(() => { return sessions.map((session) => ({ ...session, @@ -120,7 +125,10 @@ const TheDataManager = ({ - + showInformationWindow("Data Manager", screenInfoMd)} + selectedSession={selectedSession} + /> @@ -129,6 +137,7 @@ const TheDataManager = ({ > showInformationWindow("Data Manager", screenInfoMd)} selectedSession={selectedSession} isDisabledByAutoSession={isDisabledByAutoSession} isReadOnlyMode={isReadOnlyMode} diff --git a/src/ui/src/containers/DownloadModel/TheDownloadModel.jsx b/src/ui/src/containers/DownloadModel/TheDownloadModel.jsx index 15c59175..e6d5ac7d 100644 --- a/src/ui/src/containers/DownloadModel/TheDownloadModel.jsx +++ b/src/ui/src/containers/DownloadModel/TheDownloadModel.jsx @@ -41,8 +41,11 @@ import ModelControlPanel from "components/ModelControlPanel"; import { AppLoader } from "components/UILoaders"; -import TargetDeviceOptions from "./components/TargetDeviceOptions"; +import { useMainContext, useReadFileText } from "hooks"; + +import infoFile from "i18n/locales/en/info-model-download.md"; +import TargetDeviceOptions from "./components/TargetDeviceOptions"; import InfoClassOptions from "./components/InfoClassOptions"; import InfoCaptureConfiguration from "./components/InfoCaptureConfiguration"; import InfoApplication from "./components/InfoApplication"; @@ -100,6 +103,9 @@ const DownloadModel = ({ const [snackBarMessage, setSnackBarMessage] = useState(null); const [snackBarVariant, setSnackBarVariant] = useState("success"); + const { showInformationWindow } = useMainContext(); + const screenInfoMd = useReadFileText(infoFile); + const showMessage = (variant, message) => { setSnackBarVariant(variant); setSnackBarMessage(message); @@ -309,6 +315,7 @@ const DownloadModel = ({ onChangePlatform={() => targetDeviceOptionsdRef.current.handleDeleteSelectedPlatform() } + onShowInformation={() => showInformationWindow("Downloading Model", screenInfoMd)} downloading={downloading} handleDownloadRequest={handleDownloadRequest} /> diff --git a/src/ui/src/containers/ExploreModels/TheExploreModels.jsx b/src/ui/src/containers/ExploreModels/TheExploreModels.jsx index 85299dfa..97134eab 100644 --- a/src/ui/src/containers/ExploreModels/TheExploreModels.jsx +++ b/src/ui/src/containers/ExploreModels/TheExploreModels.jsx @@ -35,9 +35,10 @@ import TheConfusionMatrix from "containers/ExploreModels/TheConfusionMatrix"; import { Switch, Route, Link, Redirect, generatePath, useParams } from "react-router-dom"; import { ROUTES } from "routers"; - import { AppLoader } from "components/UILoaders"; +import { useMainContext, useReadFileText } from "hooks"; +import infoFile from "i18n/locales/en/info-model-explorer.md"; import useStyles from "./ExploreModelsStyles"; function a11yProps(index) { @@ -56,6 +57,9 @@ const ExploreModels = ({ model, selectedModel, setSelectedModel }) => { const [value, setValue] = React.useState(0); + const { showInformationWindow } = useMainContext(); + const screenInfoMd = useReadFileText(infoFile); + const handleChange = (event, newValue) => { setValue(newValue); }; @@ -78,7 +82,10 @@ const ExploreModels = ({ model, selectedModel, setSelectedModel }) => { return ( - + showInformationWindow("Model Explorer", screenInfoMd)} + modelData={modelData?.data || {}} + /> diff --git a/src/ui/src/containers/Main/Main.jsx b/src/ui/src/containers/Main/Main.jsx index 8ddae346..e165a185 100644 --- a/src/ui/src/containers/Main/Main.jsx +++ b/src/ui/src/containers/Main/Main.jsx @@ -19,9 +19,11 @@ License along with SensiML Piccolo AI. If not, see import("containers/Home")); const ProjectSummary = lazy(() => import("containers/ProjectSummary")); const TheDataExplorer = lazy(() => import("containers/DataExplorer")); @@ -53,6 +58,7 @@ const Main = ({ setIsShowBannerMaintenance, }) => { const classes = useStyles(); + const [dialogInformationData, setDialogInformationData] = useState({}); const handleCloseBanner = () => { setIsShowBannerMaintenance(false); @@ -69,19 +75,35 @@ const Main = ({ setOpenSnackbar(false); }; + const LinkRenderer = (props) => { + return ( + + {props.children} + + ); + }; + const showMessageSnackbar = (variant, message) => { setSnackBarMessage(message); setSnackBarVariant(variant); setOpenSnackbar(true); }; + const showInformationWindow = (title, text) => { + setDialogInformationData({ title, text }); + }; + + const handleCloseNewStepDialogInformation = () => { + setDialogInformationData({}); + }; + return ( <>
- +
{isShowBannerMaintenance ? ( + + + {dialogInformationData.title} + + + {dialogInformationData.text} + + ); diff --git a/src/ui/src/containers/Main/MainStyles.js b/src/ui/src/containers/Main/MainStyles.js index cbf5549e..f29d6431 100644 --- a/src/ui/src/containers/Main/MainStyles.js +++ b/src/ui/src/containers/Main/MainStyles.js @@ -41,6 +41,13 @@ const useStyles = () => background: theme.backgroundApp, paddingTop: "4rem", }, + infoTitle: { + marginBottom: theme.spacing(4), + marginTop: theme.spacing(2), + fontSize: theme.spacing(4), + fontWeight: 500, + textAlign: "center", + }, }))(); export default useStyles; diff --git a/src/ui/src/containers/ModelSelect/ModelSelect.jsx b/src/ui/src/containers/ModelSelect/ModelSelect.jsx index 3e3ca491..a659fe87 100644 --- a/src/ui/src/containers/ModelSelect/ModelSelect.jsx +++ b/src/ui/src/containers/ModelSelect/ModelSelect.jsx @@ -90,7 +90,7 @@ const ModelSelect = ({ selectedProject, modelData, loadKnowledgepacks }) => { return `Select model to open in ${MODELS_SELECTION_MODE[state?.parentPath.split("/")[1]]}`; } - return "Select Model"; + return "Models"; }; const handleCloseAlert = () => { diff --git a/src/ui/src/containers/TestModels/TestModels.js b/src/ui/src/containers/TestModels/TestModels.js index 4f471252..34f80e67 100644 --- a/src/ui/src/containers/TestModels/TestModels.js +++ b/src/ui/src/containers/TestModels/TestModels.js @@ -49,6 +49,10 @@ import ProjectStatisticsTable from "components/ProjectStatisticsTable"; import ModelControlPanel from "components/ModelControlPanel"; import { AppLoader } from "components/UILoaders"; +import { useMainContext, useReadFileText } from "hooks"; + +import infoFile from "i18n/locales/en/info-model-test.md"; + import useStyles from "./TestModelsStyles"; import ClassificationResults from "./ClassificationResults"; @@ -115,6 +119,9 @@ const TestModels = ({ const [sessionList, setSessionList] = React.useState(""); const [modelClassMap, setModelClassMap] = useState([]); + const { showInformationWindow } = useMainContext(); + const screenInfoMd = useReadFileText(infoFile); + const handleSessionChange = (event) => { setActiveSession(event.target.value); }; @@ -446,7 +453,10 @@ const TestModels = ({ <> - + showInformationWindow("Testing a Model", screenInfoMd)} + modelData={modelData} + /> diff --git a/src/ui/src/hooks/index.js b/src/ui/src/hooks/index.js index c202f25f..4d3c2e48 100644 --- a/src/ui/src/hooks/index.js +++ b/src/ui/src/hooks/index.js @@ -24,3 +24,4 @@ export { default as useRouterSearchParams } from "./useRouterSearchParams"; export { default as useFilterTurncateResponsive } from "./useFilterTurncateResponsive"; export { default as useIsShortText } from "./useIsShortText"; export { default as useMainContext } from "./useMainContext"; +export { default as useReadFileText } from "./useReadFileText"; diff --git a/src/ui/src/hooks/useReadFileText.js b/src/ui/src/hooks/useReadFileText.js new file mode 100644 index 00000000..adb4121e --- /dev/null +++ b/src/ui/src/hooks/useReadFileText.js @@ -0,0 +1,17 @@ +import { useEffect, useState } from "react"; + +const useReadFileText = (fileURL) => { + const [text, setText] = useState(""); + + useEffect(() => { + fetch(fileURL) + .then((response) => response.text()) + .then((_text) => { + setText(_text); + }); + }, []); + + return text; +}; + +export default useReadFileText; diff --git a/src/ui/src/i18n/locales/en/info-data-manager.md b/src/ui/src/i18n/locales/en/info-data-manager.md new file mode 100644 index 00000000..d6b561cf --- /dev/null +++ b/src/ui/src/i18n/locales/en/info-data-manager.md @@ -0,0 +1,30 @@ +The files that you collected with the [Data Studio](https://sensiml.com/documentation/data-studio/data-collection-overview.html) are available and can be managed in the Data Manager. +You can view, download, delete, and update segments and metadata in your labeled files through the Data Manager. + +### File Captures Explorer + +This table displays capture files and their associated metadata. +You can perform the following actions: + +* Delete: Remove unwanted capture files. +* Import: Add new capture files. +* Export: Save capture files to a specific location. +* Edit Metadata: Modify metadata for individual or multiple files. + +### Labeling Your Data + +Open a capture file in Data Management Editor. + +What is a Segment? + +A segment defines the location of an event within your sensor data file. It's visually represented as a transparent label on the graph of your sensor data. +By creating segments, you're essentially labeling specific parts of your data, making it easier to analyze and understand. + +### Adding Segments + +* At the top right corner of the opened file screen click the Create Segment button to start creating a segment. +* At the graph view of the file, click and drag your mouse over the area you want to label as an event. This will place a new segment in the file. +* Select the Label for the segment from the drop down menu. If you do not see the label you want, click the CREATE LABEL button to create a new label. +* Click Save to save the segment. + +[See Documentation](https://sensiml.com/documentation/analytics-studio/data-manager.html) diff --git a/src/ui/src/i18n/locales/en/info-model-download.md b/src/ui/src/i18n/locales/en/info-model-download.md new file mode 100644 index 00000000..8d62fecb --- /dev/null +++ b/src/ui/src/i18n/locales/en/info-model-download.md @@ -0,0 +1,53 @@ + +A Knowledge Pack takes the event detection model you generated in the pipeline and transforms it into a binary or library file that can be run on your hardware device at the edge. Once the Knowledge Pack is on your hardware device, it starts outputting classification IDs that correspond to your events of interest. + +HW Platform +----------- + +SensiML Knowledge Packs are not locked to any specific hardware platform. This feature allows you to choose the platform where you will deploy your Knowledge Pack. Some fields (Processor, Float Options, Compiler) get default values that depend on the selected HW platform. + +Arm/GCC Compilers produces binaries with options in regards to floating-point operations: + +* **None** - ``-mfloat-abi=soft`` Full software floating-point. The compiler will not generate any FPU instructions and the ``-mfpu=`` option is ignored. Function calls are generated by passing floating-point arguments in integer registers. + +* **Soft FP** - ``-mfloat-abi=softfp`` Hardware floating-point using the soft floating-point ABI. The compiler will generate FPU instructions according to the -mfpu= option. Function calls are generated by passing floating-point arguments in integer registers. This means ``soft`` and ``softfp`` may be intermixed. + +* **Hard FP** - ``-mfloat-abi=hard`` Full hardware floating-point. The compiler will generate FPU instructions according to the ``-mfpu=`` option. Function calls are generated by passing floating-point arguments in FPU registers. This means hard and softfp cannot be intermixed; neither can hard and soft. + +Format +------ + +We provide three formats to interface with your model when you generate a Knowledge Pack. The available format options depend on the device or compiler that you are using. See details about each of the three formats below. + +**1. Binary** + +Generates application firmware that is ready to flash to your device. Includes the application, Knowledge Pack, sensor configuration/drivers, and classification output for the target device. + +**2. Library** + +Generates a library and header files with function APIs that can be linked into your application firmware. See the links below for useful information on the Library format. + +**3. Source** + +Generates a Makefile and the C/C++ source code files for the Knowledge Pack APIs. See the :doc:`SensiML Embedded SDK Documentation` for more information on the Source format. + +> **Source** is only available to specific subscription plans. See more details at ``_ + +Application +----------- + +**Application** - Application is the example application for supported platforms that allows an example binary to be built for testing. + +Classification Output +--------------------- + +**Output** - Output corresponds to how your events get broadcasted from the hardware device and how you want to connect to your device. There are three main outputs: Bluetooth-LE, Serial, and Wi-Fi (TCP/IP). + +Debug Output +------------ + +When building a Knowledge Pack there is a debug option that will log extra information like feature vectors, debug messages, and error messages over a serial connection to help you debug the events of interest on a device. To enable this, set Debug to True in the Advanced Settings when you download your Knowledge Pack. + +After flashing your device with a Knowledge Pack, debug information can be viewed by connecting to the virtual COM port in a terminal application. + +[See Documentation](https://sensiml.com/documentation/analytics-studio/generating-a-knowledge-pack.html) \ No newline at end of file diff --git a/src/ui/src/i18n/locales/en/info-model-explorer.md b/src/ui/src/i18n/locales/en/info-model-explorer.md new file mode 100644 index 00000000..331618a5 --- /dev/null +++ b/src/ui/src/i18n/locales/en/info-model-explorer.md @@ -0,0 +1,31 @@ +In the **Explore Model** page you can get more information about the models that were generated from the Build Model page. + +### Confusion Matrix + +The **Confusion Matrix** tab shows the averaged confusion matrix for the validation data. The confusion matrix describes how well the model performed at recognizing each class. It also provides information about how the model misclassifies classes. The confusion matrix for models generated by SensiML’s AutoML pipeline is created by averaging across the results of the validation data sets for each fold. + +### Feature Visualization + +The **Feature Visualization** tab provides feature visualization as a 2-D comparison plot and feature insights chart. + +### Feature Embedding + +The **Feature Embedding** tab provides three different embedding algorithms: UMAP, PCA, and TSNE. Once you have chosen an embedding algorithm, the Feature Embedding tab will generate a 2-D comparison plot of the embedded features. + +### Feature Summary + +The **Feature Summary** tab shows which feature extractors and sensors were used to feed into the model. The Feature Summary tab contains information about the features that are used during the feature extraction step of the Knowledge Pack. This was a simple example project and only needed two feature extractors to generate a high accuracy model. You can see the **Category** of the feature generator in the first column, which describes the family type to which a feature generator belongs. The **Generator** column has the name of the feature extractor, which can be used to reference the feature generator when building custom pipelines. The **Sensors** column describes the sensors that were used as input into this feature extractor. + +### Model Summary + +The **Model Summary** tab describes the classifier, classifier parameters, and training algorithm that was used to generate the final model. In general, this will have information about the classifier name, the training algorithm used to train the model, along with any hyperparameters that were set for training. The **uuid** field is the unique identifier for this model. + +### Pipeline Summary + +Model pipelines consist of data input, signal conditioning, signal preprocessing, feature extraction, sampling, and model training. The **Pipeline Summary** provides a graphical representation of the pipeline steps used to create this model. + +### Knowledge Pack Summary + +Knowledge Packs consist of data input, signal conditioning, signal preprocessing, feature extraction, and classification. The **Knowledge Pack Summary** provides the graphical representation of the steps that will be part of the Knowledge Pack. + +[See Documentation](https://sensiml.com/documentation/analytics-studio/exploring-model-details.html) \ No newline at end of file diff --git a/src/ui/src/i18n/locales/en/info-model-test.md b/src/ui/src/i18n/locales/en/info-model-test.md new file mode 100644 index 00000000..13b57727 --- /dev/null +++ b/src/ui/src/i18n/locales/en/info-model-test.md @@ -0,0 +1,10 @@ +The Analytics Studio has several useful tools for testing how your model will perform before flashing it to a device. By using the Analytics Studio you can run a model against on any files you have added to your project. +1. Select a model in the **Test Model** page + +2. Select one or more of the capture files. Click the **Compute Accuracy** button to validate it against the test data. To generate the model results, the SensiML Cloud emulates the firmware model classifications on the selected sensor data. This provides a bit accurate view of the performance you will expect when deploying your model to an edge device. + +3. Once the results are finished you can click the **Compute Summary** button to see how the confusion matrix performs across all files you just tested against. The ground truth for the confusion matrix is generated based on the labels that are created in the Data Studio. You can switch which **session** is used to compute the ground truth as well. + +4. Click on the **Results icon** for one of your capture files. The results are summarized as actual prediction vs ground truth labels. In the **Classification Chart** (top) the Y-axis tells us the classification name and the X-axis tells us the sample number or time. Classifications are generated by the model at the interval you selected for windowing segmentation. Locations where the ground truth and classification do not match are marked by a red **X**. The **Feature Vector Heat Map** (bottom) visualizes the features that are generated by each segment prior to being fed into the classifier as a heat map. The values for features are always scaled to a single byte prior to classification. + +[See Documentation](https://sensiml.com/documentation/analytics-studio/testing-a-model-using-the-analytics-studio.html) diff --git a/src/ui/src/i18n/locales/en/info-pipelines.md b/src/ui/src/i18n/locales/en/info-pipelines.md new file mode 100644 index 00000000..76bc3a95 --- /dev/null +++ b/src/ui/src/i18n/locales/en/info-pipelines.md @@ -0,0 +1,12 @@ + +### Building a Model + +The Model Building part of the Analytics Studio uses SensiML’s AutoML to build a model that gives you control of the features you want in your device. For example, if you build an algorithm that detects your events with 100% accuracy, the algorithm may use more resources. But by tweaking parameters in the AutoML settings you might find you can get an algorithm that uses half as many resources, while still getting 98% accuracy. You can configure SensiML’s AutoML process to maximize accuracy while fitting a within a desired memory constraint. This is a powerful concept that can save you a lot of time and money. + +The model building process is represented as Pipelines. Each pipeline is a sequence of steps representing the process of data transformation during model building. + +### Pipelines + +A pipeline is a container for a series of data processing steps and contains the blueprint for how your model will be built. It contains the sensor data input parameters, transforms, feature generators, feature selectors, feature transforms and classifiers. + +[See Documentation](https://sensiml.com/documentation/analytics-studio/building-a-model.html) diff --git a/src/ui/src/i18n/locales/en/info-queries.md b/src/ui/src/i18n/locales/en/info-queries.md new file mode 100644 index 00000000..a36b0d2b --- /dev/null +++ b/src/ui/src/i18n/locales/en/info-queries.md @@ -0,0 +1,26 @@ +The query is used to select your sensor data from your project. If you need to filter out certain parts of your sensor data based on metadata or labels, you can specify that here. + +### Creating a Query + +You can create a new query with the session and labels you wish to use in your project + +### Query Filter + +If you are working with your sensor data and you discover certain events of interest are bad or not useful you can ignore them in your query by using the **Query Filter**. If you have ever used a database query before then this syntax may be familiar to you. + +--- +For Example: + +If you wanted to ignore the **Vertical** events, you can add the filter: + +```[Label] IN [Horizontal, Stationary]``` + +You can also filter the metadata values using the Query Filter. In the Slide Demo you can add a **Subject** filter: + +```[Label] IN [Horizontal, Stationary] AND [Subject] IN [User001]``` + +This filter would only select the **Horizontal** and **Stationary** events done by **User001** + +--- + +[See Documentation](https://sensiml.com/documentation/guides/getting-started/querying-data.html?target=_blank) \ No newline at end of file diff --git a/src/ui/src/i18n/locales/en/layout.json b/src/ui/src/i18n/locales/en/layout.json index 29fcd100..d3344637 100644 --- a/src/ui/src/i18n/locales/en/layout.json +++ b/src/ui/src/i18n/locales/en/layout.json @@ -33,10 +33,20 @@ "menu-item-pipeline-custom": "Custom Training", "menu-item-explore-model": "Explore Model", "menu-item-test-model": "Test Model", - "menu-item-download-model": "Download Model", - "menu-item-pipeline-fe-tooltip": "Explore your data: See what your sensor data looks like and create useful summaries without building a model.", - "menu-item-pipeline-custom-tooltip": "Build your own model: Choose how to process your data and select the model type for maximum control.", - "menu-item-pipeline-automl-tooltip": "Automatically find the best model: Choose how to process your data, and we'll find the best model and settings for you." + "menu-item-download-model": "Download Model" + }, + "nav-drawer-tooltips": { + "project-summary": "Project Summary page gives you an overview of your project. You can edit the image and project description to provide more context about each project you work on.", + "data-manager": "The files that you collected with the Data Studio are available and can be managed in the Data Manager. You can view, download, delete, and update segments and metadata in your labeled files through the Data Manager.", + "queries": "Queries are used to select your sensor data from your project. If you need to filter out certain parts of your sensor data based on metadata or labels, you can specify that here.", + "pipelines": "Pipelines are containers for a series of data processing steps and contains the blueprint for your model's development. It includes the sensor data input parameters, transforms, feature generators, feature selectors, feature transforms, and classifiers.", + "models": "On Model page you can get more information about the models that were generated from the Pipeline page.", + "explore-model": "Explore Model page you can get more information about the models that were generated from the Build Model page.", + "download-model": "Generated a Knowledge Pack that takes the event detection model you generated in the pipeline and transforms it into a binary or library file that can be run on your hardware device at the edge.", + "test-model": "Test Model provides several useful tools for testing how your model will perform before flashing it to a device.", + "pipeline-fe": "Explore your data: See what your sensor data looks like and create useful summaries without building a model.", + "pipeline-custom": "Build your own model: Choose how to process your data and select the model type for maximum control.", + "pipeline-automl": "Automatically find the best model: Choose how to process your data, and we'll find the best model and settings for you." }, "menu-external": { "get-started-title": "Get Started", diff --git a/src/ui/yarn.lock b/src/ui/yarn.lock index 473ae0c3..ba797ee3 100644 --- a/src/ui/yarn.lock +++ b/src/ui/yarn.lock @@ -2778,6 +2778,13 @@ resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.3.3.tgz#85bc74ba782fb7aa3a514d11767832b0e3bc6803" integrity sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow== +"@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/eslint-scope@^3.7.3": version "3.7.7" resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" @@ -2831,6 +2838,13 @@ dependencies: "@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/hoist-non-react-statics@^3.0.1", "@types/hoist-non-react-statics@^3.3.0": version "3.3.5" resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz#dab7867ef789d87e2b4b0003c9d65c49cc44a494" @@ -2893,7 +2907,7 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/mdast@^3.0.0", "@types/mdast@^3.0.3": +"@types/mdast@^3.0.0": version "3.0.15" resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.15.tgz#49c524a263f30ffa28b71ae282f813ed000ab9f5" integrity sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ== @@ -2905,6 +2919,11 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== +"@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-forge@^1.3.0": version "1.3.11" resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da" @@ -2939,6 +2958,11 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== +"@types/prop-types@^15.0.0": + version "15.7.13" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.13.tgz#2af91918ee12d9d32914feb13f5326658461b451" + integrity sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA== + "@types/q@^1.5.1": version "1.5.8" resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.8.tgz#95f6c6a08f2ad868ba230ead1d2d7f7be3db3837" @@ -3054,7 +3078,7 @@ resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== -"@types/unist@^2", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3": +"@types/unist@^2", "@types/unist@^2.0.0": version "2.0.10" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.10.tgz#04ffa7f406ab628f7f7e97ca23e290cd8ab15efc" integrity sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA== @@ -3983,10 +4007,10 @@ babel-preset-react-app@^10.0.1: babel-plugin-macros "^3.1.0" babel-plugin-transform-react-remove-prop-types "^0.4.24" -bail@^1.0.0: - version "1.0.5" - 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" @@ -4280,20 +4304,10 @@ char-regex@^2.0.0: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-2.0.1.tgz#6dafdb25f9d3349914079f010ba8d0e6ff9cd01e" integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw== -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@^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-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-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== check-more-types@2.24.0, check-more-types@^2.24.0: version "2.24.0" @@ -4576,6 +4590,11 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" +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== + commander@2, commander@^2.15.1, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -5616,6 +5635,13 @@ decimal.js@^10.2.1: resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== +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" + dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" @@ -5688,7 +5714,7 @@ depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== -dequal@^2.0.3: +dequal@^2.0.0, dequal@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== @@ -5741,6 +5767,11 @@ diff-sequences@^29.6.3: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== +diff@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -5811,21 +5842,12 @@ dom-serializer@^1.0.1: domhandler "^4.2.0" entities "^2.0.0" -dom-serializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" - integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.2" - entities "^4.2.0" - domelementtype@1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== -domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: +domelementtype@^2.0.1, domelementtype@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== @@ -5844,13 +5866,6 @@ domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: dependencies: domelementtype "^2.2.0" -domhandler@^5.0, domhandler@^5.0.2, domhandler@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" - integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== - dependencies: - domelementtype "^2.3.0" - domutils@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" @@ -5868,15 +5883,6 @@ domutils@^2.5.2, domutils@^2.8.0: domelementtype "^2.2.0" domhandler "^4.2.0" -domutils@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" - integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== - dependencies: - dom-serializer "^2.0.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" - dot-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" @@ -6048,11 +6054,6 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -entities@^4.2.0, entities@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - env-cmd@^10.0.1: version "10.1.0" resolved "https://registry.yarnpkg.com/env-cmd/-/env-cmd-10.1.0.tgz#c7f5d3b550c9519f137fdac4dd8fb6866a8c8c4b" @@ -7655,6 +7656,11 @@ hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: dependencies: function-bind "^1.1.2" +hast-util-whitespace@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz#0ec64e257e6fc216c7d14c8a1b74d27d650b4557" + integrity sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng== + he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -7741,15 +7747,6 @@ html-parse-stringify@^3.0.1: dependencies: void-elements "3.1.0" -html-to-react@^1.3.4: - version "1.7.0" - resolved "https://registry.yarnpkg.com/html-to-react/-/html-to-react-1.7.0.tgz#1664a0233a930ab1b12c442ddef0f1b72e7459f4" - integrity sha512-b5HTNaTGyOj5GGIMiWVr1k57egAZ/vGy0GGefnCQ1VW5hu9+eku8AXHtf2/DeD95cj/FKBKYa1J7SWBOX41yUQ== - dependencies: - domhandler "^5.0" - htmlparser2 "^9.0" - lodash.camelcase "^4.3.0" - html-webpack-plugin@^5.5.0: version "5.6.0" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz#50a8fa6709245608cb00e811eacecb8e0d7b7ea0" @@ -7771,16 +7768,6 @@ htmlparser2@^6.1.0: domutils "^2.5.2" entities "^2.0.0" -htmlparser2@^9.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-9.1.0.tgz#cdb498d8a75a51f739b61d3f718136c369bc8c23" - integrity sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.3" - domutils "^3.1.0" - entities "^4.5.0" - http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" @@ -8010,6 +7997,11 @@ ini@^1.3.5: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== +inline-style-parser@0.1.1: + version "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== + internal-slot@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" @@ -8039,19 +8031,6 @@ ipaddr.js@^2.0.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== -is-alphabetical@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" - integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== - -is-alphanumerical@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" - integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== - dependencies: - is-alphabetical "^1.0.0" - is-decimal "^1.0.0" - is-array-buffer@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" @@ -8137,11 +8116,6 @@ is-date-object@^1.0.1, is-date-object@^1.0.5: dependencies: has-tostringtag "^1.0.0" -is-decimal@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" - integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== - is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" @@ -8205,11 +8179,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-hexadecimal@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" - integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== - is-iexplorer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-iexplorer/-/is-iexplorer-1.0.0.tgz#1d72bc66d3fe22eaf6170dda8cf10943248cfc76" @@ -8275,16 +8244,16 @@ is-plain-obj@^1.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== -is-plain-obj@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - is-plain-obj@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== +is-plain-obj@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" + integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== + is-plain-object@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.1.tgz#662d92d24c0aa4302407b0d45d21f2251c85f85b" @@ -9317,6 +9286,11 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +kleur@^4.0.3: + version "4.1.5" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + klona@^2.0.4, klona@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" @@ -9489,11 +9463,6 @@ lodash-es@^4.17.15: resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -9666,28 +9635,53 @@ math-log2@^1.0.1: resolved "https://registry.yarnpkg.com/math-log2/-/math-log2-1.0.1.tgz#fb8941be5f5ebe8979e718e6273b178e58694565" integrity sha512-9W0yGtkaMAkf74XGYVy4Dqw3YUMnTNB2eeiw9aQbUl4A3KmuCEHTt2DgAB07ENzOYAjsYSAYufkAq0Zd+jU7zA== -mdast-add-list-metadata@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mdast-add-list-metadata/-/mdast-add-list-metadata-1.0.1.tgz#95e73640ce2fc1fa2dcb7ec443d09e2bfe7db4cf" - integrity sha512-fB/VP4MJ0LaRsog7hGPxgOrSL3gE/2uEdZyDuSEnKCv/8IkYHiDkIQSbChiJoHyxZZXZ9bzckyRk+vNxFzh8rA== +mdast-util-definitions@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz#9910abb60ac5d7115d6819b57ae0bcef07a3f7a7" + integrity sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA== dependencies: - unist-util-visit-parents "1.1.2" + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + unist-util-visit "^4.0.0" -mdast-util-from-markdown@^0.8.0: - version "0.8.5" - resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz#d1ef2ca42bc377ecb0463a987910dae89bd9a28c" - integrity sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ== +mdast-util-from-markdown@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz#9421a5a247f10d31d2faed2a30df5ec89ceafcf0" + integrity sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + decode-named-character-reference "^1.0.0" + mdast-util-to-string "^3.1.0" + micromark "^3.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-decode-string "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + unist-util-stringify-position "^3.0.0" + uvu "^0.5.0" + +mdast-util-to-hast@^12.1.0: + version "12.3.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz#045d2825fb04374e59970f5b3f279b5700f6fb49" + integrity sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw== + dependencies: + "@types/hast" "^2.0.0" + "@types/mdast" "^3.0.0" + mdast-util-definitions "^5.0.0" + micromark-util-sanitize-uri "^1.1.0" + trim-lines "^3.0.0" + unist-util-generated "^2.0.0" + unist-util-position "^4.0.0" + unist-util-visit "^4.0.0" + +mdast-util-to-string@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz#66f7bb6324756741c5f47a53557f0cbf16b6f789" + integrity sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg== dependencies: "@types/mdast" "^3.0.0" - mdast-util-to-string "^2.0.0" - micromark "~2.11.0" - parse-entities "^2.0.0" - unist-util-stringify-position "^2.0.0" - -mdast-util-to-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" - integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== mdn-data@2.0.14: version "2.0.14" @@ -9738,13 +9732,199 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -micromark@~2.11.0: - version "2.11.4" - resolved "https://registry.yarnpkg.com/micromark/-/micromark-2.11.4.tgz#d13436138eea826383e822449c9a5c50ee44665a" - integrity sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA== +micromark-core-commonmark@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz#1386628df59946b2d39fb2edfd10f3e8e0a75bb8" + integrity sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-factory-destination "^1.0.0" + micromark-factory-label "^1.0.0" + micromark-factory-space "^1.0.0" + micromark-factory-title "^1.0.0" + micromark-factory-whitespace "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-classify-character "^1.0.0" + micromark-util-html-tag-name "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + uvu "^0.5.0" + +micromark-factory-destination@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz#eb815957d83e6d44479b3df640f010edad667b9f" + integrity sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-label@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz#cc95d5478269085cfa2a7282b3de26eb2e2dec68" + integrity sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-factory-space@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz#c8f40b0640a0150751d3345ed885a080b0d15faf" + integrity sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-title@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz#dd0fe951d7a0ac71bdc5ee13e5d1465ad7f50ea1" + integrity sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-whitespace@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz#798fb7489f4c8abafa7ca77eed6b5745853c9705" + integrity sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ== dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-character@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.2.0.tgz#4fedaa3646db249bc58caeb000eb3549a8ca5dcc" + integrity sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg== + dependencies: + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-chunked@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz#37a24d33333c8c69a74ba12a14651fd9ea8a368b" + integrity sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-classify-character@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz#6a7f8c8838e8a120c8e3c4f2ae97a2bff9190e9d" + integrity sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-combine-extensions@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz#192e2b3d6567660a85f735e54d8ea6e3952dbe84" + integrity sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-decode-numeric-character-reference@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz#b1e6e17009b1f20bc652a521309c5f22c85eb1c6" + integrity sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-decode-string@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz#dc12b078cba7a3ff690d0203f95b5d5537f2809c" + integrity sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-symbol "^1.0.0" + +micromark-util-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz#92e4f565fd4ccb19e0dcae1afab9a173bbeb19a5" + integrity sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw== + +micromark-util-html-tag-name@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz#48fd7a25826f29d2f71479d3b4e83e94829b3588" + integrity sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q== + +micromark-util-normalize-identifier@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz#7a73f824eb9f10d442b4d7f120fecb9b38ebf8b7" + integrity sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-resolve-all@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz#4652a591ee8c8fa06714c9b54cd6c8e693671188" + integrity sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA== + dependencies: + micromark-util-types "^1.0.0" + +micromark-util-sanitize-uri@^1.0.0, micromark-util-sanitize-uri@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz#613f738e4400c6eedbc53590c67b197e30d7f90d" + integrity sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-encode "^1.0.0" + micromark-util-symbol "^1.0.0" + +micromark-util-subtokenize@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz#941c74f93a93eaf687b9054aeb94642b0e92edb1" + integrity sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-util-symbol@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz#813cd17837bdb912d069a12ebe3a44b6f7063142" + integrity sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag== + +micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.1.0.tgz#e6676a8cae0bb86a2171c498167971886cb7e283" + integrity sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg== + +micromark@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.2.0.tgz#1af9fef3f995ea1ea4ac9c7e2f19c48fd5c006e9" + integrity sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA== + dependencies: + "@types/debug" "^4.0.0" debug "^4.0.0" - parse-entities "^2.0.0" + decode-named-character-reference "^1.0.0" + micromark-core-commonmark "^1.0.1" + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-combine-extensions "^1.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-encode "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + uvu "^0.5.0" micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.7" @@ -9881,6 +10061,11 @@ mouse-wheel@^1.2.0: signum "^1.0.0" to-px "^1.0.1" +mri@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -10309,18 +10494,6 @@ parenthesis@^3.1.5: resolved "https://registry.yarnpkg.com/parenthesis/-/parenthesis-3.1.8.tgz#3457fccb8f05db27572b841dad9d2630b912f125" integrity sha512-KF/U8tk54BgQewkJPvB4s/US3VQY68BRDpH638+7O/n58TpnwiwnOtGIOsT2/i+M78s61BBpeC83STB88d8sqw== -parse-entities@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" - integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== - dependencies: - character-entities "^1.0.0" - character-entities-legacy "^1.0.0" - character-reference-invalid "^1.0.0" - is-alphanumerical "^1.0.0" - is-decimal "^1.0.0" - is-hexadecimal "^1.0.0" - parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" @@ -11229,7 +11402,7 @@ prompts@^2.0.1, prompts@^2.4.2: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: +prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.6.0, 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== @@ -11238,6 +11411,11 @@ prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2, object-assign "^4.1.1" react-is "^16.13.1" +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== + protocol-buffers-schema@^3.3.1: version "3.6.0" resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz#77bc75a48b2ff142c1ad5b5b90c94cd0fa2efd03" @@ -11477,7 +11655,7 @@ react-images-uploading@^3.1.2: resolved "https://registry.yarnpkg.com/react-images-uploading/-/react-images-uploading-3.1.7.tgz#a53bf0d08624802dc6b74db4ec5695b0bfaf5a5c" integrity sha512-woET50eCezm645iIeP4gCoN7HjdR3T64UXC5l53yd+2vHFp+pwABH8Z/aAO5IXDeC1aP6doQ+K738L701zswAw== -react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.6: +react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -11499,21 +11677,26 @@ react-loader-spinner@^4.0.0: dependencies: prop-types "^15.7.2" -react-markdown@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-5.0.3.tgz#41040ea7a9324b564b328fb81dd6c04f2a5373ac" - integrity sha512-jDWOc1AvWn0WahpjW6NK64mtx6cwjM4iSsLHJPNBqoAgGOVoIdJMqaKX4++plhOtdd4JksdqzlDibgPx6B/M2w== +react-markdown@8.0.7: + version "8.0.7" + resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-8.0.7.tgz#c8dbd1b9ba5f1c5e7e5f2a44de465a3caafdf89b" + integrity sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ== dependencies: - "@types/mdast" "^3.0.3" - "@types/unist" "^2.0.3" - html-to-react "^1.3.4" - mdast-add-list-metadata "1.0.1" - prop-types "^15.7.2" - react-is "^16.8.6" - remark-parse "^9.0.0" - unified "^9.0.0" - unist-util-visit "^2.0.0" - xtend "^4.0.1" + "@types/hast" "^2.0.0" + "@types/prop-types" "^15.0.0" + "@types/unist" "^2.0.0" + comma-separated-tokens "^2.0.0" + hast-util-whitespace "^2.0.0" + prop-types "^15.0.0" + property-information "^6.0.0" + react-is "^18.0.0" + remark-parse "^10.0.0" + remark-rehype "^10.0.0" + space-separated-tokens "^2.0.0" + style-to-object "^0.4.0" + unified "^10.0.0" + unist-util-visit "^4.0.0" + vfile "^5.0.0" react-plotly.js@^2.4.0: version "2.6.0" @@ -11928,12 +12111,24 @@ relateurl@^0.2.7: resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== -remark-parse@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-9.0.0.tgz#4d20a299665880e4f4af5d90b7c7b8a935853640" - integrity sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw== +remark-parse@^10.0.0: + version "10.0.2" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-10.0.2.tgz#ca241fde8751c2158933f031a4e3efbaeb8bc262" + integrity sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw== dependencies: - mdast-util-from-markdown "^0.8.0" + "@types/mdast" "^3.0.0" + mdast-util-from-markdown "^1.0.0" + unified "^10.0.0" + +remark-rehype@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-10.1.0.tgz#32dc99d2034c27ecaf2e0150d22a6dcccd9a6279" + integrity sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw== + dependencies: + "@types/hast" "^2.0.0" + "@types/mdast" "^3.0.0" + mdast-util-to-hast "^12.1.0" + unified "^10.0.0" renderkid@^3.0.0: version "3.0.0" @@ -12117,6 +12312,13 @@ rxjs@^7.5.1, rxjs@^7.5.5, rxjs@^7.8.0: dependencies: tslib "^2.1.0" +sade@^1.7.3: + version "1.8.1" + resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" + integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== + dependencies: + mri "^1.1.0" + safe-array-concat@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" @@ -12530,6 +12732,11 @@ sourcemap-codec@^1.4.8: resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== +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== + spdy-transport@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" @@ -12861,6 +13068,13 @@ style-loader@^3.3.1: resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.4.tgz#f30f786c36db03a45cbd55b6a70d930c479090e7" integrity sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w== +style-to-object@^0.4.0: + version "0.4.4" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.4.4.tgz#266e3dfd56391a7eefb7770423612d043c3f33ec" + integrity sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg== + dependencies: + inline-style-parser "0.1.1" + stylehacks@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" @@ -13286,10 +13500,15 @@ tr46@^2.1.0: dependencies: punycode "^2.1.1" -trough@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" - integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== +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== + +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== tryer@^1.0.1: version "1.0.1" @@ -13499,17 +13718,18 @@ unicode-property-aliases-ecmascript@^2.0.0: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== -unified@^9.0.0: - version "9.2.2" - resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.2.tgz#67649a1abfc3ab85d2969502902775eb03146975" - integrity sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ== +unified@^10.0.0: + version "10.1.2" + resolved "https://registry.yarnpkg.com/unified/-/unified-10.1.2.tgz#b1d64e55dafe1f0b98bb6c719881103ecf6c86df" + integrity sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q== dependencies: - bail "^1.0.0" + "@types/unist" "^2.0.0" + bail "^2.0.0" extend "^3.0.0" is-buffer "^2.0.0" - is-plain-obj "^2.0.0" - trough "^1.0.0" - vfile "^4.0.0" + is-plain-obj "^4.0.0" + trough "^2.0.0" + vfile "^5.0.0" unique-string@^2.0.0: version "2.0.0" @@ -13518,39 +13738,48 @@ unique-string@^2.0.0: dependencies: crypto-random-string "^2.0.0" -unist-util-is@^4.0.0: - version "4.1.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-generated@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-2.0.1.tgz#e37c50af35d3ed185ac6ceacb6ca0afb28a85cae" + integrity sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A== -unist-util-stringify-position@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" - integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== +unist-util-is@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-5.2.1.tgz#b74960e145c18dcb6226bc57933597f5486deae9" + integrity sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw== dependencies: - "@types/unist" "^2.0.2" + "@types/unist" "^2.0.0" -unist-util-visit-parents@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-1.1.2.tgz#f6e3afee8bdbf961c0e6f028ea3c0480028c3d06" - integrity sha512-yvo+MMLjEwdc3RhhPYSximset7rwjMrdt9E41Smmvg25UQIenzrN83cRnF1JMzoMi9zZOQeYXHSDf7p+IQkW3Q== +unist-util-position@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-4.0.4.tgz#93f6d8c7d6b373d9b825844645877c127455f037" + integrity sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg== + dependencies: + "@types/unist" "^2.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" - integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== +unist-util-stringify-position@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz#03ad3348210c2d930772d64b489580c13a7db39d" + integrity sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg== dependencies: "@types/unist" "^2.0.0" - unist-util-is "^4.0.0" -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" - integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== +unist-util-visit-parents@^5.1.1: + version "5.1.3" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz#b4520811b0ca34285633785045df7a8d6776cfeb" + integrity sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^5.0.0" + +unist-util-visit@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-4.1.2.tgz#125a42d1eb876283715a3cb5cceaa531828c72e2" + integrity sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg== dependencies: "@types/unist" "^2.0.0" - unist-util-is "^4.0.0" - unist-util-visit-parents "^3.0.0" + unist-util-is "^5.0.0" + unist-util-visit-parents "^5.1.1" universal-cookie@^4.0.0: version "4.0.4" @@ -13656,6 +13885,16 @@ uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uvu@^0.5.0: + version "0.5.6" + resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.6.tgz#2754ca20bcb0bb59b64e9985e84d2e81058502df" + integrity sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA== + dependencies: + dequal "^2.0.0" + diff "^5.0.0" + kleur "^4.0.3" + sade "^1.7.3" + v8-compile-cache@^2.0.3: version "2.4.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz#cdada8bec61e15865f05d097c5f4fd30e94dc128" @@ -13689,23 +13928,23 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vfile-message@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" - integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ== +vfile-message@^3.0.0: + version "3.1.4" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-3.1.4.tgz#15a50816ae7d7c2d1fa87090a7f9f96612b59dea" + integrity sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw== dependencies: "@types/unist" "^2.0.0" - unist-util-stringify-position "^2.0.0" + unist-util-stringify-position "^3.0.0" -vfile@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624" - integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA== +vfile@^5.0.0: + version "5.3.7" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-5.3.7.tgz#de0677e6683e3380fafc46544cfe603118826ab7" + integrity sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g== dependencies: "@types/unist" "^2.0.0" is-buffer "^2.0.0" - unist-util-stringify-position "^2.0.0" - vfile-message "^2.0.0" + unist-util-stringify-position "^3.0.0" + vfile-message "^3.0.0" void-elements@3.1.0: version "3.1.0" @@ -14280,7 +14519,7 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: +"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==