-
-
Notifications
You must be signed in to change notification settings - Fork 88
/
globals.d.ts
124 lines (106 loc) · 3.31 KB
/
globals.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
import type Router, { type Route } from 'vue-router';
import type { ComponentPublicInstance } from 'vue';
import type PlyrType from 'plyr';
import type videojsType from 'video.js';
import type { IPhoto, TimelineState } from '@typings';
import type { constants, initstate } from '@services/utils';
import type { translate, translatePlural } from '@services/l10n';
import type { GlobalRouteCheckers, routes } from './router';
// Global exposed variables
declare global {
var __webpack_nonce__: string;
var __webpack_public_path__: string;
var OC: Nextcloud.Common.OC;
var OCP: Nextcloud.Common.OCP;
var OCA: {
Files?: {
Sidebar?: any;
App?: any;
};
Theming?: {
name: string;
enabledThemes: any[];
};
};
/**
* Global Memories object. Initialized in main.ts
* Most of this is not available for admin.ts.
*/
var _m: {
mode: 'admin' | 'user';
route: Route;
router: Router;
routes: typeof routes;
modals: {
editMetadata: (photos: IPhoto[], sections?: number[]) => void;
updateAlbums: (photos: IPhoto[]) => void;
sharePhotos: (photo: IPhoto[]) => void;
shareNodeLink: (path: string, immediate?: boolean) => Promise<void>;
moveToFolder: (photos: IPhoto[]) => void;
moveToFace: (photos: IPhoto[]) => void;
albumShare: (user: string, name: string, link?: boolean) => Promise<void>;
showSettings: () => void;
upload: () => void;
search: () => void;
};
sidebar: {
open: (photo: IPhoto | number, filename?: string, forceNative?: boolean) => void;
close: () => void;
isOpen: () => boolean;
setTab: (tab: string) => void;
invalidateUnless: (fileid: number) => void;
getWidth: () => number;
};
viewer: {
open: (photo: IPhoto) => void;
openDynamic: (anchorPhoto: IPhoto, timeline: TimelineState) => Promise<void>;
openStatic(photo: IPhoto, list: IPhoto[], thumbSize?: 256 | 512): Promise<void>;
close: () => void;
isOpen: boolean;
currentPhoto: IPhoto | null;
photoswipe?: unknown; // debugging only
};
video: {
videojs: typeof videojsType;
Plyr: typeof PlyrType;
clientId: string;
clientIdPersistent: string;
};
window: {
innerWidth: number; // cache
innerHeight: number; // cache
};
};
// Typings for external libraries below
type VueRecyclerType = ComponentPublicInstance & {
$el: HTMLDivElement;
$refs: {
wrapper: HTMLDivElement;
};
scrollToPosition: (position: number) => void;
scrollToItem: (index: number) => void;
};
type VueNcPopover = ComponentPublicInstance & {
$refs: { popover: { show(): void; hide(): void } };
};
type VueNcSelectTags = ComponentPublicInstance & {
availableTags: any[];
};
type VueHTMLComponent = ComponentPublicInstance & {
$el: HTMLElement;
};
}
// types present on all components (bootstrap.ts, router.ts)
declare module 'vue' {
interface ComponentCustomProperties extends GlobalRouteCheckers {
t: typeof translate;
n: typeof translatePlural;
c: typeof constants;
initstate: typeof initstate;
}
export interface GlobalComponents {
XLoadingIcon: typeof import('@components/XLoadingIcon.vue').default;
XImg: typeof import('@components/frame/XImg.vue').default;
}
}
export {};