enhance(frontend): remove v-code-diff
This commit is contained in:
parent
389861f1da
commit
3f5240a254
|
|
@ -25,6 +25,7 @@
|
|||
"@rollup/plugin-replace": "6.0.3",
|
||||
"@rollup/pluginutils": "5.3.0",
|
||||
"@sentry/vue": "10.32.1",
|
||||
"@shikijs/transformers": "3.21.0",
|
||||
"@syuilo/aiscript": "1.2.1",
|
||||
"@syuilo/aiscript-0-19-0": "npm:@syuilo/aiscript@^0.19.0",
|
||||
"@twemoji/parser": "16.0.0",
|
||||
|
|
@ -43,6 +44,7 @@
|
|||
"compare-versions": "6.1.1",
|
||||
"cropperjs": "2.1.0",
|
||||
"date-fns": "4.1.0",
|
||||
"diff": "8.0.3",
|
||||
"eventemitter3": "5.0.1",
|
||||
"execa": "9.6.1",
|
||||
"exifreader": "4.33.1",
|
||||
|
|
@ -67,12 +69,11 @@
|
|||
"rollup": "4.54.0",
|
||||
"sanitize-html": "2.17.0",
|
||||
"sass": "1.97.1",
|
||||
"shiki": "3.20.0",
|
||||
"shiki": "3.21.0",
|
||||
"textarea-caret": "3.1.0",
|
||||
"three": "0.182.0",
|
||||
"throttle-debounce": "5.0.2",
|
||||
"tinycolor2": "1.6.0",
|
||||
"v-code-diff": "1.13.1",
|
||||
"vite": "7.3.0",
|
||||
"vue": "3.5.26",
|
||||
"wanakana": "5.3.1"
|
||||
|
|
|
|||
|
|
@ -9,29 +9,40 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||
:class="[$style.codeBlockRoot, {
|
||||
[$style.codeEditor]: codeEditor,
|
||||
[$style.outerStyle]: !codeEditor && withOuterStyle,
|
||||
[$style.withMaxHeight]: maxHeight != null,
|
||||
[$style.dark]: darkMode,
|
||||
[$style.light]: !darkMode,
|
||||
}]" v-html="html"></div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { computed, ref, watch } from 'vue';
|
||||
import { computed, ref, shallowRef, watch } from 'vue';
|
||||
import { bundledLanguagesInfo } from 'shiki/langs';
|
||||
import type { transformerNotationDiff as transformerNotationDiff_typeReferenceOnly } from '@shikijs/transformers';
|
||||
import type { diffLines as diffLines_typeReferenceOnly } from 'diff';
|
||||
import type { BundledLanguage } from 'shiki/langs';
|
||||
import { getHighlighter, getTheme } from '@/utility/code-highlighter.js';
|
||||
import { store } from '@/store.js';
|
||||
|
||||
const props = withDefaults(defineProps<{
|
||||
code: string;
|
||||
diffBase?: string;
|
||||
lang?: string;
|
||||
codeEditor?: boolean;
|
||||
withOuterStyle?: boolean;
|
||||
maxHeight?: number | null;
|
||||
}>(), {
|
||||
codeEditor: false,
|
||||
withOuterStyle: true,
|
||||
maxHeight: null,
|
||||
});
|
||||
|
||||
const maxHeight = computed(() => props.maxHeight != null ? `${props.maxHeight}px` : null);
|
||||
|
||||
const highlighter = await getHighlighter();
|
||||
const transformerNotationDiff = shallowRef<typeof transformerNotationDiff_typeReferenceOnly | null>(null);
|
||||
const diffLines = shallowRef<typeof diffLines_typeReferenceOnly | null>(null);
|
||||
|
||||
const darkMode = store.r.darkMode;
|
||||
const codeLang = ref<BundledLanguage | 'aiscript'>('js');
|
||||
|
||||
|
|
@ -40,13 +51,34 @@ const [lightThemeName, darkThemeName] = await Promise.all([
|
|||
getTheme('dark', true),
|
||||
]);
|
||||
|
||||
const html = computed(() => highlighter.codeToHtml(props.code, {
|
||||
const code = computed(() => {
|
||||
if (props.diffBase != null && diffLines.value != null) {
|
||||
const diffedLines = diffLines.value(props.diffBase, props.code);
|
||||
const diffed = diffedLines.map((part) => {
|
||||
if (part.added) {
|
||||
return part.value.split('\n').map(line => line ? `${line} // [!code ++]` : line).join('\n');
|
||||
} else if (part.removed) {
|
||||
return part.value.split('\n').map(line => line ? `${line} // [!code --]` : line).join('\n');
|
||||
} else {
|
||||
return part.value;
|
||||
}
|
||||
}).join('');
|
||||
return diffed;
|
||||
} else {
|
||||
return props.code;
|
||||
}
|
||||
});
|
||||
|
||||
const html = computed(() => highlighter.codeToHtml(code.value, {
|
||||
lang: codeLang.value,
|
||||
themes: {
|
||||
fallback: 'dark-plus',
|
||||
light: lightThemeName,
|
||||
dark: darkThemeName,
|
||||
},
|
||||
transformers: props.diffBase != null && transformerNotationDiff.value != null
|
||||
? [transformerNotationDiff.value({})]
|
||||
: [],
|
||||
defaultColor: false,
|
||||
cssVariablePrefix: '--shiki-',
|
||||
}));
|
||||
|
|
@ -73,6 +105,19 @@ async function fetchLanguage(to: string): Promise<void> {
|
|||
}
|
||||
}
|
||||
|
||||
watch(() => props.diffBase, async (to) => {
|
||||
if (to != null) {
|
||||
if (transformerNotationDiff.value == null) {
|
||||
const { transformerNotationDiff: tf } = await import('@shikijs/transformers');
|
||||
transformerNotationDiff.value = tf;
|
||||
}
|
||||
if (diffLines.value == null) {
|
||||
const { diffLines: dl } = await import('diff');
|
||||
diffLines.value = dl;
|
||||
}
|
||||
}
|
||||
}, { immediate: true });
|
||||
|
||||
watch(() => props.lang, (to) => {
|
||||
if (codeLang.value === to || !to) return;
|
||||
return new Promise((resolve) => {
|
||||
|
|
@ -96,6 +141,33 @@ watch(() => props.lang, (to) => {
|
|||
& code {
|
||||
font-family: Consolas, Monaco, Andale Mono, Ubuntu Mono, monospace;
|
||||
}
|
||||
|
||||
&>code {
|
||||
display: block;
|
||||
min-width: fit-content;
|
||||
}
|
||||
|
||||
& :global(.line) {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.codeBlockRoot :global(.shiki.has-diff) {
|
||||
& :global(.line.diff.remove) {
|
||||
background-color: rgba(244, 63, 94, .14);
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
& :global(.line.diff.add) {
|
||||
background-color: rgba(75, 192, 107, .14);
|
||||
}
|
||||
}
|
||||
|
||||
.codeBlockRoot.withMaxHeight :global(.shiki) {
|
||||
max-height: v-bind(maxHeight);
|
||||
scrollbar-color: var(--MI_THEME-scrollbarHandle) transparent;
|
||||
scrollbar-width: thin;
|
||||
}
|
||||
|
||||
.outerStyle.codeBlockRoot :global(.shiki) {
|
||||
|
|
|
|||
|
|
@ -21,14 +21,17 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||
v-if="show && lang"
|
||||
class="_selectable"
|
||||
:code="code"
|
||||
:diffBase="diffBase"
|
||||
:lang="lang"
|
||||
:withOuterStyle="withOuterStyle"
|
||||
:maxHeight="props.maxHeight"
|
||||
/>
|
||||
<pre
|
||||
v-else-if="show"
|
||||
class="_selectable"
|
||||
:class="[$style.codeBlockFallbackRoot, {
|
||||
[$style.outerStyle]: withOuterStyle,
|
||||
[$style.withMaxHeight]: maxHeight != null,
|
||||
}]"
|
||||
><code :class="$style.codeBlockFallbackCode">{{ code }}</code></pre>
|
||||
<button v-else :class="$style.codePlaceholderRoot" @click="show = true">
|
||||
|
|
@ -42,24 +45,28 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { defineAsyncComponent, ref } from 'vue';
|
||||
import { defineAsyncComponent, ref, computed } from 'vue';
|
||||
import { i18n } from '@/i18n.js';
|
||||
import { copyToClipboard } from '@/utility/copy-to-clipboard.js';
|
||||
import { prefer } from '@/preferences.js';
|
||||
|
||||
const props = withDefaults(defineProps<{
|
||||
code: string;
|
||||
diffBase?: string;
|
||||
forceShow?: boolean;
|
||||
copyButton?: boolean;
|
||||
withOuterStyle?: boolean;
|
||||
lang?: string;
|
||||
maxHeight?: number | null;
|
||||
}>(), {
|
||||
copyButton: true,
|
||||
forceShow: false,
|
||||
withOuterStyle: true,
|
||||
maxHeight: null,
|
||||
});
|
||||
|
||||
const show = ref(props.forceShow === true ? true : !prefer.s.dataSaver.code);
|
||||
const maxHeight = computed(() => props.maxHeight != null ? `${props.maxHeight}px` : null);
|
||||
|
||||
const XCode = defineAsyncComponent(() => import('@/components/MkCode.core.vue'));
|
||||
|
||||
|
|
@ -94,6 +101,12 @@ function copy() {
|
|||
display: block;
|
||||
overflow-wrap: anywhere;
|
||||
overflow: auto;
|
||||
|
||||
&.withMaxHeight {
|
||||
scrollbar-color: var(--MI_THEME-scrollbarHandle) transparent;
|
||||
scrollbar-width: thin;
|
||||
max-height: v-bind(maxHeight);
|
||||
}
|
||||
}
|
||||
|
||||
.outerStyle.codeBlockFallbackRoot {
|
||||
|
|
|
|||
|
|
@ -131,22 +131,29 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||
<MkTime :time="log.createdAt"/>
|
||||
</template>
|
||||
|
||||
<div>
|
||||
<div class="_gaps_s">
|
||||
<div style="display: flex; gap: var(--MI-margin); flex-wrap: wrap;">
|
||||
<div style="flex: 1;">{{ i18n.ts.moderator }}: <MkA :to="`/admin/user/${log.userId}`" class="_link">@{{ log.user?.username }}</MkA></div>
|
||||
<div style="flex: 1;">{{ i18n.ts.dateAndTime }}: <MkTime :time="log.createdAt" mode="detail"/></div>
|
||||
</div>
|
||||
|
||||
<template v-if="log.type === 'updateServerSettings'">
|
||||
<div :class="$style.diff">
|
||||
<CodeDiff :context="5" :hideHeader="true" :oldString="JSON5.stringify(log.info.before, null, '\t')" :newString="JSON5.stringify(log.info.after, null, '\t')" language="javascript" maxHeight="300px"/>
|
||||
</div>
|
||||
<MkCode
|
||||
lang="js"
|
||||
forceShow
|
||||
:code="JSON5.stringify(log.info.after, null, '\t')"
|
||||
:diffBase="JSON5.stringify(log.info.before, null, '\t')"
|
||||
:maxHeight="300"
|
||||
></MkCode>
|
||||
</template>
|
||||
<template v-else-if="log.type === 'updateUserNote'">
|
||||
<div>{{ i18n.ts.user }}: {{ log.info.userId }}</div>
|
||||
<div :class="$style.diff">
|
||||
<CodeDiff :context="5" :hideHeader="true" :oldString="log.info.before ?? ''" :newString="log.info.after ?? ''" maxHeight="300px"/>
|
||||
</div>
|
||||
<MkCode
|
||||
forceShow
|
||||
:code="log.info.after ?? ''"
|
||||
:diffBase="log.info.before ?? ''"
|
||||
:maxHeight="300"
|
||||
></MkCode>
|
||||
</template>
|
||||
<template v-else-if="log.type === 'suspend'">
|
||||
<div>{{ i18n.ts.user }}: <MkA :to="`/admin/user/${log.info.userId}`" class="_link">@{{ log.info.userUsername }}{{ log.info.userHost ? '@' + log.info.userHost : '' }}</MkA></div>
|
||||
|
|
@ -155,9 +162,13 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||
<div>{{ i18n.ts.user }}: <MkA :to="`/admin/user/${log.info.userId}`" class="_link">@{{ log.info.userUsername }}{{ log.info.userHost ? '@' + log.info.userHost : '' }}</MkA></div>
|
||||
</template>
|
||||
<template v-else-if="log.type === 'updateRole'">
|
||||
<div :class="$style.diff">
|
||||
<CodeDiff :context="5" :hideHeader="true" :oldString="JSON5.stringify(log.info.before, null, '\t')" :newString="JSON5.stringify(log.info.after, null, '\t')" language="javascript" maxHeight="300px"/>
|
||||
</div>
|
||||
<MkCode
|
||||
lang="js"
|
||||
forceShow
|
||||
:code="JSON5.stringify(log.info.after, null, '\t')"
|
||||
:diffBase="JSON5.stringify(log.info.before, null, '\t')"
|
||||
:maxHeight="300"
|
||||
></MkCode>
|
||||
</template>
|
||||
<template v-else-if="log.type === 'assignRole'">
|
||||
<div>{{ i18n.ts.user }}: {{ log.info.userId }}</div>
|
||||
|
|
@ -169,54 +180,91 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||
</template>
|
||||
<template v-else-if="log.type === 'updateCustomEmoji'">
|
||||
<div>{{ i18n.ts.emoji }}: {{ log.info.emojiId }}</div>
|
||||
<div :class="$style.diff">
|
||||
<CodeDiff :context="5" :hideHeader="true" :oldString="JSON5.stringify(log.info.before, null, '\t')" :newString="JSON5.stringify(log.info.after, null, '\t')" language="javascript" maxHeight="300px"/>
|
||||
</div>
|
||||
<MkCode
|
||||
lang="js"
|
||||
forceShow
|
||||
:code="JSON5.stringify(log.info.after, null, '\t')"
|
||||
:diffBase="JSON5.stringify(log.info.before, null, '\t')"
|
||||
:maxHeight="300"
|
||||
></MkCode>
|
||||
</template>
|
||||
<template v-else-if="log.type === 'updateAd'">
|
||||
<div :class="$style.diff">
|
||||
<CodeDiff :context="5" :hideHeader="true" :oldString="JSON5.stringify(log.info.before, null, '\t')" :newString="JSON5.stringify(log.info.after, null, '\t')" language="javascript" maxHeight="300px"/>
|
||||
</div>
|
||||
<MkCode
|
||||
lang="js"
|
||||
forceShow
|
||||
:code="JSON5.stringify(log.info.after, null, '\t')"
|
||||
:diffBase="JSON5.stringify(log.info.before, null, '\t')"
|
||||
:maxHeight="300"
|
||||
></MkCode>
|
||||
</template>
|
||||
<template v-else-if="log.type === 'updateGlobalAnnouncement'">
|
||||
<div :class="$style.diff">
|
||||
<CodeDiff :context="5" :hideHeader="true" :oldString="JSON5.stringify(log.info.before, null, '\t')" :newString="JSON5.stringify(log.info.after, null, '\t')" language="javascript" maxHeight="300px"/>
|
||||
</div>
|
||||
<MkCode
|
||||
lang="js"
|
||||
forceShow
|
||||
:code="JSON5.stringify(log.info.after, null, '\t')"
|
||||
:diffBase="JSON5.stringify(log.info.before, null, '\t')"
|
||||
:maxHeight="300"
|
||||
></MkCode>
|
||||
</template>
|
||||
<template v-else-if="log.type === 'updateUserAnnouncement'">
|
||||
<div :class="$style.diff">
|
||||
<CodeDiff :context="5" :hideHeader="true" :oldString="JSON5.stringify(log.info.before, null, '\t')" :newString="JSON5.stringify(log.info.after, null, '\t')" language="javascript" maxHeight="300px"/>
|
||||
</div>
|
||||
<MkCode
|
||||
lang="js"
|
||||
forceShow
|
||||
:code="JSON5.stringify(log.info.after, null, '\t')"
|
||||
:diffBase="JSON5.stringify(log.info.before, null, '\t')"
|
||||
:maxHeight="300"
|
||||
></MkCode>
|
||||
</template>
|
||||
<template v-else-if="log.type === 'updateAvatarDecoration'">
|
||||
<div :class="$style.diff">
|
||||
<CodeDiff :context="5" :hideHeader="true" :oldString="JSON5.stringify(log.info.before, null, '\t')" :newString="JSON5.stringify(log.info.after, null, '\t')" language="javascript" maxHeight="300px"/>
|
||||
</div>
|
||||
<MkCode
|
||||
lang="js"
|
||||
forceShow
|
||||
:code="JSON5.stringify(log.info.after, null, '\t')"
|
||||
:diffBase="JSON5.stringify(log.info.before, null, '\t')"
|
||||
:maxHeight="300"
|
||||
></MkCode>
|
||||
</template>
|
||||
<template v-else-if="log.type === 'updateRemoteInstanceNote'">
|
||||
<div :class="$style.diff">
|
||||
<CodeDiff :context="5" :hideHeader="true" :oldString="log.info.before ?? ''" :newString="log.info.after ?? ''" maxHeight="300px"/>
|
||||
</div>
|
||||
<MkCode
|
||||
forceShow
|
||||
:code="log.info.after ?? ''"
|
||||
:diffBase="log.info.before ?? ''"
|
||||
:maxHeight="300"
|
||||
></MkCode>
|
||||
</template>
|
||||
<template v-else-if="log.type === 'updateSystemWebhook'">
|
||||
<div :class="$style.diff">
|
||||
<CodeDiff :context="5" :hideHeader="true" :oldString="JSON5.stringify(log.info.before, null, '\t')" :newString="JSON5.stringify(log.info.after, null, '\t')" language="javascript" maxHeight="300px"/>
|
||||
</div>
|
||||
<MkCode
|
||||
lang="js"
|
||||
forceShow
|
||||
:code="JSON5.stringify(log.info.after, null, '\t')"
|
||||
:diffBase="JSON5.stringify(log.info.before, null, '\t')"
|
||||
:maxHeight="300"
|
||||
></MkCode>
|
||||
</template>
|
||||
<template v-else-if="log.type === 'updateAbuseReportNotificationRecipient'">
|
||||
<div :class="$style.diff">
|
||||
<CodeDiff :context="5" :hideHeader="true" :oldString="JSON5.stringify(log.info.before, null, '\t')" :newString="JSON5.stringify(log.info.after, null, '\t')" language="javascript" maxHeight="300px"/>
|
||||
</div>
|
||||
<MkCode
|
||||
lang="js"
|
||||
forceShow
|
||||
:code="JSON5.stringify(log.info.after, null, '\t')"
|
||||
:diffBase="JSON5.stringify(log.info.before, null, '\t')"
|
||||
:maxHeight="300"
|
||||
></MkCode>
|
||||
</template>
|
||||
<template v-else-if="log.type === 'updateAbuseReportNote'">
|
||||
<div :class="$style.diff">
|
||||
<CodeDiff :context="5" :hideHeader="true" :oldString="log.info.before ?? ''" :newString="log.info.after ?? ''" maxHeight="300px"/>
|
||||
</div>
|
||||
<MkCode
|
||||
forceShow
|
||||
:code="log.info.after ?? ''"
|
||||
:diffBase="log.info.before ?? ''"
|
||||
:maxHeight="300"
|
||||
></MkCode>
|
||||
</template>
|
||||
<template v-else-if="log.type === 'updateProxyAccountDescription'">
|
||||
<div :class="$style.diff">
|
||||
<CodeDiff :context="5" :hideHeader="true" :oldString="log.info.before ?? ''" :newString="log.info.after ?? ''" maxHeight="300px"/>
|
||||
</div>
|
||||
<MkCode
|
||||
forceShow
|
||||
:code="log.info.after ?? ''"
|
||||
:diffBase="log.info.before ?? ''"
|
||||
:maxHeight="300"
|
||||
></MkCode>
|
||||
</template>
|
||||
|
||||
<details>
|
||||
|
|
@ -229,7 +277,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||
|
||||
<script lang="ts" setup>
|
||||
import * as Misskey from 'misskey-js';
|
||||
import { CodeDiff } from 'v-code-diff';
|
||||
import MkCode from '@/components/MkCode.vue';
|
||||
import JSON5 from 'json5';
|
||||
import { i18n } from '@/i18n.js';
|
||||
import MkFolder from '@/components/MkFolder.vue';
|
||||
|
|
@ -240,13 +288,6 @@ const props = defineProps<{
|
|||
</script>
|
||||
|
||||
<style lang="scss" module>
|
||||
.diff {
|
||||
background: #fff;
|
||||
color: #000;
|
||||
border-radius: 6px;
|
||||
overflow: clip;
|
||||
}
|
||||
|
||||
.logYellow {
|
||||
color: var(--MI_THEME-warn);
|
||||
}
|
||||
|
|
|
|||
136
pnpm-lock.yaml
136
pnpm-lock.yaml
|
|
@ -683,6 +683,9 @@ importers:
|
|||
'@sentry/vue':
|
||||
specifier: 10.32.1
|
||||
version: 10.32.1(vue@3.5.26(typescript@5.9.3))
|
||||
'@shikijs/transformers':
|
||||
specifier: 3.21.0
|
||||
version: 3.21.0
|
||||
'@syuilo/aiscript':
|
||||
specifier: 1.2.1
|
||||
version: 1.2.1
|
||||
|
|
@ -737,6 +740,9 @@ importers:
|
|||
date-fns:
|
||||
specifier: 4.1.0
|
||||
version: 4.1.0
|
||||
diff:
|
||||
specifier: 8.0.3
|
||||
version: 8.0.3
|
||||
eventemitter3:
|
||||
specifier: 5.0.1
|
||||
version: 5.0.1
|
||||
|
|
@ -810,8 +816,8 @@ importers:
|
|||
specifier: 1.97.1
|
||||
version: 1.97.1
|
||||
shiki:
|
||||
specifier: 3.20.0
|
||||
version: 3.20.0
|
||||
specifier: 3.21.0
|
||||
version: 3.21.0
|
||||
textarea-caret:
|
||||
specifier: 3.1.0
|
||||
version: 3.1.0
|
||||
|
|
@ -824,9 +830,6 @@ importers:
|
|||
tinycolor2:
|
||||
specifier: 1.6.0
|
||||
version: 1.6.0
|
||||
v-code-diff:
|
||||
specifier: 1.13.1
|
||||
version: 1.13.1(vue@3.5.26(typescript@5.9.3))
|
||||
vite:
|
||||
specifier: 7.3.0
|
||||
version: 7.3.0(@types/node@24.10.4)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)
|
||||
|
|
@ -3706,21 +3709,42 @@ packages:
|
|||
'@shikijs/core@3.20.0':
|
||||
resolution: {integrity: sha512-f2ED7HYV4JEk827mtMDwe/yQ25pRiXZmtHjWF8uzZKuKiEsJR7Ce1nuQ+HhV9FzDcbIo4ObBCD9GPTzNuy9S1g==}
|
||||
|
||||
'@shikijs/core@3.21.0':
|
||||
resolution: {integrity: sha512-AXSQu/2n1UIQekY8euBJlvFYZIw0PHY63jUzGbrOma4wPxzznJXTXkri+QcHeBNaFxiiOljKxxJkVSoB3PjbyA==}
|
||||
|
||||
'@shikijs/engine-javascript@3.20.0':
|
||||
resolution: {integrity: sha512-OFx8fHAZuk7I42Z9YAdZ95To6jDePQ9Rnfbw9uSRTSbBhYBp1kEOKv/3jOimcj3VRUKusDYM6DswLauwfhboLg==}
|
||||
|
||||
'@shikijs/engine-javascript@3.21.0':
|
||||
resolution: {integrity: sha512-ATwv86xlbmfD9n9gKRiwuPpWgPENAWCLwYCGz9ugTJlsO2kOzhOkvoyV/UD+tJ0uT7YRyD530x6ugNSffmvIiQ==}
|
||||
|
||||
'@shikijs/engine-oniguruma@3.20.0':
|
||||
resolution: {integrity: sha512-Yx3gy7xLzM0ZOjqoxciHjA7dAt5tyzJE3L4uQoM83agahy+PlW244XJSrmJRSBvGYELDhYXPacD4R/cauV5bzQ==}
|
||||
|
||||
'@shikijs/engine-oniguruma@3.21.0':
|
||||
resolution: {integrity: sha512-OYknTCct6qiwpQDqDdf3iedRdzj6hFlOPv5hMvI+hkWfCKs5mlJ4TXziBG9nyabLwGulrUjHiCq3xCspSzErYQ==}
|
||||
|
||||
'@shikijs/langs@3.20.0':
|
||||
resolution: {integrity: sha512-le+bssCxcSHrygCWuOrYJHvjus6zhQ2K7q/0mgjiffRbkhM4o1EWu2m+29l0yEsHDbWaWPNnDUTRVVBvBBeKaA==}
|
||||
|
||||
'@shikijs/langs@3.21.0':
|
||||
resolution: {integrity: sha512-g6mn5m+Y6GBJ4wxmBYqalK9Sp0CFkUqfNzUy2pJglUginz6ZpWbaWjDB4fbQ/8SHzFjYbtU6Ddlp1pc+PPNDVA==}
|
||||
|
||||
'@shikijs/themes@3.20.0':
|
||||
resolution: {integrity: sha512-U1NSU7Sl26Q7ErRvJUouArxfM2euWqq1xaSrbqMu2iqa+tSp0D1Yah8216sDYbdDHw4C8b75UpE65eWorm2erQ==}
|
||||
|
||||
'@shikijs/themes@3.21.0':
|
||||
resolution: {integrity: sha512-BAE4cr9EDiZyYzwIHEk7JTBJ9CzlPuM4PchfcA5ao1dWXb25nv6hYsoDiBq2aZK9E3dlt3WB78uI96UESD+8Mw==}
|
||||
|
||||
'@shikijs/transformers@3.21.0':
|
||||
resolution: {integrity: sha512-CZwvCWWIiRRiFk9/JKzdEooakAP8mQDtBOQ1TKiCaS2E1bYtyBCOkUzS8akO34/7ufICQ29oeSfkb3tT5KtrhA==}
|
||||
|
||||
'@shikijs/types@3.20.0':
|
||||
resolution: {integrity: sha512-lhYAATn10nkZcBQ0BlzSbJA3wcmL5MXUUF8d2Zzon6saZDlToKaiRX60n2+ZaHJCmXEcZRWNzn+k9vplr8Jhsw==}
|
||||
|
||||
'@shikijs/types@3.21.0':
|
||||
resolution: {integrity: sha512-zGrWOxZ0/+0ovPY7PvBU2gIS9tmhSUUt30jAcNV0Bq0gb2S98gwfjIs1vxlmH5zM7/4YxLamT6ChlqqAJmPPjA==}
|
||||
|
||||
'@shikijs/vscode-textmate@10.0.2':
|
||||
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
|
||||
|
||||
|
|
@ -6275,9 +6299,6 @@ packages:
|
|||
dezalgo@1.0.4:
|
||||
resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==}
|
||||
|
||||
diff-match-patch@1.0.5:
|
||||
resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==}
|
||||
|
||||
diff-sequences@29.6.3:
|
||||
resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
|
|
@ -6290,6 +6311,10 @@ packages:
|
|||
resolution: {integrity: sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==}
|
||||
engines: {node: '>=0.3.1'}
|
||||
|
||||
diff@8.0.3:
|
||||
resolution: {integrity: sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==}
|
||||
engines: {node: '>=0.3.1'}
|
||||
|
||||
dijkstrajs@1.0.3:
|
||||
resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==}
|
||||
|
||||
|
|
@ -7176,10 +7201,6 @@ packages:
|
|||
headers-polyfill@4.0.3:
|
||||
resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==}
|
||||
|
||||
highlight.js@11.11.1:
|
||||
resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
|
||||
hosted-git-info@2.8.9:
|
||||
resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
|
||||
|
||||
|
|
@ -9819,6 +9840,9 @@ packages:
|
|||
shiki@3.20.0:
|
||||
resolution: {integrity: sha512-kgCOlsnyWb+p0WU+01RjkCH+eBVsjL1jOwUYWv0YDWkM2/A46+LDKVs5yZCUXjJG6bj4ndFoAg5iLIIue6dulg==}
|
||||
|
||||
shiki@3.21.0:
|
||||
resolution: {integrity: sha512-N65B/3bqL/TI2crrXr+4UivctrAGEjmsib5rPMMPpFp1xAx/w03v8WZ9RDDFYteXoEgY7qZ4HGgl5KBIu1153w==}
|
||||
|
||||
side-channel-list@1.0.0:
|
||||
resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
|
@ -10777,15 +10801,6 @@ packages:
|
|||
resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
|
||||
hasBin: true
|
||||
|
||||
v-code-diff@1.13.1:
|
||||
resolution: {integrity: sha512-9LTV1dZhC1oYTntyB94vfumGgsfIX5u0fEDSI2Txx4vCE5sI5LkgeLJRRy2SsTVZmDcV+R73sBr0GpPn0TJxMw==}
|
||||
peerDependencies:
|
||||
'@vue/composition-api': ^1.4.9
|
||||
vue: ^2.6.0 || >=3.0.0
|
||||
peerDependenciesMeta:
|
||||
'@vue/composition-api':
|
||||
optional: true
|
||||
|
||||
v8-to-istanbul@9.3.0:
|
||||
resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==}
|
||||
engines: {node: '>=10.12.0'}
|
||||
|
|
@ -10947,16 +10962,8 @@ packages:
|
|||
vue-component-type-helpers@3.2.1:
|
||||
resolution: {integrity: sha512-gKV7XOkQl4urSuLHNY1tnVQf7wVgtb/mKbRyxSLWGZUY9RK7aDPhBenTjm+i8ZFe0zC2PZeHMPtOZXZfyaFOzQ==}
|
||||
|
||||
vue-demi@0.14.10:
|
||||
resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==}
|
||||
engines: {node: '>=12'}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
'@vue/composition-api': ^1.0.0-rc.1
|
||||
vue: ^3.0.0-0 || ^2.6.0
|
||||
peerDependenciesMeta:
|
||||
'@vue/composition-api':
|
||||
optional: true
|
||||
vue-component-type-helpers@3.2.2:
|
||||
resolution: {integrity: sha512-x8C2nx5XlUNM0WirgfTkHjJGO/ABBxlANZDtHw2HclHtQnn+RFPTnbjMJn8jHZW4TlUam0asHcA14lf1C6Jb+A==}
|
||||
|
||||
vue-docgen-api@4.79.2:
|
||||
resolution: {integrity: sha512-n9ENAcs+40awPZMsas7STqjkZiVlIjxIKgiJr5rSohDP0/JCrD9VtlzNojafsA1MChm/hz2h3PDtUedx3lbgfA==}
|
||||
|
|
@ -14239,30 +14246,66 @@ snapshots:
|
|||
'@types/hast': 3.0.4
|
||||
hast-util-to-html: 9.0.5
|
||||
|
||||
'@shikijs/core@3.21.0':
|
||||
dependencies:
|
||||
'@shikijs/types': 3.21.0
|
||||
'@shikijs/vscode-textmate': 10.0.2
|
||||
'@types/hast': 3.0.4
|
||||
hast-util-to-html: 9.0.5
|
||||
|
||||
'@shikijs/engine-javascript@3.20.0':
|
||||
dependencies:
|
||||
'@shikijs/types': 3.20.0
|
||||
'@shikijs/vscode-textmate': 10.0.2
|
||||
oniguruma-to-es: 4.3.4
|
||||
|
||||
'@shikijs/engine-javascript@3.21.0':
|
||||
dependencies:
|
||||
'@shikijs/types': 3.21.0
|
||||
'@shikijs/vscode-textmate': 10.0.2
|
||||
oniguruma-to-es: 4.3.4
|
||||
|
||||
'@shikijs/engine-oniguruma@3.20.0':
|
||||
dependencies:
|
||||
'@shikijs/types': 3.20.0
|
||||
'@shikijs/vscode-textmate': 10.0.2
|
||||
|
||||
'@shikijs/engine-oniguruma@3.21.0':
|
||||
dependencies:
|
||||
'@shikijs/types': 3.21.0
|
||||
'@shikijs/vscode-textmate': 10.0.2
|
||||
|
||||
'@shikijs/langs@3.20.0':
|
||||
dependencies:
|
||||
'@shikijs/types': 3.20.0
|
||||
|
||||
'@shikijs/langs@3.21.0':
|
||||
dependencies:
|
||||
'@shikijs/types': 3.21.0
|
||||
|
||||
'@shikijs/themes@3.20.0':
|
||||
dependencies:
|
||||
'@shikijs/types': 3.20.0
|
||||
|
||||
'@shikijs/themes@3.21.0':
|
||||
dependencies:
|
||||
'@shikijs/types': 3.21.0
|
||||
|
||||
'@shikijs/transformers@3.21.0':
|
||||
dependencies:
|
||||
'@shikijs/core': 3.21.0
|
||||
'@shikijs/types': 3.21.0
|
||||
|
||||
'@shikijs/types@3.20.0':
|
||||
dependencies:
|
||||
'@shikijs/vscode-textmate': 10.0.2
|
||||
'@types/hast': 3.0.4
|
||||
|
||||
'@shikijs/types@3.21.0':
|
||||
dependencies:
|
||||
'@shikijs/vscode-textmate': 10.0.2
|
||||
'@types/hast': 3.0.4
|
||||
|
||||
'@shikijs/vscode-textmate@10.0.2': {}
|
||||
|
||||
'@sideway/address@4.1.5':
|
||||
|
|
@ -14941,7 +14984,7 @@ snapshots:
|
|||
storybook: 10.1.10(@testing-library/dom@10.4.0)(bufferutil@4.1.0)(prettier@3.7.4)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(utf-8-validate@6.0.6)
|
||||
type-fest: 2.19.0
|
||||
vue: 3.5.26(typescript@5.9.3)
|
||||
vue-component-type-helpers: 3.2.1
|
||||
vue-component-type-helpers: 3.2.2
|
||||
|
||||
'@stylistic/eslint-plugin@5.5.0(eslint@9.39.2)':
|
||||
dependencies:
|
||||
|
|
@ -17386,14 +17429,14 @@ snapshots:
|
|||
asap: 2.0.6
|
||||
wrappy: 1.0.2
|
||||
|
||||
diff-match-patch@1.0.5: {}
|
||||
|
||||
diff-sequences@29.6.3: {}
|
||||
|
||||
diff@5.2.0: {}
|
||||
|
||||
diff@8.0.2: {}
|
||||
|
||||
diff@8.0.3: {}
|
||||
|
||||
dijkstrajs@1.0.3: {}
|
||||
|
||||
dir-glob@3.0.1:
|
||||
|
|
@ -18584,8 +18627,6 @@ snapshots:
|
|||
|
||||
headers-polyfill@4.0.3: {}
|
||||
|
||||
highlight.js@11.11.1: {}
|
||||
|
||||
hosted-git-info@2.8.9: {}
|
||||
|
||||
hosted-git-info@4.1.0:
|
||||
|
|
@ -21764,6 +21805,17 @@ snapshots:
|
|||
'@shikijs/vscode-textmate': 10.0.2
|
||||
'@types/hast': 3.0.4
|
||||
|
||||
shiki@3.21.0:
|
||||
dependencies:
|
||||
'@shikijs/core': 3.21.0
|
||||
'@shikijs/engine-javascript': 3.21.0
|
||||
'@shikijs/engine-oniguruma': 3.21.0
|
||||
'@shikijs/langs': 3.21.0
|
||||
'@shikijs/themes': 3.21.0
|
||||
'@shikijs/types': 3.21.0
|
||||
'@shikijs/vscode-textmate': 10.0.2
|
||||
'@types/hast': 3.0.4
|
||||
|
||||
side-channel-list@1.0.0:
|
||||
dependencies:
|
||||
es-errors: 1.3.0
|
||||
|
|
@ -22710,14 +22762,6 @@ snapshots:
|
|||
|
||||
uuid@9.0.1: {}
|
||||
|
||||
v-code-diff@1.13.1(vue@3.5.26(typescript@5.9.3)):
|
||||
dependencies:
|
||||
diff: 5.2.0
|
||||
diff-match-patch: 1.0.5
|
||||
highlight.js: 11.11.1
|
||||
vue: 3.5.26(typescript@5.9.3)
|
||||
vue-demi: 0.14.10(vue@3.5.26(typescript@5.9.3))
|
||||
|
||||
v8-to-istanbul@9.3.0:
|
||||
dependencies:
|
||||
'@jridgewell/trace-mapping': 0.3.31
|
||||
|
|
@ -22855,9 +22899,7 @@ snapshots:
|
|||
|
||||
vue-component-type-helpers@3.2.1: {}
|
||||
|
||||
vue-demi@0.14.10(vue@3.5.26(typescript@5.9.3)):
|
||||
dependencies:
|
||||
vue: 3.5.26(typescript@5.9.3)
|
||||
vue-component-type-helpers@3.2.2: {}
|
||||
|
||||
vue-docgen-api@4.79.2(vue@3.5.26(typescript@5.9.3)):
|
||||
dependencies:
|
||||
|
|
|
|||
Loading…
Reference in New Issue