chore: lint
This commit is contained in:
parent
0d92fa303b
commit
25a1fa341a
35 changed files with 128 additions and 118 deletions
|
@ -1,11 +1,11 @@
|
|||
import type { entities } from "firefish-js";
|
||||
import { defineAsyncComponent } from "vue";
|
||||
import { i18n } from "./i18n";
|
||||
import { apiUrl } from "@/config";
|
||||
import { me } from "@/me";
|
||||
import { alert, api, popup, popupMenu, waiting } from "@/os";
|
||||
import { del, get, set } from "@/scripts/idb-proxy";
|
||||
import { reloadChannel, unisonReload } from "@/scripts/unison-reload";
|
||||
import type { entities } from "firefish-js";
|
||||
import { defineAsyncComponent } from "vue";
|
||||
import { i18n } from "./i18n";
|
||||
|
||||
// TODO: 他のタブと永続化されたstateを同期
|
||||
|
||||
|
|
|
@ -166,21 +166,21 @@ const texts = computed(() => {
|
|||
return angles;
|
||||
});
|
||||
|
||||
let enabled = true,
|
||||
majorGraduationColor = ref<string>(),
|
||||
// let minorGraduationColor = $ref<string>();
|
||||
sHandColor = ref<string>(),
|
||||
mHandColor = ref<string>(),
|
||||
hHandColor = ref<string>(),
|
||||
nowColor = ref<string>(),
|
||||
h = ref<number>(0),
|
||||
m = ref<number>(0),
|
||||
s = ref<number>(0),
|
||||
hAngle = ref<number>(0),
|
||||
mAngle = ref<number>(0),
|
||||
sAngle = ref<number>(0),
|
||||
disableSAnimate = ref(false),
|
||||
sOneRound = false;
|
||||
let enabled = true;
|
||||
const majorGraduationColor = ref<string>();
|
||||
// let minorGraduationColor = $ref<string>();
|
||||
const sHandColor = ref<string>();
|
||||
const mHandColor = ref<string>();
|
||||
const hHandColor = ref<string>();
|
||||
const nowColor = ref<string>();
|
||||
const h = ref<number>(0);
|
||||
const m = ref<number>(0);
|
||||
const s = ref<number>(0);
|
||||
const hAngle = ref<number>(0);
|
||||
const mAngle = ref<number>(0);
|
||||
const sAngle = ref<number>(0);
|
||||
const disableSAnimate = ref(false);
|
||||
let sOneRound = false;
|
||||
|
||||
function tick() {
|
||||
const now = new Date();
|
||||
|
|
|
@ -128,20 +128,20 @@ const getColor = (i) => {
|
|||
};
|
||||
|
||||
const now = new Date();
|
||||
let chartInstance: Chart = null,
|
||||
chartData: {
|
||||
series: {
|
||||
name: string;
|
||||
type: "line" | "area";
|
||||
color?: string;
|
||||
dashed?: boolean;
|
||||
hidden?: boolean;
|
||||
data: {
|
||||
x: number;
|
||||
y: number;
|
||||
}[];
|
||||
let chartInstance: Chart = null;
|
||||
let chartData: {
|
||||
series: {
|
||||
name: string;
|
||||
type: "line" | "area";
|
||||
color?: string;
|
||||
dashed?: boolean;
|
||||
hidden?: boolean;
|
||||
data: {
|
||||
x: number;
|
||||
y: number;
|
||||
}[];
|
||||
} = null;
|
||||
}[];
|
||||
} = null;
|
||||
|
||||
const chartEl = ref<HTMLCanvasElement>(null);
|
||||
const fetching = ref(true);
|
||||
|
|
|
@ -33,8 +33,8 @@ const rootEl = ref<HTMLDivElement>();
|
|||
const zIndex = ref<number>(os.claimZIndex("high"));
|
||||
|
||||
onMounted(() => {
|
||||
let left = props.ev.pageX + 1, // 間違って右ダブルクリックした場合に意図せずアイテムがクリックされるのを防ぐため + 1
|
||||
top = props.ev.pageY + 1; // 間違って右ダブルクリックした場合に意図せずアイテムがクリックされるのを防ぐため + 1
|
||||
let left = props.ev.pageX + 1; // 間違って右ダブルクリックした場合に意図せずアイテムがクリックされるのを防ぐため + 1
|
||||
let top = props.ev.pageY + 1; // 間違って右ダブルクリックした場合に意図せずアイテムがクリックされるのを防ぐため + 1
|
||||
|
||||
const width = rootEl.value.offsetWidth;
|
||||
const height = rootEl.value.offsetHeight;
|
||||
|
|
|
@ -64,8 +64,8 @@ const imgUrl = `${url}/proxy/image.webp?${query({
|
|||
})}`;
|
||||
const dialogEl = ref<InstanceType<typeof XModalWindow>>();
|
||||
const imgEl = ref<HTMLImageElement>();
|
||||
let cropper: Cropper | null = null,
|
||||
loading = ref(true);
|
||||
let cropper: Cropper | null = null;
|
||||
const loading = ref(true);
|
||||
|
||||
const ok = async () => {
|
||||
const promise = new Promise<entities.DriveFile>(async (res) => {
|
||||
|
|
|
@ -22,14 +22,14 @@
|
|||
@load="onLoad"
|
||||
/>
|
||||
<i
|
||||
class="alt-indicator"
|
||||
:class="icon('ph-subtitles')"
|
||||
v-if="alt && showAltIndicator"
|
||||
v-tooltip.noLabel="
|
||||
`${i18n.ts.alt}: ${
|
||||
alt.length > 200 ? alt.trim().slice(0, 200) + '...' : alt.trim()
|
||||
}`
|
||||
"
|
||||
class="alt-indicator"
|
||||
:class="icon('ph-subtitles')"
|
||||
></i>
|
||||
</template>
|
||||
|
||||
|
|
|
@ -168,10 +168,10 @@ function load() {
|
|||
|
||||
onMounted(load);
|
||||
|
||||
let currentRow = 0,
|
||||
rowHeight = 0,
|
||||
buffer = null,
|
||||
isSeeking = false;
|
||||
let currentRow = 0;
|
||||
let rowHeight = 0;
|
||||
let buffer = null;
|
||||
const isSeeking = false;
|
||||
|
||||
function captionPopup() {
|
||||
os.alert({
|
||||
|
|
|
@ -235,7 +235,8 @@ const align = () => {
|
|||
const width = content.value!.offsetWidth;
|
||||
const height = content.value!.offsetHeight;
|
||||
|
||||
let left, top;
|
||||
let left;
|
||||
let top;
|
||||
|
||||
const x = srcRect.left + (fixed.value ? 0 : window.pageXOffset);
|
||||
const y = srcRect.top + (fixed.value ? 0 : window.pageYOffset);
|
||||
|
@ -314,8 +315,8 @@ const align = () => {
|
|||
left = 0;
|
||||
}
|
||||
|
||||
let transformOriginX = "center",
|
||||
transformOriginY = "center";
|
||||
let transformOriginX = "center";
|
||||
let transformOriginY = "center";
|
||||
|
||||
if (
|
||||
top >=
|
||||
|
|
|
@ -310,7 +310,8 @@ const defaultReaction = ["⭐", "👍", "❤️"].includes(instance.defaultReact
|
|||
? instance.defaultReaction
|
||||
: "⭐";
|
||||
|
||||
let readObserver: IntersectionObserver | undefined, connection;
|
||||
let readObserver: IntersectionObserver | undefined;
|
||||
let connection;
|
||||
|
||||
onMounted(() => {
|
||||
if (!props.notification.isRead) {
|
||||
|
|
|
@ -331,8 +331,8 @@ import { vibrate } from "@/scripts/vibrate";
|
|||
import { langmap } from "@/scripts/langmap";
|
||||
import {
|
||||
detectLanguage,
|
||||
isSupportedLang,
|
||||
isSameLanguage,
|
||||
isSupportedLang,
|
||||
languageContains,
|
||||
parentLanguage,
|
||||
} from "@/scripts/language-utils";
|
||||
|
|
|
@ -45,7 +45,7 @@ const isRefreshing = ref(false);
|
|||
const pullDistance = ref(0);
|
||||
|
||||
let disabled = false;
|
||||
let supportPointerDesktop = false;
|
||||
const supportPointerDesktop = false;
|
||||
let startScreenY: number | null = null;
|
||||
|
||||
const rootEl = shallowRef<HTMLDivElement>();
|
||||
|
|
|
@ -79,8 +79,8 @@ const el = ref<HTMLElement>();
|
|||
const width = ref(0);
|
||||
const height = ref(0);
|
||||
const colors = ["#eb6f92", "#9ccfd8", "#f6c177", "#f6c177", "#f6c177"];
|
||||
let stop = false,
|
||||
ro: ResizeObserver | undefined;
|
||||
let stop = false;
|
||||
let ro: ResizeObserver | undefined;
|
||||
|
||||
onMounted(() => {
|
||||
if (!reducedMotion()) {
|
||||
|
|
|
@ -174,12 +174,12 @@ provide("inWindow", true);
|
|||
|
||||
const rootEl = ref<HTMLElement | null>();
|
||||
const showing = ref(true);
|
||||
let beforeClickedAt = 0,
|
||||
maximized = ref(false),
|
||||
unMaximizedTop = "",
|
||||
unMaximizedLeft = "",
|
||||
unMaximizedWidth = "",
|
||||
unMaximizedHeight = "";
|
||||
let beforeClickedAt = 0;
|
||||
const maximized = ref(false);
|
||||
let unMaximizedTop = "";
|
||||
let unMaximizedLeft = "";
|
||||
let unMaximizedWidth = "";
|
||||
let unMaximizedHeight = "";
|
||||
|
||||
function close() {
|
||||
showing.value = false;
|
||||
|
@ -280,8 +280,8 @@ function onHeaderMousedown(evt: MouseEvent) {
|
|||
const windowHeight = main.offsetHeight;
|
||||
|
||||
function move(x: number, y: number) {
|
||||
let moveLeft = x - moveBaseX,
|
||||
moveTop = y - moveBaseY;
|
||||
let moveLeft = x - moveBaseX;
|
||||
let moveTop = y - moveBaseY;
|
||||
|
||||
// 下はみ出し
|
||||
if (moveTop + windowHeight > browserHeight)
|
||||
|
|
|
@ -24,10 +24,10 @@ const props = withDefaults(
|
|||
},
|
||||
);
|
||||
|
||||
let ro: ResizeObserver,
|
||||
root = ref<HTMLElement>(),
|
||||
content = ref<HTMLElement>(),
|
||||
margin = ref(0);
|
||||
let ro: ResizeObserver;
|
||||
const root = ref<HTMLElement>();
|
||||
const content = ref<HTMLElement>();
|
||||
const margin = ref(0);
|
||||
const shouldSpacerMin = inject("shouldSpacerMin", false);
|
||||
|
||||
const adjust = (rect: { width: number; height: number }) => {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { locale } from "@/config";
|
||||
import { markRaw } from "vue";
|
||||
import { locale } from "@/config";
|
||||
|
||||
class I18n<T extends Record<string, any>> {
|
||||
public ts: T;
|
||||
|
|
|
@ -22,7 +22,6 @@ if (accounts) {
|
|||
}
|
||||
// #endregion
|
||||
|
||||
import { set } from "@/scripts/idb-proxy";
|
||||
import {
|
||||
computed,
|
||||
createApp,
|
||||
|
@ -31,6 +30,7 @@ import {
|
|||
version as vueVersion,
|
||||
watch,
|
||||
} from "vue";
|
||||
import { set } from "@/scripts/idb-proxy";
|
||||
|
||||
import { refreshAccount, signIn, signOut, updateAccount } from "@/account";
|
||||
import components from "@/components";
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import type { Account } from "@/account";
|
||||
import { reactive } from "vue";
|
||||
import type { Account } from "@/account";
|
||||
|
||||
const accountData = localStorage.getItem("account");
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import { computed, reactive } from "vue";
|
||||
import { ui } from "@/config";
|
||||
import { i18n } from "@/i18n";
|
||||
import { isSignedIn, me } from "@/me";
|
||||
|
@ -5,7 +6,6 @@ import * as os from "@/os";
|
|||
import icon from "@/scripts/icon";
|
||||
import { search } from "@/scripts/search";
|
||||
import { unisonReload } from "@/scripts/unison-reload";
|
||||
import { computed, reactive } from "vue";
|
||||
|
||||
export const navbarItemDef = reactive({
|
||||
notifications: {
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
// NIRAX --- A lightweight router
|
||||
|
||||
import { pleaseLogin } from "@/scripts/please-login";
|
||||
import { safeURIDecode } from "@/scripts/safe-uri-decode";
|
||||
import { EventEmitter } from "eventemitter3";
|
||||
import type { Component, ShallowRef } from "vue";
|
||||
import { shallowRef } from "vue";
|
||||
import { safeURIDecode } from "@/scripts/safe-uri-decode";
|
||||
import { pleaseLogin } from "@/scripts/please-login";
|
||||
|
||||
interface RouteDef {
|
||||
path: string;
|
||||
|
@ -93,8 +93,8 @@ export class Router extends EventEmitter<{
|
|||
}
|
||||
|
||||
public resolve(path: string): Resolved | null {
|
||||
let queryString: string | null = null,
|
||||
hash: string | null = null;
|
||||
let queryString: string | null = null;
|
||||
let hash: string | null = null;
|
||||
if (path[0] === "/") path = path.substring(1);
|
||||
if (path.includes("#")) {
|
||||
hash = path.substring(path.indexOf("#") + 1);
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
// TODO: なんでもかんでもos.tsに突っ込むのやめたいのでよしなに分割する
|
||||
|
||||
import MkDialog from "@/components/MkDialog.vue";
|
||||
import MkPostFormDialog from "@/components/MkPostFormDialog.vue";
|
||||
import MkToast from "@/components/MkToast.vue";
|
||||
import MkWaitingDialog from "@/components/MkWaitingDialog.vue";
|
||||
import { url, apiUrl } from "@/config";
|
||||
import { me } from "@/me";
|
||||
import type { MenuItem } from "@/types/menu";
|
||||
import { EventEmitter } from "eventemitter3";
|
||||
import { type entities, api as firefishApi } from "firefish-js";
|
||||
import insertTextAtCursor from "insert-text-at-cursor";
|
||||
import type { Component, Ref } from "vue";
|
||||
import { defineAsyncComponent, markRaw, ref } from "vue";
|
||||
import { i18n } from "./i18n";
|
||||
import MkDialog from "@/components/MkDialog.vue";
|
||||
import MkPostFormDialog from "@/components/MkPostFormDialog.vue";
|
||||
import MkToast from "@/components/MkToast.vue";
|
||||
import MkWaitingDialog from "@/components/MkWaitingDialog.vue";
|
||||
import { apiUrl, url } from "@/config";
|
||||
import { me } from "@/me";
|
||||
import type { MenuItem } from "@/types/menu";
|
||||
|
||||
export const pendingApiRequestsCount = ref(0);
|
||||
|
||||
|
@ -776,8 +776,8 @@ type AwaitType<T> = T extends Promise<infer U>
|
|||
: T extends (...args: any[]) => Promise<infer V>
|
||||
? V
|
||||
: T;
|
||||
let openingEmojiPicker: AwaitType<ReturnType<typeof popup>> | null = null,
|
||||
activeTextarea: HTMLTextAreaElement | HTMLInputElement | null = null;
|
||||
let openingEmojiPicker: AwaitType<ReturnType<typeof popup>> | null = null;
|
||||
let activeTextarea: HTMLTextAreaElement | HTMLInputElement | null = null;
|
||||
export async function openEmojiPicker(
|
||||
src?: HTMLElement,
|
||||
opts,
|
||||
|
|
|
@ -4,11 +4,11 @@
|
|||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { defineAsyncComponent, onMounted, ref } from "vue";
|
||||
import * as os from "@/os";
|
||||
import { useRouter } from "@/router";
|
||||
import { userPage } from "@/filters/user";
|
||||
import { notePage } from "@/filters/note";
|
||||
import { onMounted, ref, defineAsyncComponent } from "vue";
|
||||
const XNotFound = defineAsyncComponent(() => import("./not-found.vue"));
|
||||
|
||||
const err = ref(false);
|
||||
|
|
|
@ -72,8 +72,8 @@ const headerTabs = computed(() => []);
|
|||
|
||||
const list = ref<typeof MkPagination | null>(null);
|
||||
|
||||
let isCached = false,
|
||||
refreshTimer: number | null = null;
|
||||
let isCached = false;
|
||||
let refreshTimer: number | null = null;
|
||||
|
||||
const refresh = () => {
|
||||
if (isCached) {
|
||||
|
|
|
@ -222,7 +222,10 @@ async function save() {
|
|||
return lines;
|
||||
};
|
||||
|
||||
let softMutes, softMLangs, hardMWords, hardMPatterns;
|
||||
let softMutes;
|
||||
let softMLangs;
|
||||
let hardMWords;
|
||||
let hardMPatterns;
|
||||
try {
|
||||
softMutes = parseSoftMutes(softMutedWords.value, i18n.ts._wordMute.soft);
|
||||
softMLangs = parseMutedWords(softMutedLangs.value);
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
// PIZZAX --- A lightweight store
|
||||
|
||||
import { isSignedIn, me } from "@/me";
|
||||
import type { Ref } from "vue";
|
||||
import { onUnmounted, ref, watch } from "vue";
|
||||
import { api } from "./os";
|
||||
import { useStream } from "./stream";
|
||||
import { isSignedIn, me } from "@/me";
|
||||
|
||||
type StateDef = Record<
|
||||
string,
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import { Interpreter, Parser, utils, values } from "@syuilo/aiscript";
|
||||
import { inputText } from "@/os";
|
||||
import { createAiScriptEnv } from "@/scripts/aiscript/api";
|
||||
import {
|
||||
|
@ -7,7 +8,6 @@ import {
|
|||
postFormActions,
|
||||
userActions,
|
||||
} from "@/store";
|
||||
import { Interpreter, Parser, utils, values } from "@syuilo/aiscript";
|
||||
|
||||
const parser = new Parser();
|
||||
const pluginContexts = new Map<string, Interpreter>();
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import type { AsyncComponentLoader } from "vue";
|
||||
import { defineAsyncComponent, inject } from "vue";
|
||||
import { isEmojiMod, isModerator, me } from "@/me";
|
||||
import { Router } from "@/nirax";
|
||||
import MkError from "@/pages/_error_.vue";
|
||||
import MkLoading from "@/pages/_loading_.vue";
|
||||
import type { AsyncComponentLoader } from "vue";
|
||||
import { defineAsyncComponent, inject } from "vue";
|
||||
|
||||
const page = (loader: AsyncComponentLoader<any>) =>
|
||||
defineAsyncComponent({
|
||||
|
|
|
@ -309,9 +309,9 @@ ChiptuneJsPlayer.prototype.createLibopenmptNode = async function (
|
|||
}
|
||||
return;
|
||||
}
|
||||
let framesRendered = 0,
|
||||
ended = false,
|
||||
error = false;
|
||||
let framesRendered = 0;
|
||||
let ended = false;
|
||||
let error = false;
|
||||
|
||||
const currentPattern =
|
||||
processNode.player.libopenmpt._openmpt_module_get_current_pattern(
|
||||
|
|
|
@ -2,7 +2,8 @@ import { acct } from "firefish-js";
|
|||
import { host as localHost } from "@/config";
|
||||
|
||||
export async function genSearchQuery(v: any, q: string) {
|
||||
let host: string, userId: string;
|
||||
let host: string;
|
||||
let userId: string;
|
||||
if (q.split(" ").some((x) => x.startsWith("@"))) {
|
||||
for (const at of q
|
||||
.split(" ")
|
||||
|
|
|
@ -61,8 +61,8 @@ function parseSingleKaTeXMacro(src: string): [string, KaTeXMacro] {
|
|||
currentPos = skipSpaces(currentPos);
|
||||
|
||||
while (currentPos < src.length - 1) {
|
||||
let numbersignPos = -1,
|
||||
isEscaped = false;
|
||||
let numbersignPos = -1;
|
||||
let isEscaped = false;
|
||||
|
||||
for (let i = currentPos; i < src.length - 1; ++i) {
|
||||
if (src[i] !== "\\" && src[i] !== "#") {
|
||||
|
@ -210,15 +210,15 @@ function expandKaTeXMacroOnce(
|
|||
--maxNumberOfExpansions;
|
||||
|
||||
// search for a custom macro
|
||||
let checkedPos = beginPos - 1,
|
||||
macroName = "",
|
||||
macroBackslashPos = 0,
|
||||
// for macros w/o args: unused
|
||||
// w/ args: the first open bracket ("(", "{", or "[") after cmd name
|
||||
macroArgBeginPos = 0,
|
||||
// for macros w/o args: the end of cmd name
|
||||
// w/ args: the closing bracket of the last arg
|
||||
macroArgEndPos = 0;
|
||||
let checkedPos = beginPos - 1;
|
||||
let macroName = "";
|
||||
let macroBackslashPos = 0;
|
||||
// for macros w/o args: unused
|
||||
// w/ args: the first open bracket ("(", "{", or "[") after cmd name
|
||||
let macroArgBeginPos = 0;
|
||||
// for macros w/o args: the end of cmd name
|
||||
// w/ args: the closing bracket of the last arg
|
||||
let macroArgEndPos = 0;
|
||||
|
||||
while (checkedPos < endPos) {
|
||||
checkedPos = src.indexOf("\\", checkedPos + 1);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { supportedLangs } from "@/scripts/langmap";
|
||||
import { detect } from "tinyld";
|
||||
import * as mfm from "mfm-js";
|
||||
import { supportedLangs } from "@/scripts/langmap";
|
||||
|
||||
export function detectLanguage(text: string): string {
|
||||
const nodes = mfm.parse(text);
|
||||
|
|
|
@ -20,7 +20,8 @@ export function calcPopupPosition(
|
|||
}
|
||||
|
||||
const calcPosWhenTop = () => {
|
||||
let left: number, top: number;
|
||||
let left: number;
|
||||
let top: number;
|
||||
|
||||
if (props.anchorElement) {
|
||||
left =
|
||||
|
@ -41,7 +42,8 @@ export function calcPopupPosition(
|
|||
};
|
||||
|
||||
const calcPosWhenBottom = () => {
|
||||
let left: number, top: number;
|
||||
let left: number;
|
||||
let top: number;
|
||||
|
||||
if (props.anchorElement) {
|
||||
left =
|
||||
|
@ -66,7 +68,8 @@ export function calcPopupPosition(
|
|||
};
|
||||
|
||||
const calcPosWhenLeft = () => {
|
||||
let left: number, top: number;
|
||||
let left: number;
|
||||
let top: number;
|
||||
|
||||
if (props.anchorElement) {
|
||||
left = rect.left + window.pageXOffset - contentWidth - props.innerMargin;
|
||||
|
@ -87,7 +90,8 @@ export function calcPopupPosition(
|
|||
};
|
||||
|
||||
const calcPosWhenRight = () => {
|
||||
let left: number, top: number;
|
||||
let left: number;
|
||||
let top: number;
|
||||
|
||||
if (props.anchorElement) {
|
||||
left =
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
* 配列をシャッフル (破壊的)
|
||||
*/
|
||||
export function shuffle<T extends any[]>(array: T): T {
|
||||
let currentIndex = array.length,
|
||||
randomIndex;
|
||||
let currentIndex = array.length;
|
||||
let randomIndex;
|
||||
|
||||
// While there remain elements to shuffle.
|
||||
while (currentIndex !== 0) {
|
||||
|
|
|
@ -6,13 +6,13 @@ export function useTooltip(
|
|||
onShow: (showing: Ref<boolean>) => void,
|
||||
delay = 300,
|
||||
): void {
|
||||
let isHovering = false,
|
||||
// iOS(Androidも?)では、要素をタップした直後に(おせっかいで)mouseoverイベントを発火させたりするため、それを無視するためのフラグ
|
||||
// 無視しないと、画面に触れてないのにツールチップが出たりし、ユーザビリティが損なわれる
|
||||
// TODO: 一度でもタップすると二度とマウスでツールチップ出せなくなるのをどうにかする 定期的にfalseに戻すとか...?
|
||||
shouldIgnoreMouseover = false,
|
||||
timeoutId: number,
|
||||
changeShowingState: (() => void) | null;
|
||||
let isHovering = false;
|
||||
// iOS(Androidも?)では、要素をタップした直後に(おせっかいで)mouseoverイベントを発火させたりするため、それを無視するためのフラグ
|
||||
// 無視しないと、画面に触れてないのにツールチップが出たりし、ユーザビリティが損なわれる
|
||||
// TODO: 一度でもタップすると二度とマウスでツールチップ出せなくなるのをどうにかする 定期的にfalseに戻すとか...?
|
||||
let shouldIgnoreMouseover = false;
|
||||
let timeoutId: number;
|
||||
let changeShowingState: (() => void) | null;
|
||||
|
||||
const open = () => {
|
||||
close();
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { url } from "@/config";
|
||||
import { me } from "@/me";
|
||||
import { Stream } from "firefish-js";
|
||||
import { markRaw } from "vue";
|
||||
import { url } from "@/config";
|
||||
import { me } from "@/me";
|
||||
|
||||
let stream: Stream | null = null;
|
||||
let timeoutHeartBeat: number | null = null;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import type { Theme } from "./scripts/theme";
|
||||
import { isSignedIn, me } from "@/me";
|
||||
import { api } from "@/os";
|
||||
import type { Theme } from "./scripts/theme";
|
||||
|
||||
const lsCacheKey = isSignedIn ? `themes:${me.id}` : "";
|
||||
|
||||
|
|
Loading…
Reference in a new issue