Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 75dd860

Browse files
feat: <WIP> create CodeSnippet component
1 parent 1380df7 commit 75dd860

File tree

2 files changed

+43
-2
lines changed

2 files changed

+43
-2
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<script setup>
2+
import { getHighlighter, setCDN } from 'shiki';
3+
import { onMounted } from 'vue';
4+
5+
const props = defineProps({
6+
code: String,
7+
lang: String,
8+
langs: Array,
9+
});
10+
11+
const code = props.code ?? '';
12+
const { lang = 'js', langs = ['javascript'] } = props;
13+
14+
onMounted(() => {
15+
setCDN('https://unpkg.com/shiki/');
16+
// @ts-ignore
17+
getHighlighter({ theme: 'material-palenight', langs: langs }).then(
18+
highlighter => {
19+
const snippet = highlighter.codeToHtml(code, { lang: lang });
20+
// @ts-ignore
21+
document.querySelector('.shiki-code').innerHTML = snippet;
22+
document.querySelector('.code-snippet pre')?.removeAttribute('style');
23+
}
24+
);
25+
});
26+
</script>
27+
28+
<template>
29+
<div class="code-snippet language-js">
30+
<button title="Copy Code" class="copy"></button>
31+
<span class="lang">{{ lang }}</span>
32+
<div class="shiki-code"></div>
33+
</div>
34+
</template>

‎docs/examples/index.md‎

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ aside: false
66
<script setup>
77
import { onMounted } from 'vue';
88
import Example from '../.vitepress/components/Example.vue'
9+
import CodeSnippet from '../.vitepress/components/CodeSnippet.vue'
910
import examples from './examples.json'
1011

1112
import jsCssAnimations from '../../js-css-animations/js-css-animations.js';
@@ -116,6 +117,10 @@ aside: false
116117
return jsCssAnimations;
117118
}
118119

120+
const snippet = `
121+
jsCssAnimations.init.slideDown({maintainSpace: true});
122+
`
123+
119124
</script>
120125

121126
# Examples
@@ -131,7 +136,9 @@ aside: false
131136
@reset-animation="(opts) => {resetAnimation('slide', opts);}"
132137
:fields-list="['duration', 'delay', 'staggerDelay', 'maintainSpace', 'easing', 'dimensionsTransition', 'overflowHidden']">
133138

134-
```js{4}
139+
<CodeSnippet :code="snippet" />
140+
141+
<!-- ```js{4}
135142
jsCssAnimations.init.slideUp({
136143
trigger: '.slide-up--btn',
137144
targetSelector: '.example__slide',
@@ -149,7 +156,7 @@ jsCssAnimations.init.slideRight({
149156
trigger: '.slide-right--btn',
150157
targetSelector: '.example__slide',
151158
});
152-
```
159+
```-->
153160

154161
</Example>
155162

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /