Fix issues which are blocking rendering

This commit is contained in:
AkiraFukushima 2022-04-20 00:57:25 +09:00
parent 6f307cd298
commit 85ef5e5f01
No known key found for this signature in database
GPG Key ID: B6E51BAC4DE1A957
35 changed files with 363 additions and 1041 deletions

1
.npmrc Normal file
View File

@ -0,0 +1 @@
@h3poteto:registry=https://npm.pkg.github.com

View File

@ -109,8 +109,7 @@
"vue-popperjs": "^2.3.0",
"vue-resize": "^2.0.0-alpha.1",
"vue-router": "^4.0.14",
"vue-shortkey": "^3.1.7",
"vue-virtual-scroller": "^2.0.0-alpha.1",
"@h3poteto/vue-virtual-scroller": "2.0.0-alpha.1",
"vuex": "^4.0.2",
"vuex-router-sync": "^6.0.0-rc.1"
},

View File

@ -10,7 +10,7 @@
</el-row>
</el-header>
<el-container>
<div v-shortkey="['esc']" @shortkey="close"></div>
<div></div>
<login-form></login-form>
</el-container>
</el-container>

View File

@ -9,7 +9,7 @@
:model="form"
>
<el-form-item :label="$t('login.domain_name_label')" prop="domainName">
<el-input v-model="form.domainName" placeholder="mastodon.social" v-shortkey="['enter']" @shortkey="handleKey"></el-input>
<el-input v-model="form.domainName" placeholder="mastodon.social"></el-input>
</el-form-item>
<p class="proxy-info">
{{ $t('login.proxy_info') }}<router-link to="/preferences/network">{{ $t('login.proxy_here') }}</router-link>

View File

@ -13,7 +13,7 @@
</el-row>
</el-header>
<el-container>
<div v-shortkey="['esc']" @shortkey="close"></div>
<div></div>
<el-aside width="240px" class="menu">
<el-menu
:default-active="activeRoute()"

View File

@ -13,7 +13,7 @@
</el-row>
</el-header>
<el-container>
<div v-shortkey="['esc']" @shortkey="close"></div>
<div></div>
<el-aside width="240px" class="menu">
<el-menu
:default-active="activeRoute()"

View File

@ -5,8 +5,6 @@
:element-loading-text="$t('message.loading')"
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0, 0, 0, 0.8)"
v-shortkey="shortcutEnabled ? { help: ['shift', '?'] } : {}"
@shortkey="handleKey"
>
<side-menu></side-menu>
<div :class="collapse ? 'page-narrow' : 'page'">
@ -39,18 +37,18 @@ export default {
data() {
return {
dropTarget: null,
droppableVisible: false,
droppableVisible: false
}
},
computed: {
...mapState({
loading: (state) => state.TimelineSpace.loading,
collapse: (state) => state.TimelineSpace.SideMenu.collapse,
loading: state => state.TimelineSpace.loading,
collapse: state => state.TimelineSpace.SideMenu.collapse
}),
...mapGetters('TimelineSpace/Modals', ['modalOpened']),
shortcutEnabled: function () {
return !this.modalOpened
},
}
},
async created() {
this.$store.dispatch('TimelineSpace/Contents/SideBar/close')
@ -88,20 +86,17 @@ export default {
await this.clear()
try {
await this.$store.dispatch(
'TimelineSpace/initLoad',
this.$route.params.id
)
await this.$store.dispatch('TimelineSpace/initLoad', this.$route.params.id)
} catch (err) {
if (err instanceof AccountLoadError) {
this.$message({
message: this.$t('message.account_load_error'),
type: 'error',
type: 'error'
})
} else if (err instanceof TimelineFetchError) {
this.$message({
message: this.$t('message.timeline_fetch_error'),
type: 'error',
type: 'error'
})
}
}
@ -112,17 +107,14 @@ export default {
e.preventDefault()
e.stopPropagation()
this.droppableVisible = false
if (
e.dataTransfer.files.item(0) === null ||
e.dataTransfer.files.item(0) === undefined
) {
if (e.dataTransfer.files.item(0) === null || e.dataTransfer.files.item(0) === undefined) {
return false
}
const file = e.dataTransfer.files.item(0)
if (!file.type.includes('image') && !file.type.includes('video')) {
this.$message({
message: this.$t('validation.new_toot.attach_image'),
type: 'error',
type: 'error'
})
return false
}
@ -133,16 +125,16 @@ export default {
.then(() => {
Event.$emit('image-uploaded')
})
.catch((err) => {
.catch(err => {
if (err instanceof NewTootAttachLength) {
this.$message({
message: this.$t('validation.new_toot.attach_length', { max: 4 }),
type: 'error',
type: 'error'
})
} else {
this.$message({
message: this.$t('message.attach_error'),
type: 'error',
type: 'error'
})
}
})
@ -168,8 +160,8 @@ export default {
this.$store.commit('TimelineSpace/Modals/Shortcut/changeModal', true)
break
}
},
},
}
}
}
</script>

View File

@ -1,6 +1,6 @@
<template>
<div id="bookmarks" v-shortkey="shortcutEnabled ? { next: ['j'] } : {}" @shortkey="handleKey">
<div v-shortkey="{ linux: ['ctrl', 'r'], mac: ['meta', 'r'] }" @shortkey="reload()"></div>
<div id="bookmarks">
<div></div>
<DynamicScroller :items="bookmarks" :min-item-size="60" id="scroller" class="scroller" ref="scroller">
<template v-slot="{ item, index, active }">
<DynamicScrollerItem :item="item" :active="active" :size-dependencies="[item.uri]" :data-index="index" :watchData="true">

View File

@ -1,6 +1,6 @@
<template>
<div id="directmessages" v-shortkey="shortcutEnabled ? { next: ['j'] } : {}" @shortkey="handleKey">
<div v-shortkey="{ linux: ['ctrl', 'r'], mac: ['meta', 'r'] }" @shortkey="reload()"></div>
<div id="directmessages">
<div></div>
<DynamicScroller :items="timeline" :min-item-size="86" id="scroller" class="scroller" ref="scroller">
<template v-slot="{ item, index, active }">
<DynamicScrollerItem :item="item" :active="active" :size-dependencies="[item.uri]" :data-index="index" :watchData="true">

View File

@ -1,6 +1,6 @@
<template>
<div id="favourites" v-shortkey="shortcutEnabled ? { next: ['j'] } : {}" @shortkey="handleKey">
<div v-shortkey="{ linux: ['ctrl', 'r'], mac: ['meta', 'r'] }" @shortkey="reload()"></div>
<div id="favourites">
<div></div>
<DynamicScroller :items="favourites" :min-item-size="60" id="scroller" class="scroller" ref="scroller">
<template v-slot="{ item, index, active }">
<DynamicScrollerItem :item="item" :active="active" :size-dependencies="[item.uri]" :data-index="index" :watchData="true">

View File

@ -9,21 +9,10 @@
</el-button>
</div>
<div class="form-item input">
<input
v-model="tag"
:placeholder="$t('hashtag.tag_name')"
class="search-keyword"
v-shortkey.avoid
v-on:keyup.enter="search"
autofocus
/>
<input v-model="tag" :placeholder="$t('hashtag.tag_name')" class="search-keyword" v-on:keyup.enter="search" autofocus />
</div>
<div class="form-item" v-show="tagPage()">
<el-button
type="text"
@click="save"
:title="$t('hashtag.save_tag')"
>
<el-button type="text" @click="save" :title="$t('hashtag.save_tag')">
<font-awesome-icon icon="thumbtack" />
</el-button>
</div>
@ -39,7 +28,7 @@ export default {
name: 'hashtag',
data() {
return {
tag: '',
tag: ''
}
},
mounted() {
@ -52,7 +41,7 @@ export default {
if (route.name === 'tag') {
this.tag = route.params.tag
}
},
}
},
methods: {
id() {
@ -69,8 +58,8 @@ export default {
},
save() {
this.$store.dispatch('TimelineSpace/Contents/Hashtag/saveTag', this.tag)
},
},
}
}
}
</script>

View File

@ -1,6 +1,6 @@
<template>
<div name="tag" class="tag-timeline" v-shortkey="shortcutEnabled ? { next: ['j'] } : {}" @shortkey="handleKey">
<div v-shortkey="{ linux: ['ctrl', 'r'], mac: ['meta', 'r'] }" @shortkey="reload()"></div>
<div name="tag" class="tag-timeline">
<div></div>
<DynamicScroller :items="timeline" :min-item-size="86" id="scroller" class="scroller" ref="scroller">
<template v-slot="{ item, index, active }">
<DynamicScrollerItem :item="item" :active="active" :size-dependencies="[item.uri]" :data-index="index" :watchData="true">

View File

