update linr
This commit is contained in:
		
							parent
							
								
									b6e3f1c490
								
							
						
					
					
						commit
						5d968afa74
					
				
					 291 changed files with 1176 additions and 1164 deletions
				
			
		| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
<template>
 | 
			
		||||
<component v-for="popup in popups"
 | 
			
		||||
<component :is="popup.component"
 | 
			
		||||
	v-for="popup in popups"
 | 
			
		||||
	:key="popup.id"
 | 
			
		||||
	:is="popup.component"
 | 
			
		||||
	v-bind="popup.props"
 | 
			
		||||
	v-on="popup.events"
 | 
			
		||||
/>
 | 
			
		||||
| 
						 | 
				
			
			@ -10,7 +10,7 @@
 | 
			
		|||
 | 
			
		||||
<XStreamIndicator/>
 | 
			
		||||
 | 
			
		||||
<div id="wait" v-if="pendingApiRequestsCount > 0"></div>
 | 
			
		||||
<div v-if="pendingApiRequestsCount > 0" id="wait"></div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,41 +1,41 @@
 | 
			
		|||
<template>
 | 
			
		||||
<div class="mvcprjjd">
 | 
			
		||||
	<transition name="nav-back">
 | 
			
		||||
		<div class="nav-back _modalBg"
 | 
			
		||||
			v-if="showing"
 | 
			
		||||
		<div v-if="showing"
 | 
			
		||||
			class="nav-back _modalBg"
 | 
			
		||||
			@click="showing = false"
 | 
			
		||||
			@touchstart.passive="showing = false"
 | 
			
		||||
		></div>
 | 
			
		||||
	</transition>
 | 
			
		||||
 | 
			
		||||
	<transition name="nav">
 | 
			
		||||
		<nav class="nav" :class="{ iconOnly, hidden }" v-show="showing">
 | 
			
		||||
		<nav v-show="showing" class="nav" :class="{ iconOnly, hidden }">
 | 
			
		||||
			<div>
 | 
			
		||||
				<button class="item _button account" @click="openAccountMenu" v-click-anime>
 | 
			
		||||
				<button v-click-anime class="item _button account" @click="openAccountMenu">
 | 
			
		||||
					<MkAvatar :user="$i" class="avatar"/><MkAcct class="text" :user="$i"/>
 | 
			
		||||
				</button>
 | 
			
		||||
				<MkA class="item index" active-class="active" to="/" exact v-click-anime>
 | 
			
		||||
				<MkA v-click-anime class="item index" active-class="active" to="/" exact>
 | 
			
		||||
					<i class="fas fa-home fa-fw"></i><span class="text">{{ $ts.timeline }}</span>
 | 
			
		||||
				</MkA>
 | 
			
		||||
				<template v-for="item in menu">
 | 
			
		||||
					<div v-if="item === '-'" class="divider"></div>
 | 
			
		||||
					<component v-else-if="menuDef[item] && (menuDef[item].show !== false)" :is="menuDef[item].to ? 'MkA' : 'button'" class="item _button" :class="[item, { active: menuDef[item].active }]" active-class="active" v-on="menuDef[item].action ? { click: menuDef[item].action } : {}" :to="menuDef[item].to" v-click-anime>
 | 
			
		||||
					<component :is="menuDef[item].to ? 'MkA' : 'button'" v-else-if="menuDef[item] && (menuDef[item].show !== false)" v-click-anime class="item _button" :class="[item, { active: menuDef[item].active }]" active-class="active" :to="menuDef[item].to" v-on="menuDef[item].action ? { click: menuDef[item].action } : {}">
 | 
			
		||||
						<i class="fa-fw" :class="menuDef[item].icon"></i><span class="text">{{ $ts[menuDef[item].title] }}</span>
 | 
			
		||||
						<span v-if="menuDef[item].indicated" class="indicator"><i class="fas fa-circle"></i></span>
 | 
			
		||||
					</component>
 | 
			
		||||
				</template>
 | 
			
		||||
				<div class="divider"></div>
 | 
			
		||||
				<MkA v-if="$i.isAdmin || $i.isModerator" class="item" active-class="active" to="/admin" v-click-anime>
 | 
			
		||||
				<MkA v-if="$i.isAdmin || $i.isModerator" v-click-anime class="item" active-class="active" to="/admin">
 | 
			
		||||
					<i class="fas fa-door-open fa-fw"></i><span class="text">{{ $ts.controlPanel }}</span>
 | 
			
		||||
				</MkA>
 | 
			
		||||
				<button class="item _button" @click="more" v-click-anime>
 | 
			
		||||
				<button v-click-anime class="item _button" @click="more">
 | 
			
		||||
					<i class="fa fa-ellipsis-h fa-fw"></i><span class="text">{{ $ts.more }}</span>
 | 
			
		||||
					<span v-if="otherNavItemIndicated" class="indicator"><i class="fas fa-circle"></i></span>
 | 
			
		||||
				</button>
 | 
			
		||||
				<MkA class="item" active-class="active" to="/settings" v-click-anime>
 | 
			
		||||
				<MkA v-click-anime class="item" active-class="active" to="/settings">
 | 
			
		||||
					<i class="fas fa-cog fa-fw"></i><span class="text">{{ $ts.settings }}</span>
 | 
			
		||||
				</MkA>
 | 
			
		||||
				<button class="item _button post" @click="post" data-cy-open-post-form>
 | 
			
		||||
				<button class="item _button post" data-cy-open-post-form @click="post">
 | 
			
		||||
					<i class="fas fa-pencil-alt fa-fw"></i><span class="text">{{ $ts.note }}</span>
 | 
			
		||||
				</button>
 | 
			
		||||
			</div>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
<template>
 | 
			
		||||
<div class="nsbbhtug" v-if="hasDisconnected && $store.state.serverDisconnectedBehavior === 'quiet'" @click="resetDisconnected">
 | 
			
		||||
<div v-if="hasDisconnected && $store.state.serverDisconnectedBehavior === 'quiet'" class="nsbbhtug" @click="resetDisconnected">
 | 
			
		||||
	<div>{{ $ts.disconnectedFromServer }}</div>
 | 
			
		||||
	<div class="command">
 | 
			
		||||
		<button class="_textButton" @click="reload">{{ $ts.reload }}</button>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,9 +6,9 @@
 | 
			
		|||
			<div class="top">
 | 
			
		||||
				<p class="name"><i class="fas fa-spinner fa-pulse"></i>{{ ctx.name }}</p>
 | 
			
		||||
				<p class="status">
 | 
			
		||||
					<span class="initing" v-if="ctx.progressValue === undefined">{{ $ts.waiting }}<MkEllipsis/></span>
 | 
			
		||||
					<span class="kb" v-if="ctx.progressValue !== undefined">{{ String(Math.floor(ctx.progressValue / 1024)).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,') }}<i>KB</i> / {{ String(Math.floor(ctx.progressMax / 1024)).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,') }}<i>KB</i></span>
 | 
			
		||||
					<span class="percentage" v-if="ctx.progressValue !== undefined">{{ Math.floor((ctx.progressValue / ctx.progressMax) * 100) }}</span>
 | 
			
		||||
					<span v-if="ctx.progressValue === undefined" class="initing">{{ $ts.waiting }}<MkEllipsis/></span>
 | 
			
		||||
					<span v-if="ctx.progressValue !== undefined" class="kb">{{ String(Math.floor(ctx.progressValue / 1024)).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,') }}<i>KB</i> / {{ String(Math.floor(ctx.progressMax / 1024)).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,') }}<i>KB</i></span>
 | 
			
		||||
					<span v-if="ctx.progressValue !== undefined" class="percentage">{{ Math.floor((ctx.progressValue / ctx.progressMax) * 100) }}</span>
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
			<progress :value="ctx.progressValue || 0" :max="ctx.progressMax || 0" :class="{ initing: ctx.progressValue === undefined, waiting: ctx.progressValue !== undefined && ctx.progressValue === ctx.progressMax }"></progress>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,10 +10,10 @@
 | 
			
		|||
				</button>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="right">
 | 
			
		||||
				<MkA class="item" to="/my/messaging" v-tooltip="$ts.messaging"><i class="fas fa-comments icon"></i><span v-if="$i.hasUnreadMessagingMessage" class="indicator"><i class="fas fa-circle"></i></span></MkA>
 | 
			
		||||
				<MkA class="item" to="/my/messages" v-tooltip="$ts.directNotes"><i class="fas fa-envelope icon"></i><span v-if="$i.hasUnreadSpecifiedNotes" class="indicator"><i class="fas fa-circle"></i></span></MkA>
 | 
			
		||||
				<MkA class="item" to="/my/mentions" v-tooltip="$ts.mentions"><i class="fas fa-at icon"></i><span v-if="$i.hasUnreadMentions" class="indicator"><i class="fas fa-circle"></i></span></MkA>
 | 
			
		||||
				<MkA class="item" to="/my/notifications" v-tooltip="$ts.notifications"><i class="fas fa-bell icon"></i><span v-if="$i.hasUnreadNotification" class="indicator"><i class="fas fa-circle"></i></span></MkA>
 | 
			
		||||
				<MkA v-tooltip="$ts.messaging" class="item" to="/my/messaging"><i class="fas fa-comments icon"></i><span v-if="$i.hasUnreadMessagingMessage" class="indicator"><i class="fas fa-circle"></i></span></MkA>
 | 
			
		||||
				<MkA v-tooltip="$ts.directNotes" class="item" to="/my/messages"><i class="fas fa-envelope icon"></i><span v-if="$i.hasUnreadSpecifiedNotes" class="indicator"><i class="fas fa-circle"></i></span></MkA>
 | 
			
		||||
				<MkA v-tooltip="$ts.mentions" class="item" to="/my/mentions"><i class="fas fa-at icon"></i><span v-if="$i.hasUnreadMentions" class="indicator"><i class="fas fa-circle"></i></span></MkA>
 | 
			
		||||
				<MkA v-tooltip="$ts.notifications" class="item" to="/my/notifications"><i class="fas fa-bell icon"></i><span v-if="$i.hasUnreadNotification" class="indicator"><i class="fas fa-circle"></i></span></MkA>
 | 
			
		||||
			</div>
 | 
			
		||||
		</header>
 | 
			
		||||
		<div class="body">
 | 
			
		||||
