Skip to content

Commit fe358e7

Browse files
committed
feat: dynamic import for codeblock, and supported language
1 parent 6c12ab6 commit fe358e7

File tree

1 file changed

+42
-1
lines changed

1 file changed

+42
-1
lines changed

src/components/block.vue

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<script setup lang="ts">
2+
import { defineAsyncComponent } from "vue"
23
import { defineNotionProps, useNotionBlock } from "@/lib/blockable"
34
import { availableType } from "@/lib/constant"
45
import NotionBookmark from "@/blocks/bookmark.vue"
56
import NotionCallout from "@/blocks/callout.vue"
6-
import NotionCode from "@/blocks/code.vue"
77
import NotionColumn from "@/blocks/column.vue"
88
import NotionEquation from "@/blocks/equation.vue"
99
import NotionFigure from "@/blocks/helpers/figure.vue"
@@ -18,6 +18,47 @@ import NotionTodo from "@/blocks/todo.vue"
1818
import NotionToggle from "@/blocks/toggle.vue"
1919
import NotionTableOfContents from "@/blocks/table-of-contents.vue"
2020
21+
const NotionCode = defineAsyncComponent(() =>
22+
import("@/blocks/code.vue").then(async (m) => {
23+
await Promise.all([
24+
import("prismjs/components/prism-markup-templating"),
25+
import("prismjs/components/prism-markup"),
26+
import("prismjs/components/prism-bash"),
27+
import("prismjs/components/prism-c"),
28+
import("prismjs/components/prism-cpp"),
29+
import("prismjs/components/prism-csharp"),
30+
import("prismjs/components/prism-docker"),
31+
import("prismjs/components/prism-java"),
32+
import("prismjs/components/prism-js-templates"),
33+
import("prismjs/components/prism-typescript"),
34+
import("prismjs/components/prism-coffeescript"),
35+
import("prismjs/components/prism-diff"),
36+
import("prismjs/components/prism-git"),
37+
import("prismjs/components/prism-go"),
38+
import("prismjs/components/prism-graphql"),
39+
import("prismjs/components/prism-handlebars"),
40+
import("prismjs/components/prism-json"),
41+
import("prismjs/components/prism-less"),
42+
import("prismjs/components/prism-makefile"),
43+
import("prismjs/components/prism-markdown"),
44+
import("prismjs/components/prism-objectivec"),
45+
import("prismjs/components/prism-ocaml"),
46+
import("prismjs/components/prism-python"),
47+
import("prismjs/components/prism-reason"),
48+
import("prismjs/components/prism-rust"),
49+
import("prismjs/components/prism-sass"),
50+
import("prismjs/components/prism-scss"),
51+
import("prismjs/components/prism-solidity"),
52+
import("prismjs/components/prism-sql"),
53+
import("prismjs/components/prism-stylus"),
54+
import("prismjs/components/prism-swift"),
55+
import("prismjs/components/prism-wasm"),
56+
import("prismjs/components/prism-yaml"),
57+
])
58+
return m
59+
})
60+
)
61+
2162
const props = defineProps({ ...defineNotionProps })
2263
//@ts-ignore
2364
const { pass, type, format, isType } = useNotionBlock(props)

0 commit comments

Comments
 (0)