@ -1,6 +1,6 @@
<template>
<div name="list" class="list-timeline" v-shortkey="shortcutEnabled ? { next: ['j'] } : {}" @shortkey="handleKey">
<div v-shortkey="{ linux: ['ctrl', 'r'], mac: ['meta', 'r'] }" @shortkey="reload()"></div>
<div name="list" class="list-timeline">
<div></div>
<DynamicScroller :items="timeline" :min-item-size="86" id="scroller" class="scroller" ref="scroller">
<template v-slot="{ item, index, active }">
<DynamicScrollerItem :item="item" :active="active" :size-dependencies="[item.uri]" :data-index="index" :watchData="true">

View File

@ -1,6 +1,6 @@
<template>
<div id="local" v-shortkey="shortcutEnabled ? { next: ['j'] } : {}" @shortkey="handleKey">
<div v-shortkey="{ linux: ['ctrl', 'r'], mac: ['meta', 'r'] }" @shortkey="reload()"></div>
<div id="local">
<div></div>
<DynamicScroller :items="timeline" :min-item-size="86" id="scroller" class="scroller" ref="scroller">
<template v-slot="{ item, index, active }">
<DynamicScrollerItem :item="item" :active="active" :size-dependencies="[item.uri]" :data-index="index" :watchData="true">

View File

@ -1,6 +1,6 @@
<template>
<div id="mentions" v-shortkey="shortcutEnabled ? { next: ['j'] } : {}" @shortkey="handleKey">
<div v-shortkey="{ linux: ['ctrl', 'r'], mac: ['meta', 'r'] }" @shortkey="reload()"></div>
<div id="mentions">
<div></div>
<DynamicScroller :items="mentions" :min-item-size="86" id="scroller" class="scroller" ref="scroller">
<template v-slot="{ item, index, active }">
<template v-if="item.id === 'loading-card'">

View File

@ -1,6 +1,6 @@
<template>
<div id="notifications" v-shortkey="shortcutEnabled ? { next: ['j'] } : {}" @shortkey="handleKey">
<div v-shortkey="{ linux: ['ctrl', 'r'], mac: ['meta', 'r'] }" @shortkey="reload()"></div>
<div id="notifications">
<div></div>
<DynamicScroller :items="handledNotifications" :min-item-size="20" id="scroller" class="scroller" ref="scroller">
<template v-slot="{ item, index, active }">
<template v-if="item.id === 'loading-card'">

View File

@ -1,6 +1,6 @@
<template>
<div id="public" v-shortkey="shortcutEnabled ? { next: ['j'] } : {}" @shortkey="handleKey">
<div v-shortkey="{ linux: ['ctrl', 'r'], mac: ['meta', 'r'] }" @shortkey="reload()"></div>
<div id="public">
<div></div>
<DynamicScroller :items="timeline" :min-item-size="86" id="scroller" class="scroller" ref="scroller">
<template v-slot="{ item, index, active }">
<DynamicScrollerItem :item="item" :active="active" :size-dependencies="[item.uri]" :data-index="index" :watchData="true">

View File