| 
						 | 
				
			
			@ -26,25 +26,25 @@
 | 
			
		|||
					<MkA to="/timeline/global" class="item" :class="{ active: tl === 'global' }"><i class="fas fa-globe icon"></i>{{ $ts._timelines.global }}</MkA>
 | 
			
		||||
				</div>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="container" v-if="followedChannels">
 | 
			
		||||
			<div v-if="followedChannels" class="container">
 | 
			
		||||
				<div class="header">{{ $ts.channel }} ({{ $ts.following }})<button class="_button add" @click="addChannel"><i class="fas fa-plus"></i></button></div>
 | 
			
		||||
				<div class="body">
 | 
			
		||||
					<MkA v-for="channel in followedChannels" :key="channel.id" :to="`/channels/${ channel.id }`" class="item" :class="{ active: tl === `channel:${ channel.id }`, read: !channel.hasUnreadNote }"><i class="fas fa-satellite-dish icon"></i>{{ channel.name }}</MkA>
 | 
			
		||||
				</div>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="container" v-if="featuredChannels">
 | 
			
		||||
			<div v-if="featuredChannels" class="container">
 | 
			
		||||
				<div class="header">{{ $ts.channel }}<button class="_button add" @click="addChannel"><i class="fas fa-plus"></i></button></div>
 | 
			
		||||
				<div class="body">
 | 
			
		||||
					<MkA v-for="channel in featuredChannels" :key="channel.id" :to="`/channels/${ channel.id }`" class="item" :class="{ active: tl === `channel:${ channel.id }` }"><i class="fas fa-satellite-dish icon"></i>{{ channel.name }}</MkA>
 | 
			
		||||
				</div>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="container" v-if="lists">
 | 
			
		||||
			<div v-if="lists" class="container">
 | 
			
		||||
				<div class="header">{{ $ts.lists }}<button class="_button add" @click="addList"><i class="fas fa-plus"></i></button></div>
 | 
			
		||||
				<div class="body">
 | 
			
		||||
					<MkA v-for="list in lists" :key="list.id" :to="`/my/list/${ list.id }`" class="item" :class="{ active: tl === `list:${ list.id }` }"><i class="fas fa-list-ul icon"></i>{{ list.name }}</MkA>
 | 
			
		||||
				</div>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="container" v-if="antennas">
 | 
			
		||||
			<div v-if="antennas" class="container">
 | 
			
		||||
				<div class="header">{{ $ts.antennas }}<button class="_button add" @click="addAntenna"><i class="fas fa-plus"></i></button></div>
 | 
			
		||||
				<div class="body">
 | 
			
		||||
					<MkA v-for="antenna in antennas" :key="antenna.id" :to="`/my/antenna/${ antenna.id }`" class="item" :class="{ active: tl === `antenna:${ antenna.id }` }"><i class="fas fa-satellite icon"></i>{{ antenna.name }}</MkA>
 | 
			
		||||
| 
						 | 
				
			
			@ -64,10 +64,10 @@
 | 
			
		|||
				</button>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="right">
 | 
			
		||||
				<button class="_button item search" @click="search" v-tooltip="$ts.search">
 | 
			
		||||
				<button v-tooltip="$ts.search" class="_button item search" @click="search">
 | 
			
		||||
					<i class="fas fa-search icon"></i>
 | 
			
		||||
				</button>
 | 
			
		||||
				<MkA class="item" to="/settings" v-tooltip="$ts.settings"><i class="fas fa-cog icon"></i></MkA>
 | 
			
		||||
				<MkA v-tooltip="$ts.settings" class="item" to="/settings"><i class="fas fa-cog icon"></i></MkA>
 | 
			
		||||
			</div>
 | 
			
		||||
		</footer>
 | 
			
		||||
	</div>
 | 
			
		||||
| 
						 | 
				
			
			@ -85,7 +85,7 @@
 | 
			
		|||
		</router-view>
 | 
			
		||||
	</main>
 | 
			
		||||
 | 
			
		||||
	<XSide class="side" ref="side" @open="sideViewOpening = true" @close="sideViewOpening = false"/>
 | 
			
		||||
	<XSide ref="side" class="side" @open="sideViewOpening = true" @close="sideViewOpening = false"/>
 | 
			
		||||
	<div class="side widgets" :class="{ sideViewOpening }">
 | 
			
		||||
		<XWidgets/>
 | 
			
		||||
	</div>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,22 +1,22 @@
 | 
			
		|||
<template>
 | 
			
		||||
<header class="dehvdgxo">
 | 
			
		||||
	<MkA class="name" :to="userPage(note.user)" v-user-preview="note.user.id">
 | 
			
		||||
	<MkA v-user-preview="note.user.id" class="name" :to="userPage(note.user)">
 | 
			
		||||
		<MkUserName :user="note.user"/>
 | 
			
		||||
	</MkA>
 | 
			
		||||
	<span class="is-bot" v-if="note.user.isBot">bot</span>
 | 
			
		||||
	<span v-if="note.user.isBot" class="is-bot">bot</span>
 | 
			
		||||
	<span class="username"><MkAcct :user="note.user"/></span>
 | 
			
		||||
	<span class="admin" v-if="note.user.isAdmin"><i class="fas fa-bookmark"></i></span>
 | 
			
		||||
	<span class="moderator" v-if="!note.user.isAdmin && note.user.isModerator"><i class="far fa-bookmark"></i></span>
 | 
			
		||||
	<span v-if="note.user.isAdmin" class="admin"><i class="fas fa-bookmark"></i></span>
 | 
			
		||||
	<span v-if="!note.user.isAdmin && note.user.isModerator" class="moderator"><i class="far fa-bookmark"></i></span>
 | 
			
		||||
	<div class="info">
 | 
			
		||||
		<MkA class="created-at" :to="notePage(note)">
 | 
			
		||||
			<MkTime :time="note.createdAt"/>
 | 
			
		||||
		</MkA>
 | 
			
		||||
		<span class="visibility" v-if="note.visibility !== 'public'">
 | 
			
		||||
		<span v-if="note.visibility !== 'public'" class="visibility">
 | 
			
		||||
			<i v-if="note.visibility === 'home'" class="fas fa-home"></i>
 | 
			
		||||
			<i v-else-if="note.visibility === 'followers'" class="fas fa-unlock"></i>
 | 
			
		||||
			<i v-else-if="note.visibility === 'specified'" class="fas fa-envelope"></i>
 | 
			
		||||
		</span>
 | 
			
		||||
		<span class="localOnly" v-if="note.localOnly"><i class="fas fa-biohazard"></i></span>
 | 
			
		||||
		<span v-if="note.localOnly" class="localOnly"><i class="fas fa-biohazard"></i></span>
 | 
			
		||||
	</div>
 | 
			
		||||
</header>
 | 
			
		||||
</template>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,10 +5,10 @@
 | 
			
		|||
		<XNoteHeader class="header" :note="note" :mini="true"/>
 | 
			
		||||
		<div class="body">
 | 
			
		||||
			<p v-if="note.cw != null" class="cw">
 | 
			
		||||
				<span class="text" v-if="note.cw != ''">{{ note.cw }}</span>
 | 
			
		||||
				<span v-if="note.cw != ''" class="text">{{ note.cw }}</span>
 | 
			
		||||
				<XCwButton v-model="showContent" :note="note"/>
 | 
			
		||||
			</p>
 | 
			
		||||
			<div class="content" v-show="note.cw == null || showContent">
 | 
			
		||||
			<div v-show="note.cw == null || showContent" class="content">
 | 
			
		||||
				<XSubNote-content class="text" :note="note"/>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,7 +9,7 @@
 | 
			
		|||
					<Mfm v-if="note.cw != ''" class="text" :text="note.cw" :author="note.user" :i="$i" :custom-emojis="note.emojis"/>
 | 
			
		||||
					<XCwButton v-model="showContent" :note="note"/>
 | 
			
		||||
				</p>
 | 
			
		||||
				<div class="content" v-show="note.cw == null || showContent">
 | 
			
		||||
				<div v-show="note.cw == null || showContent" class="content">
 | 
			
		||||
					<XSubNote-content class="text" :note="note"/>
 | 
			
		||||
				</div>
 | 
			
		||||
			</div>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,37 +1,37 @@
 | 
			
		|||
<template>
 | 
			
		||||
<div
 | 
			
		||||
	class="vfzoeqcg"
 | 
			
		||||
	v-if="!muted"
 | 
			
		||||
	v-show="!isDeleted"
 | 
			
		||||
	v-hotkey="keymap"
 | 
			
		||||
	class="vfzoeqcg"
 | 
			
		||||
	:tabindex="!isDeleted ? '-1' : null"
 | 
			
		||||
	:class="{ renote: isRenote, highlighted: appearNote._prId_ || appearNote._featuredId_, operating }"
 | 
			
		||||
	v-hotkey="keymap"
 | 
			
		||||
