function => const
This commit is contained in:
parent
722f138082
commit
34f2feb224
|
@ -26,12 +26,12 @@ export const apiWithDialog = ((
|
||||||
return promise;
|
return promise;
|
||||||
}) as typeof api;
|
}) as typeof api;
|
||||||
|
|
||||||
export function promiseDialog<T extends Promise<any>>(
|
export const promiseDialog = <T extends Promise<any>>(
|
||||||
promise: T,
|
promise: T,
|
||||||
onSuccess?: ((res: any) => void) | null,
|
onSuccess?: ((res: any) => void) | null,
|
||||||
onFailure?: ((err: Error) => void) | null,
|
onFailure?: ((err: Error) => void) | null,
|
||||||
text?: string,
|
text?: string,
|
||||||
): T {
|
): T => {
|
||||||
const showing = ref(true);
|
const showing = ref(true);
|
||||||
const success = ref(false);
|
const success = ref(false);
|
||||||
|
|
||||||
|
@ -80,12 +80,13 @@ const zIndexes = {
|
||||||
middle: 2000000,
|
middle: 2000000,
|
||||||
high: 3000000,
|
high: 3000000,
|
||||||
};
|
};
|
||||||
export function claimZIndex(priority: keyof typeof zIndexes = 'low'): number {
|
|
||||||
|
export const claimZIndex = (priority: keyof typeof zIndexes = 'low'): number => {
|
||||||
zIndexes[priority] += 100;
|
zIndexes[priority] += 100;
|
||||||
return zIndexes[priority];
|
return zIndexes[priority];
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function popup(component: Component, props: Record<string, any>, events = {}, disposeEvent?: string) {
|
export const popup = async (component: Component, props: Record<string, any>, events = {}, disposeEvent?: string) => {
|
||||||
markRaw(component);
|
markRaw(component);
|
||||||
|
|
||||||
const id = ++popupIdCount;
|
const id = ++popupIdCount;
|
||||||
|
@ -112,29 +113,29 @@ export async function popup(component: Component, props: Record<string, any>, ev
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function pageWindow(path: string) {
|
export const pageWindow = (path: string) => {
|
||||||
popup(defineAsyncComponent(() => import('@/components/MkPageWindow.vue')), {
|
popup(defineAsyncComponent(() => import('@/components/MkPageWindow.vue')), {
|
||||||
initialPath: path,
|
initialPath: path,
|
||||||
}, {}, 'closed');
|
}, {}, 'closed');
|
||||||
}
|
}
|
||||||
|
|
||||||
export function modalPageWindow(path: string) {
|
export const modalPageWindow = (path: string) => {
|
||||||
popup(defineAsyncComponent(() => import('@/components/MkModalPageWindow.vue')), {
|
popup(defineAsyncComponent(() => import('@/components/MkModalPageWindow.vue')), {
|
||||||
initialPath: path,
|
initialPath: path,
|
||||||
}, {}, 'closed');
|
}, {}, 'closed');
|
||||||
}
|
}
|
||||||
|
|
||||||
export function toast(message: string) {
|
export const toast = (message: string) => {
|
||||||
popup(defineAsyncComponent(() => import('@/components/MkToast.vue')), {
|
popup(defineAsyncComponent(() => import('@/components/MkToast.vue')), {
|
||||||
message,
|
message,
|
||||||
}, {}, 'closed');
|
}, {}, 'closed');
|
||||||
}
|
}
|
||||||
|
|
||||||
export function alert(props: {
|
export const alert = (props: {
|
||||||
type?: 'error' | 'info' | 'success' | 'warning' | 'waiting' | 'question';
|
type?: 'error' | 'info' | 'success' | 'warning' | 'waiting' | 'question';
|
||||||
title?: string | null;
|
title?: string | null;
|
||||||
text?: string | null;
|
text?: string | null;
|
||||||
}): Promise<void> {
|
}): Promise<void> => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
popup(defineAsyncComponent(() => import('@/components/MkDialog.vue')), props, {
|
popup(defineAsyncComponent(() => import('@/components/MkDialog.vue')), props, {
|
||||||
done: result => {
|
done: result => {
|
||||||
|
@ -144,11 +145,11 @@ export function alert(props: {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function confirm(props: {
|
export const confirm = (props: {
|
||||||
type: 'error' | 'info' | 'success' | 'warning' | 'waiting' | 'question';
|
type: 'error' | 'info' | 'success' | 'warning' | 'waiting' | 'question';
|
||||||
title?: string | null;
|
title?: string | null;
|
||||||
text?: string | null;
|
text?: string | null;
|
||||||
}): Promise<{ canceled: boolean }> {
|
}): Promise<{ canceled: boolean }> => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
popup(defineAsyncComponent(() => import('@/components/MkDialog.vue')), {
|
popup(defineAsyncComponent(() => import('@/components/MkDialog.vue')), {
|
||||||
...props,
|
...props,
|
||||||
|
@ -161,7 +162,7 @@ export function confirm(props: {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function inputText(props: {
|
export const inputText = (props: {
|
||||||
type?: 'text' | 'email' | 'password' | 'url';
|
type?: 'text' | 'email' | 'password' | 'url';
|
||||||
title?: string | null;
|
title?: string | null;
|
||||||
text?: string | null;
|
text?: string | null;
|
||||||
|
@ -169,7 +170,7 @@ export function inputText(props: {
|
||||||
default?: string | null;
|
default?: string | null;
|
||||||
}): Promise<{ canceled: true; result: undefined; } | {
|
}): Promise<{ canceled: true; result: undefined; } | {
|
||||||
canceled: false; result: string;
|
canceled: false; result: string;
|
||||||
}> {
|
}> => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
popup(defineAsyncComponent(() => import('@/components/MkDialog.vue')), {
|
popup(defineAsyncComponent(() => import('@/components/MkDialog.vue')), {
|
||||||
title: props.title,
|
title: props.title,
|
||||||
|
@ -187,14 +188,14 @@ export function inputText(props: {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function inputNumber(props: {
|
export const inputNumber = (props: {
|
||||||
title?: string | null;
|
title?: string | null;
|
||||||
text?: string | null;
|
text?: string | null;
|
||||||
placeholder?: string | null;
|
placeholder?: string | null;
|
||||||
default?: number | null;
|
default?: number | null;
|
||||||
}): Promise<{ canceled: true; result: undefined; } | {
|
}): Promise<{ canceled: true; result: undefined; } | {
|
||||||
canceled: false; result: number;
|
canceled: false; result: number;
|
||||||
}> {
|
}> => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
popup(defineAsyncComponent(() => import('@/components/MkDialog.vue')), {
|
popup(defineAsyncComponent(() => import('@/components/MkDialog.vue')), {
|
||||||
title: props.title,
|
title: props.title,
|
||||||
|
@ -212,14 +213,14 @@ export function inputNumber(props: {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function inputDate(props: {
|
export const inputDate = (props: {
|
||||||
title?: string | null;
|
title?: string | null;
|
||||||
text?: string | null;
|
text?: string | null;
|
||||||
placeholder?: string | null;
|
placeholder?: string | null;
|
||||||
default?: Date | null;
|
default?: Date | null;
|
||||||
}): Promise<{ canceled: true; result: undefined; } | {
|
}): Promise<{ canceled: true; result: undefined; } | {
|
||||||
canceled: false; result: Date;
|
canceled: false; result: Date;
|
||||||
}> {
|
}> => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
popup(defineAsyncComponent(() => import('@/components/MkDialog.vue')), {
|
popup(defineAsyncComponent(() => import('@/components/MkDialog.vue')), {
|
||||||
title: props.title,
|
title: props.title,
|
||||||
|
@ -237,7 +238,7 @@ export function inputDate(props: {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function select<C = any>(props: {
|
export const select = <C = any>(props: {
|
||||||
title?: string | null;
|
title?: string | null;
|
||||||
text?: string | null;
|
text?: string | null;
|
||||||
default?: string | null;
|
default?: string | null;
|
||||||
|
@ -256,7 +257,7 @@ export function select<C = any>(props: {
|
||||||
}[];
|
}[];
|
||||||
})): Promise<{ canceled: true; result: undefined; } | {
|
})): Promise<{ canceled: true; result: undefined; } | {
|
||||||
canceled: false; result: C;
|
canceled: false; result: C;
|
||||||
}> {
|
}> => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
popup(defineAsyncComponent(() => import('@/components/MkDialog.vue')), {
|
popup(defineAsyncComponent(() => import('@/components/MkDialog.vue')), {
|
||||||
title: props.title,
|
title: props.title,
|
||||||
|
@ -274,7 +275,7 @@ export function select<C = any>(props: {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function success() {
|
export const success = () => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const showing = ref(true);
|
const showing = ref(true);
|
||||||
window.setTimeout(() => {
|
window.setTimeout(() => {
|
||||||
|
@ -289,7 +290,7 @@ export function success() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function waiting() {
|
export const waiting = () => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const showing = ref(true);
|
const showing = ref(true);
|
||||||
popup(defineAsyncComponent(() => import('@/components/MkWaitingDialog.vue')), {
|
popup(defineAsyncComponent(() => import('@/components/MkWaitingDialog.vue')), {
|
||||||
|
@ -301,7 +302,7 @@ export function waiting() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function form(title, form) {
|
export const form = (title, form) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
popup(defineAsyncComponent(() => import('@/components/MkFormDialog.vue')), { title, form }, {
|
popup(defineAsyncComponent(() => import('@/components/MkFormDialog.vue')), { title, form }, {
|
||||||
done: result => {
|
done: result => {
|
||||||
|
@ -311,7 +312,7 @@ export function form(title, form) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function selectUser() {
|
export const selectUser = () => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
popup(defineAsyncComponent(() => import('@/components/MkUserSelectDialog.vue')), {}, {
|
popup(defineAsyncComponent(() => import('@/components/MkUserSelectDialog.vue')), {}, {
|
||||||
ok: user => {
|
ok: user => {
|
||||||
|
@ -321,7 +322,7 @@ export async function selectUser() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function selectDriveFile(multiple: boolean) {
|
export const selectDriveFile = (multiple: boolean) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
popup(defineAsyncComponent(() => import('@/components/MkDriveSelectDialog.vue')), {
|
popup(defineAsyncComponent(() => import('@/components/MkDriveSelectDialog.vue')), {
|
||||||
type: 'file',
|
type: 'file',
|
||||||
|
@ -336,7 +337,7 @@ export async function selectDriveFile(multiple: boolean) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function selectDriveFolder(multiple: boolean) {
|
export const selectDriveFolder = (multiple: boolean) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
popup(defineAsyncComponent(() => import('@/components/MkDriveSelectDialog.vue')), {
|
popup(defineAsyncComponent(() => import('@/components/MkDriveSelectDialog.vue')), {
|
||||||
type: 'folder',
|
type: 'folder',
|
||||||
|
@ -351,7 +352,7 @@ export async function selectDriveFolder(multiple: boolean) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function pickEmoji(src: HTMLElement | null, opts) {
|
export const pickEmoji = (src: HTMLElement | null, opts) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
popup(defineAsyncComponent(() => import('@/components/MkEmojiPickerDialog.vue')), {
|
popup(defineAsyncComponent(() => import('@/components/MkEmojiPickerDialog.vue')), {
|
||||||
src,
|
src,
|
||||||
|
@ -364,9 +365,9 @@ export async function pickEmoji(src: HTMLElement | null, opts) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function cropImage(image: Misskey.entities.DriveFile, options: {
|
export const cropImage = (image: Misskey.entities.DriveFile, options: {
|
||||||
aspectRatio: number;
|
aspectRatio: number;
|
||||||
}): Promise<Misskey.entities.DriveFile> {
|
}): Promise<Misskey.entities.DriveFile> => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
popup(defineAsyncComponent(() => import('@/components/MkCropperDialog.vue')), {
|
popup(defineAsyncComponent(() => import('@/components/MkCropperDialog.vue')), {
|
||||||
file: image,
|
file: image,
|
||||||
|
@ -385,7 +386,7 @@ type AwaitType<T> =
|
||||||
T;
|
T;
|
||||||
let openingEmojiPicker: AwaitType<ReturnType<typeof popup>> | null = null;
|
let openingEmojiPicker: AwaitType<ReturnType<typeof popup>> | null = null;
|
||||||
let activeTextarea: HTMLTextAreaElement | HTMLInputElement | null = null;
|
let activeTextarea: HTMLTextAreaElement | HTMLInputElement | null = null;
|
||||||
export async function openEmojiPicker(src?: HTMLElement, opts, initialTextarea: typeof activeTextarea) {
|
export const openEmojiPicker = async (src?: HTMLElement, opts, initialTextarea: typeof activeTextarea) => {
|
||||||
if (openingEmojiPicker) return;
|
if (openingEmojiPicker) return;
|
||||||
|
|
||||||
activeTextarea = initialTextarea;
|
activeTextarea = initialTextarea;
|
||||||
|
@ -433,12 +434,12 @@ export async function openEmojiPicker(src?: HTMLElement, opts, initialTextarea:
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function popupMenu(items: MenuItem[] | Ref<MenuItem[]>, src?: HTMLElement, options?: {
|
export const popupMenu = (items: MenuItem[] | Ref<MenuItem[]>, src?: HTMLElement, options?: {
|
||||||
align?: string;
|
align?: string;
|
||||||
width?: number;
|
width?: number;
|
||||||
viaKeyboard?: boolean;
|
viaKeyboard?: boolean;
|
||||||
onClosing?: () => void;
|
onClosing?: () => void;
|
||||||
}) {
|
}) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
let dispose;
|
let dispose;
|
||||||
popup(defineAsyncComponent(() => import('@/components/MkPopupMenu.vue')), {
|
popup(defineAsyncComponent(() => import('@/components/MkPopupMenu.vue')), {
|
||||||
|
@ -461,7 +462,7 @@ export function popupMenu(items: MenuItem[] | Ref<MenuItem[]>, src?: HTMLElement
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function contextMenu(items: MenuItem[] | Ref<MenuItem[]>, ev: MouseEvent) {
|
export const contextMenu = (items: MenuItem[] | Ref<MenuItem[]>, ev: MouseEvent) => {
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
let dispose;
|
let dispose;
|
||||||
|
@ -479,7 +480,7 @@ export function contextMenu(items: MenuItem[] | Ref<MenuItem[]>, ev: MouseEvent)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function post(props: Record<string, any> = {}) {
|
export const post = (props: Record<string, any> = {}) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
// NOTE: MkPostFormDialogをdynamic importするとiOSでテキストエリアに自動フォーカスできない
|
// NOTE: MkPostFormDialogをdynamic importするとiOSでテキストエリアに自動フォーカスできない
|
||||||
// NOTE: ただ、dynamic importしない場合、MkPostFormDialogインスタンスが使いまわされ、
|
// NOTE: ただ、dynamic importしない場合、MkPostFormDialogインスタンスが使いまわされ、
|
||||||
|
@ -501,7 +502,7 @@ export function post(props: Record<string, any> = {}) {
|
||||||
export const deckGlobalEvents = new EventEmitter();
|
export const deckGlobalEvents = new EventEmitter();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
export function checkExistence(fileData: ArrayBuffer): Promise<any> {
|
export const checkExistence = (fileData: ArrayBuffer): Promise<any> => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const data = new FormData();
|
const data = new FormData();
|
||||||
data.append('md5', getMD5(fileData));
|
data.append('md5', getMD5(fileData));
|
||||||
|
|
Loading…
Reference in New Issue