Skip to content

Commit 78b5a68

Browse files
committed
docs: update example
1 parent 5584c3f commit 78b5a68

File tree

4 files changed

+67
-13
lines changed

4 files changed

+67
-13
lines changed

example/src/App.vue

Lines changed: 48 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<script setup lang="ts">
22
import { reactive } from 'vue'
3-
import { useDark, useToggle } from '@vueuse/core'
3+
import { useDark, useToggle, useStorage } from '@vueuse/core'
44
import { nanoid } from 'nanoid'
55
import Demo from './components/Demo.vue'
66
import type { IllestWaveformProps } from '../../src/types/waveform'
@@ -52,6 +52,22 @@ const items = reactive<Props[]>([
5252
url: `${import.meta.env.BASE_URL}audios/loop-9.mp3`,
5353
},
5454
])
55+
56+
const skeleton = useStorage('skeleton', true)
57+
const interact = useStorage('interact', true)
58+
const lazy = useStorage('lazy', true)
59+
60+
const toggleInteract = () => {
61+
interact.value = !interact.value
62+
}
63+
64+
const toggleSkeleton = () => {
65+
skeleton.value = !skeleton.value
66+
}
67+
68+
const toggleLazy = () => {
69+
lazy.value = !lazy.value
70+
}
5571
</script>
5672

5773
<template>
@@ -64,24 +80,50 @@ const items = reactive<Props[]>([
6480
</span>
6581
</h1>
6682

67-
<div class="mb-6">
83+
<div class="mb-8 flex">
6884
<button class="btn" @click="toggleDark()">
69-
<SunIcon v-show="!isDark" />
70-
<MoonIcon v-show="isDark" />
85+
<SunIcon v-show="!isDark" class="w-5" />
86+
<MoonIcon v-show="isDark" class="w-5" />
7187
<div>{{ isDark ? 'dark' : 'light' }}</div>
7288
</button>
89+
90+
<button class="btn" @click="toggleInteract()">
91+
<span :class="{ 'bg-green-500': interact }" />
92+
<div>interact</div>
93+
</button>
94+
95+
<button class="btn" @click="toggleSkeleton()">
96+
<span :class="{ 'bg-green-500': skeleton }" />
97+
<div>skeleton</div>
98+
</button>
99+
100+
<button class="btn" @click="toggleLazy()">
101+
<span :class="{ 'bg-green-500': lazy }" />
102+
<div>lazy</div>
103+
</button>
73104
</div>
74105

75-
<Demo v-for="item in items" :key="item.id" :props="item" />
106+
<Demo
107+
v-for="item in items"
108+
:key="item.id"
109+
:url="item.url"
110+
:interact="interact"
111+
:skeleton="skeleton"
112+
:lazy="lazy"
113+
/>
76114
</section>
77115
</template>
78116

79117
<style scoped lang="scss">
80118
.btn {
81-
@apply flex items-center hover:opacity-80;
119+
@apply flex items-center hover:opacity-80 mx-3;
82120
83121
div {
84122
@apply ml-1 mt-1;
85123
}
124+
125+
span {
126+
@apply w-4 h-4 rounded-full duration-200 transition-[background-color] border-gray-500 dark:border-gray-200 border-[2px];
127+
}
86128
}
87129
</style>

example/src/components/Demo.vue

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
<script setup lang="ts">
2-
import { onMounted, reactive, ref, watchEffect, defineProps } from 'vue'
2+
import {
3+
onMounted,
4+
reactive,
5+
ref,
6+
watchEffect,
7+
defineProps,
8+
computed,
9+
} from 'vue'
310
import type { Ref } from 'vue'
411
import { useDark } from '@vueuse/core'
512
import IllestWaveform from '../../../src/components/IllestWaveform.vue'
@@ -9,12 +16,15 @@ import PlayIcon from './icons/Play.vue'
916
import PauseIcon from './icons/Pause.vue'
1017
import ReplayIcon from './icons/Replay.vue'
1118
12-
const { props } = defineProps(['props'])
13-
1419
const darkMode = useDark()
1520
21+
const props = defineProps(['url', 'interact', 'skeleton', 'lazy'])
22+
1623
const waveOptions = reactive<IllestWaveformProps>({
1724
url: props.url,
25+
interact: computed(() => props.interact),
26+
skeleton: computed(() => props.skeleton),
27+
lazy: computed(() => props.lazy),
1828
})
1929
2030
watchEffect(() => {

src/components/IllestWaveform.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script setup lang="ts">
2-
import { ref, onMounted, watchEffect, onUnmounted } from 'vue'
2+
import { ref, onMounted, watchEffect, onUnmounted, toRefs } from 'vue'
33
import WebAudioController from '../modules/WebAudio/Controller'
44
import Wave from '../modules/Wave/index'
55
import WaveMask from '../modules/Wave/WaveMask'

src/types/waveform.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import type { Ref } from 'vue'
2+
13
export type IllestWaveformProps = {
24
url: string
35
lineWidth?: number
@@ -7,8 +9,8 @@ export type IllestWaveformProps = {
79
cursorWidth?: number
810
cursorColor?: string
911
maskColor?: string
10-
lazy?: boolean
11-
skeleton?: boolean
12+
lazy?: boolean | Ref<boolean>
13+
skeleton?: boolean | Ref<boolean>
1214
skeletonColor?: string
13-
interact?: boolean
15+
interact?: boolean | Ref<boolean>
1416
}

0 commit comments

Comments
 (0)