>
 | 
			
		||||
	<XSub :note="appearNote.reply" class="reply-to" v-if="appearNote.reply"/>
 | 
			
		||||
	<div class="info" v-if="pinned"><i class="fas fa-thumbtack"></i> {{ $ts.pinnedNote }}</div>
 | 
			
		||||
	<div class="info" v-if="appearNote._prId_"><i class="fas fa-bullhorn"></i> {{ $ts.promotion }}<button class="_textButton hide" @click="readPromo()">{{ $ts.hideThisNote }} <i class="fas fa-times"></i></button></div>
 | 
			
		||||
	<div class="info" v-if="appearNote._featuredId_"><i class="fas fa-bolt"></i> {{ $ts.featured }}</div>
 | 
			
		||||
	<div class="renote" v-if="isRenote">
 | 
			
		||||
	<XSub v-if="appearNote.reply" :note="appearNote.reply" class="reply-to"/>
 | 
			
		||||
	<div v-if="pinned" class="info"><i class="fas fa-thumbtack"></i> {{ $ts.pinnedNote }}</div>
 | 
			
		||||
	<div v-if="appearNote._prId_" class="info"><i class="fas fa-bullhorn"></i> {{ $ts.promotion }}<button class="_textButton hide" @click="readPromo()">{{ $ts.hideThisNote }} <i class="fas fa-times"></i></button></div>
 | 
			
		||||
	<div v-if="appearNote._featuredId_" class="info"><i class="fas fa-bolt"></i> {{ $ts.featured }}</div>
 | 
			
		||||
	<div v-if="isRenote" class="renote">
 | 
			
		||||
		<MkAvatar class="avatar" :user="note.user"/>
 | 
			
		||||
		<i class="fas fa-retweet"></i>
 | 
			
		||||
		<I18n :src="$ts.renotedBy" tag="span">
 | 
			
		||||
			<template #user>
 | 
			
		||||
				<MkA class="name" :to="userPage(note.user)" v-user-preview="note.userId">
 | 
			
		||||
				<MkA v-user-preview="note.userId" class="name" :to="userPage(note.user)">
 | 
			
		||||
					<MkUserName :user="note.user"/>
 | 
			
		||||
				</MkA>
 | 
			
		||||
			</template>
 | 
			
		||||
		</I18n>
 | 
			
		||||
		<div class="info">
 | 
			
		||||
			<button class="_button time" @click="showRenoteMenu()" ref="renoteTime">
 | 
			
		||||
			<button ref="renoteTime" class="_button time" @click="showRenoteMenu()">
 | 
			
		||||
				<i v-if="isMyRenote" class="fas fa-ellipsis-h dropdownIcon"></i>
 | 
			
		||||
				<MkTime :time="note.createdAt"/>
 | 
			
		||||
			</button>
 | 
			
		||||
			<span class="visibility" v-if="note.visibility !== 'public'">
 | 
			
		||||
			<span v-if="note.visibility !== 'public'" class="visibility">
 | 
			
		||||
				<i v-if="note.visibility === 'home'" class="fas fa-home"></i>
 | 
			
		||||
				<i v-else-if="note.visibility === 'followers'" class="fas fa-unlock"></i>
 | 
			
		||||
				<i v-else-if="note.visibility === 'specified'" class="fas fa-envelope"></i>
 | 
			
		||||
			</span>
 | 
			
		||||
			<span class="localOnly" v-if="note.localOnly"><i class="fas fa-biohazard"></i></span>
 | 
			
		||||
			<span v-if="note.localOnly" class="localOnly"><i class="fas fa-biohazard"></i></span>
 | 
			
		||||
		</div>
 | 
			
		||||
	</div>
 | 
			
		||||
	<article class="article" @contextmenu.stop="onContextmenu">
 | 
			
		||||
| 
						 | 
				
			
			@ -44,45 +44,45 @@
 | 
			
		|||
					<Mfm v-if="appearNote.cw != ''" class="text" :text="appearNote.cw" :author="appearNote.user" :i="$i" :custom-emojis="appearNote.emojis"/>
 | 
			
		||||
					<XCwButton v-model="showContent" :note="appearNote"/>
 | 
			
		||||
				</p>
 | 
			
		||||
				<div class="content" :class="{ collapsed }" v-show="appearNote.cw == null || showContent">
 | 
			
		||||
				<div v-show="appearNote.cw == null || showContent" class="content" :class="{ collapsed }">
 | 
			
		||||
					<div class="text">
 | 
			
		||||
						<span v-if="appearNote.isHidden" style="opacity: 0.5">({{ $ts.private }})</span>
 | 
			
		||||
						<MkA class="reply" v-if="appearNote.replyId" :to="`/notes/${appearNote.replyId}`"><i class="fas fa-reply"></i></MkA>
 | 
			
		||||
						<MkA v-if="appearNote.replyId" class="reply" :to="`/notes/${appearNote.replyId}`"><i class="fas fa-reply"></i></MkA>
 | 
			
		||||
						<Mfm v-if="appearNote.text" :text="appearNote.text" :author="appearNote.user" :i="$i" :custom-emojis="appearNote.emojis"/>
 | 
			
		||||
						<a class="rp" v-if="appearNote.renote != null">RN:</a>
 | 
			
		||||
						<a v-if="appearNote.renote != null" class="rp">RN:</a>
 | 
			
		||||
					</div>
 | 
			
		||||
					<div class="files" v-if="appearNote.files.length > 0">
 | 
			
		||||
					<div v-if="appearNote.files.length > 0" class="files">
 | 
			
		||||
						<XMediaList :media-list="appearNote.files"/>
 | 
			
		||||
					</div>
 | 
			
		||||
					<XPoll v-if="appearNote.poll" :note="appearNote" ref="pollViewer" class="poll"/>
 | 
			
		||||
					<MkUrlPreview v-for="url in urls" :url="url" :key="url" :compact="true" :detail="false" class="url-preview"/>
 | 
			
		||||
					<div class="renote" v-if="appearNote.renote"><XNoteSimple :note="appearNote.renote"/></div>
 | 
			
		||||
					<XPoll v-if="appearNote.poll" ref="pollViewer" :note="appearNote" class="poll"/>
 | 
			
		||||
					<MkUrlPreview v-for="url in urls" :key="url" :url="url" :compact="true" :detail="false" class="url-preview"/>
 | 
			
		||||
					<div v-if="appearNote.renote" class="renote"><XNoteSimple :note="appearNote.renote"/></div>
 | 
			
		||||
					<button v-if="collapsed" class="fade _button" @click="collapsed = false">
 | 
			
		||||
						<span>{{ $ts.showMore }}</span>
 | 
			
		||||
					</button>
 | 
			
		||||
				</div>
 | 
			
		||||
				<MkA v-if="appearNote.channel && !inChannel" class="channel" :to="`/channels/${appearNote.channel.id}`"><i class="fas fa-satellite-dish"></i> {{ appearNote.channel.name }}</MkA>
 | 
			
		||||
			</div>
 | 
			
		||||
			<XReactionsViewer :note="appearNote" ref="reactionsViewer"/>
 | 
			
		||||
			<XReactionsViewer ref="reactionsViewer" :note="appearNote"/>
 | 
			
		||||
			<footer class="footer _panel">
 | 
			
		||||
				<button @click="reply()" class="button _button" v-tooltip="$ts.reply">
 | 
			
		||||
				<button v-tooltip="$ts.reply" class="button _button" @click="reply()">
 | 
			
		||||
					<template v-if="appearNote.reply"><i class="fas fa-reply-all"></i></template>
 | 
			
		||||
					<template v-else><i class="fas fa-reply"></i></template>
 | 
			
		||||
					<p class="count" v-if="appearNote.repliesCount > 0">{{ appearNote.repliesCount }}</p>
 | 
			
		||||
					<p v-if="appearNote.repliesCount > 0" class="count">{{ appearNote.repliesCount }}</p>
 | 
			
		||||
				</button>
 | 
			
		||||
				<button v-if="canRenote" @click="renote()" class="button _button" ref="renoteButton" v-tooltip="$ts.renote">
 | 
			
		||||
					<i class="fas fa-retweet"></i><p class="count" v-if="appearNote.renoteCount > 0">{{ appearNote.renoteCount }}</p>
 | 
			
		||||
				<button v-if="canRenote" ref="renoteButton" v-tooltip="$ts.renote" class="button _button" @click="renote()">
 | 
			
		||||
					<i class="fas fa-retweet"></i><p v-if="appearNote.renoteCount > 0" class="count">{{ appearNote.renoteCount }}</p>
 | 
			
		||||
				</button>
 | 
			
		||||
				<button v-else class="button _button">
 | 
			
		||||
					<i class="fas fa-ban"></i>
 | 
			
		||||
				</button>
 | 
			
		||||
				<button v-if="appearNote.myReaction == null" class="button _button" @click="react()" ref="reactButton" v-tooltip="$ts.reaction">
 | 
			
		||||
				<button v-if="appearNote.myReaction == null" ref="reactButton" v-tooltip="$ts.reaction" class="button _button" @click="react()">
 | 
			
		||||
					<i class="fas fa-plus"></i>
 | 
			
		||||
				</button>
 | 
			
		||||
				<button v-if="appearNote.myReaction != null" class="button _button reacted" @click="undoReact(appearNote)" ref="reactButton" v-tooltip="$ts.reaction">
 | 
			
		||||
				<button v-if="appearNote.myReaction != null" ref="reactButton" v-tooltip="$ts.reaction" class="button _button reacted" @click="undoReact(appearNote)">
 | 
			
		||||
					<i class="fas fa-minus"></i>
 | 
			
		||||
				</button>
 | 
			
		||||
				<button class="button _button" @click="menu()" ref="menuButton">
 | 
			
		||||
				<button ref="menuButton" class="button _button" @click="menu()">
 | 
			
		||||
					<i class="fas fa-ellipsis-h"></i>
 | 
			
		||||
				</button>
 | 
			
		||||
			</footer>
 | 
			
		||||
| 
						 | 
				
			
			@ -92,7 +92,7 @@
 | 
			
		|||
<div v-else class="muted" @click="muted = false">
 | 
			
		||||
	<I18n :src="$ts.userSaysSomething" tag="small">
 | 
			
		||||
		<template #name>
 | 
			
		||||
			<MkA class="name" :to="userPage(appearNote.user)" v-user-preview="appearNote.userId">
 | 
			
		||||
			<MkA v-user-preview="appearNote.userId" class="name" :to="userPage(appearNote.user)">
 | 
			
		||||
				<MkUserName :user="appearNote.user"/>
 | 
			
		||||
			</MkA>
 | 
			
		||||
		</template>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
<template>
 | 
			
		||||
<div class="">
 | 
			
		||||
	<div class="_fullinfo" v-if="empty">
 | 
			
		||||
	<div v-if="empty" class="_fullinfo">
 | 
			
		||||
		<img src="https://xn--931a.moe/assets/info.jpg" class="_ghost"/>
 | 
			
		||||
		<div>{{ $ts.noNotes }}</div>
 | 
			
		||||
	</div>
 | 
			
		||||
