diff --git a/packages/client/src/components/renote-button.vue b/packages/client/src/components/renote-button.vue index 3bcbe665bf41ef1ce35532d805bc7d3f7ccef187..d267f30403a04bc0257944edad9e8c4a28d2cfea 100644 --- a/packages/client/src/components/renote-button.vue +++ b/packages/client/src/components/renote-button.vue @@ -1,5 +1,6 @@ <template> -<button v-if="canRenote" +<button + v-if="canRenote" ref="buttonRef" class="eddddedb _button canRenote" @click="renote()" @@ -12,8 +13,9 @@ </button> </template> -<script lang="ts"> -import { computed, defineComponent, ref } from 'vue'; +<script lang="ts" setup> +import { computed, ref } from 'vue'; +import * as misskey from 'misskey-js'; import XDetails from '@/components/users-tooltip.vue'; import { pleaseLogin } from '@/scripts/please-login'; import * as os from '@/os'; @@ -21,71 +23,55 @@ import { $i } from '@/account'; import { useTooltip } from '@/scripts/use-tooltip'; import { i18n } from '@/i18n'; -export default defineComponent({ - props: { - count: { - type: Number, - required: true, - }, - note: { - type: Object, - required: true, - }, - }, +const props = defineProps<{ + note: misskey.entities.Note; + count: number; +}>(); - setup(props) { - const buttonRef = ref<HTMLElement>(); +const buttonRef = ref<HTMLElement>(); - const canRenote = computed(() => ['public', 'home'].includes(props.note.visibility) || props.note.userId === $i.id); +const canRenote = computed(() => ['public', 'home'].includes(props.note.visibility) || props.note.userId === $i.id); - useTooltip(buttonRef, async (showing) => { - const renotes = await os.api('notes/renotes', { - noteId: props.note.id, - limit: 11 - }); +useTooltip(buttonRef, async (showing) => { + const renotes = await os.api('notes/renotes', { + noteId: props.note.id, + limit: 11, + }); - const users = renotes.map(x => x.user); + const users = renotes.map(x => x.user); - if (users.length < 1) return; + if (users.length < 1) return; - os.popup(XDetails, { - showing, - users, - count: props.count, - targetElement: buttonRef.value - }, {}, 'closed'); - }); + os.popup(XDetails, { + showing, + users, + count: props.count, + targetElement: buttonRef.value, + }, {}, 'closed'); +}); - const renote = (viaKeyboard = false) => { - pleaseLogin(); - os.popupMenu([{ - text: i18n.ts.renote, - icon: 'fas fa-retweet', - action: () => { - os.api('notes/create', { - renoteId: props.note.id - }); - } - }, { - text: i18n.ts.quote, - icon: 'fas fa-quote-right', - action: () => { - os.post({ - renote: props.note, - }); - } - }], buttonRef.value, { - viaKeyboard +const renote = (viaKeyboard = false) => { + pleaseLogin(); + os.popupMenu([{ + text: i18n.ts.renote, + icon: 'fas fa-retweet', + action: () => { + os.api('notes/create', { + renoteId: props.note.id, }); - }; - - return { - buttonRef, - canRenote, - renote, - }; - }, -}); + }, + }, { + text: i18n.ts.quote, + icon: 'fas fa-quote-right', + action: () => { + os.post({ + renote: props.note, + }); + }, + }], buttonRef.value, { + viaKeyboard, + }); +}; </script> <style lang="scss" scoped> diff --git a/packages/client/src/components/sparkle.vue b/packages/client/src/components/sparkle.vue index b52dbe31c4dee6070ff09040828ec6af946b0a6b..cdeaf9c41738c9c84f51feea3831347fbe4e3f3c 100644 --- a/packages/client/src/components/sparkle.vue +++ b/packages/client/src/components/sparkle.vue @@ -63,63 +63,51 @@ </span> </template> -<script lang="ts"> -import { defineComponent, onMounted, onUnmounted, ref } from 'vue'; -import * as os from '@/os'; +<script lang="ts" setup> +import { onMounted, onUnmounted, ref } from 'vue'; -export default defineComponent({ - setup() { - const particles = ref([]); - const el = ref<HTMLElement>(); - const width = ref(0); - const height = ref(0); - const colors = ['#FF1493', '#00FFFF', '#FFE202', '#FFE202', '#FFE202']; - let stop = false; - let ro: ResizeObserver | undefined; +const particles = ref([]); +const el = ref<HTMLElement>(); +const width = ref(0); +const height = ref(0); +const colors = ['#FF1493', '#00FFFF', '#FFE202', '#FFE202', '#FFE202']; +let stop = false; +let ro: ResizeObserver | undefined; - onMounted(() => { - ro = new ResizeObserver((entries, observer) => { - width.value = el.value?.offsetWidth + 64; - height.value = el.value?.offsetHeight + 64; - }); - ro.observe(el.value); - const add = () => { - if (stop) return; - const x = (Math.random() * (width.value - 64)); - const y = (Math.random() * (height.value - 64)); - const sizeFactor = Math.random(); - const particle = { - id: Math.random().toString(), - x, - y, - size: 0.2 + ((sizeFactor / 10) * 3), - dur: 1000 + (sizeFactor * 1000), - color: colors[Math.floor(Math.random() * colors.length)], - }; - particles.value.push(particle); - window.setTimeout(() => { - particles.value = particles.value.filter(x => x.id !== particle.id); - }, particle.dur - 100); +onMounted(() => { + ro = new ResizeObserver((entries, observer) => { + width.value = el.value?.offsetWidth + 64; + height.value = el.value?.offsetHeight + 64; + }); + ro.observe(el.value); + const add = () => { + if (stop) return; + const x = (Math.random() * (width.value - 64)); + const y = (Math.random() * (height.value - 64)); + const sizeFactor = Math.random(); + const particle = { + id: Math.random().toString(), + x, + y, + size: 0.2 + ((sizeFactor / 10) * 3), + dur: 1000 + (sizeFactor * 1000), + color: colors[Math.floor(Math.random() * colors.length)], + }; + particles.value.push(particle); + window.setTimeout(() => { + particles.value = particles.value.filter(x => x.id !== particle.id); + }, particle.dur - 100); - window.setTimeout(() => { - add(); - }, 500 + (Math.random() * 500)); - }; + window.setTimeout(() => { add(); - }); - - onUnmounted(() => { - if (ro) ro.disconnect(); - stop = true; - }); + }, 500 + (Math.random() * 500)); + }; + add(); +}); - return { - el, - width, - height, - particles, - }; - }, +onUnmounted(() => { + if (ro) ro.disconnect(); + stop = true; }); </script> diff --git a/packages/client/src/components/tab.vue b/packages/client/src/components/tab.vue index c629727358c813f5408b0c07c65a12df3b0576ad..669e9e2e1135066da0e58915e9db1ff4bb8ba174 100644 --- a/packages/client/src/components/tab.vue +++ b/packages/client/src/components/tab.vue @@ -18,13 +18,13 @@ export default defineComponent({ disabled: this.modelValue === option.props.value, onClick: () => { this.$emit('update:modelValue', option.props.value); - } + }, }, option.children), [ - [resolveDirective('click-anime')] + [resolveDirective('click-anime')], ]))), [ - [resolveDirective('size'), { max: [500] }] + [resolveDirective('size'), { max: [500] }], ]); - } + }, }); </script>