From 06ae5ee00ce9962c82e5599051d179764fe9b05a Mon Sep 17 00:00:00 2001 From: Sadegh Barati Date: Sun, 22 Oct 2023 00:48:33 +0330 Subject: [PATCH] feat: add `new-york` to reproduction links --- apps/www/.vitepress/theme/components/CodeSandbox.vue | 3 ++- apps/www/.vitepress/theme/components/ComponentPreview.vue | 5 +++-- apps/www/.vitepress/theme/components/Stackblitz.vue | 3 ++- apps/www/.vitepress/theme/plugins/previewer.ts | 2 ++ apps/www/.vitepress/theme/plugins/utils.ts | 4 +++- 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/apps/www/.vitepress/theme/components/CodeSandbox.vue b/apps/www/.vitepress/theme/components/CodeSandbox.vue index 09a83e3a..518e7ff4 100644 --- a/apps/www/.vitepress/theme/components/CodeSandbox.vue +++ b/apps/www/.vitepress/theme/components/CodeSandbox.vue @@ -9,6 +9,7 @@ import { type Style } from '@/lib/registry/styles' const props = defineProps<{ name: string code: string + newYorkCode: string style: Style extraFiles?: string[] }>() @@ -16,7 +17,7 @@ const props = defineProps<{ const sources = ref>({}) onMounted(() => { - sources.value['App.vue'] = props.code + sources.value['App.vue'] = props.style === 'default' ? props.code : props.newYorkCode if (props.extraFiles) { props.extraFiles.forEach((file) => { import(`../../../src/lib/registry/${props.style}/example/${file}.vue?raw`).then((module) => { diff --git a/apps/www/.vitepress/theme/components/ComponentPreview.vue b/apps/www/.vitepress/theme/components/ComponentPreview.vue index 852ce98c..0f22ab36 100644 --- a/apps/www/.vitepress/theme/components/ComponentPreview.vue +++ b/apps/www/.vitepress/theme/components/ComponentPreview.vue @@ -11,6 +11,7 @@ const props = withDefaults(defineProps<{ name: string align?: 'center' | 'start' | 'end' sfcTsCode?: string + sfcTsNewYorkCode?: string sfcTsHtml?: string extraFiles?: string[] }>(), { align: 'center' }) @@ -44,8 +45,8 @@ const { style } = useConfigStore()
- - + +
() @@ -16,7 +17,7 @@ const props = defineProps<{ const sources = ref>({}) onMounted(() => { - sources.value['App.vue'] = props.code + sources.value['App.vue'] = props.style === 'default' ? props.code : props.newYorkCode if (props.extraFiles) { props.extraFiles.forEach((file) => { import(`../../../src/lib/registry/${props.style}/example/${file}.vue?raw`).then((module) => { diff --git a/apps/www/.vitepress/theme/plugins/previewer.ts b/apps/www/.vitepress/theme/plugins/previewer.ts index 277ea297..326f8736 100644 --- a/apps/www/.vitepress/theme/plugins/previewer.ts +++ b/apps/www/.vitepress/theme/plugins/previewer.ts @@ -18,6 +18,7 @@ export default function (md: MarkdownRenderer) { const { name, attrs } = props const pluginPath = dirname(__dirname) const srcPath = resolve(pluginPath, '../../src/lib/registry/default/example/', `${name}.vue`).replace(/\\/g, '/') + const srcPathNewYork = resolve(pluginPath, '../../src/lib/registry/new-york/example/', `${name}.vue`).replace(/\\/g, '/') if (!fs.existsSync(srcPath)) { console.error(`rendering ${path}: ${srcPath} does not exist`) @@ -28,6 +29,7 @@ export default function (md: MarkdownRenderer) { attrs, props, code: fs.readFileSync(srcPath, 'utf-8'), + newYorkCode: fs.readFileSync(srcPathNewYork, 'utf-8'), path: srcPath, }) diff --git a/apps/www/.vitepress/theme/plugins/utils.ts b/apps/www/.vitepress/theme/plugins/utils.ts index 2d925566..390e8e07 100644 --- a/apps/www/.vitepress/theme/plugins/utils.ts +++ b/apps/www/.vitepress/theme/plugins/utils.ts @@ -9,18 +9,20 @@ export interface GenerateOptions { props: Record path: string code: string + newYorkCode: string } export function parse( md: MarkdownRenderer, env: MarkdownEnv, - { code, attrs: _attrs, props }: GenerateOptions, + { newYorkCode, code, attrs: _attrs, props }: GenerateOptions, ) { const highlightedHtml = md.options.highlight!(code, 'vue', _attrs || '') const sfcTsHtml = highlightedHtml const attrs = `sfcTsCode="${encodeURIComponent(code)}"\n` + + `sfcTsNewYorkCode="${encodeURIComponent(newYorkCode)}"\n` + `sfcTsHtml="${encodeURIComponent(sfcTsHtml)}"\n` + `v-bind='${JSON.stringify(props)}'\n`