| 
						 | 
				
			
			@ -10,18 +10,18 @@
 | 
			
		|||
	<MkError v-if="error" @retry="init()"/>
 | 
			
		||||
 | 
			
		||||
	<div v-show="more && reversed" style="margin-bottom: var(--margin);">
 | 
			
		||||
		<MkButton style="margin: 0 auto;" @click="fetchMore" :disabled="moreFetching" :style="{ cursor: moreFetching ? 'wait' : 'pointer' }">
 | 
			
		||||
		<MkButton style="margin: 0 auto;" :disabled="moreFetching" :style="{ cursor: moreFetching ? 'wait' : 'pointer' }" @click="fetchMore">
 | 
			
		||||
			<template v-if="!moreFetching">{{ $ts.loadMore }}</template>
 | 
			
		||||
			<template v-if="moreFetching"><MkLoading inline/></template>
 | 
			
		||||
		</MkButton>
 | 
			
		||||
	</div>
 | 
			
		||||
 | 
			
		||||
	<XList ref="notes" :items="notes" v-slot="{ item: note }" :direction="reversed ? 'up' : 'down'" :reversed="reversed" :ad="true">
 | 
			
		||||
		<XNote :note="note" @update:note="updated(note, $event)" :key="note._featuredId_ || note._prId_ || note.id"/>
 | 
			
		||||
	<XList ref="notes" v-slot="{ item: note }" :items="notes" :direction="reversed ? 'up' : 'down'" :reversed="reversed" :ad="true">
 | 
			
		||||
		<XNote :key="note._featuredId_ || note._prId_ || note.id" :note="note" @update:note="updated(note, $event)"/>
 | 
			
		||||
	</XList>
 | 
			
		||||
 | 
			
		||||
	<div v-show="more && !reversed" style="margin-top: var(--margin);">
 | 
			
		||||
		<MkButton style="margin: 0 auto;" v-appear="$store.state.enableInfiniteScroll ? fetchMore : null" @click="fetchMore" :disabled="moreFetching" :style="{ cursor: moreFetching ? 'wait' : 'pointer' }">
 | 
			
		||||
		<MkButton v-appear="$store.state.enableInfiniteScroll ? fetchMore : null" style="margin: 0 auto;" :disabled="moreFetching" :style="{ cursor: moreFetching ? 'wait' : 'pointer' }" @click="fetchMore">
 | 
			
		||||
			<template v-if="!moreFetching">{{ $ts.loadMore }}</template>
 | 
			
		||||
			<template v-if="moreFetching"><MkLoading inline/></template>
 | 
			
		||||
		</MkButton>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,14 +1,14 @@
 | 
			
		|||
<template>
 | 
			
		||||
<div v-if="channel" class="hhizbblb">
 | 
			
		||||
	<div class="info" v-if="date">
 | 
			
		||||
	<div v-if="date" class="info">
 | 
			
		||||
		<MkInfo>{{ $ts.showingPastTimeline }} <button class="_textButton clear" @click="timetravel()">{{ $ts.clear }}</button></MkInfo>
 | 
			
		||||
	</div>
 | 
			
		||||
	<div class="tl" ref="body">
 | 
			
		||||
		<div class="new" v-if="queue > 0" :style="{ width: width + 'px', bottom: bottom + 'px' }"><button class="_buttonPrimary" @click="goTop()">{{ $ts.newNoteRecived }}</button></div>
 | 
			
		||||
		<XNotes class="tl" ref="tl" :pagination="pagination" @queue="queueUpdated" v-follow="true"/>
 | 
			
		||||
	<div ref="body" class="tl">
 | 
			
		||||
		<div v-if="queue > 0" class="new" :style="{ width: width + 'px', bottom: bottom + 'px' }"><button class="_buttonPrimary" @click="goTop()">{{ $ts.newNoteRecived }}</button></div>
 | 
			
		||||
		<XNotes ref="tl" v-follow="true" class="tl" :pagination="pagination" @queue="queueUpdated"/>
 | 
			
		||||
	</div>
 | 
			
		||||
	<div class="bottom">
 | 
			
		||||
		<div class="typers" v-if="typers.length > 0">
 | 
			
		||||
		<div v-if="typers.length > 0" class="typers">
 | 
			
		||||
			<I18n :src="$ts.typingUsers" text-tag="span" class="users">
 | 
			
		||||
				<template #users>
 | 
			
		||||
					<b v-for="user in typers" :key="user.id" class="user">{{ user.username }}</b>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,14 +1,14 @@
 | 
			
		|||
<template>
 | 
			
		||||
<div class="dbiokgaf">
 | 
			
		||||
	<div class="info" v-if="date">
 | 
			
		||||
	<div v-if="date" class="info">
 | 
			
		||||
		<MkInfo>{{ $ts.showingPastTimeline }} <button class="_textButton clear" @click="timetravel()">{{ $ts.clear }}</button></MkInfo>
 | 
			
		||||
	</div>
 | 
			
		||||
	<div class="top">
 | 
			
		||||
		<XPostForm/>
 | 
			
		||||
	</div>
 | 
			
		||||
	<div class="tl" ref="body">
 | 
			
		||||
		<div class="new" v-if="queue > 0" :style="{ width: width + 'px', top: top + 'px' }"><button class="_buttonPrimary" @click="goTop()">{{ $ts.newNoteRecived }}</button></div>
 | 
			
		||||
		<XNotes class="tl" ref="tl" :pagination="pagination" @queue="queueUpdated"/>
 | 
			
		||||
	<div ref="body" class="tl">
 | 
			
		||||
		<div v-if="queue > 0" class="new" :style="{ width: width + 'px', top: top + 'px' }"><button class="_buttonPrimary" @click="goTop()">{{ $ts.newNoteRecived }}</button></div>
 | 
			
		||||
		<XNotes ref="tl" class="tl" :pagination="pagination" @queue="queueUpdated"/>
 | 
			
		||||
	</div>
 | 
			
		||||
</div>
 | 
			
		||||
</template>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,7 @@
 | 
			
		|||
	@drop.stop="onDrop"
 | 
			
		||||
>
 | 
			
		||||
	<div class="form">
 | 
			
		||||
		<div class="with-quote" v-if="quoteId"><i class="fas fa-quote-left"></i> {{ $ts.quoteAttached }}<button @click="quoteId = null"><i class="fas fa-times"></i></button></div>
 | 
			
		||||
		<div v-if="quoteId" class="with-quote"><i class="fas fa-quote-left"></i> {{ $ts.quoteAttached }}<button @click="quoteId = null"><i class="fas fa-times"></i></button></div>
 | 
			
		||||
		<div v-if="visibility === 'specified'" class="to-specified">
 | 
			
		||||
			<span style="margin-right: 8px;">{{ $ts.recipient }}</span>
 | 
			
		||||
			<div class="visibleUsers">
 | 
			
		||||
| 
						 | 
				
			
			@ -14,26 +14,26 @@
 | 
			
		|||
					<MkAcct :user="u"/>
 | 
			
		||||
					<button class="_button" @click="removeVisibleUser(u)"><i class="fas fa-times"></i></button>
 | 
			
		||||
				</span>
 | 
			
		||||
				<button @click="addVisibleUser" class="_buttonPrimary"><i class="fas fa-plus fa-fw"></i></button>
 | 
			
		||||
				<button class="_buttonPrimary" @click="addVisibleUser"><i class="fas fa-plus fa-fw"></i></button>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
		<input v-show="useCw" ref="cw" class="cw" v-model="cw" :placeholder="$ts.annotation" @keydown="onKeydown">
 | 
			
		||||
		<textarea v-model="text" class="text" :class="{ withCw: useCw }" ref="text" :disabled="posting" :placeholder="placeholder" @keydown="onKeydown" @paste="onPaste" @compositionupdate="onCompositionUpdate" @compositionend="onCompositionEnd"/>
 | 
			
		||||
		<input v-show="useCw" ref="cw" v-model="cw" class="cw" :placeholder="$ts.annotation" @keydown="onKeydown">
 | 
			
		||||
		<textarea ref="text" v-model="text" class="text" :class="{ withCw: useCw }" :disabled="posting" :placeholder="placeholder" @keydown="onKeydown" @paste="onPaste" @compositionupdate="onCompositionUpdate" @compositionend="onCompositionEnd"/>
 | 
			
		||||
		<XPostFormAttaches class="attaches" :files="files" @updated="updateFiles" @detach="detachFile" @changeSensitive="updateFileSensitive" @changeName="updateFileName"/>
 | 
			
		||||
		<XPollEditor v-if="poll" :poll="poll" @destroyed="poll = null" @updated="onPollUpdate"/>
 | 
			
		||||
		<footer>
 | 
			
		||||
			<div class="left">
 | 
			
		||||
				<button class="_button" @click="chooseFileFrom" v-tooltip="$ts.attachFile"><i class="fas fa-photo-video"></i></button>
 | 
			
		||||
				<button class="_button" @click="togglePoll" :class="{ active: poll }" v-tooltip="$ts.poll"><i class="fas fa-poll-h"></i></button>
 | 
			
		||||
				<button class="_button" @click="useCw = !useCw" :class="{ active: useCw }" v-tooltip="$ts.useCw"><i class="fas fa-eye-slash"></i></button>
 | 
			
		||||
				<button class="_button" @click="insertMention" v-tooltip="$ts.mention"><i class="fas fa-at"></i></button>
 | 
			
		||||
				<button class="_button" @click="insertEmoji" v-tooltip="$ts.emoji"><i class="fas fa-laugh-squint"></i></button>
 | 
			
		||||
				<button class="_button" @click="showActions" v-tooltip="$ts.plugin" v-if="postFormActions.length > 0"><i class="fas fa-plug"></i></button>
 | 
			
		||||
				<button v-tooltip="$ts.attachFile" class="_button" @click="chooseFileFrom"><i class="fas fa-photo-video"></i></button>
 | 
			
		||||
				<button v-tooltip="$ts.poll" class="_button" :class="{ active: poll }" @click="togglePoll"><i class="fas fa-poll-h"></i></button>
 | 
			
		||||
				<button v-tooltip="$ts.useCw" class="_button" :class="{ active: useCw }" @click="useCw = !useCw"><i class="fas fa-eye-slash"></i></button>
 | 
			
		||||
				<button v-tooltip="$ts.mention" class="_button" @click="insertMention"><i class="fas fa-at"></i></button>
 | 
			
		||||
				<button v-tooltip="$ts.emoji" class="_button" @click="insertEmoji"><i class="fas fa-laugh-squint"></i></button>
 | 
			
		||||
				<button v-if="postFormActions.length > 0" v-tooltip="$ts.plugin" class="_button" @click="showActions"><i class="fas fa-plug"></i></button>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="right">
 | 
			
		||||
				<span class="text-count" :class="{ over: textLength > max }">{{ max - textLength }}</span>
 | 
			
		||||
				<span class="local-only" v-if="localOnly"><i class="fas fa-biohazard"></i></span>
 | 
			
		||||
				<button class="_button visibility" @click="setVisibility" ref="visibilityButton" v-tooltip="$ts.visibility" :disabled="channel != null">
 | 
			
		||||
				<span v-if="localOnly" class="local-only"><i class="fas fa-biohazard"></i></span>
 | 
			
		||||
				<button ref="visibilityButton" v-tooltip="$ts.visibility" class="_button visibility" :disabled="channel != null" @click="setVisibility">
 | 
			
		||||
					<span v-if="visibility === 'public'"><i class="fas fa-globe"></i></span>
 | 
			
		||||
					<span v-if="visibility === 'home'"><i class="fas fa-home"></i></span>
 | 
			
		||||
					<span v-if="visibility === 'followers'"><i class="fas fa-unlock"></i></span>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
