62 lines
1.4 KiB
TypeScript
62 lines
1.4 KiB
TypeScript
import type { CanvasContent as Canvas } from "./canvas";
|
|
import type { MapContent as Map } from "./map";
|
|
|
|
|
|
export type FileType = keyof ContentMap;
|
|
export interface Overview {
|
|
path: string;
|
|
owner: number;
|
|
title: string;
|
|
timestamp: Date;
|
|
navigable: boolean;
|
|
private: boolean;
|
|
order: number;
|
|
visit: number;
|
|
}
|
|
export interface CanvasContent extends Overview {
|
|
type: 'canvas';
|
|
content?: string;
|
|
}
|
|
export interface MapContent extends Overview {
|
|
type: 'map';
|
|
content?: string;
|
|
}
|
|
export interface MarkdownContent extends Overview {
|
|
type: 'markdown';
|
|
content?: string;
|
|
}
|
|
export interface FileContent extends Overview {
|
|
type: 'file';
|
|
content?: string;
|
|
}
|
|
export interface FolderContent extends Overview {
|
|
type: 'folder';
|
|
content?: null;
|
|
}
|
|
export interface ContentMap
|
|
{
|
|
markdown: MarkdownContent;
|
|
file: FileContent;
|
|
canvas: CanvasContent;
|
|
map: MapContent;
|
|
folder: FolderContent;
|
|
}
|
|
|
|
export type ExploreContent = ContentMap[FileType];
|
|
|
|
export type TreeItem = ExploreContent & {
|
|
children?: TreeItem[];
|
|
}
|
|
|
|
export interface ContentComposable {
|
|
content: Ref<ExploreContent[]>
|
|
tree: ComputedRef<TreeItem[]>
|
|
/**
|
|
* Fetch the overview of every content from the server.
|
|
*/
|
|
fetch: (force: boolean) => Promise<void>
|
|
/**
|
|
* Get the given content from the server.
|
|
*/
|
|
get: (path: string) => Promise<void>
|
|
} |