diff --git a/package.json b/package.json
index 91a810c5a..8b0e5242b 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "sdk",
- "version": "0.0.0",
+ "version": "1.3.0",
"license": "MIT",
"scripts": {
"prepare": "husky install",
diff --git a/packages/uiweb/package.json b/packages/uiweb/package.json
index e5e6578b1..50f3bb92c 100644
--- a/packages/uiweb/package.json
+++ b/packages/uiweb/package.json
@@ -27,6 +27,7 @@
"moment": "^2.29.4",
"protobufjs": "^7.2.6",
"raf": "^3.4.0",
+ "react-code-blocks": "^0.1.6",
"react-easy-crop": "^4.1.4",
"react-icons": "^4.10.1",
"react-image-file-resizer": "^0.4.7",
diff --git a/packages/uiweb/src/lib/components/chat/ChatViewBubble/cards/message/MessageCard.tsx b/packages/uiweb/src/lib/components/chat/ChatViewBubble/cards/message/MessageCard.tsx
index d76ee44a8..26e603bd5 100644
--- a/packages/uiweb/src/lib/components/chat/ChatViewBubble/cards/message/MessageCard.tsx
+++ b/packages/uiweb/src/lib/components/chat/ChatViewBubble/cards/message/MessageCard.tsx
@@ -3,11 +3,12 @@ import { Fragment, ReactElement, ReactNode, useContext, useEffect, useState } fr
// External Packages
import moment from 'moment';
+import { CopyBlock, dracula } from 'react-code-blocks';
import styled, { keyframes } from 'styled-components';
// Internal Compoonents
import { extractWebLink, getFormattedMetadata, hasWebLink } from '../../../../../utilities';
-import { Anchor, Image, Section, Span } from '../../../../reusables';
+import { Anchor, Button, Section, Span } from '../../../../reusables';
import { ThemeContext } from '../../../theme/ThemeProvider';
import { IPreviewCallback, PreviewRenderer } from './PreviewRenderer';
@@ -19,6 +20,11 @@ import { IPreviewCallback, PreviewRenderer } from './PreviewRenderer';
// Interfaces & Types
import { IMessagePayload, TwitterFeedReturnType } from '../../../exportedTypes';
+interface IMsgFragments {
+ msg: string;
+ type: string;
+}
+
// Constants
// Exported Interfaces & Types
@@ -61,6 +67,121 @@ export const MessageCard = ({
});
};
+ // break message to derive different types
+ const splitMessageToMessages = (item: IMsgFragments): IMsgFragments[] => {
+ // split message into code blocks
+ const splitMessageToCodeBlocks = (fragment: IMsgFragments): IMsgFragments[] => {
+ const codeBlockRegex = /(```[\s\S]*?```)/g; // Regex to match code blocks
+ const fragments = [];
+ let lastIndex = 0;
+
+ fragment.msg.replace(codeBlockRegex, (match, p1, offset) => {
+ // Add text before the code block if it exists
+ if (offset > lastIndex) {
+ fragments.push({
+ msg: fragment.msg.substring(lastIndex, offset),
+ type: fragment.type,
+ });
+ }
+ // Add the code block
+ fragments.push({
+ msg: p1,
+ type: 'code',
+ });
+ lastIndex = offset + p1.length;
+ return match; // This return is not used, required for replace function signature
+ });
+
+ // Add any remaining text after the last code block
+ if (lastIndex < fragment.msg.length) {
+ fragments.push({
+ msg: fragment.msg.substring(lastIndex),
+ type: fragment.type,
+ });
+ }
+
+ return fragments;
+ };
+
+ // start with array of messages
+ const chunks = [
+ {
+ msg: item.msg,
+ type: item.type,
+ },
+ ];
+
+ // for each message in messages, split it into code blocks and replace array
+ chunks.forEach((item, index) => {
+ chunks.splice(index, 1, ...splitMessageToCodeBlocks(item));
+ });
+
+ return chunks;
+ };
+
+ // convert to fragments which can have different types
+ const fragments = splitMessageToMessages({ msg: message, type: 'text' });
+
+ // To render individual fragments
+ const renderTxtFragments = (message: string, fragmentIndex: number): ReactNode => {
+ return message.split('\n').map((line: string, lineIndex: number) => (
+
+ {line.split(' ').map((word: string, wordIndex: number) => {
+ const link = hasWebLink(word) ? extractWebLink(word) : '';
+ return (
+
+ {link ? (
+
+ {word}
+
+ ) : (
+ word
+ )}{' '}
+ {/* Ensure spaces are maintained between words */}
+
+ );
+ })}
+
+ ));
+ };
+
+ // To render code fragment
+ const renderCodeFragment = (message: string, fragmentIndex: number): ReactElement => {
+ // split code and language
+ const regex = /```(\S*)\s*([\s\S]*?)```/; // Regex to capture optional language and code within backticks
+ const match = message.match(regex);
+ const language = match?.[1] || 'plaintext';
+ const code = message.split('\n').slice(1, -1).join('\n').trim();
+
+ return (
+
+
+
+ );
+ };
+
+ // Render entire message
return (
{/* Preview Renderer - Start with assuming preview is there, callback handles no preview */}
@@ -91,51 +212,27 @@ export const MessageCard = ({
border={position ? `${theme.border?.chatSentBubble}` : `${theme.border?.chatReceivedBubble}`}
padding="8px 12px"
borderRadius={position ? '12px 0px 12px 12px' : '0px 12px 12px 12px'}
- margin="5px 0"
alignSelf={position ? 'end' : 'start'}
justifyContent="start"
- minWidth="71px"
+ maxWidth="inherit"
+ minWidth="72px"
position="relative"
- width="fit-content"
color={position ? `${theme.textColor?.chatSentBubbleText}` : `${theme.textColor?.chatReceivedBubbleText}`}
>
- {message.split('\n').map((line: string, lineIndex: number) => (
-
- {line.split(' ').map((word: string, wordIndex: number) =>
- hasWebLink(word) ? (
- <>
-
- {word}
-
-
- >
- ) : (
- {word}
- )
- )}
-
- ))}
+ {fragments.map((fragment, fragmentIndex) => {
+ if (fragment.type === 'text') {
+ return renderTxtFragments(fragment.msg, fragmentIndex);
+ } else if (fragment.type === 'code') {
+ return renderCodeFragment(fragment.msg, fragmentIndex);
+ } else {
+ return null;
+ }
+ })}
{/* Timestamp rendering */}
@@ -162,22 +259,19 @@ export const MessageCard = ({
);
};
-const fader = keyframes`
- 0% { opacity: 0.5; }
- 50% { opacity: 1; }
- 100% { opacity: 0.5; }
-`;
-
const MessagePreviewSection = styled(Section)`
overflow: hidden;
+ max-width: 100%;
`;
const MessageSection = styled(Section)`
box-sizing: border-box;
+ max-width: 100%;
`;
const MessageCardSection = styled(Section)`
flex-direction: column;
+ max-width: 100%;
&.video,
&.frame {
@@ -201,6 +295,31 @@ const MessageCardSection = styled(Section)`
}
`;
+const CodeSection = styled(Section)`
+ margin: 16px 0;
+ border-radius: 12px;
+ align-self: stretch;
+ max-width: inherit;
+
+ div:first-of-type {
+ max-width: inherit;
+ width: 100%;
+ padding: 20px;
+ font-weight: 300;
+ font-family: monospace;
+ overflow: scroll;
+ justify-content: flex-start;
+ }
+`;
+
+const StyledCopyBlock = styled(CopyBlock)``;
+
+const fader = keyframes`
+ 0% { opacity: 0.5; }
+ 50% { opacity: 1; }
+ 100% { opacity: 0.5; }
+`;
+
const MessageAnchor = styled(Anchor)`
&:first-child.loading {
animation: ${fader} 1.5s ease-in infinite;
diff --git a/packages/uiweb/src/lib/components/chat/ChatViewList/ChatViewList.tsx b/packages/uiweb/src/lib/components/chat/ChatViewList/ChatViewList.tsx
index a9acf6bab..c52fbcc04 100644
--- a/packages/uiweb/src/lib/components/chat/ChatViewList/ChatViewList.tsx
+++ b/packages/uiweb/src/lib/components/chat/ChatViewList/ChatViewList.tsx
@@ -141,7 +141,7 @@ export const ChatViewList: React.FC = (options: IChatViewLis
invalidChat: false,
});
};
- }, [chatId, user, chatAcceptStream, participantJoinStream, participantLeaveStream, participantRemoveStream]);
+ }, [chatId, user]);
// When loading is done
useEffect(() => {
@@ -152,14 +152,32 @@ export const ChatViewList: React.FC = (options: IChatViewLis
})();
}, [initialized.loading]);
- //moniters stream changes
+ // Change listtype to 'CHATS' and hidden to false when chatAcceptStream is received
useEffect(() => {
if (Object.keys(chatAcceptStream || {}).length > 0 && chatAcceptStream.constructor === Object) {
+ // Check if chat was encrypted, if so, reload the chat
+ if ((initialized.chatInfo?.meta as any)?.encryption === false) {
+ setInitialized({ loading: true, chatInfo: null, isHidden: false, invalidChat: false });
+ } else {
+ // If not encrypted, then set hidden to false
+ const updatedChatInfo = { ...(initialized.chatInfo as ChatInfoResponse) };
+ if (updatedChatInfo) updatedChatInfo.list = 'CHATS';
+
+ setInitialized({ ...initialized, isHidden: false });
+ }
+ }
+ }, [chatAcceptStream, participantJoinStream]);
+
+ // Change listtype to 'UINITIALIZED' and hidden to true when participantRemoveStream or participantLeaveStream is received
+ useEffect(() => {
+ if (Object.keys(participantRemoveStream || {}).length > 0 && participantRemoveStream.constructor === Object) {
+ // If not encrypted, then set hidden to false
const updatedChatInfo = { ...(initialized.chatInfo as ChatInfoResponse) };
- if (updatedChatInfo) updatedChatInfo.list = 'CHATS';
- setInitialized({ ...initialized, chatInfo: updatedChatInfo, isHidden: false });
+ if (updatedChatInfo) updatedChatInfo.list = 'UNINITIALIZED';
+
+ setInitialized({ ...initialized, isHidden: false });
}
- }, [chatAcceptStream]);
+ }, [participantRemoveStream, participantLeaveStream]);
useEffect(() => {
if (Object.keys(chatStream || {}).length > 0 && chatStream.constructor === Object) {
diff --git a/packages/uiweb/yarn.lock b/packages/uiweb/yarn.lock
index 2598cb3d9..023594731 100644
--- a/packages/uiweb/yarn.lock
+++ b/packages/uiweb/yarn.lock
@@ -5,7 +5,7 @@ __metadata:
version: 8
cacheKey: 10c0
-"@babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.21.0":
+"@babel/runtime@npm:^7.10.4, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.3.1":
version: 7.24.5
resolution: "@babel/runtime@npm:7.24.5"
dependencies:
@@ -38,6 +38,29 @@ __metadata:
languageName: node
linkType: hard
+"@emotion/is-prop-valid@npm:1.2.2":
+ version: 1.2.2
+ resolution: "@emotion/is-prop-valid@npm:1.2.2"
+ dependencies:
+ "@emotion/memoize": "npm:^0.8.1"
+ checksum: 10c0/bb1530dcb4e0e5a4fabb219279f2d0bc35796baf66f6241f98b0d03db1985c890a8cafbea268e0edefd5eeda143dbd5c09a54b5fba74cee8c69b98b13194af50
+ languageName: node
+ linkType: hard
+
+"@emotion/memoize@npm:^0.8.1":
+ version: 0.8.1
+ resolution: "@emotion/memoize@npm:0.8.1"
+ checksum: 10c0/dffed372fc3b9fa2ba411e76af22b6bb686fb0cb07694fdfaa6dd2baeb0d5e4968c1a7caa472bfcf06a5997d5e7c7d16b90e993f9a6ffae79a2c3dbdc76dfe78
+ languageName: node
+ linkType: hard
+
+"@emotion/unitless@npm:0.8.1":
+ version: 0.8.1
+ resolution: "@emotion/unitless@npm:0.8.1"
+ checksum: 10c0/a1ed508628288f40bfe6dd17d431ed899c067a899fa293a13afe3aed1d70fac0412b8a215fafab0b42829360db687fecd763e5f01a64ddc4a4b58ec3112ff548
+ languageName: node
+ linkType: hard
+
"@esbuild/aix-ppc64@npm:0.19.12":
version: 0.19.12
resolution: "@esbuild/aix-ppc64@npm:0.19.12"
@@ -1778,6 +1801,7 @@ __metadata:
moment: "npm:^2.29.4"
protobufjs: "npm:^7.2.6"
raf: "npm:^3.4.0"
+ react-code-blocks: "npm:^0.1.6"
react-easy-crop: "npm:^4.1.4"
react-icons: "npm:^4.10.1"
react-image-file-resizer: "npm:^0.4.7"
@@ -2739,6 +2763,15 @@ __metadata:
languageName: node
linkType: hard
+"@types/hast@npm:^2.0.0":
+ version: 2.3.10
+ resolution: "@types/hast@npm:2.3.10"
+ dependencies:
+ "@types/unist": "npm:^2"
+ checksum: 10c0/16daac35d032e656defe1f103f9c09c341a6dc553c7ec17b388274076fa26e904a71ea5ea41fd368a6d5f1e9e53be275c80af7942b9c466d8511d261c9529c7e
+ languageName: node
+ linkType: hard
+
"@types/ms@npm:*":
version: 0.7.34
resolution: "@types/ms@npm:0.7.34"
@@ -2755,6 +2788,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/stylis@npm:4.2.5":
+ version: 4.2.5
+ resolution: "@types/stylis@npm:4.2.5"
+ checksum: 10c0/23f5b35a3a04f6bb31a29d404fa1bc8e0035fcaff2356b4047743a057e0c37b2eba7efe14d57dd2b95b398cea3bac294d9c6cd93ed307d8c0b7f5d282224b469
+ languageName: node
+ linkType: hard
+
"@types/trusted-types@npm:^2.0.2":
version: 2.0.7
resolution: "@types/trusted-types@npm:2.0.7"
@@ -2762,6 +2802,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/unist@npm:^2":
+ version: 2.0.10
+ resolution: "@types/unist@npm:2.0.10"
+ checksum: 10c0/5f247dc2229944355209ad5c8e83cfe29419fa7f0a6d557421b1985a1500444719cc9efcc42c652b55aab63c931813c88033e0202c1ac684bcd4829d66e44731
+ languageName: node
+ linkType: hard
+
"@unstoppabledomains/resolution@npm:^8.5.0":
version: 8.5.0
resolution: "@unstoppabledomains/resolution@npm:8.5.0"
@@ -3447,6 +3494,34 @@ __metadata:
languageName: node
linkType: hard
+"camelize@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "camelize@npm:1.0.1"
+ checksum: 10c0/4c9ac55efd356d37ac483bad3093758236ab686192751d1c9daa43188cc5a07b09bd431eb7458a4efd9ca22424bba23253e7b353feb35d7c749ba040de2385fb
+ languageName: node
+ linkType: hard
+
+"character-entities-legacy@npm:^1.0.0":
+ version: 1.1.4
+ resolution: "character-entities-legacy@npm:1.1.4"
+ checksum: 10c0/ea4ca9c29887335eed86d78fc67a640168342b1274da84c097abb0575a253d1265281a5052f9a863979e952bcc267b4ecaaf4fe233a7e1e0d8a47806c65b96c7
+ languageName: node
+ linkType: hard
+
+"character-entities@npm:^1.0.0":
+ version: 1.2.4
+ resolution: "character-entities@npm:1.2.4"
+ checksum: 10c0/ad015c3d7163563b8a0ee1f587fb0ef305ef344e9fd937f79ca51cccc233786a01d591d989d5bf7b2e66b528ac9efba47f3b1897358324e69932f6d4b25adfe1
+ languageName: node
+ linkType: hard
+
+"character-reference-invalid@npm:^1.0.0":
+ version: 1.1.4
+ resolution: "character-reference-invalid@npm:1.1.4"
+ checksum: 10c0/29f05081c5817bd1e975b0bf61e77b60a40f62ad371d0f0ce0fdb48ab922278bc744d1fbe33771dced751887a8403f265ff634542675c8d7375f6ff4811efd0e
+ languageName: node
+ linkType: hard
+
"chokidar@npm:^3.6.0":
version: 3.6.0
resolution: "chokidar@npm:3.6.0"
@@ -3571,6 +3646,13 @@ __metadata:
languageName: node
linkType: hard
+"comma-separated-tokens@npm:^1.0.0":
+ version: 1.0.8
+ resolution: "comma-separated-tokens@npm:1.0.8"
+ checksum: 10c0/c3bcfeaa6d50313528a006a40bcc0f9576086665c9b48d4b3a76ddd63e7d6174734386c98be1881cbf6ecfc25e1db61cd775a7b896d2ea7a65de28f83a0f9b17
+ languageName: node
+ linkType: hard
+
"confbox@npm:^0.1.7":
version: 0.1.7
resolution: "confbox@npm:0.1.7"
@@ -3663,6 +3745,31 @@ __metadata:
languageName: node
linkType: hard
+"css-color-keywords@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "css-color-keywords@npm:1.0.0"
+ checksum: 10c0/af205a86c68e0051846ed91eb3e30b4517e1904aac040013ff1d742019b3f9369ba5658ba40901dbbc121186fc4bf0e75a814321cc3e3182fbb2feb81c6d9cb7
+ languageName: node
+ linkType: hard
+
+"css-to-react-native@npm:3.2.0":
+ version: 3.2.0
+ resolution: "css-to-react-native@npm:3.2.0"
+ dependencies:
+ camelize: "npm:^1.0.0"
+ css-color-keywords: "npm:^1.0.0"
+ postcss-value-parser: "npm:^4.0.2"
+ checksum: 10c0/fde850a511d5d3d7c55a1e9b8ed26b69a8ad4868b3487e36ebfbfc0b96fc34bc977d9cd1d61a289d0c74d3f9a662d8cee297da53d4433bf2e27d6acdff8e1003
+ languageName: node
+ linkType: hard
+
+"csstype@npm:3.1.3":
+ version: 3.1.3
+ resolution: "csstype@npm:3.1.3"
+ checksum: 10c0/80c089d6f7e0c5b2bd83cf0539ab41474198579584fa10d86d0cafe0642202343cbc119e076a0b1aece191989477081415d66c9fefbf3c957fc2fc4b7009f248
+ languageName: node
+ linkType: hard
+
"custom-error-instance@npm:2.1.1":
version: 2.1.1
resolution: "custom-error-instance@npm:2.1.1"
@@ -4351,6 +4458,15 @@ __metadata:
languageName: node
linkType: hard
+"fault@npm:^1.0.0":
+ version: 1.0.4
+ resolution: "fault@npm:1.0.4"
+ dependencies:
+ format: "npm:^0.2.0"
+ checksum: 10c0/c86c11500c1b676787296f31ade8473adcc6784f118f07c1a9429730b6288d0412f96e069ce010aa57e4f65a9cccb5abee8868bbe3c5f10de63b20482c9baebd
+ languageName: node
+ linkType: hard
+
"fill-range@npm:^7.0.1":
version: 7.0.1
resolution: "fill-range@npm:7.0.1"
@@ -4394,6 +4510,13 @@ __metadata:
languageName: node
linkType: hard
+"format@npm:^0.2.0":
+ version: 0.2.2
+ resolution: "format@npm:0.2.2"
+ checksum: 10c0/6032ba747541a43abf3e37b402b2f72ee08ebcb58bf84d816443dd228959837f1cddf1e8775b29fa27ff133f4bd146d041bfca5f9cf27f048edf3d493cf8fee6
+ languageName: node
+ linkType: hard
+
"fs-minipass@npm:^2.0.0":
version: 2.1.0
resolution: "fs-minipass@npm:2.1.0"
@@ -4542,6 +4665,26 @@ __metadata:
languageName: node
linkType: hard
+"hast-util-parse-selector@npm:^2.0.0":
+ version: 2.2.5
+ resolution: "hast-util-parse-selector@npm:2.2.5"
+ checksum: 10c0/29b7ee77960ded6a99d30c287d922243071cc07b39f2006f203bd08ee54eb8f66bdaa86ef6527477c766e2382d520b60ee4e4087f189888c35d8bcc020173648
+ languageName: node
+ linkType: hard
+
+"hastscript@npm:^6.0.0":
+ version: 6.0.0
+ resolution: "hastscript@npm:6.0.0"
+ dependencies:
+ "@types/hast": "npm:^2.0.0"
+ comma-separated-tokens: "npm:^1.0.0"
+ hast-util-parse-selector: "npm:^2.0.0"
+ property-information: "npm:^5.0.0"
+ space-separated-tokens: "npm:^1.0.0"
+ checksum: 10c0/f76d9cf373cb075c8523c8ad52709f09f7e02b7c9d3152b8d35c65c265b9f1878bed6023f215a7d16523921036d40a7da292cb6f4399af9b5eccac2a5a5eb330
+ languageName: node
+ linkType: hard
+
"hey-listen@npm:^1.0.8":
version: 1.0.8
resolution: "hey-listen@npm:1.0.8"
@@ -4549,6 +4692,13 @@ __metadata:
languageName: node
linkType: hard
+"highlight.js@npm:^10.4.1, highlight.js@npm:~10.7.0":
+ version: 10.7.3
+ resolution: "highlight.js@npm:10.7.3"
+ checksum: 10c0/073837eaf816922427a9005c56c42ad8786473dc042332dfe7901aa065e92bc3d94ebf704975257526482066abb2c8677cc0326559bb8621e046c21c5991c434
+ languageName: node
+ linkType: hard
+
"hls.js@npm:^1.4.12":
version: 1.5.8
resolution: "hls.js@npm:1.5.8"
@@ -4733,6 +4883,23 @@ __metadata:
languageName: node
linkType: hard
+"is-alphabetical@npm:^1.0.0":
+ version: 1.0.4
+ resolution: "is-alphabetical@npm:1.0.4"
+ checksum: 10c0/1505b1de5a1fd74022c05fb21b0e683a8f5229366bac8dc4d34cf6935bcfd104d1125a5e6b083fb778847629f76e5bdac538de5367bdf2b927a1356164e23985
+ languageName: node
+ linkType: hard
+
+"is-alphanumerical@npm:^1.0.0":
+ version: 1.0.4
+ resolution: "is-alphanumerical@npm:1.0.4"
+ dependencies:
+ is-alphabetical: "npm:^1.0.0"
+ is-decimal: "npm:^1.0.0"
+ checksum: 10c0/d623abae7130a7015c6bf33d99151d4e7005572fd170b86568ff4de5ae86ac7096608b87dd4a1d4dbbd497e392b6396930ba76c9297a69455909cebb68005905
+ languageName: node
+ linkType: hard
+
"is-binary-path@npm:~2.1.0":
version: 2.1.0
resolution: "is-binary-path@npm:2.1.0"
@@ -4742,6 +4909,13 @@ __metadata:
languageName: node
linkType: hard
+"is-decimal@npm:^1.0.0":
+ version: 1.0.4
+ resolution: "is-decimal@npm:1.0.4"
+ checksum: 10c0/a4ad53c4c5c4f5a12214e7053b10326711f6a71f0c63ba1314a77bd71df566b778e4ebd29f9fb6815f07a4dc50c3767fb19bd6fc9fa05e601410f1d64ffeac48
+ languageName: node
+ linkType: hard
+
"is-docker@npm:^3.0.0":
version: 3.0.0
resolution: "is-docker@npm:3.0.0"
@@ -4774,6 +4948,13 @@ __metadata:
languageName: node
linkType: hard
+"is-hexadecimal@npm:^1.0.0":
+ version: 1.0.4
+ resolution: "is-hexadecimal@npm:1.0.4"
+ checksum: 10c0/ec4c64e5624c0f240922324bc697e166554f09d3ddc7633fc526084502626445d0a871fbd8cae52a9844e83bd0bb414193cc5a66806d7b2867907003fc70c5ea
+ languageName: node
+ linkType: hard
+
"is-inside-container@npm:^1.0.0":
version: 1.0.0
resolution: "is-inside-container@npm:1.0.0"
@@ -5207,6 +5388,16 @@ __metadata:
languageName: node
linkType: hard
+"lowlight@npm:^1.17.0":
+ version: 1.20.0
+ resolution: "lowlight@npm:1.20.0"
+ dependencies:
+ fault: "npm:^1.0.0"
+ highlight.js: "npm:~10.7.0"
+ checksum: 10c0/728bce6f6fe8b157f48d3324e597f452ce0eed2ccff1c0f41a9047380f944e971eb45bceb31f08fbb64d8f338dabb166f10049b35b92c7ec5cf0241d6adb3dea
+ languageName: node
+ linkType: hard
+
"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0":
version: 10.2.2
resolution: "lru-cache@npm:10.2.2"
@@ -5492,7 +5683,7 @@ __metadata:
languageName: node
linkType: hard
-"nanoid@npm:^3.3.1":
+"nanoid@npm:^3.3.1, nanoid@npm:^3.3.7":
version: 3.3.7
resolution: "nanoid@npm:3.3.7"
bin:
@@ -5726,6 +5917,20 @@ __metadata:
languageName: node
linkType: hard
+"parse-entities@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "parse-entities@npm:2.0.0"
+ dependencies:
+ character-entities: "npm:^1.0.0"
+ character-entities-legacy: "npm:^1.0.0"
+ character-reference-invalid: "npm:^1.0.0"
+ is-alphanumerical: "npm:^1.0.0"
+ is-decimal: "npm:^1.0.0"
+ is-hexadecimal: "npm:^1.0.0"
+ checksum: 10c0/f85a22c0ea406ff26b53fdc28641f01cc36fa49eb2e3135f02693286c89ef0bcefc2262d99b3688e20aac2a14fd10b75c518583e875c1b9fe3d1f937795e0854
+ languageName: node
+ linkType: hard
+
"path-exists@npm:^4.0.0":
version: 4.0.0
resolution: "path-exists@npm:4.0.0"
@@ -5771,6 +5976,13 @@ __metadata:
languageName: node
linkType: hard
+"picocolors@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "picocolors@npm:1.0.0"
+ checksum: 10c0/20a5b249e331c14479d94ec6817a182fd7a5680debae82705747b2db7ec50009a5f6648d0621c561b0572703f84dbef0858abcbd5856d3c5511426afcb1961f7
+ languageName: node
+ linkType: hard
+
"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1":
version: 2.3.1
resolution: "picomatch@npm:2.3.1"
@@ -5855,6 +6067,24 @@ __metadata:
languageName: node
linkType: hard
+"postcss-value-parser@npm:^4.0.2":
+ version: 4.2.0
+ resolution: "postcss-value-parser@npm:4.2.0"
+ checksum: 10c0/f4142a4f56565f77c1831168e04e3effd9ffcc5aebaf0f538eee4b2d465adfd4b85a44257bb48418202a63806a7da7fe9f56c330aebb3cac898e46b4cbf49161
+ languageName: node
+ linkType: hard
+
+"postcss@npm:8.4.38":
+ version: 8.4.38
+ resolution: "postcss@npm:8.4.38"
+ dependencies:
+ nanoid: "npm:^3.3.7"
+ picocolors: "npm:^1.0.0"
+ source-map-js: "npm:^1.2.0"
+ checksum: 10c0/955407b8f70cf0c14acf35dab3615899a2a60a26718a63c848cf3c29f2467b0533991b985a2b994430d890bd7ec2b1963e36352b0774a19143b5f591540f7c06
+ languageName: node
+ linkType: hard
+
"preact@npm:^10.16.0":
version: 10.21.0
resolution: "preact@npm:10.21.0"
@@ -5862,6 +6092,20 @@ __metadata:
languageName: node
linkType: hard
+"prismjs@npm:^1.27.0":
+ version: 1.29.0
+ resolution: "prismjs@npm:1.29.0"
+ checksum: 10c0/d906c4c4d01b446db549b4f57f72d5d7e6ccaca04ecc670fb85cea4d4b1acc1283e945a9cbc3d81819084a699b382f970e02f9d1378e14af9808d366d9ed7ec6
+ languageName: node
+ linkType: hard
+
+"prismjs@npm:~1.27.0":
+ version: 1.27.0
+ resolution: "prismjs@npm:1.27.0"
+ checksum: 10c0/841cbf53e837a42df9155c5ce1be52c4a0a8967ac916b52a27d066181a3578186c634e52d06d0547fb62b65c486b99b95f826dd54966619f9721b884f486b498
+ languageName: node
+ linkType: hard
+
"proc-log@npm:^3.0.0":
version: 3.0.0
resolution: "proc-log@npm:3.0.0"
@@ -5915,6 +6159,15 @@ __metadata:
languageName: node
linkType: hard
+"property-information@npm:^5.0.0":
+ version: 5.6.0
+ resolution: "property-information@npm:5.6.0"
+ dependencies:
+ xtend: "npm:^4.0.0"
+ checksum: 10c0/d54b77c31dc13bb6819559080b2c67d37d94be7dc271f404f139a16a57aa96fcc0b3ad806d4a5baef9e031744853e4afe3df2e37275aacb1f78079bbb652c5af
+ languageName: node
+ linkType: hard
+
"protobufjs@npm:^7.2.6":
version: 7.3.0
resolution: "protobufjs@npm:7.3.0"
@@ -5998,6 +6251,20 @@ __metadata:
languageName: node
linkType: hard
+"react-code-blocks@npm:^0.1.6":
+ version: 0.1.6
+ resolution: "react-code-blocks@npm:0.1.6"
+ dependencies:
+ "@babel/runtime": "npm:^7.10.4"
+ react-syntax-highlighter: "npm:^15.5.0"
+ styled-components: "npm:^6.1.0"
+ tslib: "npm:^2.6.0"
+ peerDependencies:
+ react: ">=16"
+ checksum: 10c0/7678f293e5cdd6e1798bdd97f61df7ce62ed435e9b8b7e9c65dfcf66edbaaa8c0345e309bb79b0fa1c2670d1efc5b0ae0aecb4ff4e0ba4d68395f6dba383a7ca
+ languageName: node
+ linkType: hard
+
"react-easy-crop@npm:^4.1.4":
version: 4.7.5
resolution: "react-easy-crop@npm:4.7.5"
@@ -6115,6 +6382,21 @@ __metadata:
languageName: node
linkType: hard
+"react-syntax-highlighter@npm:^15.5.0":
+ version: 15.5.0
+ resolution: "react-syntax-highlighter@npm:15.5.0"
+ dependencies:
+ "@babel/runtime": "npm:^7.3.1"
+ highlight.js: "npm:^10.4.1"
+ lowlight: "npm:^1.17.0"
+ prismjs: "npm:^1.27.0"
+ refractor: "npm:^3.6.0"
+ peerDependencies:
+ react: ">= 0.14.0"
+ checksum: 10c0/2bf57a1ea151f688efc7eba355677577c9bb55f05f9df7ef86627aae42f63f505486cddf3f4a628aecc51ec75e89beb9533201570d03201c4bf7d69d61d2545d
+ languageName: node
+ linkType: hard
+
"react-toastify@npm:^9.1.3":
version: 9.1.3
resolution: "react-toastify@npm:9.1.3"
@@ -6166,6 +6448,17 @@ __metadata:
languageName: node
linkType: hard
+"refractor@npm:^3.6.0":
+ version: 3.6.0
+ resolution: "refractor@npm:3.6.0"
+ dependencies:
+ hastscript: "npm:^6.0.0"
+ parse-entities: "npm:^2.0.0"
+ prismjs: "npm:~1.27.0"
+ checksum: 10c0/63ab62393c8c2fd7108c2ea1eff721c0ad2a1a6eee60fdd1b47f4bb25cf298667dc97d041405b3e718b0817da12b37a86ed07ebee5bd2ca6405611f1bae456db
+ languageName: node
+ linkType: hard
+
"regenerator-runtime@npm:^0.14.0":
version: 0.14.1
resolution: "regenerator-runtime@npm:0.14.1"
@@ -6309,6 +6602,13 @@ __metadata:
languageName: node
linkType: hard
+"shallowequal@npm:1.1.0":
+ version: 1.1.0
+ resolution: "shallowequal@npm:1.1.0"
+ checksum: 10c0/b926efb51cd0f47aa9bc061add788a4a650550bbe50647962113a4579b60af2abe7b62f9b02314acc6f97151d4cf87033a2b15fc20852fae306d1a095215396c
+ languageName: node
+ linkType: hard
+
"shebang-command@npm:^2.0.0":
version: 2.0.0
resolution: "shebang-command@npm:2.0.0"
@@ -6398,6 +6698,20 @@ __metadata:
languageName: node
linkType: hard
+"source-map-js@npm:^1.2.0":
+ version: 1.2.0
+ resolution: "source-map-js@npm:1.2.0"
+ checksum: 10c0/7e5f896ac10a3a50fe2898e5009c58ff0dc102dcb056ed27a354623a0ece8954d4b2649e1a1b2b52ef2e161d26f8859c7710350930751640e71e374fe2d321a4
+ languageName: node
+ linkType: hard
+
+"space-separated-tokens@npm:^1.0.0":
+ version: 1.1.5
+ resolution: "space-separated-tokens@npm:1.1.5"
+ checksum: 10c0/3ee0a6905f89e1ffdfe474124b1ade9fe97276a377a0b01350bc079b6ec566eb5b219e26064cc5b7f3899c05bde51ffbc9154290b96eaf82916a1e2c2c13ead9
+ languageName: node
+ linkType: hard
+
"split-on-first@npm:^1.0.0":
version: 1.1.0
resolution: "split-on-first@npm:1.1.0"
@@ -6532,6 +6846,33 @@ __metadata:
languageName: node
linkType: hard
+"styled-components@npm:^6.1.0":
+ version: 6.1.11
+ resolution: "styled-components@npm:6.1.11"
+ dependencies:
+ "@emotion/is-prop-valid": "npm:1.2.2"
+ "@emotion/unitless": "npm:0.8.1"
+ "@types/stylis": "npm:4.2.5"
+ css-to-react-native: "npm:3.2.0"
+ csstype: "npm:3.1.3"
+ postcss: "npm:8.4.38"
+ shallowequal: "npm:1.1.0"
+ stylis: "npm:4.3.2"
+ tslib: "npm:2.6.2"
+ peerDependencies:
+ react: ">= 16.8.0"
+ react-dom: ">= 16.8.0"
+ checksum: 10c0/1d149a51d24f779bba700c8c23ec0538b2d2b57745ccd49d1cfdc2dfce8bcea21e8ff81fed1143d1b35d127cc591717a398da72ea6671abbf705432b13e59e56
+ languageName: node
+ linkType: hard
+
+"stylis@npm:4.3.2":
+ version: 4.3.2
+ resolution: "stylis@npm:4.3.2"
+ checksum: 10c0/0410e1404cbeee3388a9e17587875211ce2f014c8379af0d1e24ca55878867c9f1ccc7b0ce9a156ca53f5d6e301391a82b0645522a604674a378b3189a4a1994
+ languageName: node
+ linkType: hard
+
"superstruct@npm:^1.0.3":
version: 1.0.4
resolution: "superstruct@npm:1.0.4"
@@ -6659,7 +7000,7 @@ __metadata:
languageName: node
linkType: hard
-"tslib@npm:2.6.2, tslib@npm:^2.0.0, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1":
+"tslib@npm:2.6.2, tslib@npm:^2.0.0, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1, tslib@npm:^2.6.0":
version: 2.6.2
resolution: "tslib@npm:2.6.2"
checksum: 10c0/e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb
@@ -7106,7 +7447,7 @@ __metadata:
languageName: node
linkType: hard
-"xtend@npm:^4.0.1":
+"xtend@npm:^4.0.0, xtend@npm:^4.0.1":
version: 4.0.2
resolution: "xtend@npm:4.0.2"
checksum: 10c0/366ae4783eec6100f8a02dff02ac907bf29f9a00b82ac0264b4d8b832ead18306797e283cf19de776538babfdcb2101375ec5646b59f08c52128ac4ab812ed0e