<template>
 | 
			
		||||
<div class="mrajymqm _narrow_" v-if="component">
 | 
			
		||||
<div v-if="component" class="mrajymqm _narrow_">
 | 
			
		||||
	<header class="header" @contextmenu.prevent.stop="onContextmenu">
 | 
			
		||||
		<MkHeader class="title" :info="pageInfo" :center="false"/>
 | 
			
		||||
	</header>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,9 +3,9 @@
 | 
			
		|||
	<div class="body">
 | 
			
		||||
		<span v-if="note.isHidden" style="opacity: 0.5">({{ $ts.private }})</span>
 | 
			
		||||
		<span v-if="note.deletedAt" style="opacity: 0.5">({{ $ts.deleted }})</span>
 | 
			
		||||
		<MkA class="reply" v-if="note.replyId" :to="`/notes/${note.replyId}`"><i class="fas fa-reply"></i></MkA>
 | 
			
		||||
		<MkA v-if="note.replyId" class="reply" :to="`/notes/${note.replyId}`"><i class="fas fa-reply"></i></MkA>
 | 
			
		||||
		<Mfm v-if="note.text" :text="note.text" :author="note.user" :i="$i" :custom-emojis="note.emojis"/>
 | 
			
		||||
		<MkA class="rp" v-if="note.renoteId" :to="`/notes/${note.renoteId}`">RN: ...</MkA>
 | 
			
		||||
		<MkA v-if="note.renoteId" class="rp" :to="`/notes/${note.renoteId}`">RN: ...</MkA>
 | 
			
		||||
	</div>
 | 
			
		||||
	<details v-if="note.files.length > 0">
 | 
			
		||||
		<summary>({{ $t('withNFiles', { n: note.files.length }) }})</summary>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,8 +2,8 @@
 | 
			
		|||
<div class="qydbhufi">
 | 
			
		||||
	<XWidgets :edit="edit" :widgets="widgets" @add-widget="addWidget" @remove-widget="removeWidget" @update-widget="updateWidget" @update-widgets="updateWidgets" @exit="edit = false"/>
 | 
			
		||||
 | 
			
		||||
	<button v-if="edit" @click="edit = false" class="_textButton" style="font-size: 0.9em;">{{ $ts.editWidgetsExit }}</button>
 | 
			
		||||
	<button v-else @click="edit = true" class="_textButton" style="font-size: 0.9em;">{{ $ts.editWidgets }}</button>
 | 
			
		||||
	<button v-if="edit" class="_textButton" style="font-size: 0.9em;" @click="edit = false">{{ $ts.editWidgetsExit }}</button>
 | 
			
		||||
	<button v-else class="_textButton" style="font-size: 0.9em;" @click="edit = true">{{ $ts.editWidgets }}</button>
 | 
			
		||||
</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,30 +2,30 @@
 | 
			
		|||
<div class="azykntjl">
 | 
			
		||||
	<div class="body">
 | 
			
		||||
		<div class="left">
 | 
			
		||||
			<MkA class="item index" active-class="active" to="/" exact v-click-anime v-tooltip="$ts.timeline">
 | 
			
		||||
			<MkA v-click-anime v-tooltip="$ts.timeline" class="item index" active-class="active" to="/" exact>
 | 
			
		||||
				<i class="fas fa-home fa-fw"></i>
 | 
			
		||||
			</MkA>
 | 
			
		||||
			<template v-for="item in menu">
 | 
			
		||||
				<div v-if="item === '-'" class="divider"></div>
 | 
			
		||||
				<component v-else-if="menuDef[item] && (menuDef[item].show !== false)" :is="menuDef[item].to ? 'MkA' : 'button'" class="item _button" :class="item" active-class="active" v-on="menuDef[item].action ? { click: menuDef[item].action } : {}" :to="menuDef[item].to" v-click-anime v-tooltip="$ts[menuDef[item].title]">
 | 
			
		||||
				<component :is="menuDef[item].to ? 'MkA' : 'button'" v-else-if="menuDef[item] && (menuDef[item].show !== false)" v-click-anime v-tooltip="$ts[menuDef[item].title]" class="item _button" :class="item" active-class="active" :to="menuDef[item].to" v-on="menuDef[item].action ? { click: menuDef[item].action } : {}">
 | 
			
		||||
					<i class="fa-fw" :class="menuDef[item].icon"></i>
 | 
			
		||||
					<span v-if="menuDef[item].indicated" class="indicator"><i class="fas fa-circle"></i></span>
 | 
			
		||||
				</component>
 | 
			
		||||
			</template>
 | 
			
		||||
			<div class="divider"></div>
 | 
			
		||||
			<MkA v-if="$i.isAdmin || $i.isModerator" class="item" active-class="active" to="/admin" :behavior="settingsWindowed ? 'modalWindow' : null" v-click-anime v-tooltip="$ts.controlPanel">
 | 
			
		||||
			<MkA v-if="$i.isAdmin || $i.isModerator" v-click-anime v-tooltip="$ts.controlPanel" class="item" active-class="active" to="/admin" :behavior="settingsWindowed ? 'modalWindow' : null">
 | 
			
		||||
				<i class="fas fa-door-open fa-fw"></i>
 | 
			
		||||
			</MkA>
 | 
			
		||||
			<button class="item _button" @click="more" v-click-anime>
 | 
			
		||||
			<button v-click-anime class="item _button" @click="more">
 | 
			
		||||
				<i class="fas fa-ellipsis-h fa-fw"></i>
 | 
			
		||||
				<span v-if="otherNavItemIndicated" class="indicator"><i class="fas fa-circle"></i></span>
 | 
			
		||||
			</button>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="right">
 | 
			
		||||
			<MkA class="item" active-class="active" to="/settings" :behavior="settingsWindowed ? 'modalWindow' : null" v-click-anime v-tooltip="$ts.settings">
 | 
			
		||||
			<MkA v-click-anime v-tooltip="$ts.settings" class="item" active-class="active" to="/settings" :behavior="settingsWindowed ? 'modalWindow' : null">
 | 
			
		||||
				<i class="fas fa-cog fa-fw"></i>
 | 
			
		||||
			</MkA>
 | 
			
		||||
			<button class="item _button account" @click="openAccountMenu" v-click-anime>
 | 
			
		||||
			<button v-click-anime class="item _button account" @click="openAccountMenu">
 | 
			
		||||
				<MkAvatar :user="$i" class="avatar"/><MkAcct class="acct" :user="$i"/>
 | 
			
		||||
			</button>
 | 
			
		||||
			<div class="post" @click="post">
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,9 +1,9 @@
 | 
			
		|||
<template>
 | 
			
		||||
<div class="qvzfzxam _narrow_" v-if="component">
 | 
			
		||||
<div v-if="component" class="qvzfzxam _narrow_">
 | 
			
		||||
	<div class="container">
 | 
			
		||||
		<header class="header" @contextmenu.prevent.stop="onContextmenu">
 | 
			
		||||
			<button class="_button" @click="back()" v-if="history.length > 0"><i class="fas fa-chevron-left"></i></button>
 | 
			
		||||
			<button class="_button" style="pointer-events: none;" v-else><!-- マージンのバランスを取るためのダミー --></button>
 | 
			
		||||
			<button v-if="history.length > 0" class="_button" @click="back()"><i class="fas fa-chevron-left"></i></button>
 | 
			
		||||
			<button v-else class="_button" style="pointer-events: none;"><!-- マージンのバランスを取るためのダミー --></button>
 | 
			
		||||
			<span class="title">{{ pageInfo.title }}</span>
 | 
			
		||||
			<button class="_button" @click="close()"><i class="fas fa-times"></i></button>
 | 
			
		||||
		</header>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,38 +1,38 @@
 | 
			
		|||
<template>
 | 
			
		||||
