mirror of
https://github.com/misskey-dev/misskey.git
synced 2026-05-02 16:45:54 +02:00
* wip * wip * Update MkDrive.vue * wip * Update MkDrive.vue * Update MkDrive.vue * wip * Update MkDrive.vue * Update MkDrive.vue * wip * Update MkDrive.vue * wip * wip * wip * wip * Update MkDrive.vue * wip * wip * wip * wip * wip * wip * wip * feat(frontend): upload dialog (#16032) * wip * wip * Update MkUploadDialog.vue * wip * wip * wip * wip * wip * Update MkUploadDialog.vue * wip * wip * Update MkDrive.vue * wip * wip * Update MkPostForm.vue * wip * Update room.form.vue * Update os.ts * wiop * wip * wip * wip * wip * wip * wip * wip * Update select-file.ts * wip * wip * Update MkDrive.vue * Update drag-and-drop.ts * wip * wip * wop * wip * wip * Update MkDrive.vue * Update CHANGELOG.md * wipo * Update MkDrive.folder.vue * wip * Update MkUploaderDialog.vue * wip * wip * Update MkUploaderDialog.vue * wip * Update MkDrive.vue * Update MkDrive.vue * wip * wip
49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
/*
|
|
* SPDX-FileCopyrightText: syuilo and misskey-project
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
import * as Misskey from 'misskey-js';
|
|
|
|
type DragDataMap = {
|
|
driveFiles: Misskey.entities.DriveFile[];
|
|
driveFolders: Misskey.entities.DriveFolder[];
|
|
deckColumn: string;
|
|
};
|
|
|
|
// NOTE: dataTransfer の format は大文字小文字区別されないっぽいので toLowerCase が必要
|
|
|
|
export function setDragData<T extends keyof DragDataMap>(
|
|
event: DragEvent,
|
|
type: T,
|
|
data: DragDataMap[T],
|
|
) {
|
|
if (event.dataTransfer == null) return;
|
|
|
|
event.dataTransfer.setData(`misskey/${type}`.toLowerCase(), JSON.stringify(data));
|
|
}
|
|
|
|
export function getDragData<T extends keyof DragDataMap>(
|
|
event: DragEvent,
|
|
type: T,
|
|
): DragDataMap[T] | null {
|
|
if (event.dataTransfer == null) return null;
|
|
|
|
const data = event.dataTransfer.getData(`misskey/${type}`.toLowerCase());
|
|
if (data == null || data === '') return null;
|
|
|
|
return JSON.parse(data);
|
|
}
|
|
|
|
export function checkDragDataType(
|
|
event: DragEvent,
|
|
types: (keyof DragDataMap)[],
|
|
): boolean {
|
|
if (event.dataTransfer == null) return false;
|
|
|
|
const dataType = event.dataTransfer.types[0];
|
|
if (dataType == null || dataType === '') return false;
|
|
|
|
return types.some((type) => `misskey/${type}`.toLowerCase() === dataType.toLowerCase());
|
|
}
|