@ -2,27 +2,10 @@
<div id="search">
<div class="search-header">
<el-form :inline="true">
<el-select
v-model="target"
:placeholder="$t('search.search')"
class="search-target"
>
<el-option
v-for="item in searchTargets"
:key="item.target"
:label="item.label"
:value="item.target"
>
</el-option>
<el-select v-model="target" :placeholder="$t('search.search')" class="search-target">
<el-option v-for="item in searchTargets" :key="item.target" :label="item.label" :value="item.target"> </el-option>
</el-select>
<input
v-model="query"
:placeholder="$t('search.keyword')"
class="search-keyword"
v-shortkey.avoid
v-on:keyup.enter="search"
autofocus
/>
<input v-model="query" :placeholder="$t('search.keyword')" class="search-keyword" v-on:keyup.enter="search" autofocus />
<div class="clearfix"></div>
</el-form>
</div>
@ -45,7 +28,7 @@ export default {
data() {
return {
target: 'account',
query: '',
query: ''
}
},
computed: {
@ -54,64 +37,52 @@ export default {
return [
{
target: 'account',
label: this.$t('search.account'),
label: this.$t('search.account')
},
{
target: 'tag',
label: this.$t('search.tag'),
label: this.$t('search.tag')
},
{
target: 'toot',
label: this.$t('search.toot'),
},
label: this.$t('search.toot')
}
]
},
},
}
}
},
methods: {
search() {
switch (this.target) {
case 'account':
this.$store
.dispatch(
'TimelineSpace/Contents/Search/Account/search',
this.query
)
.catch(() => {
this.$message({
message: this.$t('message.search_error'),
type: 'error',
})
this.$store.dispatch('TimelineSpace/Contents/Search/Account/search', this.query).catch(() => {
this.$message({
message: this.$t('message.search_error'),
type: 'error'
})
})
break
case 'tag':
this.$store
.dispatch(
'TimelineSpace/Contents/Search/Tag/search',
`#${this.query}`
)
.catch(() => {
this.$message({
message: this.$t('message.search_error'),
type: 'error',
})
this.$store.dispatch('TimelineSpace/Contents/Search/Tag/search', `#${this.query}`).catch(() => {
this.$message({
message: this.$t('message.search_error'),
type: 'error'
})
})
break
case 'toot':
this.$store
.dispatch('TimelineSpace/Contents/Search/Toots/search', this.query)
.catch(() => {
this.$message({
message: this.$t('message.search_error'),
type: 'error',
})
this.$store.dispatch('TimelineSpace/Contents/Search/Toots/search', this.query).catch(() => {
this.$message({
message: this.$t('message.search_error'),
type: 'error'
})
})
break
default:
break
}
},
},
}
}
}
</script>

View File

@ -1,5 +1,5 @@
<template>
<div class="side-bar" v-if="openSideBar" v-shortkey="shortcutEnabled ? { close: ['esc'] } : {}" @shortkey="handleKey">
<div class="side-bar" v-if="openSideBar">
<div class="header">
<font-awesome-icon icon="spinner" />
<font-awesome-icon icon="rotate" />

View File

@ -2,7 +2,7 @@
<el-dialog :title="$t('modals.add_list_member.title')" v-model="addListMemberModal" width="400px" class="add-member">
<div class="search-account" :element-loading-background="loadingBackground">
<el-form :inline="true">
<input v-model="name" placeholder="Account name" class="account-name" v-shortkey="['enter']" @shortkey="search" autofocus />
<input v-model="name" placeholder="Account name" class="account-name" autofocus />
<el-button type="text" class="search" @click="search">
<font-awesome-icon icon="magnifying-glass" />
</el-button>

View File

@ -1,7 +1,7 @@
<template>
<transition name="image-viewer">
<div id="image" v-show="modalOpen" @click="close" :aria-hidden="!modalOpen" aria-modal="true" role="dialog">
<div class="image-wrapper" v-shortkey="modalOpen ? { close: ['esc'] } : {}" @shortkey="closeHandle">
<div class="image-wrapper">
<div class="image-header">
<el-button type="text" @click="close" class="close-button">
<font-awesome-icon icon="xmark" />
@ -9,13 +9,11 @@
</div>
<div class="image-content" role="presentation">
<span class="button-area"
><el-button type="text" v-show="showLeft" v-shortkey="['arrowleft']" @shortkey="decrementIndex()">
<font-awesome-icon icon="arrow-left" /> </el-button
><el-button type="text"> <font-awesome-icon icon="arrow-left" /> </el-button
></span>
<Media :src="imageURL" :type="imageType"></Media>
<span class="button-area"
><el-button type="text" v-show="showRight" v-shortkey="['arrowright']" @shortkey="incrementIndex()">
<font-awesome-icon icon="arrow-right" /> </el-button
><el-button type="text"> <font-awesome-icon icon="arrow-right" /> </el-button
></span>
</div>
</div>

View File

@ -2,14 +2,7 @@
<el-dialog v-model="jumpModal" width="440px" class="jump-modal">
<el-form class="jump-form" v-on:submit.prevent="jump">
<div class="channel">
<input
type="text"
v-model="channel"
:placeholder="$t('modals.jump.jump_to')"
ref="channel"
v-shortkey="shortcutEnabled ? { next: ['arrowdown'], prev: ['arrowup'], select: ['enter'] } : {}"
@shortkey="handleKey"
/>
<input type="text" v-model="channel" :placeholder="$t('modals.jump.jump_to')" ref="channel" />
<ul class="channel-list">
<li
v-for="c in filterdChannel"

View File

@ -12,7 +12,7 @@
<Quote :message="quoteToMessage" :displayNameStyle="displayNameStyle" v-if="quoteToMessage !== null" ref="quote"></Quote>
<div class="spoiler" v-if="showContentWarning" ref="spoiler">
<div class="el-input">
<input type="text" class="el-input__inner" :placeholder="$t('modals.new_toot.cw')" v-model="spoiler" v-shortkey.avoid />
<input type="text" class="el-input__inner" :placeholder="$t('modals.new_toot.cw')" v-model="spoiler" />
</div>
</div>
<Status
@ -45,7 +45,6 @@
:placeholder="$t('modals.new_toot.description')"
:value="mediaDescriptions[media.id]"
@input="updateDescription(media.id, $event.target.value)"
v-shortkey.avoid
role="textbox"
contenteditable="true"
aria-multiline="true"

View File

@ -3,22 +3,6 @@
<textarea
v-model="status"
ref="status"
v-shortkey="
openSuggest
? {
up: ['arrowup'],
down: ['arrowdown'],
enter: ['enter'],
esc: ['esc']
}
: {
linux: ['ctrl', 'enter'],
mac: ['meta', 'enter'],
left: ['arrowleft'],
right: ['arrowright']
}
"
@shortkey="handleKey"
@paste="onPaste"
v-on:input="startSuggest"
:placeholder="$t('modals.new_toot.status')"
@ -35,7 +19,6 @@
v-for="(item, index) in filteredSuggestion"
:key="index"
@click="insertItem(item)"
@shortkey="insertItem(item)"
@mouseover="highlightedIndex = index"
:class="{ highlighted: highlightedIndex === index }"
>

View File

@ -14,11 +14,13 @@
<span class="el-dropdown-link">
<font-awesome-icon icon="arrow-up" class="el-icon--right" />
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="show">{{ $t('side_menu.show_profile') }}</el-dropdown-item>
<el-dropdown-item command="edit">{{ $t('side_menu.edit_profile') }}</el-dropdown-item>
<el-dropdown-item command="settings">{{ $t('side_menu.settings') }}</el-dropdown-item>
</el-dropdown-menu>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item command="show">{{ $t('side_menu.show_profile') }}</el-dropdown-item>
<el-dropdown-item command="edit">{{ $t('side_menu.edit_profile') }}</el-dropdown-item>
<el-dropdown-item command="settings">{{ $t('side_menu.settings') }}</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</div>
</div>
@ -184,7 +186,7 @@
<span>{{ $t('side_menu.hashtag') }}</span>
</div>
</el-menu-item>
<template v-if="enabledTemplates.tag">
<template v-if="enabledTimelines.tag">
<template v-for="tag in tags" :key="tag.tagName">
<el-menu-item
:index="`/${id()}/hashtag/${tag.tagName}`"

View File

@ -1,25 +1,5 @@
<template>
<div
class="status"
tabIndex="0"
v-shortkey="
shortcutEnabled
? {
next: ['j'],
prev: ['k'],
right: ['l'],
left: ['h'],
open: ['o'],
profile: ['p'],
}
: {}
"
@shortkey="handleStatusControl"
ref="status"
@click="$emit('select')"
role="article"
aria-label="favourited toot"
>
<div class="status" tabIndex="0" ref="status" @click="$emit('select')" role="article" aria-label="favourited toot">
<div v-show="filtered(message)" class="filtered">Filtered</div>
<div v-show="!filtered(message)" class="favourite">
<div class="action">
@ -32,34 +12,25 @@
v-html="
$t('notification.favourite.body', {
username: username(message.account),
interpolation: { escapeValue: false },
interpolation: { escapeValue: false }
})
"
></bdi>
</span>
</div>
<div class="action-icon" role="presentation">
<FailoverImg
:src="message.account.avatar"
:alt="`Avatar of ${message.account.username}`"
/>
<FailoverImg :src="message.account.avatar" :alt="`Avatar of ${message.account.username}`" />
</div>
</div>
<div class="clearfix"></div>
<div class="target" v-on:dblclick="openDetail(message.status)">
<div class="icon" @click="openUser(message.status.account)">
<FailoverImg
:src="message.status.account.avatar"
:alt="`Avatar of ${message.status.account.username}`"
role="presentation"
/>
<FailoverImg :src="message.status.account.avatar" :alt="`Avatar of ${message.status.account.username}`" role="presentation" />
</div>
<div class="detail">
<div class="toot-header">
<div class="user" @click="openUser(message.status.account)">
<span class="display-name"
><bdi v-html="username(message.status.account)"></bdi
></span>
<span class="display-name"><bdi v-html="username(message.status.account)"></bdi></span>
</div>
<div class="timestamp">
{{ parseDatetime(message.status.created_at) }}
@ -79,14 +50,7 @@
>
{{ $t('cards.toot.show_more') }}
</el-button>
<el-button
v-else
plain
type="primary"
size="medium"
class="spoil-button"
@click="showContent = false"
>
<el-button v-else plain type="primary" size="medium" class="spoil-button" @click="showContent = false">
{{ $t('cards.toot.hide') }}
</el-button>
</div>
@ -99,9 +63,7 @@
</div>
<div class="attachments">
<el-button
v-show="
sensitive(message.status) && !isShowAttachments(message.status)
"
v-show="sensitive(message.status) && !isShowAttachments(message.status)"
class="show-sensitive"
type="info"
@click="showAttachments = true"
@ -110,9 +72,7 @@
</el-button>
<div v-show="isShowAttachments(message.status)">
<el-button
v-show="
sensitive(message.status) && isShowAttachments(message.status)
"
v-show="sensitive(message.status) && isShowAttachments(message.status)"
class="hide-sensitive"
type="text"
@click="showAttachments = false"
@ -120,28 +80,10 @@
>
<font-awesome-icon icon="eye" class="hide" />
</el-button>
<div
class="media"
v-bind:key="media.preview_url"
v-for="media in mediaAttachments(message.status)"
>
<FailoverImg
:src="media.preview_url"
:title="media.description"
:readExif="true"
/>
<el-tag
class="media-label"
size="mini"
v-if="media.type == 'gifv'"
>GIF</el-tag
>
<el-tag
class="media-label"
size="mini"
v-else-if="media.type == 'video'"
>VIDEO</el-tag
>
<div class="media" v-bind:key="media.preview_url" v-for="media in mediaAttachments(message.status)">
<FailoverImg :src="media.preview_url" :title="media.description" :readExif="true" />
<el-tag class="media-label" size="mini" v-if="media.type == 'gifv'">GIF</el-tag>
<el-tag class="media-label" size="mini" v-else-if="media.type == 'video'">VIDEO</el-tag>
</div>
</div>
<div class="clearfix"></div>
@ -175,42 +117,42 @@ export default {
name: 'favourite',
components: {
FailoverImg,
LinkPreview,
LinkPreview
},
props: {
message: {
type: Object,
default: {},
default: {}
},
filters: {
type: Array,
default: [],
default: []
},
focused: {
type: Boolean,
default: false,
default: false
},
overlaid: {
type: Boolean,
default: false,
},
default: false
}
},
data() {
return {
showContent: false,
showAttachments: false,
showAttachments: false
}
},
computed: {
...mapState('App', {
displayNameStyle: (state) => state.displayNameStyle,
timeFormat: (state) => state.timeFormat,
language: (state) => state.language,
hideAllAttachments: (state) => state.hideAllAttachments,
displayNameStyle: state => state.displayNameStyle,
timeFormat: state => state.timeFormat,
language: state => state.language,
hideAllAttachments: state => state.hideAllAttachments
}),
shortcutEnabled: function () {
return this.focused && !this.overlaid
},
}
},
mounted() {
if (this.focused) {
@ -228,7 +170,7 @@ export default {
this.$refs.status.blur()
})
}
},
}
},
methods: {
username(account) {
@ -256,31 +198,17 @@ export default {
}
const parsedAccount = findAccount(e.target, 'favourite')
if (parsedAccount !== null) {
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
true
)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', true)
this.$store
.dispatch(
'TimelineSpace/Contents/SideBar/AccountProfile/searchAccount',
parsedAccount
)
.then((account) => {
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/openAccountComponent'
)
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/AccountProfile/changeAccount',
account
)
.dispatch('TimelineSpace/Contents/SideBar/AccountProfile/searchAccount', parsedAccount)
.then(account => {
this.$store.dispatch('TimelineSpace/Contents/SideBar/openAccountComponent')
this.$store.dispatch('TimelineSpace/Contents/SideBar/AccountProfile/changeAccount', account)
})
.catch((err) => {
.catch(err => {
console.error(err)
this.openLink(e)
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
false
)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', false)
})
return parsedAccount.acct
}
@ -293,28 +221,14 @@ export default {
}
},
openUser(account) {
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/openAccountComponent'
)
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/AccountProfile/changeAccount',
account
)
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
true
)
this.$store.dispatch('TimelineSpace/Contents/SideBar/openAccountComponent')
this.$store.dispatch('TimelineSpace/Contents/SideBar/AccountProfile/changeAccount', account)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', true)
},
openDetail(message) {
this.$store.dispatch('TimelineSpace/Contents/SideBar/openTootComponent')
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/TootDetail/changeToot',
message
)
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
true
)
this.$store.dispatch('TimelineSpace/Contents/SideBar/TootDetail/changeToot', message)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', true)
},
mediaAttachments(message) {
return message.media_attachments
@ -329,10 +243,7 @@ export default {
return !this.spoilered(message) || this.showContent
},
sensitive(message) {
return (
(this.hideAllAttachments || message.sensitive) &&
this.mediaAttachments(message).length > 0
)
return (this.hideAllAttachments || message.sensitive) && this.mediaAttachments(message).length > 0
},
isShowAttachments(message) {
return !this.sensitive(message) || this.showAttachments
@ -364,8 +275,8 @@ export default {
this.openUser(this.message.account)
break
}
},
},
}
}
}
</script>