<div class="npcljfve" :class="{ iconOnly }">
 | 
			
		||||
	<button class="item _button account" @click="openAccountMenu" v-click-anime>
 | 
			
		||||
	<button v-click-anime class="item _button account" @click="openAccountMenu">
 | 
			
		||||
		<MkAvatar :user="$i" class="avatar"/><MkAcct class="text" :user="$i"/>
 | 
			
		||||
	</button>
 | 
			
		||||
	<div class="post" @click="post" data-cy-open-post-form>
 | 
			
		||||
	<div class="post" data-cy-open-post-form @click="post">
 | 
			
		||||
		<MkButton class="button" gradate full rounded>
 | 
			
		||||
			<i class="fas fa-pencil-alt fa-fw"></i><span class="text" v-if="!iconOnly">{{ $ts.note }}</span>
 | 
			
		||||
			<i class="fas fa-pencil-alt fa-fw"></i><span v-if="!iconOnly" class="text">{{ $ts.note }}</span>
 | 
			
		||||
		</MkButton>
 | 
			
		||||
	</div>
 | 
			
		||||
	<div class="divider"></div>
 | 
			
		||||
	<MkA class="item index" active-class="active" to="/" exact v-click-anime>
 | 
			
		||||
	<MkA v-click-anime class="item index" active-class="active" to="/" exact>
 | 
			
		||||
		<i class="fas fa-home fa-fw"></i><span class="text">{{ $ts.timeline }}</span>
 | 
			
		||||
	</MkA>
 | 
			
		||||
	<template v-for="item in menu">
 | 
			
		||||
		<div v-if="item === '-'" class="divider"></div>
 | 
			
		||||
		<component v-else-if="menuDef[item] && (menuDef[item].show !== false)" :is="menuDef[item].to ? 'MkA' : 'button'" class="item _button" :class="item" active-class="active" v-on="menuDef[item].action ? { click: menuDef[item].action } : {}" :to="menuDef[item].to" v-click-anime>
 | 
			
		||||
		<component :is="menuDef[item].to ? 'MkA' : 'button'" v-else-if="menuDef[item] && (menuDef[item].show !== false)" v-click-anime class="item _button" :class="item" active-class="active" :to="menuDef[item].to" v-on="menuDef[item].action ? { click: menuDef[item].action } : {}">
 | 
			
		||||
			<i class="fa-fw" :class="menuDef[item].icon"></i><span class="text">{{ $ts[menuDef[item].title] }}</span>
 | 
			
		||||
			<span v-if="menuDef[item].indicated" class="indicator"><i class="fas fa-circle"></i></span>
 | 
			
		||||
		</component>
 | 
			
		||||
	</template>
 | 
			
		||||
	<div class="divider"></div>
 | 
			
		||||
	<MkA v-if="$i.isAdmin || $i.isModerator" class="item" active-class="active" to="/admin" :behavior="settingsWindowed ? 'modalWindow' : null" v-click-anime>
 | 
			
		||||
	<MkA v-if="$i.isAdmin || $i.isModerator" v-click-anime class="item" active-class="active" to="/admin" :behavior="settingsWindowed ? 'modalWindow' : null">
 | 
			
		||||
		<i class="fas fa-door-open fa-fw"></i><span class="text">{{ $ts.controlPanel }}</span>
 | 
			
		||||
	</MkA>
 | 
			
		||||
	<button class="item _button" @click="more" v-click-anime>
 | 
			
		||||
	<button v-click-anime class="item _button" @click="more">
 | 
			
		||||
		<i class="fas fa-ellipsis-h fa-fw"></i><span class="text">{{ $ts.more }}</span>
 | 
			
		||||
		<span v-if="otherNavItemIndicated" class="indicator"><i class="fas fa-circle"></i></span>
 | 
			
		||||
	</button>
 | 
			
		||||
	<MkA class="item" active-class="active" to="/settings" :behavior="settingsWindowed ? 'modalWindow' : null" v-click-anime>
 | 
			
		||||
	<MkA v-click-anime class="item" active-class="active" to="/settings" :behavior="settingsWindowed ? 'modalWindow' : null">
 | 
			
		||||
		<i class="fas fa-cog fa-fw"></i><span class="text">{{ $ts.settings }}</span>
 | 
			
		||||
	</MkA>
 | 
			
		||||
	<div class="divider"></div>
 | 
			
		||||
	<div class="about">
 | 
			
		||||
		<MkA class="link" to="/about" v-click-anime>
 | 
			
		||||
		<MkA v-click-anime class="link" to="/about">
 | 
			
		||||
			<img :src="$instance.iconUrl || $instance.faviconUrl || '/favicon.ico'" class="_ghost"/>
 | 
			
		||||
		</MkA>
 | 
			
		||||
	</div>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,15 +4,15 @@
 | 
			
		|||
 | 
			
		||||
	<div class="columns" :class="{ fullView, withGlobalHeader: showMenuOnTop }">
 | 
			
		||||
		<template v-if="!isMobile">
 | 
			
		||||
			<div class="sidebar" v-if="!showMenuOnTop">
 | 
			
		||||
			<div v-if="!showMenuOnTop" class="sidebar">
 | 
			
		||||
				<XSidebar/>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="widgets left" ref="widgetsLeft" v-else>
 | 
			
		||||
				<XWidgets @mounted="attachSticky('widgetsLeft')" :place="'left'"/>
 | 
			
		||||
			<div v-else ref="widgetsLeft" class="widgets left">
 | 
			
		||||
				<XWidgets :place="'left'" @mounted="attachSticky('widgetsLeft')"/>
 | 
			
		||||
			</div>
 | 
			
		||||
		</template>
 | 
			
		||||
 | 
			
		||||
		<main class="main" @contextmenu.stop="onContextmenu" :style="{ background: pageInfo?.bg }">
 | 
			
		||||
		<main class="main" :style="{ background: pageInfo?.bg }" @contextmenu.stop="onContextmenu">
 | 
			
		||||
			<div class="content">
 | 
			
		||||
				<MkStickyContainer>
 | 
			
		||||
					<template #header><MkHeader v-if="pageInfo && !pageInfo.hideHeader" :info="pageInfo"/></template>
 | 
			
		||||
| 
						 | 
				
			
			@ -27,24 +27,24 @@
 | 
			
		|||
			</div>
 | 
			
		||||
		</main>
 | 
			
		||||
 | 
			
		||||
		<div v-if="isDesktop" class="widgets right" ref="widgetsRight">
 | 
			
		||||
			<XWidgets @mounted="attachSticky('widgetsRight')" :place="null"/>
 | 
			
		||||
		<div v-if="isDesktop" ref="widgetsRight" class="widgets right">
 | 
			
		||||
			<XWidgets :place="null" @mounted="attachSticky('widgetsRight')"/>
 | 
			
		||||
		</div>
 | 
			
		||||
	</div>
 | 
			
		||||
 | 
			
		||||
	<div class="buttons" v-if="isMobile">
 | 
			
		||||
		<button class="button nav _button" @click="showDrawerNav" ref="navButton"><i class="fas fa-bars"></i><span v-if="navIndicated" class="indicator"><i class="fas fa-circle"></i></span></button>
 | 
			
		||||
	<div v-if="isMobile" class="buttons">
 | 
			
		||||
		<button ref="navButton" class="button nav _button" @click="showDrawerNav"><i class="fas fa-bars"></i><span v-if="navIndicated" class="indicator"><i class="fas fa-circle"></i></span></button>
 | 
			
		||||
		<button class="button home _button" @click="$route.name === 'index' ? top() : $router.push('/')"><i class="fas fa-home"></i></button>
 | 
			
		||||
		<button class="button notifications _button" @click="$router.push('/my/notifications')"><i class="fas fa-bell"></i><span v-if="$i.hasUnreadNotification" class="indicator"><i class="fas fa-circle"></i></span></button>
 | 
			
		||||
		<button class="button widget _button" @click="widgetsShowing = true"><i class="fas fa-layer-group"></i></button>
 | 
			
		||||
		<button class="button post _button" @click="post"><i class="fas fa-pencil-alt"></i></button>
 | 
			
		||||
	</div>
 | 
			
		||||
 | 
			
		||||
	<XDrawerSidebar ref="drawerNav" class="sidebar" v-if="isMobile"/>
 | 
			
		||||
	<XDrawerSidebar v-if="isMobile" ref="drawerNav" class="sidebar"/>
 | 
			
		||||
 | 
			
		||||
	<transition name="tray-back">
 | 
			
		||||
		<div class="tray-back _modalBg"
 | 
			
		||||
			v-if="widgetsShowing"
 | 
			
		||||
		<div v-if="widgetsShowing"
 | 
			
		||||
			class="tray-back _modalBg"
 | 
			
		||||
			@click="widgetsShowing = false"
 | 
			
		||||
			@touchstart.passive="widgetsShowing = false"
 | 
			
		||||
		></div>
 | 
			
		||||
| 
						 | 
				
			
			@ -54,7 +54,7 @@
 | 
			
		|||
		<XWidgets v-if="widgetsShowing" class="tray"/>
 | 
			
		||||
	</transition>
 | 
			
		||||
 | 
			
		||||
	<iframe v-if="$store.state.aiChanMode" class="ivnzpscs" ref="live2d" src="https://misskey-dev.github.io/mascot-web/?scale=2&y=1.4"></iframe>
 | 
			
		||||
	<iframe v-if="$store.state.aiChanMode" ref="live2d" class="ivnzpscs" src="https://misskey-dev.github.io/mascot-web/?scale=2&y=1.4"></iframe>
 | 
			
		||||
 | 
			
		||||
	<XCommon/>
 | 
			
		||||
</div>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,8 +3,8 @@
 | 
			
		|||
	<XWidgets class="widgets" :edit="editMode" :widgets="$store.reactiveState.widgets.value.filter(w => w.place === place)" @add-widget="addWidget" @remove-widget="removeWidget" @update-widget="updateWidget" @update-widgets="updateWidgets" @exit="editMode = false"/>
 | 
			
		||||
	<MkAd class="a" :prefer="['square']"/>
 | 
			
		||||
 | 
			
		||||
	<button v-if="editMode" @click="editMode = false" class="_textButton edit" style="font-size: 0.9em;"><i class="fas fa-check"></i> {{ $ts.editWidgetsExit }}</button>
 | 
			
		||||
	<button v-else @click="editMode = true" class="_textButton edit" style="font-size: 0.9em;"><i class="fas fa-pencil-alt"></i> {{ $ts.editWidgets }}</button>
 | 
			
		||||
	<button v-if="editMode" class="_textButton edit" style="font-size: 0.9em;" @click="editMode = false"><i class="fas fa-check"></i> {{ $ts.editWidgetsExit }}</button>
 | 
			
		||||
	<button v-else class="_textButton edit" style="font-size: 0.9em;" @click="editMode = true"><i class="fas fa-pencil-alt"></i> {{ $ts.editWidgets }}</button>
 | 
			
		||||
</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
<template>
 | 
			
		||||
<div class="mk-deck" :class="`${deckStore.reactiveState.columnAlign.value}`" @contextmenu.self.prevent="onContextmenu"
 | 
			
		||||
	:style="{ '--deckMargin': deckStore.reactiveState.columnMargin.value + 'px' }"
 | 
			
		||||
<div class="mk-deck" :class="`${deckStore.reactiveState.columnAlign.value}`" :style="{ '--deckMargin': deckStore.reactiveState.columnMargin.value + 'px' }"
 | 
			
		||||
	@contextmenu.self.prevent="onContextmenu"
 | 
			
		||||
