From 4f285ce364014c5e3048d3a5effee309cb07d60e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aneta=20Jastrz=C4=99bska?=
<1544710+anetaj@users.noreply.github.com>
Date: Sat, 21 Sep 2024 13:03:00 +0200
Subject: [PATCH] rearrange markdown components
---
.../void/src/sidebar/MarkdownRender.tsx | 160 -----------------
.../sidebar/MarkdownRender/MarkdownRender.tsx | 164 ++++++++++++++++++
extensions/void/src/sidebar/Sidebar.tsx | 2 +-
3 files changed, 165 insertions(+), 161 deletions(-)
delete mode 100644 extensions/void/src/sidebar/MarkdownRender.tsx
create mode 100644 extensions/void/src/sidebar/MarkdownRender/MarkdownRender.tsx
diff --git a/extensions/void/src/sidebar/MarkdownRender.tsx b/extensions/void/src/sidebar/MarkdownRender.tsx
deleted file mode 100644
index e9cc2b96..00000000
--- a/extensions/void/src/sidebar/MarkdownRender.tsx
+++ /dev/null
@@ -1,160 +0,0 @@
-import React, { JSX, useState } from 'react';
-import { MarkedToken, Token, TokensList } from 'marked';
-import { awaitVSCodeResponse, getVSCodeAPI } from './getVscodeApi';
-
-
-// code block with Apply button at top
-export const BlockCode = ({ text, disableApplyButton = false }: { text: string, disableApplyButton?: boolean }) => {
- return
- {disableApplyButton ? null :
-
-
}
-
-
-}
-
-const Render = ({ token }: { token: Token }) => {
-
- // deal with built-in tokens first (assume marked token)
- const t = token as MarkedToken
-
- if (t.type === "space") {
- return {t.raw};
- }
-
- if (t.type === "code") {
- return
- }
-
- if (t.type === "heading") {
- const HeadingTag = `h${t.depth}` as keyof JSX.IntrinsicElements;
- return {t.text};
- }
-
- if (t.type === "table") {
- return (
-
-
-
- {t.header.map((cell: any, index: number) => (
- |
- {cell.raw}
- |
- ))}
-
-
-
- {t.rows.map((row: any[], rowIndex: number) => (
-
- {row.map((cell: any, cellIndex: number) => (
- |
- {cell.raw}
- |
- ))}
-
- ))}
-
-
- );
- }
-
- if (t.type === "hr") {
- return
;
- }
-
- if (t.type === "blockquote") {
- return {t.text}
;
- }
-
- if (t.type === "list") {
-
- const ListTag = t.ordered ? 'ol' : 'ul';
- return (
-
- {t.items.map((item, index) => (
-
- {item.task && (
-
- )}
- {item.text}
-
- ))}
-
- );
- }
-
- if (t.type === "paragraph") {
- return
- {t.tokens.map((token, index) => (
-
- ))}
-
;
- }
-
- if (t.type === "html") {
- return {``}{t.raw}{``};
- }
-
- if (t.type === "text" || t.type === "escape") {
- return {t.raw};
- }
-
- if (t.type === "def") {
- return null; // Definitions are typically not rendered
- }
-
- if (t.type === "link") {
- return {t.text};
- }
-
- if (t.type === "image") {
- return
;
- }
-
- if (t.type === "strong") {
- return {t.text};
- }
-
- if (t.type === "em") {
- return {t.text};
- }
-
- // inline code
- if (t.type === "codespan") {
- return {t.text};
- }
-
- if (t.type === "br") {
- return
;
- }
-
- if (t.type === "del") {
- return {t.text};
- }
-
-
- // default
- return
- Unknown type:
- {t.raw}
-
;
-};
-
-const MarkdownRender = ({ tokens }: { tokens: TokensList }) => {
- return (
- <>
- {tokens.map((token, index) => (
-
- ))}
- >
- );
-};
-
-export default MarkdownRender;
diff --git a/extensions/void/src/sidebar/MarkdownRender/MarkdownRender.tsx b/extensions/void/src/sidebar/MarkdownRender/MarkdownRender.tsx
new file mode 100644
index 00000000..c972342e
--- /dev/null
+++ b/extensions/void/src/sidebar/MarkdownRender/MarkdownRender.tsx
@@ -0,0 +1,164 @@
+import React, { JSX, useState } from "react"
+import { MarkedToken, Token, TokensList } from "marked"
+import { awaitVSCodeResponse, getVSCodeAPI } from "../getVscodeApi"
+import BlockCode from "./BlockCode"
+
+const Render = ({ token }: { token: Token }) => {
+ // deal with built-in tokens first (assume marked token)
+ const t = token as MarkedToken
+
+ if (t.type === "space") {
+ return {t.raw}
+ }
+
+ if (t.type === "code") {
+ return
+ }
+
+ if (t.type === "heading") {
+ const HeadingTag = `h${t.depth}` as keyof JSX.IntrinsicElements
+ return {t.text}
+ }
+
+ if (t.type === "table") {
+ return (
+
+
+
+ {t.header.map((cell: any, index: number) => (
+ |
+ {cell.raw}
+ |
+ ))}
+
+
+
+ {t.rows.map((row: any[], rowIndex: number) => (
+
+ {row.map((cell: any, cellIndex: number) => (
+ |
+ {cell.raw}
+ |
+ ))}
+
+ ))}
+
+
+ )
+ }
+
+ if (t.type === "hr") {
+ return
+ }
+
+ if (t.type === "blockquote") {
+ return {t.text}
+ }
+
+ if (t.type === "list") {
+ const ListTag = t.ordered ? "ol" : "ul"
+ return (
+
+ {t.items.map((item, index) => (
+
+ {item.task && (
+
+ )}
+ {item.text}
+
+ ))}
+
+ )
+ }
+
+ if (t.type === "paragraph") {
+ return (
+
+ {t.tokens.map((token, index) => (
+
+ ))}
+
+ )
+ }
+
+ if (t.type === "html") {
+ return (
+
+ {``}
+ {t.raw}
+ {``}
+
+ )
+ }
+
+ if (t.type === "text" || t.type === "escape") {
+ return {t.raw}
+ }
+
+ if (t.type === "def") {
+ return null // Definitions are typically not rendered
+ }
+
+ if (t.type === "link") {
+ return (
+
+ {t.text}
+
+ )
+ }
+
+ if (t.type === "image") {
+ return
+ }
+
+ if (t.type === "strong") {
+ return {t.text}
+ }
+
+ if (t.type === "em") {
+ return {t.text}
+ }
+
+ // inline code
+ if (t.type === "codespan") {
+ return (
+
+ {t.text}
+
+ )
+ }
+
+ if (t.type === "br") {
+ return
+ }
+
+ if (t.type === "del") {
+ return {t.text}
+ }
+
+ // default
+ return (
+
+ Unknown type:
+ {t.raw}
+
+ )
+}
+
+const MarkdownRender = ({ tokens }: { tokens: TokensList }) => {
+ return (
+ <>
+ {tokens.map((token, index) => (
+
+ ))}
+ >
+ )
+}
+
+export default MarkdownRender
diff --git a/extensions/void/src/sidebar/Sidebar.tsx b/extensions/void/src/sidebar/Sidebar.tsx
index 4cba1ccb..e828e4ba 100644
--- a/extensions/void/src/sidebar/Sidebar.tsx
+++ b/extensions/void/src/sidebar/Sidebar.tsx
@@ -4,7 +4,7 @@ import { Command, File, Selection, WebviewMessage } from "../shared_types"
import { awaitVSCodeResponse, getVSCodeAPI, resolveAwaitingVSCodeResponse } from "./getVscodeApi"
import { marked } from 'marked';
-import MarkdownRender, { BlockCode } from "./MarkdownRender";
+import { MarkdownRender, BlockCode } from "./MarkdownRender";
import * as vscode from 'vscode'