View File

@ -1,18 +1,5 @@
<template>
<div
class="relationship"
tabIndex="0"
v-shortkey="
shortcutEnabled
? { next: ['j'], prev: ['k'], right: ['l'], profile: ['p'] }
: {}
"
@shortkey="handleStatusControl"
ref="status"
@click="$emit('select')"
role="article"
aria-label="follow event"
>
<div class="relationship" tabIndex="0" ref="status" @click="$emit('select')" role="article" aria-label="follow event">
<div class="follow">
<div class="action">
<div class="action-mark">
@ -24,7 +11,7 @@
v-html="
$t('notification.follow.body', {
username: username(message.account),
interpolation: { escapeValue: false },
interpolation: { escapeValue: false }
})
"
></bdi>
@ -47,26 +34,26 @@ import emojify from '~/src/renderer/utils/emojify'
export default {
name: 'follow',
components: {
FailoverImg,
FailoverImg
},
props: {
message: {
type: Object,
default: {},
default: {}
},
focused: {
type: Boolean,
default: false,
default: false
},
overlaid: {
type: Boolean,
default: false,
},
default: false
}
},
computed: {
shortcutEnabled: function () {
return this.focused && !this.overlaid
},
}
},
mounted() {
if (this.focused) {
@ -84,7 +71,7 @@ export default {
this.$refs.status.blur()
})
}
},
}
},
methods: {
username(account) {
@ -95,17 +82,9 @@ export default {
}
},
openUser(account) {
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/openAccountComponent'
)
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/AccountProfile/changeAccount',
account
)
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
true
)
this.$store.dispatch('TimelineSpace/Contents/SideBar/openAccountComponent')
this.$store.dispatch('TimelineSpace/Contents/SideBar/AccountProfile/changeAccount', account)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', true)
},
handleStatusControl(event) {
switch (event.srcKey) {
@ -122,8 +101,8 @@ export default {
this.openUser(this.message.account)
break
}
},
},
}
}
}
</script>

View File

@ -1,18 +1,5 @@
<template>
<div
class="relationship"
tabIndex="0"
v-shortkey="
shortcutEnabled
? { next: ['j'], prev: ['k'], right: ['l'], profile: ['p'] }
: {}
"
@shortkey="handleStatusControl"
ref="status"
@click="$emit('select')"
role="article"
aria-label="follow event"
>
<div class="relationship" tabIndex="0" ref="status" @click="$emit('select')" role="article" aria-label="follow event">
<div class="follow-request">
<div class="action">
<div class="action-mark">
@ -24,7 +11,7 @@
v-html="
$t('notification.follow_request.body', {
username: username(message.account),
interpolation: { escapeValue: false },
interpolation: { escapeValue: false }
})
"
></bdi>
@ -47,26 +34,26 @@ import emojify from '~/src/renderer/utils/emojify'
export default {
name: 'follow-request',
components: {
FailoverImg,
FailoverImg
},
props: {
message: {
type: Object,
default: {},
default: {}
},
focused: {
type: Boolean,
default: false,
default: false
},
overlaid: {
type: Boolean,
default: false,
},
default: false
}
},
computed: {
shortcutEnabled: function () {
return this.focused && !this.overlaid
},
}
},
mounted() {
if (this.focused) {
@ -84,7 +71,7 @@ export default {
this.$refs.status.blur()
})
}
},
}
},
methods: {
username(account) {
@ -95,17 +82,9 @@ export default {
}
},
openUser(account) {
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/openAccountComponent'
)
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/AccountProfile/changeAccount',
account
)
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
true
)
this.$store.dispatch('TimelineSpace/Contents/SideBar/openAccountComponent')
this.$store.dispatch('TimelineSpace/Contents/SideBar/AccountProfile/changeAccount', account)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', true)
},
handleStatusControl(event) {
switch (event.srcKey) {
@ -122,8 +101,8 @@ export default {
this.openUser(this.message.account)
break
}
},
},
}
}
}
</script>

View File

@ -1,25 +1,5 @@
<template>
<div
class="status"
tabIndex="0"
v-shortkey="
shortcutEnabled
? {
next: ['j'],
prev: ['k'],
right: ['l'],
left: ['h'],
open: ['o'],
profile: ['p'],
}
: {}
"
@shortkey="handleStatusControl"
ref="status"
@click="$emit('select')"
role="article"
aria-label="poll expired"
>
<div class="status" tabIndex="0" ref="status" @click="$emit('select')" role="article" aria-label="poll expired">
<div v-show="filtered(message)" class="filtered">Filtered</div>
<div v-show="!filtered(message)" class="poll-expired">
<div class="action">
@ -32,34 +12,25 @@
v-html="
$t('notification.poll_expired.body', {
username: username(message.account),
interpolation: { escapeValue: false },
interpolation: { escapeValue: false }
})
"
></bdi>
</span>
</div>
<div class="action-icon" role="presentation">
<FailoverImg
:src="message.account.avatar"
:alt="`Avatar of ${message.account.username}`"
/>
<FailoverImg :src="message.account.avatar" :alt="`Avatar of ${message.account.username}`" />
</div>
</div>
<div class="clearfix"></div>
<div class="target" v-on:dblclick="openDetail(message.status)">
<div class="icon" @click="openUser(message.status.account)">
<FailoverImg
:src="message.status.account.avatar"
:alt="`Avatar of ${message.status.account.username}`"
role="presentation"
/>
<FailoverImg :src="message.status.account.avatar" :alt="`Avatar of ${message.status.account.username}`" role="presentation" />
</div>
<div class="detail">
<div class="toot-header">
<div class="user" @click="openUser(message.status.account)">
<span class="display-name"
><bdi v-html="username(message.status.account)"></bdi
></span>
<span class="display-name"><bdi v-html="username(message.status.account)"></bdi></span>
</div>
<div class="timestamp">
{{ parseDatetime(message.status.created_at) }}
@ -79,14 +50,7 @@
>
{{ $t('cards.toot.show_more') }}
</el-button>
<el-button
v-else
plain
type="primary"
size="medium"
class="spoil-button"
@click="showContent = false"
>
<el-button v-else plain type="primary" size="medium" class="spoil-button" @click="showContent = false">
{{ $t('cards.toot.hide') }}
</el-button>
</div>
@ -99,9 +63,7 @@
</div>
<div class="attachments">
<el-button
v-show="
sensitive(message.status) && !isShowAttachments(message.status)
"
v-show="sensitive(message.status) && !isShowAttachments(message.status)"
class="show-sensitive"
type="info"
@click="showAttachments = true"
@ -110,9 +72,7 @@
</el-button>
<div v-show="isShowAttachments(message.status)">
<el-button
v-show="
sensitive(message.status) && isShowAttachments(message.status)
"
v-show="sensitive(message.status) && isShowAttachments(message.status)"
class="hide-sensitive"
type="text"
@click="showAttachments = false"
@ -120,28 +80,10 @@
>
<font-awesome-icon icon="eye" class="hide" />
</el-button>
<div
class="media"
v-bind:key="media.preview_url"
v-for="media in mediaAttachments(message.status)"
>
<FailoverImg
:src="media.preview_url"
:title="media.description"
:readExif="true"
/>
<el-tag
class="media-label"
size="mini"
v-if="media.type == 'gifv'"
>GIF</el-tag
>
<el-tag
class="media-label"
size="mini"
v-else-if="media.type == 'video'"
>VIDEO</el-tag
>
<div class="media" v-bind:key="media.preview_url" v-for="media in mediaAttachments(message.status)">
<FailoverImg :src="media.preview_url" :title="media.description" :readExif="true" />
<el-tag class="media-label" size="mini" v-if="media.type == 'gifv'">GIF</el-tag>
<el-tag class="media-label" size="mini" v-else-if="media.type == 'video'">VIDEO</el-tag>
</div>
</div>
<div class="clearfix"></div>
@ -175,42 +117,42 @@ export default {
name: 'poll-expired',
components: {
FailoverImg,
LinkPreview,
LinkPreview
},
props: {
message: {
type: Object,
default: {},
default: {}
},
filters: {
type: Array,
default: [],
default: []
},
focused: {
type: Boolean,
default: false,
default: false
},
overlaid: {
type: Boolean,
default: false,
},
default: false
}
},
data() {
return {
showContent: false,
showAttachments: false,
showAttachments: false
}
},
computed: {
...mapState('App', {
displayNameStyle: (state) => state.displayNameStyle,
timeFormat: (state) => state.timeFormat,
language: (state) => state.language,
hideAllAttachments: (state) => state.hideAllAttachments,
displayNameStyle: state => state.displayNameStyle,
timeFormat: state => state.timeFormat,
language: state => state.language,
hideAllAttachments: state => state.hideAllAttachments
}),
shortcutEnabled: function () {
return this.focused && !this.overlaid
},
}
},
mounted() {
if (this.focused) {
@ -228,7 +170,7 @@ export default {
this.$refs.status.blur()
})
}
},
}
},
methods: {
username(account) {
@ -256,31 +198,17 @@ export default {
}
const parsedAccount = findAccount(e.target, 'poll-expired')
if (parsedAccount !== null) {
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
true
)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', true)
this.$store
.dispatch(
'TimelineSpace/Contents/SideBar/AccountProfile/searchAccount',
parsedAccount
)
.then((account) => {
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/openAccountComponent'
)
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/AccountProfile/changeAccount',
account
)
.dispatch('TimelineSpace/Contents/SideBar/AccountProfile/searchAccount', parsedAccount)
.then(account => {
this.$store.dispatch('TimelineSpace/Contents/SideBar/openAccountComponent')
this.$store.dispatch('TimelineSpace/Contents/SideBar/AccountProfile/changeAccount', account)
})
.catch((err) => {
.catch(err => {
console.error(err)
this.openLink(e)
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
false
)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', false)
})
return parsedAccount.acct
}
@ -293,28 +221,14 @@ export default {
}
},
openUser(account) {
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/openAccountComponent'
)
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/AccountProfile/changeAccount',
account
)
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
true
)
this.$store.dispatch('TimelineSpace/Contents/SideBar/openAccountComponent')
this.$store.dispatch('TimelineSpace/Contents/SideBar/AccountProfile/changeAccount', account)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', true)
},
openDetail(message) {
this.$store.dispatch('TimelineSpace/Contents/SideBar/openTootComponent')
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/TootDetail/changeToot',
message
)
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
true
)
this.$store.dispatch('TimelineSpace/Contents/SideBar/TootDetail/changeToot', message)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', true)
},
mediaAttachments(message) {
return message.media_attachments
@ -329,10 +243,7 @@ export default {
return !this.spoilered(message) || this.showContent
},
sensitive(message) {
return (
(this.hideAllAttachments || message.sensitive) &&
this.mediaAttachments(message).length > 0
)
return (this.hideAllAttachments || message.sensitive) && this.mediaAttachments(message).length > 0
},
isShowAttachments(message) {
return !this.sensitive(message) || this.showAttachments
@ -364,8 +275,8 @@ export default {
this.openUser(this.message.account)
break
}
},
},
}
}
}
</script>