>
 | 
			
		||||
	<XSidebar ref="nav"/>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -13,12 +13,12 @@
 | 
			
		|||
			<DeckColumnCore v-for="id in ids" :ref="id" :key="id" :column="columns.find(c => c.id === id)" :is-stacked="true" @parent-focus="moveFocus(id, $event)"/>
 | 
			
		||||
		</section>
 | 
			
		||||
		<DeckColumnCore v-else
 | 
			
		||||
			class="column"
 | 
			
		||||
			:ref="ids[0]"
 | 
			
		||||
			:key="ids[0]"
 | 
			
		||||
			class="column"
 | 
			
		||||
			:column="columns.find(c => c.id === ids[0])"
 | 
			
		||||
			@parent-focus="moveFocus(ids[0], $event)"
 | 
			
		||||
			:style="columns.find(c => c.id === ids[0]).flexible ? { flex: 1, minWidth: '350px' } : { width: columns.find(c => c.id === ids[0]).width + 'px' }"
 | 
			
		||||
			@parent-focus="moveFocus(ids[0], $event)"
 | 
			
		||||
		/>
 | 
			
		||||
	</template>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,11 +1,11 @@
 | 
			
		|||
<template>
 | 
			
		||||
<!-- sectionを利用しているのは、deck.vue側でcolumnに対してfirst-of-typeを効かせるため -->
 | 
			
		||||
<section class="dnpfarvg _panel _narrow_" :class="{ paged: isMainColumn, naked, active, isStacked, draghover, dragging, dropready }"
 | 
			
		||||
<section v-hotkey="keymap" class="dnpfarvg _panel _narrow_"
 | 
			
		||||
	:class="{ paged: isMainColumn, naked, active, isStacked, draghover, dragging, dropready }"
 | 
			
		||||
	:style="{ '--deckColumnHeaderHeight': deckStore.reactiveState.columnHeaderHeight.value + 'px' }"
 | 
			
		||||
	@dragover.prevent.stop="onDragover"
 | 
			
		||||
	@dragleave="onDragleave"
 | 
			
		||||
	@drop.prevent.stop="onDrop"
 | 
			
		||||
	v-hotkey="keymap"
 | 
			
		||||
	:style="{ '--deckColumnHeaderHeight': deckStore.reactiveState.columnHeaderHeight.value + 'px' }"
 | 
			
		||||
>
 | 
			
		||||
	<header :class="{ indicated }"
 | 
			
		||||
		draggable="true"
 | 
			
		||||
| 
						 | 
				
			
			@ -14,7 +14,7 @@
 | 
			
		|||
		@dragend="onDragend"
 | 
			
		||||
		@contextmenu.prevent.stop="onContextmenu"
 | 
			
		||||
	>
 | 
			
		||||
		<button class="toggleActive _button" @click="toggleActive" v-if="isStacked && !isMainColumn">
 | 
			
		||||
		<button v-if="isStacked && !isMainColumn" class="toggleActive _button" @click="toggleActive">
 | 
			
		||||
			<template v-if="active"><i class="fas fa-angle-up"></i></template>
 | 
			
		||||
			<template v-else><i class="fas fa-angle-down"></i></template>
 | 
			
		||||
		</button>
 | 
			
		||||
| 
						 | 
				
			
			@ -22,9 +22,9 @@
 | 
			
		|||
			<slot name="action"></slot>
 | 
			
		||||
		</div>
 | 
			
		||||
		<span class="header"><slot name="header"></slot></span>
 | 
			
		||||
		<button v-if="func" class="menu _button" v-tooltip="func.title" @click.stop="func.handler"><i :class="func.icon || 'fas fa-cog'"></i></button>
 | 
			
		||||
		<button v-if="func" v-tooltip="func.title" class="menu _button" @click.stop="func.handler"><i :class="func.icon || 'fas fa-cog'"></i></button>
 | 
			
		||||
	</header>
 | 
			
		||||
	<div ref="body" v-show="active">
 | 
			
		||||
	<div v-show="active" ref="body">
 | 
			
		||||
		<slot></slot>
 | 
			
		||||
	</div>
 | 
			
		||||
</section>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,14 +8,14 @@
 | 
			
		|||
		<span style="margin-left: 8px;">{{ column.name }}</span>
 | 
			
		||||
	</template>
 | 
			
		||||
 | 
			
		||||
	<div class="iwaalbte" v-if="disabled">
 | 
			
		||||
	<div v-if="disabled" class="iwaalbte">
 | 
			
		||||
		<p>
 | 
			
		||||
			<i class="fas fa-minus-circle"></i>
 | 
			
		||||
			{{ $t('disabled-timeline.title') }}
 | 
			
		||||
		</p>
 | 
			
		||||
		<p class="desc">{{ $t('disabled-timeline.description') }}</p>
 | 
			
		||||
	</div>
 | 
			
		||||
	<XTimeline v-else-if="column.tl" ref="timeline" :src="column.tl" @after="() => $emit('loaded')" @queue="queueUpdated" @note="onNote" :key="column.tl"/>
 | 
			
		||||
	<XTimeline v-else-if="column.tl" ref="timeline" :key="column.tl" :src="column.tl" @after="() => $emit('loaded')" @queue="queueUpdated" @note="onNote"/>
 | 
			
		||||
</XColumn>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,7 @@
 | 
			
		|||
<div class="mk-app" :class="{ wallpaper }">
 | 
			
		||||
	<XSidebar ref="nav" class="sidebar"/>
 | 
			
		||||
 | 
			
		||||
	<div class="contents" ref="contents" @contextmenu.stop="onContextmenu" :style="{ background: pageInfo?.bg }">
 | 
			
		||||
	<div ref="contents" class="contents" :style="{ background: pageInfo?.bg }" @contextmenu.stop="onContextmenu">
 | 
			
		||||
		<main ref="main">
 | 
			
		||||
			<div class="content">
 | 
			
		||||
				<MkStickyContainer>
 | 
			
		||||
| 
						 | 
				
			
			@ -20,14 +20,14 @@
 | 
			
		|||
		</main>
 | 
			
		||||
	</div>
 | 
			
		||||
 | 
			
		||||
	<XSide v-if="isDesktop" class="side" ref="side"/>
 | 
			
		||||
	<XSide v-if="isDesktop" ref="side" class="side"/>
 | 
			
		||||
 | 
			
		||||
	<div v-if="isDesktop" class="widgets" ref="widgets">
 | 
			
		||||
	<div v-if="isDesktop" ref="widgets" class="widgets">
 | 
			
		||||
		<XWidgets @mounted="attachSticky"/>
 | 
			
		||||
	</div>
 | 
			
		||||
 | 
			
		||||
	<div class="buttons" :class="{ navHidden }">
 | 
			
		||||
		<button class="button nav _button" @click="showNav" ref="navButton"><i class="fas fa-bars"></i><span v-if="navIndicated" class="indicator"><i class="fas fa-circle"></i></span></button>
 | 
			
		||||
		<button ref="navButton" class="button nav _button" @click="showNav"><i class="fas fa-bars"></i><span v-if="navIndicated" class="indicator"><i class="fas fa-circle"></i></span></button>
 | 
			
		||||
		<button class="button home _button" @click="$route.name === 'index' ? top() : $router.push('/')"><i class="fas fa-home"></i></button>
 | 
			
		||||
		<button class="button notifications _button" @click="$router.push('/my/notifications')"><i class="fas fa-bell"></i><span v-if="$i.hasUnreadNotification" class="indicator"><i class="fas fa-circle"></i></span></button>
 | 
			
		||||
		<button class="button widget _button" @click="widgetsShowing = true"><i class="fas fa-layer-group"></i></button>
 | 
			
		||||
| 
						 | 
				
			
			@ -37,8 +37,8 @@
 | 
			
		|||
	<button class="widgetButton _button" :class="{ navHidden }" @click="widgetsShowing = true"><i class="fas fa-layer-group"></i></button>
 | 
			
		||||
 | 
			
		||||
	<transition name="tray-back">
 | 
			
		||||
		<div class="tray-back _modalBg"
 | 
			
		||||
			v-if="widgetsShowing"
 | 
			
		||||
		<div v-if="widgetsShowing"
 | 
			
		||||
			class="tray-back _modalBg"
 | 
			
		||||
			@click="widgetsShowing = false"
 | 
			
		||||
			@touchstart.passive="widgetsShowing = false"
 | 
			
		||||
		></div>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,8 +2,8 @@
 | 
			
		|||
<div class="efzpzdvf">
 | 
			
		||||
	<XWidgets :edit="editMode" :widgets="$store.reactiveState.widgets.value" @add-widget="addWidget" @remove-widget="removeWidget" @update-widget="updateWidget" @update-widgets="updateWidgets" @exit="editMode = false"/>
 | 
			
		||||
 | 
			
		||||
	<button v-if="editMode" @click="editMode = false" class="_textButton" style="font-size: 0.9em;"><i class="fas fa-check"></i> {{ $ts.editWidgetsExit }}</button>
 | 
			
		||||
	<button v-else @click="editMode = true" class="_textButton" style="font-size: 0.9em;"><i class="fas fa-pencil-alt"></i> {{ $ts.editWidgets }}</button>
 | 
			
		||||
	<button v-if="editMode" class="_textButton" style="font-size: 0.9em;" @click="editMode = false"><i class="fas fa-check"></i> {{ $ts.editWidgetsExit }}</button>
 | 
			
		||||
	<button v-else class="_textButton" style="font-size: 0.9em;" @click="editMode = true"><i class="fas fa-pencil-alt"></i> {{ $ts.editWidgets }}</button>
 | 
			
		||||
</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,9 +1,9 @@
 | 
			
		|||
<template>
 | 
			
		||||
<div class="mk-app">
 | 
			
		||||
	<div class="banner" v-if="$route.path === '/'" :style="{ backgroundImage: `url(${ $instance.bannerUrl })` }">
 | 
			
		||||
	<div v-if="$route.path === '/'" class="banner" :style="{ backgroundImage: `url(${ $instance.bannerUrl })` }">
 | 
			
		||||
		<div>
 | 
			
		||||
			<h1 v-if="meta"><img class="logo" v-if="meta.logoImageUrl" :src="meta.logoImageUrl"><span v-else class="text">{{ instanceName }}</span></h1>
 | 
			
		||||
			<div class="about" v-if="meta">
 | 
			
		||||
			<h1 v-if="meta"><img v-if="meta.logoImageUrl" class="logo" :src="meta.logoImageUrl"><span v-else class="text">{{ instanceName }}</span></h1>
 | 
			
		||||
			<div v-if="meta" class="about">
 | 
			
		||||
				<div class="desc" v-html="meta.description || $ts.introMisskey"></div>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="action">
 | 
			
		||||
