Fix for url paths including custom views.

Added blog preview example
This commit is contained in:
francesco
2021-08-04 17:42:01 +02:00
parent ef99e9b2a0
commit d10a9bd82f
16 changed files with 828 additions and 232 deletions

View File

@@ -1,5 +1,11 @@
# Change Log
## [0.47.0] - 2021-08-02
### Changed
- [BREAKING] `EntityCustomViewBuilder` has been renamed to `EntityCustomView`
## [0.46.0] - 2021-08-02
### Added

View File

@@ -4,14 +4,15 @@
"private": true,
"dependencies": {
"@camberi/firecms": "link:..",
"algoliasearch": "link:../node_modules/algoliasearch",
"firebase": "link:../node_modules/firebase",
"@material-ui/core": "link:../node_modules/@material-ui/core",
"@material-ui/icons": "link:../node_modules/@material-ui/icons",
"@material-ui/pickers": "link:../node_modules/@material-ui/pickers",
"@material-ui/lab": "link:../node_modules/@material-ui/lab",
"@material-ui/pickers": "link:../node_modules/@material-ui/pickers",
"algoliasearch": "link:../node_modules/algoliasearch",
"firebase": "link:../node_modules/firebase",
"react": "link:../node_modules/react",
"react-dom": "link:../node_modules/react-dom",
"react-markdown": "^6.0.3",
"react-scripts": "link:../node_modules/react-scripts"
},
"scripts": {

View File

@@ -1,60 +1,171 @@
import React from "react";
import { Box, Button } from "@material-ui/core";
import { Entity, EntityValues, useSnackbarController } from "@camberi/firecms";
import React, { useEffect, useState } from "react";
import {
Box,
CardActionArea,
CardContent,
CircularProgress,
Container,
Typography
} from "@material-ui/core";
import {
EntityCustomViewParams,
EntityValues,
getDownloadURL
} from "@camberi/firecms";
import { blogSchema } from "../schemas/blog_schema";
import ReactMarkdown from "react-markdown";
import { productSchema } from "../schemas/products_schema";
import firebase from "firebase";
export function SampleProductsView({ entity, modifiedValues }: {
entity?: Entity<typeof blogSchema>;
modifiedValues?: EntityValues<typeof blogSchema>;
}) {
const snackbarContext = useSnackbarController();
export function BlogEntryPreview({ modifiedValues }: EntityCustomViewParams<typeof blogSchema>) {
const onClick = (event: React.MouseEvent) => {
snackbarContext.open({
type: "success",
message: `Custom action for ${modifiedValues?.name}`
});
};
const [headerUrl, setHeaderUrl] = useState<string | undefined>();
useEffect(() => {
if (modifiedValues?.header_image) {
getDownloadURL(modifiedValues.header_image)
.then((res) => setHeaderUrl(res));
}
}, [modifiedValues?.header_image]);
return (
<Box
display="flex"
width={"100%"}
height={"100%"}>
<Box>
<Box m="auto"
display="flex"
flexDirection={"column"}
alignItems={"center"}
justifyItems={"center"}>
{headerUrl && <img
alt={"Header"}
style={{
width: "100%",
maxHeight: "300px",
objectFit: "cover"
}}
src={headerUrl}
/>}
<Box p={2}>
<p>
This is an example of a custom view added
as a panel to an entity schema.
</p>
<p>
Values in the form:
</p>
<p style={{
color: "#fff",
padding: "8px",
fontSize: ".85em",
fontFamily: "monospace",
borderRadius: "4px",
backgroundColor: "#4e482f"
}}>
{modifiedValues && JSON.stringify(modifiedValues, null, 2)}
</p>
</Box>
<Container maxWidth={"md"} style={{
alignItems: "center",
justifyItems: "center",
display: "flex",
flexDirection: "column"
}}>
{modifiedValues?.name && <Typography variant={"h2"} style={{
marginTop: "40px",
marginBottom: "20px"
}}>
{modifiedValues.name}
</Typography>}
<Button onClick={onClick} color="primary">
Your action
</Button>
{modifiedValues?.content && modifiedValues.content.map(
(entry: any, index: number) => {
if (entry.type === "text")
return <Text markdownText={entry.value}/>;
if (entry.type === "images")
return <Images storagePaths={entry.value}/>;
if (entry.type === "products")
return <Products references={entry.value}/>;
else throw Error(`Unsupported component ${entry.type}`);
}
)}
</Container>
</Box>
</Box>
);
}
export function Images({ storagePaths }: { storagePaths: string[] }) {
return <Box display="flex">
{storagePaths.map((path) =>
<Box m={1}>
<Box p={2}
style={{
width: 250,
height: 250
}}>
<StorageImage storagePath={path}/>
</Box>
</Box>)}
</Box>;
}
export function StorageImage({ storagePath }: { storagePath: string }) {
const [url, setUrl] = useState<string | undefined>();
useEffect(() => {
if (storagePath) {
getDownloadURL(storagePath)
.then((res) => setUrl(res));
}
}, [storagePath]);
return (<img
alt={"Generic"}
style={{
objectFit: "contain",
width: "100%",
height: "100%"
}} src={url}/>);
}
export function Text({ markdownText }: { markdownText: string }) {
return <Container maxWidth={"sm"}>
<Box mt={6} mb={6}>
<ReactMarkdown>{markdownText}</ReactMarkdown>
</Box>
</Container>;
}
export function Products({ references }: { references: firebase.firestore.DocumentReference[] }) {
const [products, setProducts] = useState<object[] | undefined>();
useEffect(() => {
if (references) {
Promise.all(references.map((ref) => ref.get().then(doc => doc.data())))
.then((results) => results.filter(r => !!r) as object[])
.then((results) => setProducts(results));
}
}, [references]);
if (!products) return <CircularProgress/>;
return <Box>
{products.map((p) => <ProductPreview
values={p as EntityValues<typeof productSchema>}/>)}
</Box>;
}
export function ProductPreview({ values }: { values: EntityValues<typeof productSchema> }) {
return <CardActionArea style={{
width: "400px",
height: "400px",
margin: "16px",
boxShadow: "rgb(0 0 0 / 8%) 0px 8px 12px -4px"
}}>
<CardContent style={{
height: "100%",
display: "flex",
flexDirection: "column"
}}>
<Box flexGrow={1} flexShrink={1} flexBasis={296} p={2}
maxHeight={296}>
<StorageImage storagePath={values.main_image}/>
</Box>
<Typography gutterBottom
variant="h6"
noWrap
style={{
marginTop: "16px"
}}>
{values.name}
</Typography>
<Typography variant="body2"
color="textSecondary"
component="div">
{values.price} {values.currency}
</Typography>
</CardContent>
</CardActionArea>;
}

View File

@@ -1,8 +1,15 @@
import CustomColorTextField from "../custom_field/CustomColorTextField";
import { buildSchema, ExportMappingFunction } from "@camberi/firecms";
import { BlogEntryPreview } from "../custom_schema_view/BlogEntryPreview";
export const blogSchema = buildSchema({
name: "Blog entry",
views: [{
path: "preview",
name: "Preview",
builder: (props) => <BlogEntryPreview {...props}/>
}],
properties: {
name: {
title: "Name",
@@ -59,7 +66,7 @@ export const blogSchema = buildSchema({
products: {
title: "Products",
dataType: "array",
of:{
of: {
dataType: "reference",
collectionPath: "products",
previewProperties: ["name", "main_image"]
@@ -85,7 +92,7 @@ export const blogSchema = buildSchema({
},
reviewed: {
title: "Reviewed",
dataType: "boolean",
dataType: "boolean"
},
status: {
title: "Status",

View File

@@ -6,7 +6,7 @@ import {
buildSchema,
buildSchemaFrom,
Entity,
EntityCustomViewBuilder,
EntityCustomView,
EnumValues,
ExtraActionsParams
} from "@camberi/firecms";
@@ -59,7 +59,7 @@ const categories: EnumValues = {
watches: "Watches"
};
const sampleView: EntityCustomViewBuilder = {
const sampleView: EntityCustomView = {
path: "sample_custom_view",
name: "Custom view",
builder: ({ schema, entity, modifiedValues }) => (

View File

@@ -1262,6 +1262,13 @@
dependencies:
regenerator-runtime "^0.13.4"
"@babel/runtime@7.13.10":
version "7.13.10"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.10.tgz#47d42a57b6095f4468da440388fdbad8bebf0d7d"
integrity sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==
dependencies:
regenerator-runtime "^0.13.4"
"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.5", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
version "7.14.0"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.0.tgz#46794bc20b612c5f75e62dd071e24dfd95f1cbe6"
@@ -1269,6 +1276,13 @@
dependencies:
regenerator-runtime "^0.13.4"
"@babel/runtime@^7.14.6":
version "7.14.8"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.8.tgz#7119a56f421018852694290b9f9148097391b446"
integrity sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg==
dependencies:
regenerator-runtime "^0.13.4"
"@babel/template@^7.10.4", "@babel/template@^7.12.13", "@babel/template@^7.3.3":
version "7.12.13"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327"
@@ -1364,36 +1378,14 @@
resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.4.0.tgz#d6716f9fa36a6e340bc0ecfe68af325aa6f60508"
integrity sha512-Jj2xW+8+8XPfWGkv9HPv/uR+Qrmq37NPYT352wf7MvE9LrstpLVmFg3LqG6MCRr5miLAom5sen2gZ+iOhVDeRA==
"@firebase/analytics@0.6.11":
version "0.6.11"
resolved "https://registry.yarnpkg.com/@firebase/analytics/-/analytics-0.6.11.tgz#0560b6e9e62bb8a135b9c038e3a397706b8a1fb0"
integrity sha512-I4rHkJ2jVFIXfcXCRjVrJLwOoM0Kk3asRrvaqRoL3a14CjAdCncHvhQ6wSrfzFAeFMrH1t6UJP1sxRqHOZ5TGA==
"@firebase/analytics@0.6.10":
version "0.6.10"
resolved "https://registry.yarnpkg.com/@firebase/analytics/-/analytics-0.6.10.tgz#e2438d57fa289d1f05ca1a2ea7aedee10501fc3e"
integrity sha512-dLOAfeHYKkt1mhFNzrST6X0W5Og/VKhH7VP03YlUwz1STKtPve/KV32IynjMEBgnI6DC1NIAX3V0jYK6KBum4A==
dependencies:
"@firebase/analytics-types" "0.4.0"
"@firebase/component" "0.5.1"
"@firebase/installations" "0.4.27"
"@firebase/logger" "0.2.6"
"@firebase/util" "1.1.0"
tslib "^2.1.0"
"@firebase/app-check-interop-types@0.1.0":
version "0.1.0"
resolved "https://registry.yarnpkg.com/@firebase/app-check-interop-types/-/app-check-interop-types-0.1.0.tgz#83afd9d41f99166c2bdb2d824e5032e9edd8fe53"
integrity sha512-uZfn9s4uuRsaX5Lwx+gFP3B6YsyOKUE+Rqa6z9ojT4VSRAsZFko9FRn6OxQUA1z5t5d08fY4pf+/+Dkd5wbdbA==
"@firebase/app-check-types@0.1.0":
version "0.1.0"
resolved "https://registry.yarnpkg.com/@firebase/app-check-types/-/app-check-types-0.1.0.tgz#75602650c5f118891834280b72addcac513c4b7d"
integrity sha512-jf92QzVkj9ulyp/K01h/GpVYNSjuk6DP9nHkq4AUyM+35e96cl9gL3+qOTD0//5CVfrWjRo7+lbVlW2OpG/JDQ==
"@firebase/app-check@0.1.2":
version "0.1.2"
resolved "https://registry.yarnpkg.com/@firebase/app-check/-/app-check-0.1.2.tgz#36af1a35c73526141a421d9eaf369b2815cf632b"
integrity sha512-7DPXys2aWyuBHFBNkO6JKip9FjKRi1j3xPIi6saKsKjnVKM7UcCCSTMPJjD/b1XpikU0pS5lqWumdOk7h0tD3Q==
dependencies:
"@firebase/app-check-interop-types" "0.1.0"
"@firebase/app-check-types" "0.1.0"
"@firebase/component" "0.5.1"
"@firebase/component" "0.5.0"
"@firebase/installations" "0.4.26"
"@firebase/logger" "0.2.6"
"@firebase/util" "1.1.0"
tslib "^2.1.0"
@@ -1403,13 +1395,13 @@
resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.6.2.tgz#8578cb1061a83ced4570188be9e225d54e0f27fb"
integrity sha512-2VXvq/K+n8XMdM4L2xy5bYp2ZXMawJXluUIDzUBvMthVR+lhxK4pfFiqr1mmDbv9ydXvEAuFsD+6DpcZuJcSSw==
"@firebase/app@0.6.23":
version "0.6.23"
resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.6.23.tgz#f9c9ed2ee9896247c4645e7b47a5f2ebe13f7b46"
integrity sha512-nGCO+VD7Ct93MMPJxkSJ2/lcFeoMpx9xvPokvAykLYDlMVJzc9nXoCVK0xI0JGuMJS88r+XbrEf6wSqYjiNivw==
"@firebase/app@0.6.21":
version "0.6.21"
resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.6.21.tgz#ce8f010267b9c680b0295f5d6602910726e85627"
integrity sha512-SpWXdy/U06gTOEofSjhcsFGUtYmZim7ty6U4eMUQH0ObtymeVdTiK4tJcohMT5XoihQw4CLS2YvDySwx3+BlWg==
dependencies:
"@firebase/app-types" "0.6.2"
"@firebase/component" "0.5.1"
"@firebase/component" "0.5.0"
"@firebase/logger" "0.2.6"
"@firebase/util" "1.1.0"
dom-storage "2.1.0"
@@ -1426,17 +1418,17 @@
resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.10.3.tgz#2be7dd93959c8f5304c63e09e98718e103464d8c"
integrity sha512-zExrThRqyqGUbXOFrH/sowuh2rRtfKHp9SBVY2vOqKWdCX1Ztn682n9WLtlUDsiYVIbBcwautYWk2HyCGFv0OA==
"@firebase/auth@0.16.6":
version "0.16.6"
resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.16.6.tgz#0fc7a11561b939865fd486cd1909a3e81742fd82"
integrity sha512-1Lj3AY40Z2weCK6FuJqUEkeVJpRaaCo1LT6P5s3VIR99PDYLHeMm2m02rBaskE7ralJA975Vkv7sHrpykRfDrA==
"@firebase/auth@0.16.5":
version "0.16.5"
resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.16.5.tgz#703a9f1208e14fa0801798bd926c4a8f59fc97c4"
integrity sha512-Cgs/TlVot2QkbJyEphvKmu+2qxYlNN+Q2+29aqZwryrnn1eLwlC7nT89K6O91/744HJRtiThm02bMj2Wh61E3Q==
dependencies:
"@firebase/auth-types" "0.10.3"
"@firebase/component@0.5.1":
version "0.5.1"
resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.5.1.tgz#b61314f1065552bfc4bf15ebbc66f74be018ed46"
integrity sha512-l1yYAH7OSdmaLXmVBR1vjop2WNELDty3G4NxLFLysWxkcTPhqG+PjKzHEEkAgJ2slF5H3O9BFOGP9OUtrHhvMA==
"@firebase/component@0.5.0":
version "0.5.0"
resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.5.0.tgz#f5b577d6c6f78d0f12fdc45046108921507f49c9"
integrity sha512-v18csWtXb0ri+3m7wuGLY/UDgcb89vuMlZGQ//+7jEPLIQeLbylvZhol1uzW9WzoOpxMxOS2W5qyVGX36wZvEA==
dependencies:
"@firebase/util" "1.1.0"
tslib "^2.1.0"
@@ -1448,13 +1440,13 @@
dependencies:
"@firebase/app-types" "0.6.2"
"@firebase/database@0.10.3":
version "0.10.3"
resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.10.3.tgz#e7e3f65eb9b1851cd014c46705bdef714066bdab"
integrity sha512-PaQ2EEvx0LsWIqN7qsoqN4RiAJYs6FL5BFDFEPTjJZW410ECnMcNfXCASYuQSU903sY4MA0ki9H1nH0J7gb7bQ==
"@firebase/database@0.10.0":
version "0.10.0"
resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.10.0.tgz#671daa57867855ea4639a124714d39222f15f016"
integrity sha512-GsHvuES83Edtboij2h3txKg+yV/TD4b5Owc01SgXEQtvj1lulkHt4Ufmd9OZz1WreWQJMIqKpbVowIDHjlkZJQ==
dependencies:
"@firebase/auth-interop-types" "0.1.6"
"@firebase/component" "0.5.1"
"@firebase/component" "0.5.0"
"@firebase/database-types" "0.7.2"
"@firebase/logger" "0.2.6"
"@firebase/util" "1.1.0"
@@ -1466,17 +1458,17 @@
resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-2.3.0.tgz#baf5c9470ba8be96bf0d76b83b413f03104cf565"
integrity sha512-QTW7NP7nDL0pgT/X53lyj+mIMh4nRQBBTBlRNQBt7eSyeqBf3ag3bxdQhCg358+5KbjYTC2/O6QtX9DlJZmh1A==
"@firebase/firestore@2.3.3":
version "2.3.3"
resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-2.3.3.tgz#1ed2cf3cf25f8a11cc1a81cc78f7d1749c02cf0d"
integrity sha512-S5w73nIlEqFUvt7JB4j1/Mb0VQ+y5YNj+y6gw5/PYq2j4+E4Znc8LdVLZadaD5FYYb4yi3JIgmR0xGZ8hT96aA==
"@firebase/firestore@2.3.0":
version "2.3.0"
resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-2.3.0.tgz#704734eaf7b3e454dd55e0fee2c02625adaeb6c7"
integrity sha512-0RXEPVODLDYfAvt3wJaxXnDKFaO29OFCMpQ0s5rVjvYKs5ijpzf/FYu78i10HVYoDbjh8ZaZT+EVoxUNZiFq1w==
dependencies:
"@firebase/component" "0.5.1"
"@firebase/component" "0.5.0"
"@firebase/firestore-types" "2.3.0"
"@firebase/logger" "0.2.6"
"@firebase/util" "1.1.0"
"@firebase/webchannel-wrapper" "0.4.1"
"@grpc/grpc-js" "^1.3.2"
"@grpc/grpc-js" "^1.0.0"
"@grpc/proto-loader" "^0.5.0"
node-fetch "2.6.1"
tslib "^2.1.0"
@@ -1486,12 +1478,12 @@
resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.4.0.tgz#0b789f4fe9a9c0b987606c4da10139345b40f6b9"
integrity sha512-3KElyO3887HNxtxNF1ytGFrNmqD+hheqjwmT3sI09FaDCuaxGbOnsXAXH2eQ049XRXw9YQpHMgYws/aUNgXVyQ==
"@firebase/functions@0.6.10":
version "0.6.10"
resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.6.10.tgz#52f2408a3298f5bc561a9e940e6b281178897c31"
integrity sha512-rB6u1Yvo/z6uBV14Cr+5mc7xjbBWRmc3hUET5kfkq5q9BkDe8NW9wbqADBnhw8BUiP3TMLiBabRTZKEcdY+KJQ==
"@firebase/functions@0.6.8":
version "0.6.8"
resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.6.8.tgz#b89aa7e924278598858ed53f69b3f55daadc1d0e"
integrity sha512-Dttm53M6z31X6RfPPPMR4tkxSEIdIEcPmxEzABIdIjecSWuRpnDbEX3EmaTxjyRBn1g5TCAIsaEpGM17xh4UHw==
dependencies:
"@firebase/component" "0.5.1"
"@firebase/component" "0.5.0"
"@firebase/functions-types" "0.4.0"
"@firebase/messaging-types" "0.5.0"
node-fetch "2.6.1"
@@ -1502,12 +1494,12 @@
resolved "https://registry.yarnpkg.com/@firebase/installations-types/-/installations-types-0.3.4.tgz#589a941d713f4f64bf9f4feb7f463505bab1afa2"
integrity sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q==
"@firebase/installations@0.4.27":
version "0.4.27"
resolved "https://registry.yarnpkg.com/@firebase/installations/-/installations-0.4.27.tgz#79a4ec352dce2519dcda3499bf4d8f6817fe30f7"
integrity sha512-sHG1kYnax/UPw3IPAaPgELP1LaeRyedlz7EPTNLVEPvfOoEqj20V+psbQGdQRVPdF1ODOVwuKeptvH5iyAEtBg==
"@firebase/installations@0.4.26":
version "0.4.26"
resolved "https://registry.yarnpkg.com/@firebase/installations/-/installations-0.4.26.tgz#34133944123d92077674dcec81e32b4fccd92021"
integrity sha512-bHc6jlV8p1cX+GK38key4BooeZZ42//nKPmf3POWren0bACjnfHJuMnOBDuyw22ss3z6wUdiFNQjeUxvD4btGg==
dependencies:
"@firebase/component" "0.5.1"
"@firebase/component" "0.5.0"
"@firebase/installations-types" "0.3.4"
"@firebase/util" "1.1.0"
idb "3.0.2"
@@ -1523,13 +1515,13 @@
resolved "https://registry.yarnpkg.com/@firebase/messaging-types/-/messaging-types-0.5.0.tgz#c5d0ef309ced1758fda93ef3ac70a786de2e73c4"
integrity sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg==
"@firebase/messaging@0.7.11":
version "0.7.11"
resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.7.11.tgz#13120bb11c989e3b2b5e5888ec044ee9d751d827"
integrity sha512-ASa2zaHrzY3+ozWSyfiIexdtrNgCVVdHkj+6Vxt/kxihw+hH5FuJDeOYby6PY09wq/xFnFgXFyPTFZ7y+CQW0w==
"@firebase/messaging@0.7.10":
version "0.7.10"
resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.7.10.tgz#a46fb689d7feed46b2112cb08dd44993c6ceecec"
integrity sha512-Z5ui3kc1GbPf2+kwNvr0HjguBbi0xTkR7/BHodHHGpz0ycuY/J2/Cl9SgwhEuB52kme4ca9sKwV1g0Ln2/iARw==
dependencies:
"@firebase/component" "0.5.1"
"@firebase/installations" "0.4.27"
"@firebase/component" "0.5.0"
"@firebase/installations" "0.4.26"
"@firebase/messaging-types" "0.5.0"
"@firebase/util" "1.1.0"
idb "3.0.2"
@@ -1540,13 +1532,13 @@
resolved "https://registry.yarnpkg.com/@firebase/performance-types/-/performance-types-0.0.13.tgz#58ce5453f57e34b18186f74ef11550dfc558ede6"
integrity sha512-6fZfIGjQpwo9S5OzMpPyqgYAUZcFzZxHFqOyNtorDIgNXq33nlldTL/vtaUZA8iT9TT5cJlCrF/jthKU7X21EA==
"@firebase/performance@0.4.13":
version "0.4.13"
resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.4.13.tgz#5bb07a36efbad3a5f3ee158d4a8403bce4f0101f"
integrity sha512-DY9UN15cqPm7mS5U+mnM9FEeyRaPiloPkmKCmyiVTcpLGgQTCz+FJSsLg1xblWAF7vQFDr2l/D8PyjdzSAAy7g==
"@firebase/performance@0.4.12":
version "0.4.12"
resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.4.12.tgz#fe4068ad29682d127e4ef1efc6dcca7c68f3ac39"
integrity sha512-dFV0OR5IpHZwfOLFkEZuUVFmaJQresmS5G4UNFGk1E0VwU4feZ3roq75dJVYehclJxmbzgMM9M/U1bZ1/9wt3g==
dependencies:
"@firebase/component" "0.5.1"
"@firebase/installations" "0.4.27"
"@firebase/component" "0.5.0"
"@firebase/installations" "0.4.26"
"@firebase/logger" "0.2.6"
"@firebase/performance-types" "0.0.13"
"@firebase/util" "1.1.0"
@@ -1566,13 +1558,13 @@
resolved "https://registry.yarnpkg.com/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz#fe6bbe4d08f3b6e92fce30e4b7a9f4d6a96d6965"
integrity sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA==
"@firebase/remote-config@0.1.38":
version "0.1.38"
resolved "https://registry.yarnpkg.com/@firebase/remote-config/-/remote-config-0.1.38.tgz#71f3eb6bd0054165fe5a6055b8d9a5307bd4b234"
integrity sha512-fIwSbkq0J3F8t32x98WfIduKJGu7x+suslRFHxvl3Kx8Y7WBCOE3081yHtiTe7lGyM+WMqI0vFevILrKXp0l3g==
"@firebase/remote-config@0.1.37":
version "0.1.37"
resolved "https://registry.yarnpkg.com/@firebase/remote-config/-/remote-config-0.1.37.tgz#b79fe81231d3ca1325836a8aa9756cb7aa587d3a"
integrity sha512-SYjDOsEoUeqX1CYnUtXqVtM8MpVm2qx2Dp8NLRlLcPp/FieEza/mjRNVHBojMKuFjmyQp/RdPG8R0I9xDJ4PsQ==
dependencies:
"@firebase/component" "0.5.1"
"@firebase/installations" "0.4.27"
"@firebase/component" "0.5.0"
"@firebase/installations" "0.4.26"
"@firebase/logger" "0.2.6"
"@firebase/remote-config-types" "0.1.9"
"@firebase/util" "1.1.0"
@@ -1583,12 +1575,12 @@
resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.4.1.tgz#da6582ae217e3db485c90075dc71100ca5064cc6"
integrity sha512-IM4cRzAnQ6QZoaxVZ5MatBzqXVcp47hOlE28jd9xXw1M9V7gfjhmW0PALGFQx58tPVmuUwIKyoEbHZjV4qRJwQ==
"@firebase/storage@0.5.3":
version "0.5.3"
resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.5.3.tgz#414162dedf8f33013aaa7dbaa947a61fd19fb3e7"
integrity sha512-/mYa1RBfPX94rpT7KpQp2ITEyu3VE54QiJA5+yJRGtz+xHHisBbx9B5Cxee8p/bMWhUfXQJzpQMRis500mevHA==
"@firebase/storage@0.5.2":
version "0.5.2"
resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.5.2.tgz#146cb4c7838c6e3602b32a43786dcabd16f668fb"
integrity sha512-D2lZixL6E2iXE4jObtlA3UnAbcMd3657erotiuZt5ap95m1fogiPV/gIq3KLIaT5sFdfbbDQn9mm6hVKhobYHA==
dependencies:
"@firebase/component" "0.5.1"
"@firebase/component" "0.5.0"
"@firebase/storage-types" "0.4.1"
"@firebase/util" "1.1.0"
tslib "^2.1.0"
@@ -1605,10 +1597,10 @@
resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.4.1.tgz#600f2275ff54739ad5ac0102f1467b8963cd5f71"
integrity sha512-0yPjzuzGMkW1GkrC8yWsiN7vt1OzkMIi9HgxRmKREZl2wnNPOKo/yScTjXf/O57HM8dltqxPF6jlNLFVtc2qdw==
"@grpc/grpc-js@^1.3.2":
version "1.3.2"
resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.3.2.tgz#eae97e6daf5abd49a7818aadeca0744dfb1ebca1"
integrity sha512-UXepkOKCATJrhHGsxt+CGfpZy9zUn1q9mop5kfcXq1fBkTePxVNPOdnISlCbJFlCtld+pSLGyZCzr9/zVprFKA==
"@grpc/grpc-js@^1.0.0":
version "1.3.6"
resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.3.6.tgz#6e2d17610c2c8df0f6ceab0e1968f563df74b173"
integrity sha512-v7+LQFbqZKmd/Tvf5/j1Xlbq6jXL/4d+gUtm2TNX4QiEC3ELWADmGr2dGlUyLl6aKTuYfsN72vAsO5zmavYkEg==
dependencies:
"@types/node" ">=12.12.47"
@@ -1839,6 +1831,15 @@
"@types/yargs" "^15.0.0"
chalk "^4.0.0"
"@mapbox/rehype-prism@0.6.0":
version "0.6.0"
resolved "https://registry.yarnpkg.com/@mapbox/rehype-prism/-/rehype-prism-0.6.0.tgz#3d8a860870951d4354257d0ba908d11545bd5ed5"
integrity sha512-/0Ev/PB4fXdKPT6VDzVpnAPxGpWFIc4Yz3mf/DzLEMxlpIPZpZlCzaFk4V4NGFofQXPc41+GpEcZtWP3VuFWVA==
dependencies:
hast-util-to-string "^1.0.4"
refractor "^3.3.1"
unist-util-visit "^2.0.3"
"@material-ui/core@link:../node_modules/@material-ui/core":
version "0.0.0"
uid ""
@@ -2309,6 +2310,13 @@
dependencies:
"@types/unist" "*"
"@types/mdast@^3.0.3":
version "3.0.7"
resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.7.tgz#cba63d0cc11eb1605cea5c0ad76e02684394166b"
integrity sha512-YwR7OK8aPmaBvMMUi+pZXBNoW2unbVbfok4YRqGMJBe1dpDlzpRkJrYEYmvjxgs5JhuQmKfDexrN98u941Zasg==
dependencies:
"@types/unist" "*"
"@types/minimatch@*":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21"
@@ -2329,6 +2337,11 @@
resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
"@types/parse5@^5.0.0":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109"
integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==
"@types/prettier@^2.0.0":
version "2.2.3"
resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.3.tgz#ef65165aea2924c9359205bf748865b8881753c0"
@@ -2577,6 +2590,29 @@
"@typescript-eslint/types" "4.26.0"
eslint-visitor-keys "^2.0.0"
"@uiw/react-markdown-preview@3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@uiw/react-markdown-preview/-/react-markdown-preview-3.1.1.tgz#d58127d86dc22adf4697f0b21fd9b8c83a9f84fe"
integrity sha512-ReXjt48jSZgx4dBTZFT5pKCPt6hMegUTngiaq/Ama3qo+GhSCnmL0njOLzmodso5su7PY41fxFRJwDEdx8t3Xw==
dependencies:
"@babel/runtime" "7.13.10"
"@mapbox/rehype-prism" "0.6.0"
react-markdown "6.0.2"
rehype-raw "5.1.0"
rehype-rewrite "1.0.2"
remark-autolink-headings "6.0.1"
remark-gfm "1.0.0"
remark-slug "6.0.0"
"@uiw/react-md-editor@^3.4.10":
version "3.4.11"
resolved "https://registry.yarnpkg.com/@uiw/react-md-editor/-/react-md-editor-3.4.11.tgz#f5380ef017b54c813d1327b911815a22dc72afc8"
integrity sha512-GZliXyS4HACByB4p7+lHfCGnKQJZBMX+bWFWiadTUClRArFuWM9weGQjsKSZRPN3BL8ftWbvKYMKzOkWVTL8Mg==
dependencies:
"@babel/runtime" "^7.14.6"
"@uiw/react-markdown-preview" "3.1.1"
rehype "11.0.0"
"@webassemblyjs/ast@1.9.0":
version "1.9.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964"
@@ -3733,6 +3769,11 @@ case-sensitive-paths-webpack-plugin@2.3.0:
resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7"
integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==
ccount@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043"
integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==
chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
@@ -3755,6 +3796,11 @@ char-regex@^1.0.2:
resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf"
integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==
character-entities-html4@^1.0.0:
version "1.1.4"
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-legacy@^1.0.0:
version "1.1.4"
resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1"
@@ -3906,11 +3952,6 @@ coa@^2.0.2:
chalk "^2.4.1"
q "^1.1.2"
codemirror@^5.61.0:
version "5.61.1"
resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.61.1.tgz#ccfc8a43b8fcfb8b12e8e75b5ffde48d541406e0"
integrity sha512-+D1NZjAucuzE93vJGbAaXzvoBHwp9nJZWWWF9utjv25+5AZUiah6CIlfb4ikG4MoDsFsCG8niiJH5++OO2LgIQ==
collect-v8-coverage@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59"
@@ -3991,11 +4032,6 @@ commander@^4.1.1:
resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
commander@^6.1.0:
version "6.2.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
common-tags@^1.8.0:
version "1.8.0"
resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937"
@@ -4905,6 +4941,11 @@ emittery@^0.7.1:
resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82"
integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==
"emoji-regex@>=6.0.0 <=6.1.1":
version "6.1.1"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.1.1.tgz#c6cd0ec1b0642e2a3c67a1137efc5e796da4f88e"
integrity sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4=
emoji-regex@^7.0.1:
version "7.0.3"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
@@ -5924,6 +5965,13 @@ get-value@^2.0.3, get-value@^2.0.6:
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
github-slugger@^1.0.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.3.0.tgz#9bd0a95c5efdfc46005e82a906ef8e2a059124c9"
integrity sha512-gwJScWVNhFYSRDvURk/8yhcFBee6aFjye2a7Lhb2bUyRulpIoek9p0I9Kt7PT67d/nUlZbFu8L9RLiA0woQN8Q==
dependencies:
emoji-regex ">=6.0.0 <=6.1.1"
glob-parent@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
@@ -6124,6 +6172,106 @@ hash.js@^1.0.0, hash.js@^1.0.3:
inherits "^2.0.3"
minimalistic-assert "^1.0.1"
hast-to-hyperscript@^9.0.0:
version "9.0.1"
resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d"
integrity sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==
dependencies:
"@types/unist" "^2.0.3"
comma-separated-tokens "^1.0.0"
property-information "^5.3.0"
space-separated-tokens "^1.0.0"
style-to-object "^0.3.0"
unist-util-is "^4.0.0"
web-namespaces "^1.0.0"
hast-util-from-parse5@^6.0.0:
version "6.0.1"
resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz#554e34abdeea25ac76f5bd950a1f0180e0b3bc2a"
integrity sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==
dependencies:
"@types/parse5" "^5.0.0"
hastscript "^6.0.0"
property-information "^5.0.0"
vfile "^4.0.0"
vfile-location "^3.2.0"
web-namespaces "^1.0.0"
hast-util-is-element@^1.0.0:
version "1.1.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-raw@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-6.1.0.tgz#e16a3c2642f65cc7c480c165400a40d604ab75d0"
integrity sha512-5FoZLDHBpka20OlZZ4I/+RBw5piVQ8iI1doEvffQhx5CbCyTtP8UCq8Tw6NmTAMtXgsQxmhW7Ly8OdFre5/YMQ==
dependencies:
"@types/hast" "^2.0.0"
hast-util-from-parse5 "^6.0.0"
hast-util-to-parse5 "^6.0.0"
html-void-elements "^1.0.0"
parse5 "^6.0.0"
unist-util-position "^3.0.0"
unist-util-visit "^2.0.0"
vfile "^4.0.0"
web-namespaces "^1.0.0"
xtend "^4.0.0"
zwitch "^1.0.0"
hast-util-to-html@^7.1.1:
version "7.1.3"
resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-7.1.3.tgz#9f339ca9bea71246e565fc79ff7dbfe98bb50f5e"
integrity sha512-yk2+1p3EJTEE9ZEUkgHsUSVhIpCsL/bvT8E5GzmWc+N1Po5gBw+0F8bo7dpxXR0nu0bQVxVZGX2lBGF21CmeDw==
dependencies:
ccount "^1.0.0"
comma-separated-tokens "^1.0.0"
hast-util-is-element "^1.0.0"
hast-util-whitespace "^1.0.0"
html-void-elements "^1.0.0"
property-information "^5.0.0"
space-separated-tokens "^1.0.0"
stringify-entities "^3.0.1"
unist-util-is "^4.0.0"
xtend "^4.0.0"
hast-util-to-parse5@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz#1ec44650b631d72952066cea9b1445df699f8479"
integrity sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==
dependencies:
hast-to-hyperscript "^9.0.0"
property-information "^5.0.0"
web-namespaces "^1.0.0"
xtend "^4.0.0"
zwitch "^1.0.0"
hast-util-to-string@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/hast-util-to-string/-/hast-util-to-string-1.0.4.tgz#9b24c114866bdb9478927d7e9c36a485ac728378"
integrity sha512-eK0MxRX47AV2eZ+Lyr18DCpQgodvaS3fAQO2+b9Two9F5HEoRPhiUMNzoXArMJfZi2yieFzUBMRl3HNJ3Jus3w==
hast-util-whitespace@^1.0.0:
version "1.0.4"
resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz#e4fe77c4a9ae1cb2e6c25e02df0043d0164f6e41"
integrity sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==
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"
@@ -6222,6 +6370,11 @@ html-minifier-terser@^5.0.1:
relateurl "^0.2.7"
terser "^4.6.3"
html-void-elements@^1.0.0:
version "1.0.5"
resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483"
integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==
html-webpack-plugin@4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz#625097650886b97ea5dae331c320e3238f6c121c"
@@ -7525,15 +7678,6 @@ json-stable-stringify-without-jsonify@^1.0.1:
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
json2csv@^5.0.6:
version "5.0.6"
resolved "https://registry.yarnpkg.com/json2csv/-/json2csv-5.0.6.tgz#590e0e1b9579e59baa53bda0c0d840f4d8009687"
integrity sha512-0/4Lv6IenJV0qj2oBdgPIAmFiKKnh8qh7bmLFJ+/ZZHLjSeiL3fKKGX3UryvKPbxFbhV+JcYo9KUC19GJ/Z/4A==
dependencies:
commander "^6.1.0"
jsonparse "^1.3.1"
lodash.get "^4.4.2"
json3@^3.3.3:
version "3.3.3"
resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81"
@@ -7569,11 +7713,6 @@ jsonfile@^6.0.1:
optionalDependencies:
graceful-fs "^4.1.6"
jsonparse@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=
jss-plugin-camel-case@^10.5.1:
version "10.6.0"
resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.6.0.tgz#93d2cd704bf0c4af70cc40fb52d74b8a2554b170"
@@ -7828,11 +7967,6 @@ lodash.debounce@^4.0.8:
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
lodash.get@^4.4.2:
version "4.4.2"
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
lodash.memoize@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
@@ -7883,6 +8017,11 @@ long@^4.0.0:
resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
longest-streak@^2.0.0:
version "2.0.4"
resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4"
integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==
loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
@@ -7952,6 +8091,13 @@ map-visit@^1.0.0:
dependencies:
object-visit "^1.0.0"
markdown-table@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-2.0.0.tgz#194a90ced26d31fe753d8b9434430214c011865b"
integrity sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==
dependencies:
repeat-string "^1.0.0"
material-design-lite@^1.2.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/material-design-lite/-/material-design-lite-1.3.0.tgz#d004ce3fee99a1eeb74a78b8a325134a5f1171d3"
@@ -7983,6 +8129,15 @@ mdast-util-definitions@^4.0.0:
dependencies:
unist-util-visit "^2.0.0"
mdast-util-find-and-replace@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz#b7db1e873f96f66588c321f1363069abf607d1b5"
integrity sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==
dependencies:
escape-string-regexp "^4.0.0"
unist-util-is "^4.0.0"
unist-util-visit-parents "^3.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"
@@ -7994,6 +8149,48 @@ mdast-util-from-markdown@^0.8.0:
parse-entities "^2.0.0"
unist-util-stringify-position "^2.0.0"
mdast-util-gfm-autolink-literal@^0.1.0:
version "0.1.3"
resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz#9c4ff399c5ddd2ece40bd3b13e5447d84e385fb7"
integrity sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==
dependencies:
ccount "^1.0.0"
mdast-util-find-and-replace "^1.1.0"
micromark "^2.11.3"
mdast-util-gfm-strikethrough@^0.2.0:
version "0.2.3"
resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz#45eea337b7fff0755a291844fbea79996c322890"
integrity sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==
dependencies:
mdast-util-to-markdown "^0.6.0"
mdast-util-gfm-table@^0.1.0:
version "0.1.6"
resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz#af05aeadc8e5ee004eeddfb324b2ad8c029b6ecf"
integrity sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==
dependencies:
markdown-table "^2.0.0"
mdast-util-to-markdown "~0.6.0"
mdast-util-gfm-task-list-item@^0.1.0:
version "0.1.6"
resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz#70c885e6b9f543ddd7e6b41f9703ee55b084af10"
integrity sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==
dependencies:
mdast-util-to-markdown "~0.6.0"
mdast-util-gfm@^0.1.0:
version "0.1.2"
resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz#8ecddafe57d266540f6881f5c57ff19725bd351c"
integrity sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==
dependencies:
mdast-util-gfm-autolink-literal "^0.1.0"
mdast-util-gfm-strikethrough "^0.2.0"
mdast-util-gfm-table "^0.1.0"
mdast-util-gfm-task-list-item "^0.1.0"
mdast-util-to-markdown "^0.6.1"
mdast-util-to-hast@^10.2.0:
version "10.2.0"
resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz#61875526a017d8857b71abc9333942700b2d3604"
@@ -8008,6 +8205,23 @@ mdast-util-to-hast@^10.2.0:
unist-util-position "^3.0.0"
unist-util-visit "^2.0.0"
mdast-util-to-markdown@^0.6.0, mdast-util-to-markdown@^0.6.1, mdast-util-to-markdown@~0.6.0:
version "0.6.5"
resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz#b33f67ca820d69e6cc527a93d4039249b504bebe"
integrity sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==
dependencies:
"@types/unist" "^2.0.0"
longest-streak "^2.0.0"
mdast-util-to-string "^2.0.0"
parse-entities "^2.0.0"
repeat-string "^1.0.0"
zwitch "^1.0.0"
mdast-util-to-string@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527"
integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==
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"
@@ -8079,7 +8293,52 @@ microevent.ts@~0.1.1:
resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0"
integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==
micromark@~2.11.0:
micromark-extension-gfm-autolink-literal@~0.5.0:
version "0.5.7"
resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz#53866c1f0c7ef940ae7ca1f72c6faef8fed9f204"
integrity sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==
dependencies:
micromark "~2.11.3"
micromark-extension-gfm-strikethrough@~0.6.5:
version "0.6.5"
resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz#96cb83356ff87bf31670eefb7ad7bba73e6514d1"
integrity sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==
dependencies:
micromark "~2.11.0"
micromark-extension-gfm-table@~0.4.0:
version "0.4.3"
resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz#4d49f1ce0ca84996c853880b9446698947f1802b"
integrity sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==
dependencies:
micromark "~2.11.0"
micromark-extension-gfm-tagfilter@~0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz#d9f26a65adee984c9ccdd7e182220493562841ad"
integrity sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==
micromark-extension-gfm-task-list-item@~0.3.0:
version "0.3.3"
resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz#d90c755f2533ed55a718129cee11257f136283b8"
integrity sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==
dependencies:
micromark "~2.11.0"
micromark-extension-gfm@^0.3.0:
version "0.3.3"
resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz#36d1a4c089ca8bdfd978c9bd2bf1a0cb24e2acfe"
integrity sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==
dependencies:
micromark "~2.11.0"
micromark-extension-gfm-autolink-literal "~0.5.0"
micromark-extension-gfm-strikethrough "~0.6.5"
micromark-extension-gfm-table "~0.4.0"
micromark-extension-gfm-tagfilter "~0.3.0"
micromark-extension-gfm-task-list-item "~0.3.0"
micromark@^2.11.3, micromark@~2.11.0, micromark@~2.11.3:
version "2.11.4"
resolved "https://registry.yarnpkg.com/micromark/-/micromark-2.11.4.tgz#d13436138eea826383e822449c9a5c50ee44665a"
integrity sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==
@@ -8856,7 +9115,7 @@ parse-json@^5.0.0:
json-parse-even-better-errors "^2.3.0"
lines-and-columns "^1.1.6"
parse5@6.0.1:
parse5@6.0.1, parse5@^6.0.0:
version "6.0.1"
resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
@@ -9769,6 +10028,11 @@ pretty-format@^26.6.0, pretty-format@^26.6.2:
ansi-styles "^4.0.0"
react-is "^17.0.1"
prismjs@~1.24.0:
version "1.24.1"
resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.24.1.tgz#c4d7895c4d6500289482fa8936d9cdd192684036"
integrity sha512-mNPsedLuk90RVJioIky8ANZEwYm5w9LcvCXrxHlwf4fNVSn8jEipMybMkWUyyF0JhnC+C4VcOVSBuHRKs1L5Ow==
process-nextick-args@~2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
@@ -9831,7 +10095,7 @@ property-expr@^2.0.4:
resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.4.tgz#37b925478e58965031bb612ec5b3260f8241e910"
integrity sha512-sFPkHQjVKheDNnPvotjQmm3KD3uk1fWKUN7CrpdbwmUx3CrG3QiM8QpTSimvig5vTXmTvjz7+TDvXOI9+4rkcg==
property-information@^5.0.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==
@@ -10031,11 +10295,6 @@ react-base-table@^1.12.0:
react-virtualized-auto-sizer "^1.0.2"
react-window "^1.8.2"
react-codemirror2@^7.2.1:
version "7.2.1"
resolved "https://registry.yarnpkg.com/react-codemirror2/-/react-codemirror2-7.2.1.tgz#38dab492fcbe5fb8ebf5630e5bb7922db8d3a10c"
integrity sha512-t7YFmz1AXdlImgHXA9Ja0T6AWuopilub24jRaQdPVbzUJVNKIYuy3uCFZYa7CE5S3UW6SrSa5nAqVQvtzRF9gw==
react-csv@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/react-csv/-/react-csv-2.0.3.tgz#f5d17a3c71107d9bcbe580049350200debdc042a"
@@ -10122,7 +10381,7 @@ react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
react-markdown@^6.0.2:
react-markdown@6.0.2, react-markdown@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-6.0.2.tgz#d89be45c278b1e5f0196f851fffb11e30c69f027"
integrity sha512-Et2AjXAsbmPP1nLQQRqmVgcqzfwcz8uQJ8VAdADs8Nk/aaUA0YeU9RDLuCtD+GwajCnm/+Iiu2KPmXzmD/M3vA==
@@ -10141,6 +10400,25 @@ react-markdown@^6.0.2:
unist-util-visit "^2.0.0"
vfile "^4.0.0"
react-markdown@^6.0.3:
version "6.0.3"
resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-6.0.3.tgz#625ec767fa321d91801129387e7d31ee0cb99254"
integrity sha512-kQbpWiMoBHnj9myLlmZG9T1JdoT/OEyHK7hqM6CqFT14MAkgWiWBUYijLyBmxbntaN6dCDicPcUhWhci1QYodg==
dependencies:
"@types/hast" "^2.0.0"
"@types/unist" "^2.0.3"
comma-separated-tokens "^1.0.0"
prop-types "^15.7.2"
property-information "^5.3.0"
react-is "^17.0.0"
remark-parse "^9.0.0"
remark-rehype "^8.0.0"
space-separated-tokens "^1.1.0"
style-to-object "^0.3.0"
unified "^9.0.0"
unist-util-visit "^2.0.0"
vfile "^4.0.0"
react-measure@^2.5.2:
version "2.5.2"
resolved "https://registry.yarnpkg.com/react-measure/-/react-measure-2.5.2.tgz#4ffc410e8b9cb836d9455a9ff18fc1f0fca67f89"
@@ -10304,6 +10582,15 @@ redux@^4.0.5:
dependencies:
"@babel/runtime" "^7.9.2"
refractor@^3.3.1:
version "3.4.0"
resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.4.0.tgz#62bd274b06c942041f390c371b676eb67cb0a678"
integrity sha512-dBeD02lC5eytm9Gld2Mx0cMcnR+zhSnsTfPpWqFaMgUMJfC9A6bcN3Br/NaXrnBJcuxnLFR90k1jrkaSyV8umg==
dependencies:
hastscript "^6.0.0"
parse-entities "^2.0.0"
prismjs "~1.24.0"
regenerate-unicode-properties@^8.2.0:
version "8.2.0"
resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec"
@@ -10383,11 +10670,66 @@ regjsparser@^0.6.4:
dependencies:
jsesc "~0.5.0"
rehype-parse@^7.0.0:
version "7.0.1"
resolved "https://registry.yarnpkg.com/rehype-parse/-/rehype-parse-7.0.1.tgz#58900f6702b56767814afc2a9efa2d42b1c90c57"
integrity sha512-fOiR9a9xH+Le19i4fGzIEowAbwG7idy2Jzs4mOrFWBSJ0sNUgy0ev871dwWnbOo371SjgjG4pwzrbgSVrKxecw==
dependencies:
hast-util-from-parse5 "^6.0.0"
parse5 "^6.0.0"
rehype-raw@5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/rehype-raw/-/rehype-raw-5.1.0.tgz#66d5e8d7188ada2d31bc137bc19a1000cf2c6b7e"
integrity sha512-MDvHAb/5mUnif2R+0IPCYJU8WjHa9UzGtM/F4AVy5GixPlDZ1z3HacYy4xojDU+uBa+0X/3PIfyQI26/2ljJNA==
dependencies:
hast-util-raw "^6.1.0"
rehype-rewrite@1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/rehype-rewrite/-/rehype-rewrite-1.0.2.tgz#3534a954f56246e68e8b7fdaa1ea29c5d9734b12"
integrity sha512-B0cf4ziX1jJ0T2Dn6h8yA+CsUepFPrXlaNaFKTXJVRdKhpJWerMryzR5NlTjUEDPkTQb5euo3HNuJ8RFTH7qnQ==
dependencies:
ts-mdast "1.0.0"
unified "9.2.1"
rehype-stringify@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/rehype-stringify/-/rehype-stringify-8.0.0.tgz#9b6afb599bcf3165f10f93fc8548f9a03d2ec2ba"
integrity sha512-VkIs18G0pj2xklyllrPSvdShAV36Ff3yE5PUO9u36f6+2qJFnn22Z5gKwBOwgXviux4UC7K+/j13AnZfPICi/g==
dependencies:
hast-util-to-html "^7.1.1"
rehype@11.0.0:
version "11.0.0"
resolved "https://registry.yarnpkg.com/rehype/-/rehype-11.0.0.tgz#d81729e65f4ac2b26f5de0b6bafc257eb0780e1f"
integrity sha512-qXqRqiCFJD5CJ61CSJuNImTFrm3zVkOU9XywHDwrUuvWN74MWt72KJ67c5CM5x8g0vGcOkRVCrYj85vqkmHulQ==
dependencies:
rehype-parse "^7.0.0"
rehype-stringify "^8.0.0"
unified "^9.0.0"
relateurl@^0.2.7:
version "0.2.7"
resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=
remark-autolink-headings@6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/remark-autolink-headings/-/remark-autolink-headings-6.0.1.tgz#074470b8ec7714a0f06fa151e293152bf9723df9"
integrity sha512-LTV5G5NMjypHEr14tMNJ36yrP+xwT7mejJelZOPXKiF5WvRH9o36zXnr2QGqfms2yVASNpDaC9NBOwKlJJKuQw==
dependencies:
extend "^3.0.0"
unist-util-visit "^2.0.0"
remark-gfm@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-1.0.0.tgz#9213643001be3f277da6256464d56fd28c3b3c0d"
integrity sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==
dependencies:
mdast-util-gfm "^0.1.0"
micromark-extension-gfm "^0.3.0"
remark-parse@^9.0.0:
version "9.0.0"
resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-9.0.0.tgz#4d20a299665880e4f4af5d90b7c7b8a935853640"
@@ -10402,6 +10744,15 @@ remark-rehype@^8.0.0:
dependencies:
mdast-util-to-hast "^10.2.0"
remark-slug@6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/remark-slug/-/remark-slug-6.0.0.tgz#2b54a14a7b50407a5e462ac2f376022cce263e2c"
integrity sha512-ln67v5BrGKHpETnm6z6adlJPhESFJwfuZZ3jrmi+lKTzeZxh2tzFzUfDD4Pm2hRGOarHLuGToO86MNMZ/hA67Q==
dependencies:
github-slugger "^1.0.0"
mdast-util-to-string "^1.0.0"
unist-util-visit "^2.0.0"
remove-trailing-separator@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
@@ -10423,7 +10774,7 @@ repeat-element@^1.1.2:
resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9"
integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==
repeat-string@^1.6.1:
repeat-string@^1.0.0, repeat-string@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
@@ -11072,7 +11423,7 @@ sourcemap-codec@^1.4.4:
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
space-separated-tokens@^1.1.0:
space-separated-tokens@^1.0.0, space-separated-tokens@^1.1.0:
version "1.1.5"
resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899"
integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==
@@ -11294,6 +11645,15 @@ string_decoder@~1.1.1:
dependencies:
safe-buffer "~5.1.0"
stringify-entities@^3.0.1:
version "3.1.0"
resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-3.1.0.tgz#b8d3feac256d9ffcc9fa1fefdcf3ca70576ee903"
integrity sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==
dependencies:
character-entities-html4 "^1.0.0"
character-entities-legacy "^1.0.0"
xtend "^4.0.0"
stringify-object@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
@@ -11685,6 +12045,14 @@ tryer@^1.0.1:
resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8"
integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==
ts-mdast@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/ts-mdast/-/ts-mdast-1.0.0.tgz#62c1b5cb0c63dcab044f7f998f280700d504b57e"
integrity sha512-FmT5GbMU629/ty64741v7TdO8jm5xW09okr2VNExkLuRk5ngjKIDdn/woTB8lDtcgCMRS8lUNubImen0MkdF6g==
dependencies:
"@types/mdast" "^3.0.3"
"@types/unist" "^2.0.3"
ts-pnp@1.2.0, ts-pnp@^1.1.6:
version "1.2.0"
resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92"
@@ -11849,7 +12217,7 @@ unicode-property-aliases-ecmascript@^1.0.4:
resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4"
integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==
unified@^9.0.0:
unified@9.2.1, unified@^9.0.0:
version "9.2.1"
resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.1.tgz#ae18d5674c114021bfdbdf73865ca60f410215a3"
integrity sha512-juWjuI8Z4xFg8pJbnEZ41b5xjGUWGHqXALmBZ3FC3WX0PIx1CZBIIJ6mXbYMcf6Yw4Fi0rFUTA1cdz/BglbOhA==
@@ -11937,7 +12305,7 @@ unist-util-visit-parents@^3.0.0:
"@types/unist" "^2.0.0"
unist-util-is "^4.0.0"
unist-util-visit@^2.0.0:
unist-util-visit@^2.0.0, unist-util-visit@^2.0.3:
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==
@@ -12122,6 +12490,11 @@ vendors@^1.0.0:
resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e"
integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==
vfile-location@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c"
integrity sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==
vfile-message@^2.0.0:
version "2.0.4"
resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a"
@@ -12191,6 +12564,11 @@ wbuf@^1.1.0, wbuf@^1.7.3:
dependencies:
minimalistic-assert "^1.0.0"
web-namespaces@^1.0.0:
version "1.1.4"
resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec"
integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==
webidl-conversions@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff"
@@ -12727,3 +13105,8 @@ yup@^0.32.9:
nanoclone "^0.2.1"
property-expr "^2.0.4"
toposort "^2.0.2"
zwitch@^1.0.0:
version "1.0.5"
resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920"
integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==

View File

@@ -1,4 +1,9 @@
import { EntityCollection, EntitySchema, SchemaConfig } from "../models";
import {
EntityCollection,
EntityCustomView,
EntitySchema,
SchemaConfig
} from "../models";
import React, { useContext, useEffect, useRef, useState } from "react";
import { useHistory, useLocation } from "react-router-dom";
import {
@@ -225,9 +230,10 @@ export const SideEntityProvider: React.FC<SideEntityProviderProps> = ({
function buildSidePanelsFromUrl(path: string, allCollections: EntityCollection[], newFlag: boolean): ExtendedPanelProps[] {
const navigationViewsForPath: NavigationViewEntry[] = getNavigationEntriesFromPathInternal(path, allCollections);
const schemasConfig: Record<string, SchemaConfig> = {};
const navigationViewsForPath: NavigationViewEntry[] = getNavigationEntriesFromPathInternal({
path,
allCollections
});
let sidePanels: ExtendedPanelProps[] = [];
let lastCollectionPath = "";
@@ -248,17 +254,19 @@ function buildSidePanelsFromUrl(path: string, allCollections: EntityCollection[]
copy: false
}
);
const sidePanelKey = getSidePanelKey(navigationEntry.collectionPath, navigationEntry.entityId);
schemasConfig[sidePanelKey] = {
permissions: previousEntry.collection.permissions,
schema: previousEntry.collection.schema,
subcollections: previousEntry.collection.subcollections
};
}
} else if (navigationEntry.type === "custom_view") {
if (previousEntry.type === "entity") {
const lastSidePanel: ExtendedPanelProps = sidePanels[sidePanels.length - 1];
if (lastSidePanel)
lastSidePanel.selectedSubpath = navigationEntry.view.path;
}
} else if (navigationEntry.type === "collection") {
const lastSidePanel: ExtendedPanelProps = sidePanels[sidePanels.length - 1];
if (lastSidePanel)
lastSidePanel.selectedSubpath = navigationEntry.collection.relativePath;
if (previousEntry.type === "entity") {
const lastSidePanel: ExtendedPanelProps = sidePanels[sidePanels.length - 1];
if (lastSidePanel)
lastSidePanel.selectedSubpath = navigationEntry.collection.relativePath;
}
}
}

View File

@@ -385,7 +385,6 @@ function EntityView<S extends EntitySchema<Key>, Key extends string>({
);
function getSelectedSubpath(value: number) {
console.log("getSelectedSubpath", value);
if (value == -1) return undefined;
if (customViews && value < customViewsCount) {

View File

@@ -9,7 +9,6 @@ import {
createStyles,
Divider,
Grid,
IconButton,
makeStyles,
Theme,
Typography

View File

@@ -1,4 +1,9 @@
import { CMSView, EntityCollection, EntitySchema } from "../models";
import {
CMSView,
EntityCollection,
EntityCustomView,
EntitySchema
} from "../models";
const DATA_PATH = `/c`;
@@ -79,12 +84,7 @@ export function getCollectionViewFromPath(path: string, collectionViews?: Entity
throw Error(`Collection paths must have an odd number of segments: ${path}`);
}
let result: EntityCollection | undefined = getCollectionViewFromPathInternal(removeInitialAndTrailingSlashes(path), collectionViews);
// if (!result) {
// throw Error(`Couldn't find the corresponding collection view for the path: ${path}`);
// }
return result;
return getCollectionViewFromPathInternal(removeInitialAndTrailingSlashes(path), collectionViews);
}
@@ -131,8 +131,9 @@ function getCollectionPathsCombinations(subpaths: string[]): string[] {
}
export type NavigationViewEntry =
NavigationViewEntity
| NavigationViewCollection;
| NavigationViewEntity
| NavigationViewCollection
| NavigationViewCustom;
interface NavigationViewEntity {
type: "entity";
@@ -148,7 +149,24 @@ interface NavigationViewCollection {
collection: EntityCollection;
}
export function getNavigationEntriesFromPathInternal<S extends EntitySchema>(path: string, allCollections: EntityCollection[], currentFullPath?: string): NavigationViewEntry[] {
interface NavigationViewCustom {
type: "custom_view";
fullPath: string;
view: EntityCustomView;
}
export function getNavigationEntriesFromPathInternal<S extends EntitySchema>(props: {
path: string,
allCollections: EntityCollection[],
customViews?: EntityCustomView[],
currentFullPath?: string
}): NavigationViewEntry[] {
const {
path,
allCollections,
currentFullPath
} = props;
const subpaths = removeInitialAndTrailingSlashes(path).split("/");
const subpathCombinations = getCollectionPathsCombinations(subpaths);
@@ -156,9 +174,9 @@ export function getNavigationEntriesFromPathInternal<S extends EntitySchema>(pat
let result: NavigationViewEntry[] = [];
for (let i = 0; i < subpathCombinations.length; i++) {
const subpathCombination = subpathCombinations[i];
const collection = allCollections && allCollections.find((entry) => entry.relativePath === subpathCombination);
if (collection) {
const collection = allCollections && allCollections.find((entry) => entry.relativePath === subpathCombination);
if (collection) {
const collectionPath = currentFullPath && currentFullPath.length > 0
? (currentFullPath + "/" + collection.relativePath)
: collection.relativePath;
@@ -180,9 +198,28 @@ export function getNavigationEntriesFromPathInternal<S extends EntitySchema>(pat
fullPath: fullPath,
parentCollection: collection
});
if (collection.subcollections && nextSegments.length > 1) {
if(nextSegments.length > 1){
const newPath = nextSegments.slice(1).join("/");
result.push(...getNavigationEntriesFromPathInternal(newPath, collection.subcollections, fullPath));
const customViews = collection.schema.views;
const customView = customViews && customViews.find((entry) => entry.path === newPath);
if (customView) {
const collectionPath = currentFullPath && currentFullPath.length > 0
? (currentFullPath + "/" + customView.path)
: customView.path;
result.push({
type: "custom_view",
fullPath: collectionPath,
view: customView
});
}
else if (collection.subcollections ) {
result.push(...getNavigationEntriesFromPathInternal({
path: newPath,
customViews: customViews,
allCollections: collection.subcollections,
currentFullPath: fullPath
}));
}
}
}
break;

View File

@@ -1,4 +1,9 @@
import { Entity, EntityCollection, fetchEntity } from "../models";
import {
Entity,
EntityCollection,
EntityCustomView,
fetchEntity
} from "../models";
import { getNavigationEntriesFromPathInternal } from "../core/navigation";
import { useEffect, useState } from "react";
import { CMSAppContext, useCMSAppContext } from "../contexts/CMSAppContext";
@@ -6,7 +11,10 @@ import { CMSAppContext, useCMSAppContext } from "../contexts/CMSAppContext";
/**
* @ignore
*/
export type NavigationEntry = NavigationEntity | NavigationCollection;
export type NavigationEntry =
NavigationEntity
| NavigationCollection
| NavigationCustom;
/**
* @ignore
@@ -29,9 +37,18 @@ export type NavigationCollection = {
collection: EntityCollection;
};
/**
* @ignore
*/
interface NavigationCustom {
type: "custom_view";
fullPath: string;
view: EntityCustomView;
}
/**
* Use this function to retrieve an array of navigation entries (resolved
* collection or entity) for the given path. You need to pass the app context
* collection, entity or entity custom_view) for the given path. You need to pass the app context
* that you receive in different callbacks, such as the save hooks.
*
* It will take into account the `navigation` provided at the `CMSApp` level, as
@@ -57,7 +74,10 @@ export function getNavigationFrom({
throw Error("Calling getNavigationFrom, but main schemasRegistryController has not yet been initialised");
}
const navigationEntries = getNavigationEntriesFromPathInternal(path, navigation.collections);
const navigationEntries = getNavigationEntriesFromPathInternal({
path,
allCollections: navigation.collections
});
const resultPromises: Promise<NavigationEntry>[] = navigationEntries.map((entry) => {
if (entry.type === "collection") {
@@ -71,6 +91,8 @@ export function getNavigationFrom({
.then((entity) => {
return { ...entry, entity };
});
} else if (entry.type === "custom_view") {
return Promise.resolve(entry);
} else {
throw Error("Unmapped element in useEntitiesFromPath");
}

View File

@@ -85,7 +85,7 @@ export interface EntitySchema<Key extends string = string> {
* Array of builders for rendering additional panels in an entity view.
* Useful if you need to render custom views
*/
views?: EntityCustomViewBuilder<this, Key>[];
views?: EntityCustomView<this, Key>[];
}
/**
@@ -93,7 +93,7 @@ export interface EntitySchema<Key extends string = string> {
* It gets rendered as a tab.
* @category Entities
*/
export type EntityCustomViewBuilder<S extends EntitySchema<Key> = EntitySchema<any>,
export type EntityCustomView<S extends EntitySchema<Key> = EntitySchema<any>,
Key extends string = Extract<keyof S["properties"], string>> =
{
path: string,

View File

@@ -29,9 +29,9 @@ it("collection view matches ok", () => {
).toEqual("locales");
expect(
() => getCollectionViewFromPath("products/pid/not_existing", collectionViews)
).toThrow(
"Couldn't find the corresponding collection view for the path: products/pid/not_existing"
getCollectionViewFromPath("products/pid/not_existing", collectionViews)
).toEqual(
undefined
);
expect(
@@ -41,9 +41,9 @@ it("collection view matches ok", () => {
);
expect(
() => getCollectionViewFromPath("products", [])
getCollectionViewFromPath("products", [])
).toThrow(
"Couldn't find the corresponding collection view for the path: products"
undefined
);
const collectionViewFromPath10 = getCollectionViewFromPath("products/id/subcollection_inline", collectionViews);
expect(
@@ -54,7 +54,22 @@ it("collection view matches ok", () => {
it("build entity collection array", () => {
const collections = getNavigationEntriesFromPathInternal("products/pid", collectionViews);
const collections = getNavigationEntriesFromPathInternal({
path: "products/pid",
allCollections: collectionViews
});
console.log(collections);
// expect(
// collections.map((collection) => collection.relativePath)
// ).toEqual(["products", "locales"]);
});
it("Custom view internal", () => {
const collections = getNavigationEntriesFromPathInternal({
path: "products/pid/custom_view",
allCollections: collectionViews
});
console.log(collections);
// expect(
// collections.map((collection) => collection.relativePath)
@@ -63,7 +78,10 @@ it("build entity collection array", () => {
it("build entity collection array 2", () => {
const collections = getNavigationEntriesFromPathInternal("products/pid/locales/yep", collectionViews);
const collections = getNavigationEntriesFromPathInternal({
path: "products/pid/locales/yep",
allCollections: collectionViews
});
console.log(collections);
// expect(
// collections.map((collection) => collection.relativePath)

View File

@@ -10,6 +10,13 @@ const locales: EnumValues = {
export const productSchema = buildSchema({
name: "Product",
views:[
{
path: "custom_view",
name: "Test custom view",
builder: ({}) => undefined
}
],
properties: {
name: {
title: "Name",
@@ -151,15 +158,13 @@ export const siteConfig: CMSAppProps = {
relativePath: "products",
schema: productSchema,
name: "Products",
subcollections: subcollections,
properties: ["name", "price", "status", "categories", "tags", "description", "published", "added_on", "publisher", "available_locales", "image"]
subcollections: subcollections
}),
buildCollection({
relativePath: "sites/es/products",
schema: productSchema,
name: "Products",
subcollections: subcollections,
properties: ["name", "price", "status", "categories", "tags", "description", "published", "added_on", "publisher", "available_locales", "image"]
subcollections: subcollections
}),
buildCollection({
relativePath: "products/id/subcollection_inline",

View File

@@ -9,7 +9,7 @@ overriding fields if you need a custom implementation, but that might be not
enough in certain cases, where you might want to have a full **custom view related
to one entity**.
In order to accomplish that you can pass an array of `EntityCustomViewBuilder`
In order to accomplish that you can pass an array of `EntityCustomView`
to your schema. Like in this example:
```tsx

View File

@@ -137,7 +137,7 @@ module.exports = {
'api/interfaces/entityschema',
'api/types/entitystatus',
'api/types/entityvalues',
'api/types/entitycustomviewbuilder',
'api/types/entitycustomview',
'api/types/entitycustomviewparams',
'api/interfaces/fieldconfig',
'api/interfaces/stringfieldconfig',