View File

@ -1,25 +1,5 @@
<template>
<div
class="status"
tabIndex="0"
v-shortkey="
shortcutEnabled
? {
next: ['j'],
prev: ['k'],
right: ['l'],
left: ['h'],
open: ['o'],
profile: ['p'],
}
: {}
"
@shortkey="handleStatusControl"
ref="status"
@click="$emit('select')"
role="article"
aria-label="poll vote"
>
<div class="status" tabIndex="0" ref="status" @click="$emit('select')" role="article" aria-label="poll vote">
<div v-show="filtered(message)" class="filtered">Filtered</div>
<div v-show="!filtered(message)" class="poll-vote">
<div class="action">
@ -32,34 +12,25 @@
v-html="
$t('notification.poll_vote.body', {
username: username(message.account),
interpolation: { escapeValue: false },
interpolation: { escapeValue: false }
})
"
></bdi>
</span>
</div>
<div class="action-icon" role="presentation">
<FailoverImg
:src="message.account.avatar"
:alt="`Avatar of ${message.account.username}`"
/>
<FailoverImg :src="message.account.avatar" :alt="`Avatar of ${message.account.username}`" />
</div>
</div>
<div class="clearfix"></div>
<div class="target" v-on:dblclick="openDetail(message.status)">
<div class="icon" @click="openUser(message.status.account)">
<FailoverImg
:src="message.status.account.avatar"
:alt="`Avatar of ${message.status.account.username}`"
role="presentation"
/>
<FailoverImg :src="message.status.account.avatar" :alt="`Avatar of ${message.status.account.username}`" role="presentation" />
</div>
<div class="detail">
<div class="toot-header">
<div class="user" @click="openUser(message.status.account)">
<span class="display-name"
><bdi v-html="username(message.status.account)"></bdi
></span>
<span class="display-name"><bdi v-html="username(message.status.account)"></bdi></span>
</div>
<div class="timestamp">
{{ parseDatetime(message.status.created_at) }}
@ -79,14 +50,7 @@
>
{{ $t('cards.toot.show_more') }}
</el-button>
<el-button
v-else
plain
type="primary"
size="medium"
class="spoil-button"
@click="showContent = false"
>
<el-button v-else plain type="primary" size="medium" class="spoil-button" @click="showContent = false">
{{ $t('cards.toot.hide') }}
</el-button>
</div>
@ -99,9 +63,7 @@
</div>
<div class="attachments">
<el-button
v-show="
sensitive(message.status) && !isShowAttachments(message.status)
"
v-show="sensitive(message.status) && !isShowAttachments(message.status)"
class="show-sensitive"
type="info"
@click="showAttachments = true"
@ -110,9 +72,7 @@
</el-button>
<div v-show="isShowAttachments(message.status)">
<el-button
v-show="
sensitive(message.status) && isShowAttachments(message.status)
"
v-show="sensitive(message.status) && isShowAttachments(message.status)"
class="hide-sensitive"
type="text"
@click="showAttachments = false"
@ -120,28 +80,10 @@
>
<font-awesome-icon icon="eye" class="hide" />
</el-button>
<div
class="media"
v-bind:key="media.preview_url"
v-for="media in mediaAttachments(message.status)"
>
<FailoverImg
:src="media.preview_url"
:title="media.description"
:readExif="true"
/>
<el-tag
class="media-label"
size="mini"
v-if="media.type == 'gifv'"
>GIF</el-tag
>
<el-tag
class="media-label"
size="mini"
v-else-if="media.type == 'video'"
>VIDEO</el-tag
>
<div class="media" v-bind:key="media.preview_url" v-for="media in mediaAttachments(message.status)">
<FailoverImg :src="media.preview_url" :title="media.description" :readExif="true" />
<el-tag class="media-label" size="mini" v-if="media.type == 'gifv'">GIF</el-tag>
<el-tag class="media-label" size="mini" v-else-if="media.type == 'video'">VIDEO</el-tag>
</div>
</div>
<div class="clearfix"></div>
@ -175,42 +117,42 @@ export default {
name: 'poll-vote',
components: {
FailoverImg,
LinkPreview,
LinkPreview
},
props: {
message: {
type: Object,
default: {},
default: {}
},
filters: {
type: Array,
default: [],
default: []
},
focused: {
type: Boolean,
default: false,
default: false
},
overlaid: {
type: Boolean,
default: false,
},
default: false
}
},
data() {
return {
showContent: false,
showAttachments: false,
showAttachments: false
}
},
computed: {
...mapState('App', {
displayNameStyle: (state) => state.displayNameStyle,
timeFormat: (state) => state.timeFormat,
language: (state) => state.language,
hideAllAttachments: (state) => state.hideAllAttachments,
displayNameStyle: state => state.displayNameStyle,
timeFormat: state => state.timeFormat,
language: state => state.language,
hideAllAttachments: state => state.hideAllAttachments
}),
shortcutEnabled: function () {
return this.focused && !this.overlaid
},
}
},
mounted() {
if (this.focused) {
@ -228,7 +170,7 @@ export default {
this.$refs.status.blur()
})
}
},
}
},
methods: {
username(account) {
@ -256,31 +198,17 @@ export default {
}
const parsedAccount = findAccount(e.target, 'poll-vote')
if (parsedAccount !== null) {
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
true
)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', true)
this.$store
.dispatch(
'TimelineSpace/Contents/SideBar/AccountProfile/searchAccount',
parsedAccount
)
.then((account) => {
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/openAccountComponent'
)
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/AccountProfile/changeAccount',
account
)
.dispatch('TimelineSpace/Contents/SideBar/AccountProfile/searchAccount', parsedAccount)
.then(account => {
this.$store.dispatch('TimelineSpace/Contents/SideBar/openAccountComponent')
this.$store.dispatch('TimelineSpace/Contents/SideBar/AccountProfile/changeAccount', account)
})
.catch((err) => {
.catch(err => {
console.error(err)
this.openLink(e)
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
false
)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', false)
})
return parsedAccount.acct
}
@ -293,28 +221,14 @@ export default {
}
},
openUser(account) {
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/openAccountComponent'
)
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/AccountProfile/changeAccount',
account
)
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
true
)
this.$store.dispatch('TimelineSpace/Contents/SideBar/openAccountComponent')
this.$store.dispatch('TimelineSpace/Contents/SideBar/AccountProfile/changeAccount', account)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', true)
},
openDetail(message) {
this.$store.dispatch('TimelineSpace/Contents/SideBar/openTootComponent')
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/TootDetail/changeToot',
message
)
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
true
)
this.$store.dispatch('TimelineSpace/Contents/SideBar/TootDetail/changeToot', message)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', true)
},
mediaAttachments(message) {
return message.media_attachments
@ -329,10 +243,7 @@ export default {
return !this.spoilered(message) || this.showContent
},
sensitive(message) {
return (
(this.hideAllAttachments || message.sensitive) &&
this.mediaAttachments(message).length > 0
)
return (this.hideAllAttachments || message.sensitive) && this.mediaAttachments(message).length > 0
},
isShowAttachments(message) {
return !this.sensitive(message) || this.showAttachments
@ -364,8 +275,8 @@ export default {
this.openUser(this.message.account)
break
}
},
},
}
}
}
</script>

View File

@ -1,25 +1,5 @@
<template>
<div
class="status"
tabIndex="0"
v-shortkey="
shortcutEnabled
? {
next: ['j'],
prev: ['k'],
right: ['l'],
left: ['h'],
open: ['o'],
profile: ['p'],
}
: {}
"
@shortkey="handleStatusControl"
ref="status"
@click="$emit('select')"
role="article"
aria-label="quoted toot"
>
<div class="status" tabIndex="0" ref="status" @click="$emit('select')" role="article" aria-label="quoted toot">
<div v-show="filtered(message)" class="filtered">Filtered</div>
<div v-show="!filtered(message)" class="quoted">
<div class="action">
@ -32,30 +12,20 @@
v-html="
$t('notification.quote.body', {
username: username(message.account),
interpolation: { escapeValue: false },
interpolation: { escapeValue: false }
})
"
></bdi>
</span>
</div>
<div class="action-icon" role="presentation">
<FailoverImg
:src="message.account.avatar"
:alt="`Avatar of ${message.account.username}`"
/>
<FailoverImg :src="message.account.avatar" :alt="`Avatar of ${message.account.username}`" />
</div>
</div>
<div class="clearfix"></div>
<div class="target" v-on:dblclick="openDetail(message.status)">
<div
class="icon"
@click="openUser(message.status.account)"
role="presentation"
>
<FailoverImg
:src="message.status.account.avatar"
:alt="`Avatar of ${message.status.account.username}`"
/>
<div class="icon" @click="openUser(message.status.account)" role="presentation">
<FailoverImg :src="message.status.account.avatar" :alt="`Avatar of ${message.status.account.username}`" />
</div>
<div class="detail">
<div class="toot-header">
@ -71,11 +41,7 @@
</div>
<div class="content-wrapper">
<div class="spoiler" v-show="spoilered(message.status)">
<span
v-html="
emojiText(message.status.spoiler_text, message.status.emojis)
"
></span>
<span v-html="emojiText(message.status.spoiler_text, message.status.emojis)"></span>
<el-button
v-if="!isShowContent(message.status)"
plain
@ -86,14 +52,7 @@
>
{{ $t('cards.toot.show_more') }}
</el-button>
<el-button
v-else
plain
type="primary"
size="medium"
class="spoil-button"
@click="showContent = false"
>
<el-button v-else plain type="primary" size="medium" class="spoil-button" @click="showContent = false">
{{ $t('cards.toot.hide') }}
</el-button>
</div>
@ -106,9 +65,7 @@
</div>
<div class="attachments">
<el-button
v-show="
sensitive(message.status) && !isShowAttachments(message.status)
"
v-show="sensitive(message.status) && !isShowAttachments(message.status)"
class="show-sensitive"
type="info"
@click="showAttachments = true"
@ -117,9 +74,7 @@
</el-button>
<div v-show="isShowAttachments(message.status)">
<el-button
v-show="
sensitive(message.status) && isShowAttachments(message.status)
"
v-show="sensitive(message.status) && isShowAttachments(message.status)"
class="hide-sensitive"
type="text"
@click="showAttachments = false"
@ -127,28 +82,10 @@
>
<font-awesome-icon icon="eye" class="hide" />
</el-button>
<div
class="media"
v-bind:key="media.preview_url"
v-for="media in mediaAttachments(message.status)"
>
<FailoverImg
:src="media.preview_url"
:title="media.description"
:readExif="true"
/>
<el-tag
class="media-label"
size="mini"
v-if="media.type == 'gifv'"
>GIF</el-tag
>
<el-tag
class="media-label"
size="mini"
v-else-if="media.type == 'video'"
>VIDEO</el-tag
>
<div class="media" v-bind:key="media.preview_url" v-for="media in mediaAttachments(message.status)">
<FailoverImg :src="media.preview_url" :title="media.description" :readExif="true" />
<el-tag class="media-label" size="mini" v-if="media.type == 'gifv'">GIF</el-tag>
<el-tag class="media-label" size="mini" v-else-if="media.type == 'video'">VIDEO</el-tag>
</div>
</div>
<div class="clearfix"></div>
@ -158,12 +95,7 @@
:icon="message.status.reblog.account.avatar"
:username="username(message.status.reblog.account)"
:accountName="''"
:body="
emojiText(
message.status.reblog.content,
message.status.reblog.emojis
)
"
:body="emojiText(message.status.reblog.content, message.status.reblog.emojis)"
@select="openDetail(message.status.reblog)"
/>
<LinkPreview
@ -197,41 +129,41 @@ export default {
components: {
FailoverImg,
LinkPreview,
Quote,
Quote
},
props: {
message: {
type: Object,
default: {},
default: {}
},
filters: {
type: Array,
default: [],
default: []
},
focused: {
type: Boolean,
default: false,
default: false
},
overlaid: {
type: Boolean,
default: false,
},
default: false
}
},
data() {
return {
showContent: false,
showAttachments: false,
showAttachments: false
}
},
computed: {
...mapState('App', {
timeFormat: (state) => state.timeFormat,
language: (state) => state.language,
hideAllAttachments: (state) => state.hideAllAttachments,
timeFormat: state => state.timeFormat,
language: state => state.language,
hideAllAttachments: state => state.hideAllAttachments
}),
shortcutEnabled: function () {
return this.focused && !this.overlaid
},
}
},
mounted() {
if (this.focused) {
@ -249,7 +181,7 @@ export default {
this.$refs.status.blur()
})
}
},
}
},
methods: {
username(account) {
@ -277,30 +209,16 @@ export default {
}
const parsedAccount = findAccount(e.target, 'quoted')
if (parsedAccount !== null) {
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
true
)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', true)
this.$store
.dispatch(
'TimelineSpace/Contents/SideBar/AccountProfile/searchAccount',
parsedAccount
)
.then((account) => {
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/openAccountComponent'
)
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/AccountProfile/changeAccount',
account
)
.dispatch('TimelineSpace/Contents/SideBar/AccountProfile/searchAccount', parsedAccount)
.then(account => {
this.$store.dispatch('TimelineSpace/Contents/SideBar/openAccountComponent')
this.$store.dispatch('TimelineSpace/Contents/SideBar/AccountProfile/changeAccount', account)
})
.catch(() => {
this.openLink(e)
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
false
)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', false)
})
return parsedAccount
}
@ -313,28 +231,14 @@ export default {
}
},
openUser(account) {
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/openAccountComponent'
)
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/AccountProfile/changeAccount',
account
)
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
true
)
this.$store.dispatch('TimelineSpace/Contents/SideBar/openAccountComponent')
this.$store.dispatch('TimelineSpace/Contents/SideBar/AccountProfile/changeAccount', account)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', true)
},
openDetail(message) {
this.$store.dispatch('TimelineSpace/Contents/SideBar/openTootComponent')
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/TootDetail/changeToot',
message
)
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
true
)
this.$store.dispatch('TimelineSpace/Contents/SideBar/TootDetail/changeToot', message)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', true)
},
mediaAttachments(message) {
return message.media_attachments
@ -349,10 +253,7 @@ export default {
return !this.spoilered(message) || this.showContent
},
sensitive(message) {
return (
(this.hideAllAttachments || message.sensitive) &&
this.mediaAttachments(message).length > 0
)
return (this.hideAllAttachments || message.sensitive) && this.mediaAttachments(message).length > 0
},
isShowAttachments(message) {
return !this.sensitive(message) || this.showAttachments
@ -381,8 +282,8 @@ export default {
this.openUser(this.message.account)
break
}
},
},
}
}
}
</script>

View File

@ -1,25 +1,5 @@
<template>
<div
class="status"
tabIndex="0"
v-shortkey="
shortcutEnabled
? {
next: ['j'],
prev: ['k'],
right: ['l'],
left: ['h'],
open: ['o'],
profile: ['p'],
}
: {}
"
@shortkey="handleStatusControl"
ref="status"
@click="$emit('select')"
role="article"
aria-label="reacted toot"
>
<div class="status" tabIndex="0" ref="status" @click="$emit('select')" role="article" aria-label="reacted toot">
<div v-show="filtered(message)" class="filtered">Filtered</div>
<div v-show="!filtered(message)" class="favourite">
<div class="action">
@ -32,34 +12,25 @@
v-html="
$t('notification.reaction.body', {
username: username(message.account),
interpolation: { escapeValue: false },
interpolation: { escapeValue: false }
})
"
></bdi>
</span>
</div>
<div class="action-icon" role="presentation">
<FailoverImg
:src="message.account.avatar"
:alt="`Avatar of ${message.account.username}`"
/>
<FailoverImg :src="message.account.avatar" :alt="`Avatar of ${message.account.username}`" />
</div>
</div>
<div class="clearfix"></div>
<div class="target" v-on:dblclick="openDetail(message.status)">
<div class="icon" @click="openUser(message.status.account)">
<FailoverImg
:src="message.status.account.avatar"
:alt="`Avatar of ${message.status.account.username}`"
role="presentation"
/>
<FailoverImg :src="message.status.account.avatar" :alt="`Avatar of ${message.status.account.username}`" role="presentation" />
</div>
<div class="detail">
<div class="toot-header">
<div class="user" @click="openUser(message.status.account)">
<span class="display-name"
><bdi v-html="username(message.status.account)"></bdi
></span>
<span class="display-name"><bdi v-html="username(message.status.account)"></bdi></span>
</div>
<div class="timestamp">
{{ parseDatetime(message.status.created_at) }}
@ -79,14 +50,7 @@
>
{{ $t('cards.toot.show_more') }}
</el-button>
<el-button
v-else
plain
type="primary"
size="medium"
class="spoil-button"
@click="showContent = false"
>
<el-button v-else plain type="primary" size="medium" class="spoil-button" @click="showContent = false">
{{ $t('cards.toot.hide') }}
</el-button>
</div>
@ -99,9 +63,7 @@
</div>
<div class="attachments">
<el-button
v-show="
sensitive(message.status) && !isShowAttachments(message.status)
"
v-show="sensitive(message.status) && !isShowAttachments(message.status)"
class="show-sensitive"
type="info"
@click="showAttachments = true"
@ -110,9 +72,7 @@
</el-button>
<div v-show="isShowAttachments(message.status)">
<el-button
v-show="
sensitive(message.status) && isShowAttachments(message.status)
"
v-show="sensitive(message.status) && isShowAttachments(message.status)"
class="hide-sensitive"
type="text"
@click="showAttachments = false"
@ -120,28 +80,10 @@
>
<font-awesome-icon icon="eye" class="hide" />
</el-button>
<div
class="media"
v-bind:key="media.preview_url"
v-for="media in mediaAttachments(message.status)"
>
<FailoverImg
:src="media.preview_url"
:title="media.description"
:readExif="true"
/>
<el-tag
class="media-label"
size="mini"
v-if="media.type == 'gifv'"
>GIF</el-tag
>
<el-tag
class="media-label"
size="mini"
v-else-if="media.type == 'video'"
>VIDEO</el-tag
>
<div class="media" v-bind:key="media.preview_url" v-for="media in mediaAttachments(message.status)">
<FailoverImg :src="media.preview_url" :title="media.description" :readExif="true" />
<el-tag class="media-label" size="mini" v-if="media.type == 'gifv'">GIF</el-tag>
<el-tag class="media-label" size="mini" v-else-if="media.type == 'video'">VIDEO</el-tag>
</div>
</div>
<div class="clearfix"></div>
@ -175,42 +117,42 @@ export default {
name: 'reaction',
components: {
FailoverImg,
LinkPreview,
LinkPreview
},
props: {
message: {
type: Object,
default: {},
default: {}
},
filters: {
type: Array,
default: [],
default: []
},
focused: {
type: Boolean,
default: false,
default: false
},
overlaid: {
type: Boolean,
default: false,
},
default: false
}
},
data() {
return {
showContent: false,
showAttachments: false,
showAttachments: false
}
},
computed: {
...mapState('App', {
displayNameStyle: (state) => state.displayNameStyle,
timeFormat: (state) => state.timeFormat,
language: (state) => state.language,
hideAllAttachments: (state) => state.hideAllAttachments,
displayNameStyle: state => state.displayNameStyle,
timeFormat: state => state.timeFormat,
language: state => state.language,
hideAllAttachments: state => state.hideAllAttachments
}),
shortcutEnabled: function () {
return this.focused && !this.overlaid
},
}
},
mounted() {
if (this.focused) {
@ -228,7 +170,7 @@ export default {
this.$refs.status.blur()
})
}
},
}
},
methods: {
username(account) {
@ -256,31 +198,17 @@ export default {
}
const parsedAccount = findAccount(e.target, 'favourite')
if (parsedAccount !== null) {
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
true
)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', true)
this.$store
.dispatch(
'TimelineSpace/Contents/SideBar/AccountProfile/searchAccount',
parsedAccount
)
.then((account) => {
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/openAccountComponent'
)
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/AccountProfile/changeAccount',
account
)
.dispatch('TimelineSpace/Contents/SideBar/AccountProfile/searchAccount', parsedAccount)
.then(account => {
this.$store.dispatch('TimelineSpace/Contents/SideBar/openAccountComponent')
this.$store.dispatch('TimelineSpace/Contents/SideBar/AccountProfile/changeAccount', account)
})
.catch((err) => {
.catch(err => {
console.error(err)
this.openLink(e)
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
false
)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', false)
})
return parsedAccount.acct
}
@ -293,28 +221,14 @@ export default {
}
},
openUser(account) {
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/openAccountComponent'
)
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/AccountProfile/changeAccount',
account
)
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
true
)
this.$store.dispatch('TimelineSpace/Contents/SideBar/openAccountComponent')
this.$store.dispatch('TimelineSpace/Contents/SideBar/AccountProfile/changeAccount', account)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', true)
},
openDetail(message) {
this.$store.dispatch('TimelineSpace/Contents/SideBar/openTootComponent')
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/TootDetail/changeToot',
message
)
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
true
)
this.$store.dispatch('TimelineSpace/Contents/SideBar/TootDetail/changeToot', message)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', true)
},
mediaAttachments(message) {
return message.media_attachments
@ -329,10 +243,7 @@ export default {
return !this.spoilered(message) || this.showContent
},
sensitive(message) {
return (
(this.hideAllAttachments || message.sensitive) &&
this.mediaAttachments(message).length > 0
)
return (this.hideAllAttachments || message.sensitive) && this.mediaAttachments(message).length > 0
},
isShowAttachments(message) {
return !this.sensitive(message) || this.showAttachments
@ -364,8 +275,8 @@ export default {
this.openUser(this.message.account)
break
}
},
},
}
}
}
</script>

View File

@ -1,25 +1,5 @@
<template>
<div
class="status"
tabIndex="0"
v-shortkey="
shortcutEnabled
? {
next: ['j'],
prev: ['k'],
right: ['l'],
left: ['h'],
open: ['o'],
profile: ['p'],
}
: {}
"
@shortkey="handleStatusControl"
ref="status"
@click="$emit('select')"
role="article"
aria-label="reblogged toot"
>
<div class="status" tabIndex="0" ref="status" @click="$emit('select')" role="article" aria-label="reblogged toot">
<div v-show="filtered(message)" class="filtered">Filtered</div>
<div v-show="!filtered(message)" class="reblog">
<div class="action">
@ -32,30 +12,20 @@
v-html="
$t('notification.reblog.body', {
username: username(message.account),
interpolation: { escapeValue: false },
interpolation: { escapeValue: false }
})
"
></bdi>
</span>
</div>
<div class="action-icon" role="presentation">
<FailoverImg
:src="message.account.avatar"
:alt="`Avatar of ${message.account.username}`"
/>
<FailoverImg :src="message.account.avatar" :alt="`Avatar of ${message.account.username}`" />
</div>
</div>
<div class="clearfix"></div>
<div class="target" v-on:dblclick="openDetail(message.status)">
<div
class="icon"
@click="openUser(message.status.account)"
role="presentation"
>
<FailoverImg
:src="message.status.account.avatar"
:alt="`Avatar of ${message.status.account.username}`"
/>
<div class="icon" @click="openUser(message.status.account)" role="presentation">
<FailoverImg :src="message.status.account.avatar" :alt="`Avatar of ${message.status.account.username}`" />
</div>
<div class="detail">
<div class="toot-header">
@ -82,14 +52,7 @@
>
{{ $t('cards.toot.show_more') }}
</el-button>
<el-button
v-else
plain
type="primary"
size="medium"
class="spoil-button"
@click="showContent = false"
>
<el-button v-else plain type="primary" size="medium" class="spoil-button" @click="showContent = false">
{{ $t('cards.toot.hide') }}
</el-button>
</div>
@ -102,9 +65,7 @@
</div>
<div class="attachments">
<el-button
v-show="
sensitive(message.status) && !isShowAttachments(message.status)
"
v-show="sensitive(message.status) && !isShowAttachments(message.status)"
class="show-sensitive"
type="info"
@click="showAttachments = true"
@ -113,9 +74,7 @@
</el-button>
<div v-show="isShowAttachments(message.status)">
<el-button
v-show="
sensitive(message.status) && isShowAttachments(message.status)
"
v-show="sensitive(message.status) && isShowAttachments(message.status)"
class="hide-sensitive"
type="text"
@click="showAttachments = false"
@ -123,28 +82,10 @@
>
<font-awesome-icon icon="eye" class="hide" />
</el-button>
<div
class="media"
v-bind:key="media.preview_url"
v-for="media in mediaAttachments(message.status)"
>
<FailoverImg
:src="media.preview_url"
:title="media.description"
:readExif="true"
/>
<el-tag
class="media-label"
size="mini"
v-if="media.type == 'gifv'"
>GIF</el-tag
>
<el-tag
class="media-label"
size="mini"
v-else-if="media.type == 'video'"
>VIDEO</el-tag
>
<div class="media" v-bind:key="media.preview_url" v-for="media in mediaAttachments(message.status)">
<FailoverImg :src="media.preview_url" :title="media.description" :readExif="true" />
<el-tag class="media-label" size="mini" v-if="media.type == 'gifv'">GIF</el-tag>
<el-tag class="media-label" size="mini" v-else-if="media.type == 'video'">VIDEO</el-tag>
</div>
</div>
<div class="clearfix"></div>
@ -178,41 +119,41 @@ export default {
name: 'reblog',
components: {
FailoverImg,
LinkPreview,
LinkPreview
},
props: {
message: {
type: Object,
default: {},
default: {}
},
filters: {
type: Array,
default: [],
default: []
},
focused: {
type: Boolean,
default: false,
default: false
},
overlaid: {
type: Boolean,
default: false,
},
default: false
}
},
data() {
return {
showContent: false,
showAttachments: false,
showAttachments: false
}
},
computed: {
...mapState('App', {
timeFormat: (state) => state.timeFormat,
language: (state) => state.language,
hideAllAttachments: (state) => state.hideAllAttachments,
timeFormat: state => state.timeFormat,
language: state => state.language,
hideAllAttachments: state => state.hideAllAttachments
}),
shortcutEnabled: function () {
return this.focused && !this.overlaid
},
}
},
mounted() {
if (this.focused) {
@ -230,7 +171,7 @@ export default {
this.$refs.status.blur()
})
}
},
}
},
methods: {
username(account) {
@ -258,30 +199,16 @@ export default {
}
const parsedAccount = findAccount(e.target, 'reblog')
if (parsedAccount !== null) {
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
true
)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', true)
this.$store
.dispatch(
'TimelineSpace/Contents/SideBar/AccountProfile/searchAccount',
parsedAccount
)
.then((account) => {
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/openAccountComponent'
)
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/AccountProfile/changeAccount',
account
)
.dispatch('TimelineSpace/Contents/SideBar/AccountProfile/searchAccount', parsedAccount)
.then(account => {
this.$store.dispatch('TimelineSpace/Contents/SideBar/openAccountComponent')
this.$store.dispatch('TimelineSpace/Contents/SideBar/AccountProfile/changeAccount', account)
})
.catch(() => {
this.openLink(e)
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
false
)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', false)
})
return parsedAccount
}
@ -294,28 +221,14 @@ export default {
}
},
openUser(account) {
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/openAccountComponent'
)
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/AccountProfile/changeAccount',
account
)
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
true
)
this.$store.dispatch('TimelineSpace/Contents/SideBar/openAccountComponent')
this.$store.dispatch('TimelineSpace/Contents/SideBar/AccountProfile/changeAccount', account)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', true)
},
openDetail(message) {
this.$store.dispatch('TimelineSpace/Contents/SideBar/openTootComponent')
this.$store.dispatch(
'TimelineSpace/Contents/SideBar/TootDetail/changeToot',
message
)
this.$store.commit(
'TimelineSpace/Contents/SideBar/changeOpenSideBar',
true
)
this.$store.dispatch('TimelineSpace/Contents/SideBar/TootDetail/changeToot', message)
this.$store.commit('TimelineSpace/Contents/SideBar/changeOpenSideBar', true)
},
mediaAttachments(message) {
return message.media_attachments
@ -330,10 +243,7 @@ export default {
return !this.spoilered(message) || this.showContent
},
sensitive(message) {
return (
(this.hideAllAttachments || message.sensitive) &&
this.mediaAttachments(message).length > 0
)
return (this.hideAllAttachments || message.sensitive) && this.mediaAttachments(message).length > 0
},
isShowAttachments(message) {
return !this.sensitive(message) || this.showAttachments
@ -365,8 +275,8 @@ export default {
this.openUser(this.message.account)
break
}
},
},
}
}
}
</script>

View File

@ -70,8 +70,8 @@ import { sync } from 'vuex-router-sync'
import { createI18n } from 'vue-i18n'
import 'vue-resize/dist/vue-resize.css'
import VueResize from 'vue-resize'
import VueVirtualScroller from 'vue-virtual-scroller'
import 'vue-virtual-scroller/dist/vue-virtual-scroller.css'
import VueVirtualScroller from '@h3poteto/vue-virtual-scroller'
import '@h3poteto/vue-virtual-scroller/dist/vue-virtual-scroller.css'
import './assets/fonts/fonts.css'
import App from './App.vue'

View File

@ -1143,6 +1143,15 @@
resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210"
integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==
"@h3poteto/vue-virtual-scroller@2.0.0-alpha.1":
version "2.0.0-alpha.1"
resolved "https://npm.pkg.github.com/download/@h3poteto/vue-virtual-scroller/2.0.0-alpha.1/202991053ed05fd7f919ac4451e35a6e8a8f2d5297f042c3f2a7c5de34b05288#793c1b17f3515cd29dc267e67d1a61a90aeec9f1"
integrity sha512-gfSCGPGAEBuk6znAsFb/0vj6FiCbvEPXhipAojWECyFPtnFF3XH36So37CfHT7i7+96Mq+e1GfV8HfO6SQaaVg==
dependencies:
mitt "^2.1.0"
vue-observe-visibility "^2.0.0-alpha.1"
vue-resize "^2.0.0-alpha.1"
"@humanwhocodes/config-array@^0.5.0":
version "0.5.0"
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9"
@ -4391,11 +4400,6 @@ csstype@^2.6.8:
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.20.tgz#9229c65ea0b260cf4d3d997cb06288e36a8d6dda"
integrity sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==
custom-event-polyfill@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/custom-event-polyfill/-/custom-event-polyfill-1.0.7.tgz#9bc993ddda937c1a30ccd335614c6c58c4f87aee"
integrity sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w==
dashdash@^1.12.0:
version "1.14.1"
resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
@ -5073,11 +5077,6 @@ elegant-spinner@^1.0.1:
resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e"
integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=
element-matches@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/element-matches/-/element-matches-0.1.2.tgz#7345cb71e965bd2b12f725e524591c102198361a"
integrity sha512-yWh1otcs3OKUWDvu/IxyI36ZI3WNaRZlI0uG/DK6fu0pap0VYZ0J5pEGTk1zakme+hT0OKHwhlHc0N5TJhY6yQ==
element-plus@^2.1.9:
version "2.1.9"
resolved "https://registry.yarnpkg.com/element-plus/-/element-plus-2.1.9.tgz#8779b041f32f871eef2f903ee4c0da16dfb13024"
@ -12420,14 +12419,6 @@ vue-router@^4.0.14:
dependencies:
"@vue/devtools-api" "^6.0.0"
vue-shortkey@^3.1.7:
version "3.1.7"
resolved "https://registry.yarnpkg.com/vue-shortkey/-/vue-shortkey-3.1.7.tgz#31c09a99ed597331a6a49a45eeff894a78a19eef"
integrity sha512-Wm/vPXXS+4Wl/LoYpD+cZc0J0HIoVlY8Ep0JLIqqswmAya3XUBtsqKbhzEf9sXo+3rZ5p1YsUyZfXas8XD7YjQ==
dependencies:
custom-event-polyfill "^1.0.7"
element-matches "^0.1.2"
vue-style-loader@^4.1.3:
version "4.1.3"
resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz#6d55863a51fa757ab24e89d9371465072aa7bc35"
@ -12445,15 +12436,6 @@ vue-virtual-scroller@^1.0.10:
vue-observe-visibility "^0.4.4"
vue-resize "^0.4.5"
vue-virtual-scroller@^2.0.0-alpha.1:
version "2.0.0-alpha.1"
resolved "https://registry.yarnpkg.com/vue-virtual-scroller/-/vue-virtual-scroller-2.0.0-alpha.1.tgz#5b5410105b8e60ca57bbd5f2faf5ad1d8108d046"
integrity sha512-Mn5w3Qe06t7c3Imm2RHD43RACab1CCWplpdgzq+/FWJcpQtcGKd5vDep8i+nIwFtzFLsWAqEK0RzM7KrfAcBng==
dependencies:
mitt "^2.1.0"
vue-observe-visibility "^2.0.0-alpha.1"
vue-resize "^2.0.0-alpha.1"
vue@^3.2.31:
version "3.2.33"
resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.33.tgz#7867eb16a3293a28c4d190a837bc447878bd64c2"