| 
						 | 
				
			
			@ -12,15 +12,15 @@
 | 
			
		|||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
	</div>
 | 
			
		||||
	<div class="banner-mini" v-else :style="{ backgroundImage: `url(${ $instance.bannerUrl })` }">
 | 
			
		||||
	<div v-else class="banner-mini" :style="{ backgroundImage: `url(${ $instance.bannerUrl })` }">
 | 
			
		||||
		<div>
 | 
			
		||||
			<h1 v-if="meta"><img class="logo" v-if="meta.logoImageUrl" :src="meta.logoImageUrl"><span v-else class="text">{{ instanceName }}</span></h1>
 | 
			
		||||
			<h1 v-if="meta"><img v-if="meta.logoImageUrl" class="logo" :src="meta.logoImageUrl"><span v-else class="text">{{ instanceName }}</span></h1>
 | 
			
		||||
		</div>
 | 
			
		||||
	</div>
 | 
			
		||||
 | 
			
		||||
	<div class="main">
 | 
			
		||||
		<div class="contents" ref="contents" :class="{ wallpaper }">
 | 
			
		||||
			<header class="header" ref="header" v-show="$route.path !== '/'">
 | 
			
		||||
		<div ref="contents" class="contents" :class="{ wallpaper }">
 | 
			
		||||
			<header v-show="$route.path !== '/'" ref="header" class="header">
 | 
			
		||||
				<XHeader :info="pageInfo"/>
 | 
			
		||||
			</header>
 | 
			
		||||
			<main ref="main">
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,15 +2,15 @@
 | 
			
		|||
<div class="mk-app">
 | 
			
		||||
	<a v-if="root" href="https://github.com/misskey-dev/misskey" target="_blank" class="github-corner" aria-label="View source on GitHub"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:var(--panel); color:var(--fg); position: fixed; z-index: 10; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a>
 | 
			
		||||
 | 
			
		||||
	<div class="side" v-if="!narrow && !root">
 | 
			
		||||
	<div v-if="!narrow && !root" class="side">
 | 
			
		||||
		<XKanban class="kanban" full/>
 | 
			
		||||
	</div>
 | 
			
		||||
 | 
			
		||||
	<div class="main">
 | 
			
		||||
		<XKanban class="banner" :powered-by="root" v-if="narrow && !root"/>
 | 
			
		||||
		<XKanban v-if="narrow && !root" class="banner" :powered-by="root"/>
 | 
			
		||||
 | 
			
		||||
		<div class="contents">
 | 
			
		||||
			<XHeader class="header" :info="pageInfo" v-if="!root"/>
 | 
			
		||||
			<XHeader v-if="!root" class="header" :info="pageInfo"/>
 | 
			
		||||
			<main>
 | 
			
		||||
				<router-view v-slot="{ Component }">
 | 
			
		||||
					<transition :name="$store.state.animation ? 'page' : ''" mode="out-in" @enter="onTransition">
 | 
			
		||||
| 
						 | 
				
			
			@ -18,7 +18,7 @@
 | 
			
		|||
					</transition>
 | 
			
		||||
				</router-view>
 | 
			
		||||
			</main>
 | 
			
		||||
			<div class="powered-by" v-if="!root">
 | 
			
		||||
			<div v-if="!root" class="powered-by">
 | 
			
		||||
				<b><MkA to="/">{{ host }}</MkA></b>
 | 
			
		||||
				<small>Powered by <a href="https://github.com/misskey-dev/misskey" target="_blank">Misskey</a></small>
 | 
			
		||||
			</div>
 | 
			
		||||
| 
						 | 
				
			
			@ -26,8 +26,8 @@
 | 
			
		|||
	</div>
 | 
			
		||||
 | 
			
		||||
	<transition name="tray-back">
 | 
			
		||||
		<div class="menu-back _modalBg"
 | 
			
		||||
			v-if="showMenu"
 | 
			
		||||
		<div v-if="showMenu"
 | 
			
		||||
			class="menu-back _modalBg"
 | 
			
		||||
			@click="showMenu = false"
 | 
			
		||||
			@touchstart.passive="showMenu = false"
 | 
			
		||||
		></div>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,19 +1,19 @@
 | 
			
		|||
<template>
 | 
			
		||||
<div class="sqxihjet">
 | 
			
		||||
	<div class="wide" v-if="narrow === false">
 | 
			
		||||
	<div v-if="narrow === false" class="wide">
 | 
			
		||||
		<div class="content">
 | 
			
		||||
			<MkA to="/" class="link" active-class="active"><i class="fas fa-home icon"></i>{{ $ts.home }}</MkA>
 | 
			
		||||
			<MkA to="/explore" class="link" active-class="active"><i class="fas fa-hashtag icon"></i>{{ $ts.explore }}</MkA>
 | 
			
		||||
			<MkA to="/featured" class="link" active-class="active"><i class="fas fa-fire-alt icon"></i>{{ $ts.featured }}</MkA>
 | 
			
		||||
			<MkA to="/channels" class="link" active-class="active"><i class="fas fa-satellite-dish icon"></i>{{ $ts.channel }}</MkA>
 | 
			
		||||
			<div class="page active link" v-if="info">
 | 
			
		||||
			<div v-if="info" class="page active link">
 | 
			
		||||
				<div class="title">
 | 
			
		||||
					<i v-if="info.icon" class="icon" :class="info.icon"></i>
 | 
			
		||||
					<MkAvatar v-else-if="info.avatar" class="avatar" :user="info.avatar" :disable-preview="true" :show-indicator="true"/>
 | 
			
		||||
					<span v-if="info.title" class="text">{{ info.title }}</span>
 | 
			
		||||
					<MkUserName v-else-if="info.userName" :user="info.userName" :nowrap="false" class="text"/>
 | 
			
		||||
				</div>
 | 
			
		||||
				<button class="_button action" v-if="info.action" @click.stop="info.action.handler"><!-- TODO --></button>
 | 
			
		||||
				<button v-if="info.action" class="_button action" @click.stop="info.action.handler"><!-- TODO --></button>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="right">
 | 
			
		||||
				<button class="_button search" @click="search()"><i class="fas fa-search icon"></i><span>{{ $ts.search }}</span></button>
 | 
			
		||||
| 
						 | 
				
			
			@ -22,17 +22,17 @@
 | 
			
		|||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
	</div>
 | 
			
		||||
	<div class="narrow" v-else-if="narrow === true">
 | 
			
		||||
	<div v-else-if="narrow === true" class="narrow">
 | 
			
		||||
		<button class="menu _button" @click="$parent.showMenu = true">
 | 
			
		||||
			<i class="fas fa-bars icon"></i>
 | 
			
		||||
		</button>
 | 
			
		||||
		<div class="title" v-if="info">
 | 
			
		||||
		<div v-if="info" class="title">
 | 
			
		||||
			<i v-if="info.icon" class="icon" :class="info.icon"></i>
 | 
			
		||||
			<MkAvatar v-else-if="info.avatar" class="avatar" :user="info.avatar" :disable-preview="true" :show-indicator="true"/>
 | 
			
		||||
			<span v-if="info.title" class="text">{{ info.title }}</span>
 | 
			
		||||
			<MkUserName v-else-if="info.userName" :user="info.userName" :nowrap="false" class="text"/>
 | 
			
		||||
		</div>
 | 
			
		||||
		<button class="action _button" v-if="info && info.action" @click.stop="info.action.handler">
 | 
			
		||||
		<button v-if="info && info.action" class="action _button" @click.stop="info.action.handler">
 | 
			
		||||
			<!-- TODO -->
 | 
			
		||||
		</button>
 | 
			
		||||
	</div>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,10 @@
 | 
			
		|||
	<div class="contents">
 | 
			
		||||
		<div class="wrapper">
 | 
			
		||||
			<h1 v-if="meta" :class="{ full }">
 | 
			
		||||
				<MkA to="/" class="link"><img class="logo" v-if="meta.logoImageUrl" :src="meta.logoImageUrl"><span v-else class="text">{{ instanceName }}</span></MkA>
 | 
			
		||||
				<MkA to="/" class="link"><img v-if="meta.logoImageUrl" class="logo" :src="meta.logoImageUrl"><span v-else class="text">{{ instanceName }}</span></MkA>
 | 
			
		||||
			</h1>
 | 
			
		||||
			<template v-if="full">
 | 
			
		||||
				<div class="about" v-if="meta">
 | 
			
		||||
				<div v-if="meta" class="about">
 | 
			
		||||
					<div class="desc" v-html="meta.description || $ts.introMisskey"></div>
 | 
			
		||||
				</div>
 | 
			
		||||
				<div class="action">
 | 
			
		||||
| 
						 | 
				
			
			@ -16,8 +16,8 @@
 | 
			
		|||
				</div>
 | 
			
		||||
				<div class="announcements panel">
 | 
			
		||||
					<header>{{ $ts.announcements }}</header>
 | 
			
		||||
					<MkPagination :pagination="announcements" #default="{items}" class="list">
 | 
			
		||||
						<section class="item" v-for="announcement in items" :key="announcement.id">
 | 
			
		||||
					<MkPagination #default="{items}" :pagination="announcements" class="list">
 | 
			
		||||
						<section v-for="announcement in items" :key="announcement.id" class="item">
 | 
			
		||||
							<div class="title">{{ announcement.title }}</div>
 | 
			
		||||
							<div class="content">
 | 
			
		||||
								<Mfm :text="announcement.text"/>
 | 
			
		||||
| 
						 | 
				
			
			@ -26,7 +26,7 @@
 | 
			
		|||
						</section>
 | 
			
		||||
					</MkPagination>
 | 
			
		||||
				</div>
 | 
			
		||||
				<div class="powered-by" v-if="poweredBy">
 | 
			
		||||
				<div v-if="poweredBy" class="powered-by">
 | 
			
		||||
					<b><MkA to="/">{{ host }}</MkA></b>
 | 
			
		||||
					<small>Powered by <a href="https://github.com/misskey-dev/misskey" target="_blank">Misskey</a></small>
 | 
			
		||||
				</div>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue