Skip to content

Hook useShell()

useShell(config: Pick<ShellConfig, "app" | "path" | "input" | "exit" | "sizeRef">): [Shell, { history: readonly { text?: string; isCommand: boolean; value?: string; clear?: boolean; }[]; line: string; historyOffset: number; workingDirectory: { subFolders: readonly ({ readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | { subFolders: readonly ({ readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ....; files: readonly ({ extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: object | null; read: Promise<OptionalStringProperty>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: VirtualFileJson | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { subFolders: ...; files: ...; type: ...; setAlias: this; hasFile: ...; hasFolder: ...; findFile: ...; findSubFolder: ...; addFile: this; createFile: this; createFiles: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolder: this; createFolders: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: ...; navigateToFolder: ...; navigateToFile: ...; open: ...; delete: ...; getFiles: ...; getSubFolders: ...; getItemCount: ...; isFolder: this is (...); getIconUrl: ...; shortcuts: ...; initiated: ...; loadedDefaultData: ...; systemManager: ...; storage: ...; loadDefaultData: ...; loadData: ...; saveData: ...; init: ...; addShortcut: ...; reset: ...; path: ...; displayPath: ...; toJSON: ...; toString: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; id: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: ...; confirmChanges: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFile: this is (...); on: ...; once: ...; onAsync: ...; off: ...; emit: ...; } | null | undefined; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<... & ..., K>; once: Listener<... & ..., K>; onAsync: Listener<... & ..., K>; off: void; emit: void; } | { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; isFile: this is VirtualFile; getType: string; download: void; isDownloadable: boolean; linkedPath?: string; setLinkedFile: VirtualFileLink; setLinkedPath: VirtualFileLink; isValid: boolean; toJSON: VirtualFileLinkJson | null; setAlias: VirtualFileLink; setSource: VirtualFileLink; setContent: VirtualFileLink; id: string; open: object | null; read: Promise<... | ... | ...>; getIconUrl: string; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { extension: ...; source: ...; content: ...; setAlias: this; setSource: this; setContent: this; id: ...; open: ...; read: ...; isFile: this is (...); getIconUrl: ...; getType: ...; download: ...; isDownloadable: ...; toJSON: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFolder: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { subFolders: ...; files: ...; type: ...; setAlias: this; hasFile: ...; hasFolder: ...; findFile: ...; findSubFolder: ...; addFile: this; createFile: this; createFiles: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolder: this; createFolders: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: ...; navigateToFolder: ...; navigateToFile: ...; open: ...; delete: ...; getFiles: ...; getSubFolders: ...; getItemCount: ...; isFolder: this is (...); getIconUrl: ...; shortcuts: ...; initiated: ...; loadedDefaultData: ...; systemManager: ...; storage: ...; loadDefaultData: ...; loadData: ...; saveData: ...; init: ...; addShortcut: ...; reset: ...; path: ...; displayPath: ...; toJSON: ...; toString: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; id: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: ...; confirmChanges: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFile: this is (...); on: ...; once: ...; onAsync: ...; off: ...; emit: ...; } | null | undefined; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<... & ..., K>; once: Listener<... & ..., K>; onAsync: Listener<... & ..., K>; off: void; emit: void; })[]; type: number | undefined; addFile: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: VirtualFolder<VirtualBaseEvents> | VirtualFile | null; navigateToFolder: VirtualFolder<VirtualBaseEvents> | null; navigateToFile: VirtualFile | null; delete: void; isFolder: this is VirtualFolder<VirtualBaseEvents>; linkedPath?: string; setLinkedFolder: VirtualFolderLink; setLinkedPath: VirtualFolderLink; isValid: boolean; getIconUrl: string; toJSON: VirtualFolderLinkJson | null; setAlias: VirtualFolderLink; createFile: VirtualFolderLink; createFiles: VirtualFolderLink; createFolder: VirtualFolderLink; createFolders: VirtualFolderLink; hasFile: boolean; hasFolder: boolean; findFile: VirtualFile | VirtualFileLink | null; findSubFolder: VirtualFolder<VirtualBaseEvents> | VirtualFolderLink | null; getFiles: VirtualFile[]; getSubFolders: VirtualFolder<VirtualBaseEvents>[]; open: object | null | undefined; getItemCount: number; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: object | null; read: Promise<OptionalStringProperty>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: VirtualFileJson | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { subFolders: readonly ({ readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ....; files: readonly ...[]; type: ... | ...; setAlias: this; hasFile: boolean; hasFolder: boolean; findFile: ... | ... | ...; findSubFolder: ... | ... | ...; addFile: this; createFile: this; createFiles: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolder: this; createFolders: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: ... | ... | ...; navigateToFolder: ... | ...; navigateToFile: ... | ...; open: ... | ... | ...; delete: void; getFiles: ...[]; getSubFolders: ...[]; getItemCount: number; isFolder: this is VirtualFolder<(...)>; getIconUrl: string; shortcuts: {[key: ...]: ...; }; initiated: boolean; loadedDefaultData: boolean; systemManager: { systemName: ...; tagLine: ...; skin: ...; appsConfig: ...; desktopConfig: ...; miscConfig: ...; modalsConfig: ...; taskbarConfig: ...; trackingConfig: ...; windowsConfig: ...; virtualDriveConfig: ...; storage: ...; getUptime: ...; }; storage: { enableCompression: ...; prefix: ...; rename: this; remove: this; clear: this; getItemByteSize: ...; getEncodedByteSize: ...; encode: ...; decode: ...; setPrefix: this; virtualDriveConfig: ...; load: ...; store: ...; synchronize: ...; }; loadDefaultData: void; loadData: void; saveData: void; init: VirtualRoot; addShortcut: VirtualRoot; reset: void; path: string; displayPath: string; toJSON: ... | ...; toString: ... | ...; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; } | null | undefined; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<VirtualFileEvents & Record<..., ...>, K>; once: Listener<VirtualFileEvents & Record<..., ...>, K>; onAsync: Listener<VirtualFileEvents & Record<..., ...>, K>; off: void; emit: void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { subFolders: readonly ({ readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ....; files: readonly ({ extension: ...; source: ...; content: ...; setAlias: this; setSource: this; setContent: this; id: ...; open: ...; read: ...; isFile: this is (...); getIconUrl: ...; getType: ...; download: ...; isDownloadable: ...; toJSON: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFolder: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; } | { extension: ...; source: ...; content: ...; isFile: this is (...); getType: ...; download: ...; isDownloadable: ...; linkedPath?: ...; setLinkedFile: ...; setLinkedPath: ...; isValid: ...; toJSON: ...; setAlias: ...; setSource: ...; setContent: ...; id: ...; open: ...; read: ...; getIconUrl: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFolder: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; })[]; type: number | undefined; setAlias: this; hasFile: boolean; hasFolder: boolean; findFile: VirtualFile | VirtualFileLink | null; findSubFolder: VirtualFolder<VirtualBaseEvents> | VirtualFolderLink | null; addFile: this; createFile: this; createFiles: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolder: this; createFolders: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: VirtualFolder<VirtualBaseEvents> | VirtualFile | null; navigateToFolder: VirtualFolder<VirtualBaseEvents> | null; navigateToFile: VirtualFile | null; open: object | null | undefined; delete: void; getFiles: VirtualFile[]; getSubFolders: VirtualFolder<VirtualBaseEvents>[]; getItemCount: number; isFolder: this is VirtualFolder<VirtualBaseEvents>; getIconUrl: string; shortcuts: {[key: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; } | { extension: ...; source: ...; content: ...; setAlias: this; setSource: this; setContent: this; id: ...; open: ...; read: ...; isFile: this is (...); getIconUrl: ...; getType: ...; download: ...; isDownloadable: ...; toJSON: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFolder: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; } | { extension: ...; source: ...; content: ...; isFile: this is (...); getType: ...; download: ...; isDownloadable: ...; linkedPath?: ...; setLinkedFile: ...; setLinkedPath: ...; isValid: ...; toJSON: ...; setAlias: ...; setSource: ...; setContent: ...; id: ...; open: ...; read: ...; getIconUrl: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFolder: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; }; }; initiated: boolean; loadedDefaultData: boolean; systemManager: { systemName: string; tagLine: string; skin: { systemIcon: string; appIcons: ... | ...; appNames: ... | ...; wallpapers: readonly ...[]; defaultWallpaper: string; fileIcons: { generic: ...; info?: ...; text?: ...; code?: ...; external?: ...; video?: ...; audio?: ...; }; folderIcons: { generic: ...; images?: ...; text?: ...; link?: ...; video?: ...; audio?: ...; }; loadStyleSheet: ... | ...; defaultTheme: ... | ...; }; appsConfig: { apps: readonly ...[]; installedApps: readonly ...[]; getAppById: ... | ...; getAppByFileExtension: ... | ...; getAppByRole: ... | ...; getAppsByCategory: ...[]; }; desktopConfig: { defaultIconSize: ... | ... | ...; defaultIconDirection: ... | ...; }; miscConfig: { doubleClickDelay: number; }; modalsConfig: { defaultDialogSize: { x: ...; y: ...; clone: ...; magnitude: ...; setX: this; setY: this; set: this; round: this; normalize: ...; scale: ...; getDistanceSquared: ...; getDistance: ...; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; defaultFileSelectorSize: { x: ...; y: ...; clone: ...; magnitude: ...; setX: this; setY: this; set: this; round: this; normalize: ...; scale: ...; getDistanceSquared: ...; getDistance: ...; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; }; taskbarConfig: { height: number; }; trackingConfig: { enabled: boolean; googleAnalyticsMeasurementId: string; }; windowsConfig: { screenMargin: number; titleSeparator: string; minScreenSize: { x: ...; y: ...; clone: ...; magnitude: ...; setX: this; setY: this; set: this; round: this; normalize: ...; scale: ...; getDistanceSquared: ...; getDistance: ...; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; }; virtualDriveConfig: { saveData: ... | ...; defaultData: { includePicturesFolder?: ...; includeDocumentsFolder?: ...; includeDesktopFolder?: ...; includeSourceTree?: ...; includeAppsFolder?: ...; loadData?: ...; }; }; storage: { enableCompression: boolean; prefix: ... | ...; store: void; load: ... | ...; rename: this; remove: this; clear: this; getItemByteSize: number; getEncodedByteSize: number; encode: { result: ...; size: ...; }; decode: string; setPrefix: this; }; getUptime: string; }; storage: { enableCompression: boolean; prefix: string | undefined; rename: this; remove: this; clear: this; getItemByteSize: number; getEncodedByteSize: number; encode: { result: string; size: number; }; decode: string; setPrefix: this; virtualDriveConfig: { saveData: ... | ...; defaultData: { includePicturesFolder?: ...; includeDocumentsFolder?: ...; includeDesktopFolder?: ...; includeSourceTree?: ...; includeAppsFolder?: ...; loadData?: ...; }; }; load: string | null; store: void; synchronize: void; }; loadDefaultData: void; loadData: void; saveData: void; init: VirtualRoot; addShortcut: VirtualRoot; reset: void; path: string; displayPath: string; toJSON: VirtualRootJson | null; toString: string | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: ... | ...; read: Promise<...>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: ... | ...; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<(...)>; toString: ... | ...; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; on: Listener<VirtualRootEvents & Record<..., ...>, K>; once: Listener<VirtualRootEvents & Record<..., ...>, K>; onAsync: Listener<VirtualRootEvents & Record<..., ...>, K>; off: void; emit: void; } | null | undefined; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; toString: string | null; on: Listener<VirtualBaseEvents & Record<"update", unknown[]>, K>; once: Listener<VirtualBaseEvents & Record<"update", unknown[]>, K>; onAsync: Listener<VirtualBaseEvents & Record<"update", unknown[]>, K>; off: void; emit: void; })[]; files: readonly ({ extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: object | null; read: Promise<OptionalStringProperty>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: VirtualFileJson | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { subFolders: readonly ({ readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | { subFolders: ...; files: ...; type: ...; addFile: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: ...; navigateToFolder: ...; navigateToFile: ...; delete: ...; isFolder: this is (...); linkedPath?: ...; setLinkedFolder: ...; setLinkedPath: ...; isValid: ...; getIconUrl: ...; toJSON: ...; setAlias: ...; createFile: ...; createFiles: ...; createFolder: ...; createFolders: ...; hasFile: ...; hasFolder: ...; findFile: ...; findSubFolder: ...; getFiles: ...; getSubFolders: ...; open: ...; getItemCount: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; id: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFile: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; })[]; files: readonly ({ readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | { ...; })[]; type: number | undefined; setAlias: this; hasFile: boolean; hasFolder: boolean; findFile: VirtualFile | VirtualFileLink | null; findSubFolder: VirtualFolder<VirtualBaseEvents> | VirtualFolderLink | null; addFile: this; createFile: this; createFiles: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolder: this; createFolders: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: VirtualFolder<VirtualBaseEvents> | VirtualFile | null; navigateToFolder: VirtualFolder<VirtualBaseEvents> | null; navigateToFile: VirtualFile | null; open: object | null | undefined; delete: void; getFiles: VirtualFile[]; getSubFolders: VirtualFolder<VirtualBaseEvents>[]; getItemCount: number; isFolder: this is VirtualFolder<VirtualBaseEvents>; getIconUrl: string; shortcuts: {[key: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | { subFolders: ...; files: ...; type: ...; addFile: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: ...; navigateToFolder: ...; navigateToFile: ...; delete: ...; isFolder: this is (...); linkedPath?: ...; setLinkedFolder: ...; setLinkedPath: ...; isValid: ...; getIconUrl: ...; toJSON: ...; setAlias: ...; createFile: ...; createFiles: ...; createFolder: ...; createFolders: ...; hasFile: ...; hasFolder: ...; findFile: ...; findSubFolder: ...; getFiles: ...; getSubFolders: ...; open: ...; getItemCount: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; id: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFile: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; } | { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | { extension: ...; source: ...; content: ...; isFile: this is (...); getType: ...; download: ...; isDownloadable: ...; linkedPath?: ...; setLinkedFile: ...; setLinkedPath: ...; isValid: ...; toJSON: ...; setAlias: ...; setSource: ...; setContent: ...; id: ...; open: ...; read: ...; getIconUrl: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFolder: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; }; }; initiated: boolean; loadedDefaultData: boolean; systemManager: { systemName: string; tagLine: string; skin: { systemIcon: string; appIcons: ... | ...; appNames: ... | ...; wallpapers: readonly ...[]; defaultWallpaper: string; fileIcons: { generic: ...; info?: ...; text?: ...; code?: ...; external?: ...; video?: ...; audio?: ...; }; folderIcons: { generic: ...; images?: ...; text?: ...; link?: ...; video?: ...; audio?: ...; }; loadStyleSheet: ... | ...; defaultTheme: ... | ...; }; appsConfig: { apps: readonly ...[]; installedApps: readonly ...[]; getAppById: ... | ...; getAppByFileExtension: ... | ...; getAppByRole: ... | ...; getAppsByCategory: ...[]; }; desktopConfig: { defaultIconSize: ... | ... | ...; defaultIconDirection: ... | ...; }; miscConfig: { doubleClickDelay: number; }; modalsConfig: { defaultDialogSize: { x: ...; y: ...; clone: ...; magnitude: ...; setX: this; setY: this; set: this; round: this; normalize: ...; scale: ...; getDistanceSquared: ...; getDistance: ...; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; defaultFileSelectorSize: { x: ...; y: ...; clone: ...; magnitude: ...; setX: this; setY: this; set: this; round: this; normalize: ...; scale: ...; getDistanceSquared: ...; getDistance: ...; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; }; taskbarConfig: { height: number; }; trackingConfig: { enabled: boolean; googleAnalyticsMeasurementId: string; }; windowsConfig: { screenMargin: number; titleSeparator: string; minScreenSize: { x: ...; y: ...; clone: ...; magnitude: ...; setX: this; setY: this; set: this; round: this; normalize: ...; scale: ...; getDistanceSquared: ...; getDistance: ...; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; }; virtualDriveConfig: { saveData: ... | ...; defaultData: { includePicturesFolder?: ...; includeDocumentsFolder?: ...; includeDesktopFolder?: ...; includeSourceTree?: ...; includeAppsFolder?: ...; loadData?: ...; }; }; storage: { enableCompression: boolean; prefix: ... | ...; store: void; load: ... | ...; rename: this; remove: this; clear: this; getItemByteSize: number; getEncodedByteSize: number; encode: { result: ...; size: ...; }; decode: string; setPrefix: this; }; getUptime: string; }; storage: { enableCompression: boolean; prefix: string | undefined; rename: this; remove: this; clear: this; getItemByteSize: number; getEncodedByteSize: number; encode: { result: string; size: number; }; decode: string; setPrefix: this; virtualDriveConfig: { saveData: ... | ...; defaultData: { includePicturesFolder?: ...; includeDocumentsFolder?: ...; includeDesktopFolder?: ...; includeSourceTree?: ...; includeAppsFolder?: ...; loadData?: ...; }; }; load: string | null; store: void; synchronize: void; }; loadDefaultData: void; loadData: void; saveData: void; init: VirtualRoot; addShortcut: VirtualRoot; reset: void; path: string; displayPath: string; toJSON: VirtualRootJson | null; toString: string | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; on: Listener<VirtualRootEvents & Record<..., ...>, K>; once: Listener<VirtualRootEvents & Record<..., ...>, K>; onAsync: Listener<VirtualRootEvents & Record<..., ...>, K>; off: void; emit: void; } | null | undefined; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<VirtualFileEvents & Record<keyof VirtualFileEvents, unknown[]>, K>; once: Listener<VirtualFileEvents & Record<keyof VirtualFileEvents, unknown[]>, K>; onAsync: Listener<VirtualFileEvents & Record<keyof VirtualFileEvents, unknown[]>, K>; off: void; emit: void; } | { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; isFile: this is VirtualFile; getType: string; download: void; isDownloadable: boolean; linkedPath?: string; setLinkedFile: VirtualFileLink; setLinkedPath: VirtualFileLink; isValid: boolean; toJSON: VirtualFileLinkJson | null; setAlias: VirtualFileLink; setSource: VirtualFileLink; setContent: VirtualFileLink; id: string; open: object | null; read: Promise<string | null | undefined>; getIconUrl: string; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: object | null; read: Promise<OptionalStringProperty>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: VirtualFileJson | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { subFolders: readonly ...[]; files: readonly ({ readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | { ...; })[]; type: ... | ...; setAlias: this; hasFile: boolean; hasFolder: boolean; findFile: ... | ... | ...; findSubFolder: ... | ... | ...; addFile: this; createFile: this; createFiles: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolder: this; createFolders: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: ... | ... | ...; navigateToFolder: ... | ...; navigateToFile: ... | ...; open: ... | ... | ...; delete: void; getFiles: ...[]; getSubFolders: ...[]; getItemCount: number; isFolder: this is VirtualFolder<(...)>; getIconUrl: string; shortcuts: {[key: ...]: ...; }; initiated: boolean; loadedDefaultData: boolean; systemManager: { systemName: ...; tagLine: ...; skin: ...; appsConfig: ...; desktopConfig: ...; miscConfig: ...; modalsConfig: ...; taskbarConfig: ...; trackingConfig: ...; windowsConfig: ...; virtualDriveConfig: ...; storage: ...; getUptime: ...; }; storage: { enableCompression: ...; prefix: ...; rename: this; remove: this; clear: this; getItemByteSize: ...; getEncodedByteSize: ...; encode: ...; decode: ...; setPrefix: this; virtualDriveConfig: ...; load: ...; store: ...; synchronize: ...; }; loadDefaultData: void; loadData: void; saveData: void; init: VirtualRoot; addShortcut: VirtualRoot; reset: void; path: string; displayPath: string; toJSON: ... | ...; toString: ... | ...; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; } | null | undefined; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<VirtualFileEvents & Record<..., ...>, K>; once: Listener<VirtualFileEvents & Record<..., ...>, K>; onAsync: Listener<VirtualFileEvents & Record<..., ...>, K>; off: void; emit: void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { subFolders: readonly ({ readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | { subFolders: ...; files: ...; type: ...; addFile: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: ...; navigateToFolder: ...; navigateToFile: ...; delete: ...; isFolder: this is (...); linkedPath?: ...; setLinkedFolder: ...; setLinkedPath: ...; isValid: ...; getIconUrl: ...; toJSON: ...; setAlias: ...; createFile: ...; createFiles: ...; createFolder: ...; createFolders: ...; hasFile: ...; hasFolder: ...; findFile: ...; findSubFolder: ...; getFiles: ...; getSubFolders: ...; open: ...; getItemCount: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; id: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFile: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; })[]; files: readonly ({ readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | { ...; })[]; type: number | undefined; setAlias: this; hasFile: boolean; hasFolder: boolean; findFile: VirtualFile | VirtualFileLink | null; findSubFolder: VirtualFolder<VirtualBaseEvents> | VirtualFolderLink | null; addFile: this; createFile: this; createFiles: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolder: this; createFolders: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: VirtualFolder<VirtualBaseEvents> | VirtualFile | null; navigateToFolder: VirtualFolder<VirtualBaseEvents> | null; navigateToFile: VirtualFile | null; open: object | null | undefined; delete: void; getFiles: VirtualFile[]; getSubFolders: VirtualFolder<VirtualBaseEvents>[]; getItemCount: number; isFolder: this is VirtualFolder<VirtualBaseEvents>; getIconUrl: string; shortcuts: {[key: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | { subFolders: ...; files: ...; type: ...; addFile: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: ...; navigateToFolder: ...; navigateToFile: ...; delete: ...; isFolder: this is (...); linkedPath?: ...; setLinkedFolder: ...; setLinkedPath: ...; isValid: ...; getIconUrl: ...; toJSON: ...; setAlias: ...; createFile: ...; createFiles: ...; createFolder: ...; createFolders: ...; hasFile: ...; hasFolder: ...; findFile: ...; findSubFolder: ...; getFiles: ...; getSubFolders: ...; open: ...; getItemCount: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; id: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFile: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; } | { extension: ...; source: ...; content: ...; setAlias: this; setSource: this; setContent: this; id: ...; open: ...; read: ...; isFile: this is (...); getIconUrl: ...; getType: ...; download: ...; isDownloadable: ...; toJSON: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFolder: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; } | { readonly linkedPath?: string | undefined; readonly setLinkedFile: (file: VirtualFile | null) => VirtualFileLink; readonly setLinkedPath: (path: string) => VirtualFileLink; ... 44 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; }; }; initiated: boolean; loadedDefaultData: boolean; systemManager: { systemName: string; tagLine: string; skin: { systemIcon: string; appIcons: ... | ...; appNames: ... | ...; wallpapers: readonly ...[]; defaultWallpaper: string; fileIcons: { generic: ...; info?: ...; text?: ...; code?: ...; external?: ...; video?: ...; audio?: ...; }; folderIcons: { generic: ...; images?: ...; text?: ...; link?: ...; video?: ...; audio?: ...; }; loadStyleSheet: ... | ...; defaultTheme: ... | ...; }; appsConfig: { apps: readonly ...[]; installedApps: readonly ...[]; getAppById: ... | ...; getAppByFileExtension: ... | ...; getAppByRole: ... | ...; getAppsByCategory: ...[]; }; desktopConfig: { defaultIconSize: ... | ... | ...; defaultIconDirection: ... | ...; }; miscConfig: { doubleClickDelay: number; }; modalsConfig: { defaultDialogSize: { x: ...; y: ...; clone: ...; magnitude: ...; setX: this; setY: this; set: this; round: this; normalize: ...; scale: ...; getDistanceSquared: ...; getDistance: ...; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; defaultFileSelectorSize: { x: ...; y: ...; clone: ...; magnitude: ...; setX: this; setY: this; set: this; round: this; normalize: ...; scale: ...; getDistanceSquared: ...; getDistance: ...; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; }; taskbarConfig: { height: number; }; trackingConfig: { enabled: boolean; googleAnalyticsMeasurementId: string; }; windowsConfig: { screenMargin: number; titleSeparator: string; minScreenSize: { x: ...; y: ...; clone: ...; magnitude: ...; setX: this; setY: this; set: this; round: this; normalize: ...; scale: ...; getDistanceSquared: ...; getDistance: ...; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; }; virtualDriveConfig: { saveData: ... | ...; defaultData: { includePicturesFolder?: ...; includeDocumentsFolder?: ...; includeDesktopFolder?: ...; includeSourceTree?: ...; includeAppsFolder?: ...; loadData?: ...; }; }; storage: { enableCompression: boolean; prefix: ... | ...; store: void; load: ... | ...; rename: this; remove: this; clear: this; getItemByteSize: number; getEncodedByteSize: number; encode: { result: ...; size: ...; }; decode: string; setPrefix: this; }; getUptime: string; }; storage: { enableCompression: boolean; prefix: string | undefined; rename: this; remove: this; clear: this; getItemByteSize: number; getEncodedByteSize: number; encode: { result: string; size: number; }; decode: string; setPrefix: this; virtualDriveConfig: { saveData: ... | ...; defaultData: { includePicturesFolder?: ...; includeDocumentsFolder?: ...; includeDesktopFolder?: ...; includeSourceTree?: ...; includeAppsFolder?: ...; loadData?: ...; }; }; load: string | null; store: void; synchronize: void; }; loadDefaultData: void; loadData: void; saveData: void; init: VirtualRoot; addShortcut: VirtualRoot; reset: void; path: string; displayPath: string; toJSON: VirtualRootJson | null; toString: string | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: ... | ...; read: Promise<...>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: ... | ...; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<(...)>; toString: ... | ...; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; on: Listener<VirtualRootEvents & Record<..., ...>, K>; once: Listener<VirtualRootEvents & Record<..., ...>, K>; onAsync: Listener<VirtualRootEvents & Record<..., ...>, K>; off: void; emit: void; } | null | undefined; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<VirtualFileEvents & Record<keyof VirtualFileEvents, unknown[]>, K>; once: Listener<VirtualFileEvents & Record<keyof VirtualFileEvents, unknown[]>, K>; onAsync: Listener<VirtualFileEvents & Record<keyof VirtualFileEvents, unknown[]>, K>; off: void; emit: void; })[]; type: number | undefined; setAlias: this; hasFile: boolean; hasFolder: boolean; findFile: VirtualFile | VirtualFileLink | null; findSubFolder: VirtualFolder<VirtualBaseEvents> | VirtualFolderLink | null; addFile: this; createFile: this; createFiles: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolder: this; createFolders: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: VirtualFolder<VirtualBaseEvents> | VirtualFile | null; navigateToFolder: VirtualFolder<VirtualBaseEvents> | null; navigateToFile: VirtualFile | null; open: object | null | undefined; delete: void; getFiles: VirtualFile[]; getSubFolders: VirtualFolder<VirtualBaseEvents>[]; getItemCount: number; isFolder: this is VirtualFolder<VirtualBaseEvents>; getIconUrl: string; toJSON: VirtualFolderJson | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: object | null; read: Promise<OptionalStringProperty>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: VirtualFileJson | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { subFolders: readonly ({ readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | { subFolders: readonly ({ readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ....; files: readonly ...[]; type: ... | ...; addFile: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: ... | ... | ...; navigateToFolder: ... | ...; navigateToFile: ... | ...; delete: void; isFolder: this is VirtualFolder<(...)>; linkedPath?: ... | ...; setLinkedFolder: VirtualFolderLink; setLinkedPath: VirtualFolderLink; isValid: boolean; getIconUrl: string; toJSON: ... | ...; setAlias: VirtualFolderLink; createFile: VirtualFolderLink; createFiles: VirtualFolderLink; createFolder: VirtualFolderLink; createFolders: VirtualFolderLink; hasFile: boolean; hasFolder: boolean; findFile: ... | ... | ...; findSubFolder: ... | ... | ...; getFiles: ...[]; getSubFolders: ...[]; open: ... | ... | ...; getItemCount: number; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; toString: ... | ...; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; })[]; files: readonly ({ readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; isFile: this is VirtualFile; getType: string; download: void; isDownloadable: boolean; linkedPath?: ... | ...; setLinkedFile: VirtualFileLink; setLinkedPath: VirtualFileLink; isValid: boolean; toJSON: ... | ...; setAlias: VirtualFileLink; setSource: VirtualFileLink; setContent: VirtualFileLink; id: string; open: ... | ...; read: Promise<...>; getIconUrl: string; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<(...)>; toString: ... | ...; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; })[]; type: number | undefined; setAlias: this; hasFile: boolean; hasFolder: boolean; findFile: VirtualFile | VirtualFileLink | null; findSubFolder: VirtualFolder<VirtualBaseEvents> | VirtualFolderLink | null; addFile: this; createFile: this; createFiles: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolder: this; createFolders: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: VirtualFolder<VirtualBaseEvents> | VirtualFile | null; navigateToFolder: VirtualFolder<VirtualBaseEvents> | null; navigateToFile: VirtualFile | null; open: object | null | undefined; delete: void; getFiles: VirtualFile[]; getSubFolders: VirtualFolder<VirtualBaseEvents>[]; getItemCount: number; isFolder: this is VirtualFolder<VirtualBaseEvents>; getIconUrl: string; shortcuts: {[key: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | { subFolders: readonly ...[]; files: readonly ...[]; type: ... | ...; addFile: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: ... | ... | ...; navigateToFolder: ... | ...; navigateToFile: ... | ...; delete: void; isFolder: this is VirtualFolder<(...)>; linkedPath?: ... | ...; setLinkedFolder: VirtualFolderLink; setLinkedPath: VirtualFolderLink; isValid: boolean; getIconUrl: string; toJSON: ... | ...; setAlias: VirtualFolderLink; createFile: VirtualFolderLink; createFiles: VirtualFolderLink; createFolder: VirtualFolderLink; createFolders: VirtualFolderLink; hasFile: boolean; hasFolder: boolean; findFile: ... | ... | ...; findSubFolder: ... | ... | ...; getFiles: ...[]; getSubFolders: ...[]; open: ... | ... | ...; getItemCount: number; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; toString: ... | ...; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; } | { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; isFile: this is VirtualFile; getType: string; download: void; isDownloadable: boolean; linkedPath?: ... | ...; setLinkedFile: VirtualFileLink; setLinkedPath: VirtualFileLink; isValid: boolean; toJSON: ... | ...; setAlias: VirtualFileLink; setSource: VirtualFileLink; setContent: VirtualFileLink; id: string; open: ... | ...; read: Promise<...>; getIconUrl: string; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<(...)>; toString: ... | ...; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; }; }; initiated: boolean; loadedDefaultData: boolean; systemManager: { systemName: string; tagLine: string; skin: { systemIcon: string; appIcons: {[key: ...]: ...; } | undefined; appNames: {[key: ...]: ...; } | undefined; wallpapers: readonly string[]; defaultWallpaper: string; fileIcons: { generic: string; info?: ... | ...; text?: ... | ...; code?: ... | ...; external?: ... | ...; video?: ... | ...; audio?: ... | ...; }; folderIcons: { generic: string; images?: ... | ...; text?: ... | ...; link?: ... | ...; video?: ... | ...; audio?: ... | ...; }; loadStyleSheet: () => ... | undefined; defaultTheme: Theme | undefined; }; appsConfig: { apps: readonly { name: ...; id: ...; windowContent: ...; windowOptions?: ...; description: ...; iconUrl: ...; role: ...; associatedExtensions: ...; pinnedByDefault: ...; launchAtStartup: ...; category: ...; metadata: ...; showDesktopIcon: ...; isActive: ...; isPinned?: ...; isInstalled: ...; WindowContent: ...; setName: this; setDescription: this; setIconUrl: this; setRole: this; setAssociatedExtensions: this; setPinnedByDefault: this; setLaunchAtStartup: this; setInstalled: this; setCategory: this; setMetadata: this; setShowDesktopIcon: this; setWindowOptions: this; }[]; installedApps: readonly { name: ...; id: ...; windowContent: ...; windowOptions?: ...; description: ...; iconUrl: ...; role: ...; associatedExtensions: ...; pinnedByDefault: ...; launchAtStartup: ...; category: ...; metadata: ...; showDesktopIcon: ...; isActive: ...; isPinned?: ...; isInstalled: ...; WindowContent: ...; setName: this; setDescription: this; setIconUrl: this; setRole: this; setAssociatedExtensions: this; setPinnedByDefault: this; setLaunchAtStartup: this; setInstalled: this; setCategory: this; setMetadata: this; setShowDesktopIcon: this; setWindowOptions: this; }[]; getAppById: App<...> | null; getAppByFileExtension: App<...> | null; getAppByRole: App<...> | null; getAppsByCategory: App<...>[]; }; desktopConfig: { defaultIconSize: 0 | 1 | 2; defaultIconDirection: 0 | 1; }; miscConfig: { doubleClickDelay: number; }; modalsConfig: { defaultDialogSize: { x: number; y: number; clone: { readonly x: number; readonly y: number; readonly clone: ...; readonly magnitude: number; readonly setX: (x: number) => Vector2; readonly setY: (y: number) => Vector2; ... 10 more ...; readonly lerp: (vector2: Vector2, t: number) => Vector2; }; magnitude: number; setX: this; setY: this; set: this; round: this; normalize: Vector2; scale: Vector2; getDistanceSquared: number; getDistance: number; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; defaultFileSelectorSize: { x: number; y: number; clone: { readonly x: number; readonly y: number; readonly clone: ...; readonly magnitude: number; readonly setX: (x: number) => Vector2; readonly setY: (y: number) => Vector2; ... 10 more ...; readonly lerp: (vector2: Vector2, t: number) => Vector2; }; magnitude: number; setX: this; setY: this; set: this; round: this; normalize: Vector2; scale: Vector2; getDistanceSquared: number; getDistance: number; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; }; taskbarConfig: { height: number; }; trackingConfig: { enabled: boolean; googleAnalyticsMeasurementId: string; }; windowsConfig: { screenMargin: number; titleSeparator: string; minScreenSize: { x: number; y: number; clone: { readonly x: number; readonly y: number; readonly clone: ...; readonly magnitude: number; readonly setX: (x: number) => Vector2; readonly setY: (y: number) => Vector2; ... 10 more ...; readonly lerp: (vector2: Vector2, t: number) => Vector2; }; magnitude: number; setX: this; setY: this; set: this; round: this; normalize: Vector2; scale: Vector2; getDistanceSquared: number; getDistance: number; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; }; virtualDriveConfig: { saveData: false | { enableCompression: ...; prefix?: ...; migrations?: ...; }; defaultData: { includePicturesFolder?: ... | ... | ...; includeDocumentsFolder?: ... | ... | ...; includeDesktopFolder?: ... | ... | ...; includeSourceTree?: ... | ... | ...; includeAppsFolder?: ... | ... | ...; loadData?: ... | ...; }; }; storage: { enableCompression: boolean; prefix: string | undefined; store: void; load: string | null; rename: this; remove: this; clear: this; getItemByteSize: number; getEncodedByteSize: number; encode: { result: string; size: number; }; decode: string; setPrefix: this; }; getUptime: string; }; storage: { enableCompression: boolean; prefix: string | undefined; rename: this; remove: this; clear: this; getItemByteSize: number; getEncodedByteSize: number; encode: { result: string; size: number; }; decode: string; setPrefix: this; virtualDriveConfig: { saveData: false | { enableCompression: ...; prefix?: ...; migrations?: ...; }; defaultData: { includePicturesFolder?: ... | ... | ...; includeDocumentsFolder?: ... | ... | ...; includeDesktopFolder?: ... | ... | ...; includeSourceTree?: ... | ... | ...; includeAppsFolder?: ... | ... | ...; loadData?: ... | ...; }; }; load: string | null; store: void; synchronize: void; }; loadDefaultData: void; loadData: void; saveData: void; init: VirtualRoot; addShortcut: VirtualRoot; reset: void; path: string; displayPath: string; toJSON: VirtualRootJson | null; toString: string | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; on: Listener<VirtualRootEvents & Record<keyof ..., ...[]>, K>; once: Listener<VirtualRootEvents & Record<keyof ..., ...[]>, K>; onAsync: Listener<VirtualRootEvents & Record<keyof ..., ...[]>, K>; off: void; emit: void; } | null | undefined; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<VirtualFileEvents & Record<keyof VirtualFileEvents, unknown[]>, K>; once: Listener<VirtualFileEvents & Record<keyof VirtualFileEvents, unknown[]>, K>; onAsync: Listener<VirtualFileEvents & Record<keyof VirtualFileEvents, unknown[]>, K>; off: void; emit: void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { subFolders: readonly ({ readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | { subFolders: readonly ({ readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ....; files: readonly ({ extension: ...; source: ...; content: ...; setAlias: this; setSource: this; setContent: this; id: ...; open: ...; read: ...; isFile: this is (...); getIconUrl: ...; getType: ...; download: ...; isDownloadable: ...; toJSON: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFolder: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; } | { extension: ...; source: ...; content: ...; isFile: this is (...); getType: ...; download: ...; isDownloadable: ...; linkedPath?: ...; setLinkedFile: ...; setLinkedPath: ...; isValid: ...; toJSON: ...; setAlias: ...; setSource: ...; setContent: ...; id: ...; open: ...; read: ...; getIconUrl: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFolder: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; })[]; type: number | undefined; addFile: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: VirtualFolder<VirtualBaseEvents> | VirtualFile | null; navigateToFolder: VirtualFolder<VirtualBaseEvents> | null; navigateToFile: VirtualFile | null; delete: void; isFolder: this is VirtualFolder<VirtualBaseEvents>; linkedPath?: string; setLinkedFolder: VirtualFolderLink; setLinkedPath: VirtualFolderLink; isValid: boolean; getIconUrl: string; toJSON: VirtualFolderLinkJson | null; setAlias: VirtualFolderLink; createFile: VirtualFolderLink; createFiles: VirtualFolderLink; createFolder: VirtualFolderLink; createFolders: VirtualFolderLink; hasFile: boolean; hasFolder: boolean; findFile: VirtualFile | VirtualFileLink | null; findSubFolder: VirtualFolder<VirtualBaseEvents> | VirtualFolderLink | null; getFiles: VirtualFile[]; getSubFolders: VirtualFolder<VirtualBaseEvents>[]; open: object | null | undefined; getItemCount: number; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: ... | ...; read: Promise<...>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: ... | ...; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<(...)>; toString: ... | ...; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; toString: string | null; on: Listener<VirtualBaseEvents & Record<..., ...>, K>; once: Listener<VirtualBaseEvents & Record<..., ...>, K>; onAsync: Listener<VirtualBaseEvents & Record<..., ...>, K>; off: void; emit: void; })[]; files: readonly ({ extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: object | null; read: Promise<OptionalStringProperty>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: VirtualFileJson | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<VirtualFileEvents & Record<..., ...>, K>; once: Listener<VirtualFileEvents & Record<..., ...>, K>; onAsync: Listener<VirtualFileEvents & Record<..., ...>, K>; off: void; emit: void; } | { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; isFile: this is VirtualFile; getType: string; download: void; isDownloadable: boolean; linkedPath?: string; setLinkedFile: VirtualFileLink; setLinkedPath: VirtualFileLink; isValid: boolean; toJSON: VirtualFileLinkJson | null; setAlias: VirtualFileLink; setSource: VirtualFileLink; setContent: VirtualFileLink; id: string; open: object | null; read: Promise<string | null | undefined>; getIconUrl: string; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: ... | ...; read: Promise<...>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: ... | ...; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<(...)>; toString: ... | ...; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<VirtualFileEvents & Record<..., ...>, K>; once: Listener<VirtualFileEvents & Record<..., ...>, K>; onAsync: Listener<VirtualFileEvents & Record<..., ...>, K>; off: void; emit: void; })[]; type: number | undefined; setAlias: this; hasFile: boolean; hasFolder: boolean; findFile: VirtualFile | VirtualFileLink | null; findSubFolder: VirtualFolder<VirtualBaseEvents> | VirtualFolderLink | null; addFile: this; createFile: this; createFiles: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolder: this; createFolders: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: VirtualFolder<VirtualBaseEvents> | VirtualFile | null; navigateToFolder: VirtualFolder<VirtualBaseEvents> | null; navigateToFile: VirtualFile | null; open: object | null | undefined; delete: void; getFiles: VirtualFile[]; getSubFolders: VirtualFolder<VirtualBaseEvents>[]; getItemCount: number; isFolder: this is VirtualFolder<VirtualBaseEvents>; getIconUrl: string; shortcuts: {[key: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | { subFolders: readonly ({ readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; files: readonly ({ extension: ...; source: ...; content: ...; setAlias: this; setSource: this; setContent: this; id: ...; open: ...; read: ...; isFile: this is (...); getIconUrl: ...; getType: ...; download: ...; isDownloadable: ...; toJSON: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFolder: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; } | { extension: ...; source: ...; content: ...; isFile: this is (...); getType: ...; download: ...; isDownloadable: ...; linkedPath?: ...; setLinkedFile: ...; setLinkedPath: ...; isValid: ...; toJSON: ...; setAlias: ...; setSource: ...; setContent: ...; id: ...; open: ...; read: ...; getIconUrl: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFolder: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; })[]; type: number | undefined; addFile: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: VirtualFolder<VirtualBaseEvents> | VirtualFile | null; navigateToFolder: VirtualFolder<VirtualBaseEvents> | null; navigateToFile: VirtualFile | null; delete: void; isFolder: this is VirtualFolder<VirtualBaseEvents>; linkedPath?: string; setLinkedFolder: VirtualFolderLink; setLinkedPath: VirtualFolderLink; isValid: boolean; getIconUrl: string; toJSON: VirtualFolderLinkJson | null; setAlias: VirtualFolderLink; createFile: VirtualFolderLink; createFiles: VirtualFolderLink; createFolder: VirtualFolderLink; createFolders: VirtualFolderLink; hasFile: boolean; hasFolder: boolean; findFile: VirtualFile | VirtualFileLink | null; findSubFolder: VirtualFolder<VirtualBaseEvents> | VirtualFolderLink | null; getFiles: VirtualFile[]; getSubFolders: VirtualFolder<VirtualBaseEvents>[]; open: object | null | undefined; getItemCount: number; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: ... | ...; read: Promise<...>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: ... | ...; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<(...)>; toString: ... | ...; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; toString: string | null; on: Listener<VirtualBaseEvents & Record<..., ...>, K>; once: Listener<VirtualBaseEvents & Record<..., ...>, K>; onAsync: Listener<VirtualBaseEvents & Record<..., ...>, K>; off: void; emit: void; } | { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: object | null; read: Promise<OptionalStringProperty>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: VirtualFileJson | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<VirtualFileEvents & Record<..., ...>, K>; once: Listener<VirtualFileEvents & Record<..., ...>, K>; onAsync: Listener<VirtualFileEvents & Record<..., ...>, K>; off: void; emit: void; } | { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; isFile: this is VirtualFile; getType: string; download: void; isDownloadable: boolean; linkedPath?: string; setLinkedFile: VirtualFileLink; setLinkedPath: VirtualFileLink; isValid: boolean; toJSON: VirtualFileLinkJson | null; setAlias: VirtualFileLink; setSource: VirtualFileLink; setContent: VirtualFileLink; id: string; open: object | null; read: Promise<string | null | undefined>; getIconUrl: string; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: ... | ...; read: Promise<...>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: ... | ...; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<(...)>; toString: ... | ...; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<VirtualFileEvents & Record<..., ...>, K>; once: Listener<VirtualFileEvents & Record<..., ...>, K>; onAsync: Listener<VirtualFileEvents & Record<..., ...>, K>; off: void; emit: void; }; }; initiated: boolean; loadedDefaultData: boolean; systemManager: { systemName: string; tagLine: string; skin: { systemIcon: string; appIcons: {[key: string]: string; } | undefined; appNames: {[key: string]: string; } | undefined; wallpapers: readonly string[]; defaultWallpaper: string; fileIcons: { generic: string; info?: string; text?: string; code?: string; external?: string; video?: string; audio?: string; }; folderIcons: { generic: string; images?: string; text?: string; link?: string; video?: string; audio?: string; }; loadStyleSheet: () => void | undefined; defaultTheme: Theme | undefined; }; appsConfig: { apps: readonly { name: string; id: string; windowContent: FC<...> | null; windowOptions?: {[key: ...]: ...; fullscreen?: ...; setTitle?: ...; setIconUrl?: ...; close?: ...; focus?: ...; active?: ...; minimized?: ...; toggleMinimized?: ...; index?: ...; standalone?: ...; id?: ...; app?: ...; size?: ...; position?: ...; options?: ...; isFocused?: ...; lastInteraction?: ...; }; description: string | null; iconUrl: string | null; role: string | null; associatedExtensions: readonly string[]; pinnedByDefault: boolean; launchAtStartup: boolean; category: "Business" | "Developer tools" | "Education" | "Entertainment" | "Food & dining" | "Health & fitness" | "Kids & family" | "Lifestyle" | "Media" | "Medical" | "Multimedia design" | "Music" | "Navigation & maps" | "News & weather" | "Personal finance" | "Personalization" | "Photo & video" | "Productivity" | "Security" | "Shopping" | "Social" | "Sports" | "Travel" | "Utilities & tools" | null; metadata: { name: ...; version: ...; author: ...; } | null; showDesktopIcon: boolean; isActive: boolean; isPinned?: boolean; isInstalled: boolean; WindowContent: Element | null; setName: this; setDescription: this; setIconUrl: this; setRole: this; setAssociatedExtensions: this; setPinnedByDefault: this; setLaunchAtStartup: this; setInstalled: this; setCategory: this; setMetadata: this; setShowDesktopIcon: this; setWindowOptions: this; }[]; installedApps: readonly { name: string; id: string; windowContent: FC<...> | null; windowOptions?: {[key: ...]: ...; fullscreen?: ...; setTitle?: ...; setIconUrl?: ...; close?: ...; focus?: ...; active?: ...; minimized?: ...; toggleMinimized?: ...; index?: ...; standalone?: ...; id?: ...; app?: ...; size?: ...; position?: ...; options?: ...; isFocused?: ...; lastInteraction?: ...; }; description: string | null; iconUrl: string | null; role: string | null; associatedExtensions: readonly string[]; pinnedByDefault: boolean; launchAtStartup: boolean; category: "Business" | "Developer tools" | "Education" | "Entertainment" | "Food & dining" | "Health & fitness" | "Kids & family" | "Lifestyle" | "Media" | "Medical" | "Multimedia design" | "Music" | "Navigation & maps" | "News & weather" | "Personal finance" | "Personalization" | "Photo & video" | "Productivity" | "Security" | "Shopping" | "Social" | "Sports" | "Travel" | "Utilities & tools" | null; metadata: { name: ...; version: ...; author: ...; } | null; showDesktopIcon: boolean; isActive: boolean; isPinned?: boolean; isInstalled: boolean; WindowContent: Element | null; setName: this; setDescription: this; setIconUrl: this; setRole: this; setAssociatedExtensions: this; setPinnedByDefault: this; setLaunchAtStartup: this; setInstalled: this; setCategory: this; setMetadata: this; setShowDesktopIcon: this; setWindowOptions: this; }[]; getAppById: App<WindowProps> | null; getAppByFileExtension: App<WindowProps> | null; getAppByRole: App<WindowProps> | null; getAppsByCategory: App<WindowProps>[]; }; desktopConfig: { defaultIconSize: 0 | 1 | 2; defaultIconDirection: 0 | 1; }; miscConfig: { doubleClickDelay: number; }; modalsConfig: { defaultDialogSize: { x: number; y: number; clone: { readonly x: number; readonly y: number; readonly clone: ...; readonly magnitude: number; readonly setX: (x: number) => Vector2; readonly setY: (y: number) => Vector2; ... 10 more ...; readonly lerp: (vector2: Vector2, t: number) => Vector2; }; magnitude: number; setX: this; setY: this; set: this; round: this; normalize: Vector2; scale: Vector2; getDistanceSquared: number; getDistance: number; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; defaultFileSelectorSize: { x: number; y: number; clone: { readonly x: number; readonly y: number; readonly clone: ...; readonly magnitude: number; readonly setX: (x: number) => Vector2; readonly setY: (y: number) => Vector2; ... 10 more ...; readonly lerp: (vector2: Vector2, t: number) => Vector2; }; magnitude: number; setX: this; setY: this; set: this; round: this; normalize: Vector2; scale: Vector2; getDistanceSquared: number; getDistance: number; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; }; taskbarConfig: { height: number; }; trackingConfig: { enabled: boolean; googleAnalyticsMeasurementId: string; }; windowsConfig: { screenMargin: number; titleSeparator: string; minScreenSize: { x: number; y: number; clone: { readonly x: number; readonly y: number; readonly clone: ...; readonly magnitude: number; readonly setX: (x: number) => Vector2; readonly setY: (y: number) => Vector2; ... 10 more ...; readonly lerp: (vector2: Vector2, t: number) => Vector2; }; magnitude: number; setX: this; setY: this; set: this; round: this; normalize: Vector2; scale: Vector2; getDistanceSquared: number; getDistance: number; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; }; virtualDriveConfig: { saveData: false | { enableCompression: boolean; prefix?: string; migrations?: readonly ...[]; }; defaultData: { includePicturesFolder?: boolean; includeDocumentsFolder?: boolean; includeDesktopFolder?: boolean; includeSourceTree?: boolean; includeAppsFolder?: boolean; loadData?: (virtualRoot: VirtualRoot) => void; }; }; storage: { enableCompression: boolean; prefix: string | undefined; store: void; load: string | null; rename: this; remove: this; clear: this; getItemByteSize: number; getEncodedByteSize: number; encode: { result: string; size: number; }; decode: string; setPrefix: this; }; getUptime: string; }; storage: { enableCompression: boolean; prefix: string | undefined; rename: this; remove: this; clear: this; getItemByteSize: number; getEncodedByteSize: number; encode: { result: string; size: number; }; decode: string; setPrefix: this; virtualDriveConfig: { saveData: false | { enableCompression: boolean; prefix?: string; migrations?: readonly ...[]; }; defaultData: { includePicturesFolder?: boolean; includeDocumentsFolder?: boolean; includeDesktopFolder?: boolean; includeSourceTree?: boolean; includeAppsFolder?: boolean; loadData?: (virtualRoot: VirtualRoot) => void; }; }; load: string | null; store: void; synchronize: void; }; loadDefaultData: void; loadData: void; saveData: void; init: VirtualRoot; addShortcut: VirtualRoot; reset: void; path: string; displayPath: string; toJSON: VirtualRootJson | null; toString: string | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: object | null; read: Promise<OptionalStringProperty>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: VirtualFileJson | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<VirtualFileEvents & Record<keyof ..., ...[]>, K>; once: Listener<VirtualFileEvents & Record<keyof ..., ...[]>, K>; onAsync: Listener<VirtualFileEvents & Record<keyof ..., ...[]>, K>; off: void; emit: void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; on: Listener<VirtualRootEvents & Record<keyof VirtualRootEvents, unknown[]>, K>; once: Listener<VirtualRootEvents & Record<keyof VirtualRootEvents, unknown[]>, K>; onAsync: Listener<VirtualRootEvents & Record<keyof VirtualRootEvents, unknown[]>, K>; off: void; emit: void; } | null | undefined; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; toString: string | null; on: Listener<VirtualBaseEvents & Record<"update", unknown[]>, K>; once: Listener<VirtualBaseEvents & Record<"update", unknown[]>, K>; onAsync: Listener<VirtualBaseEvents & Record<"update", unknown[]>, K>; off: void; emit: void; }; prompt: string; stream: { enabled: boolean; start: this; stop: this; signal: this; write: this; pipe: Stream<string>; wait: Promise<void>; on: Listener<StreamEvents<string>, K>; once: Listener<StreamEvents<string>, K>; onAsync: Listener<StreamEvents<string>, K>; off: void; emit: void; } | null; ttyBuffer: string | null; isUsingAltScreen: boolean; env: {[key: string]: string; }; }]

Source: shell.ts

A hook that initializes and manages a Shell instance within a React component. It gathers required system contexts and returns a reactive snapshot of the shell's state.

Parameters

config

Pick<ShellConfig, "app" | "path" | "input" | "exit" | "sizeRef">

Configuration subset required to instantiate the shell.

Returns

[Shell, { history: readonly { text?: string; isCommand: boolean; value?: string; clear?: boolean; }[]; line: string; historyOffset: number; workingDirectory: { subFolders: readonly ({ readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | { subFolders: readonly ({ readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ....; files: readonly ({ extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: object | null; read: Promise<OptionalStringProperty>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: VirtualFileJson | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { subFolders: ...; files: ...; type: ...; setAlias: this; hasFile: ...; hasFolder: ...; findFile: ...; findSubFolder: ...; addFile: this; createFile: this; createFiles: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolder: this; createFolders: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: ...; navigateToFolder: ...; navigateToFile: ...; open: ...; delete: ...; getFiles: ...; getSubFolders: ...; getItemCount: ...; isFolder: this is (...); getIconUrl: ...; shortcuts: ...; initiated: ...; loadedDefaultData: ...; systemManager: ...; storage: ...; loadDefaultData: ...; loadData: ...; saveData: ...; init: ...; addShortcut: ...; reset: ...; path: ...; displayPath: ...; toJSON: ...; toString: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; id: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: ...; confirmChanges: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFile: this is (...); on: ...; once: ...; onAsync: ...; off: ...; emit: ...; } | null | undefined; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<... & ..., K>; once: Listener<... & ..., K>; onAsync: Listener<... & ..., K>; off: void; emit: void; } | { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; isFile: this is VirtualFile; getType: string; download: void; isDownloadable: boolean; linkedPath?: string; setLinkedFile: VirtualFileLink; setLinkedPath: VirtualFileLink; isValid: boolean; toJSON: VirtualFileLinkJson | null; setAlias: VirtualFileLink; setSource: VirtualFileLink; setContent: VirtualFileLink; id: string; open: object | null; read: Promise<... | ... | ...>; getIconUrl: string; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { extension: ...; source: ...; content: ...; setAlias: this; setSource: this; setContent: this; id: ...; open: ...; read: ...; isFile: this is (...); getIconUrl: ...; getType: ...; download: ...; isDownloadable: ...; toJSON: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFolder: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { subFolders: ...; files: ...; type: ...; setAlias: this; hasFile: ...; hasFolder: ...; findFile: ...; findSubFolder: ...; addFile: this; createFile: this; createFiles: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolder: this; createFolders: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: ...; navigateToFolder: ...; navigateToFile: ...; open: ...; delete: ...; getFiles: ...; getSubFolders: ...; getItemCount: ...; isFolder: this is (...); getIconUrl: ...; shortcuts: ...; initiated: ...; loadedDefaultData: ...; systemManager: ...; storage: ...; loadDefaultData: ...; loadData: ...; saveData: ...; init: ...; addShortcut: ...; reset: ...; path: ...; displayPath: ...; toJSON: ...; toString: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; id: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: ...; confirmChanges: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFile: this is (...); on: ...; once: ...; onAsync: ...; off: ...; emit: ...; } | null | undefined; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<... & ..., K>; once: Listener<... & ..., K>; onAsync: Listener<... & ..., K>; off: void; emit: void; })[]; type: number | undefined; addFile: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: VirtualFolder<VirtualBaseEvents> | VirtualFile | null; navigateToFolder: VirtualFolder<VirtualBaseEvents> | null; navigateToFile: VirtualFile | null; delete: void; isFolder: this is VirtualFolder<VirtualBaseEvents>; linkedPath?: string; setLinkedFolder: VirtualFolderLink; setLinkedPath: VirtualFolderLink; isValid: boolean; getIconUrl: string; toJSON: VirtualFolderLinkJson | null; setAlias: VirtualFolderLink; createFile: VirtualFolderLink; createFiles: VirtualFolderLink; createFolder: VirtualFolderLink; createFolders: VirtualFolderLink; hasFile: boolean; hasFolder: boolean; findFile: VirtualFile | VirtualFileLink | null; findSubFolder: VirtualFolder<VirtualBaseEvents> | VirtualFolderLink | null; getFiles: VirtualFile[]; getSubFolders: VirtualFolder<VirtualBaseEvents>[]; open: object | null | undefined; getItemCount: number; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: object | null; read: Promise<OptionalStringProperty>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: VirtualFileJson | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { subFolders: readonly ({ readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ....; files: readonly ...[]; type: ... | ...; setAlias: this; hasFile: boolean; hasFolder: boolean; findFile: ... | ... | ...; findSubFolder: ... | ... | ...; addFile: this; createFile: this; createFiles: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolder: this; createFolders: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: ... | ... | ...; navigateToFolder: ... | ...; navigateToFile: ... | ...; open: ... | ... | ...; delete: void; getFiles: ...[]; getSubFolders: ...[]; getItemCount: number; isFolder: this is VirtualFolder<(...)>; getIconUrl: string; shortcuts: {[key: ...]: ...; }; initiated: boolean; loadedDefaultData: boolean; systemManager: { systemName: ...; tagLine: ...; skin: ...; appsConfig: ...; desktopConfig: ...; miscConfig: ...; modalsConfig: ...; taskbarConfig: ...; trackingConfig: ...; windowsConfig: ...; virtualDriveConfig: ...; storage: ...; getUptime: ...; }; storage: { enableCompression: ...; prefix: ...; rename: this; remove: this; clear: this; getItemByteSize: ...; getEncodedByteSize: ...; encode: ...; decode: ...; setPrefix: this; virtualDriveConfig: ...; load: ...; store: ...; synchronize: ...; }; loadDefaultData: void; loadData: void; saveData: void; init: VirtualRoot; addShortcut: VirtualRoot; reset: void; path: string; displayPath: string; toJSON: ... | ...; toString: ... | ...; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; } | null | undefined; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<VirtualFileEvents & Record<..., ...>, K>; once: Listener<VirtualFileEvents & Record<..., ...>, K>; onAsync: Listener<VirtualFileEvents & Record<..., ...>, K>; off: void; emit: void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { subFolders: readonly ({ readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ....; files: readonly ({ extension: ...; source: ...; content: ...; setAlias: this; setSource: this; setContent: this; id: ...; open: ...; read: ...; isFile: this is (...); getIconUrl: ...; getType: ...; download: ...; isDownloadable: ...; toJSON: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFolder: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; } | { extension: ...; source: ...; content: ...; isFile: this is (...); getType: ...; download: ...; isDownloadable: ...; linkedPath?: ...; setLinkedFile: ...; setLinkedPath: ...; isValid: ...; toJSON: ...; setAlias: ...; setSource: ...; setContent: ...; id: ...; open: ...; read: ...; getIconUrl: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFolder: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; })[]; type: number | undefined; setAlias: this; hasFile: boolean; hasFolder: boolean; findFile: VirtualFile | VirtualFileLink | null; findSubFolder: VirtualFolder<VirtualBaseEvents> | VirtualFolderLink | null; addFile: this; createFile: this; createFiles: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolder: this; createFolders: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: VirtualFolder<VirtualBaseEvents> | VirtualFile | null; navigateToFolder: VirtualFolder<VirtualBaseEvents> | null; navigateToFile: VirtualFile | null; open: object | null | undefined; delete: void; getFiles: VirtualFile[]; getSubFolders: VirtualFolder<VirtualBaseEvents>[]; getItemCount: number; isFolder: this is VirtualFolder<VirtualBaseEvents>; getIconUrl: string; shortcuts: {[key: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; } | { extension: ...; source: ...; content: ...; setAlias: this; setSource: this; setContent: this; id: ...; open: ...; read: ...; isFile: this is (...); getIconUrl: ...; getType: ...; download: ...; isDownloadable: ...; toJSON: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFolder: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; } | { extension: ...; source: ...; content: ...; isFile: this is (...); getType: ...; download: ...; isDownloadable: ...; linkedPath?: ...; setLinkedFile: ...; setLinkedPath: ...; isValid: ...; toJSON: ...; setAlias: ...; setSource: ...; setContent: ...; id: ...; open: ...; read: ...; getIconUrl: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFolder: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; }; }; initiated: boolean; loadedDefaultData: boolean; systemManager: { systemName: string; tagLine: string; skin: { systemIcon: string; appIcons: ... | ...; appNames: ... | ...; wallpapers: readonly ...[]; defaultWallpaper: string; fileIcons: { generic: ...; info?: ...; text?: ...; code?: ...; external?: ...; video?: ...; audio?: ...; }; folderIcons: { generic: ...; images?: ...; text?: ...; link?: ...; video?: ...; audio?: ...; }; loadStyleSheet: ... | ...; defaultTheme: ... | ...; }; appsConfig: { apps: readonly ...[]; installedApps: readonly ...[]; getAppById: ... | ...; getAppByFileExtension: ... | ...; getAppByRole: ... | ...; getAppsByCategory: ...[]; }; desktopConfig: { defaultIconSize: ... | ... | ...; defaultIconDirection: ... | ...; }; miscConfig: { doubleClickDelay: number; }; modalsConfig: { defaultDialogSize: { x: ...; y: ...; clone: ...; magnitude: ...; setX: this; setY: this; set: this; round: this; normalize: ...; scale: ...; getDistanceSquared: ...; getDistance: ...; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; defaultFileSelectorSize: { x: ...; y: ...; clone: ...; magnitude: ...; setX: this; setY: this; set: this; round: this; normalize: ...; scale: ...; getDistanceSquared: ...; getDistance: ...; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; }; taskbarConfig: { height: number; }; trackingConfig: { enabled: boolean; googleAnalyticsMeasurementId: string; }; windowsConfig: { screenMargin: number; titleSeparator: string; minScreenSize: { x: ...; y: ...; clone: ...; magnitude: ...; setX: this; setY: this; set: this; round: this; normalize: ...; scale: ...; getDistanceSquared: ...; getDistance: ...; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; }; virtualDriveConfig: { saveData: ... | ...; defaultData: { includePicturesFolder?: ...; includeDocumentsFolder?: ...; includeDesktopFolder?: ...; includeSourceTree?: ...; includeAppsFolder?: ...; loadData?: ...; }; }; storage: { enableCompression: boolean; prefix: ... | ...; store: void; load: ... | ...; rename: this; remove: this; clear: this; getItemByteSize: number; getEncodedByteSize: number; encode: { result: ...; size: ...; }; decode: string; setPrefix: this; }; getUptime: string; }; storage: { enableCompression: boolean; prefix: string | undefined; rename: this; remove: this; clear: this; getItemByteSize: number; getEncodedByteSize: number; encode: { result: string; size: number; }; decode: string; setPrefix: this; virtualDriveConfig: { saveData: ... | ...; defaultData: { includePicturesFolder?: ...; includeDocumentsFolder?: ...; includeDesktopFolder?: ...; includeSourceTree?: ...; includeAppsFolder?: ...; loadData?: ...; }; }; load: string | null; store: void; synchronize: void; }; loadDefaultData: void; loadData: void; saveData: void; init: VirtualRoot; addShortcut: VirtualRoot; reset: void; path: string; displayPath: string; toJSON: VirtualRootJson | null; toString: string | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: ... | ...; read: Promise<...>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: ... | ...; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<(...)>; toString: ... | ...; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; on: Listener<VirtualRootEvents & Record<..., ...>, K>; once: Listener<VirtualRootEvents & Record<..., ...>, K>; onAsync: Listener<VirtualRootEvents & Record<..., ...>, K>; off: void; emit: void; } | null | undefined; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; toString: string | null; on: Listener<VirtualBaseEvents & Record<"update", unknown[]>, K>; once: Listener<VirtualBaseEvents & Record<"update", unknown[]>, K>; onAsync: Listener<VirtualBaseEvents & Record<"update", unknown[]>, K>; off: void; emit: void; })[]; files: readonly ({ extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: object | null; read: Promise<OptionalStringProperty>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: VirtualFileJson | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { subFolders: readonly ({ readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | { subFolders: ...; files: ...; type: ...; addFile: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: ...; navigateToFolder: ...; navigateToFile: ...; delete: ...; isFolder: this is (...); linkedPath?: ...; setLinkedFolder: ...; setLinkedPath: ...; isValid: ...; getIconUrl: ...; toJSON: ...; setAlias: ...; createFile: ...; createFiles: ...; createFolder: ...; createFolders: ...; hasFile: ...; hasFolder: ...; findFile: ...; findSubFolder: ...; getFiles: ...; getSubFolders: ...; open: ...; getItemCount: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; id: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFile: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; })[]; files: readonly ({ readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | { ...; })[]; type: number | undefined; setAlias: this; hasFile: boolean; hasFolder: boolean; findFile: VirtualFile | VirtualFileLink | null; findSubFolder: VirtualFolder<VirtualBaseEvents> | VirtualFolderLink | null; addFile: this; createFile: this; createFiles: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolder: this; createFolders: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: VirtualFolder<VirtualBaseEvents> | VirtualFile | null; navigateToFolder: VirtualFolder<VirtualBaseEvents> | null; navigateToFile: VirtualFile | null; open: object | null | undefined; delete: void; getFiles: VirtualFile[]; getSubFolders: VirtualFolder<VirtualBaseEvents>[]; getItemCount: number; isFolder: this is VirtualFolder<VirtualBaseEvents>; getIconUrl: string; shortcuts: {[key: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | { subFolders: ...; files: ...; type: ...; addFile: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: ...; navigateToFolder: ...; navigateToFile: ...; delete: ...; isFolder: this is (...); linkedPath?: ...; setLinkedFolder: ...; setLinkedPath: ...; isValid: ...; getIconUrl: ...; toJSON: ...; setAlias: ...; createFile: ...; createFiles: ...; createFolder: ...; createFolders: ...; hasFile: ...; hasFolder: ...; findFile: ...; findSubFolder: ...; getFiles: ...; getSubFolders: ...; open: ...; getItemCount: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; id: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFile: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; } | { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | { extension: ...; source: ...; content: ...; isFile: this is (...); getType: ...; download: ...; isDownloadable: ...; linkedPath?: ...; setLinkedFile: ...; setLinkedPath: ...; isValid: ...; toJSON: ...; setAlias: ...; setSource: ...; setContent: ...; id: ...; open: ...; read: ...; getIconUrl: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFolder: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; }; }; initiated: boolean; loadedDefaultData: boolean; systemManager: { systemName: string; tagLine: string; skin: { systemIcon: string; appIcons: ... | ...; appNames: ... | ...; wallpapers: readonly ...[]; defaultWallpaper: string; fileIcons: { generic: ...; info?: ...; text?: ...; code?: ...; external?: ...; video?: ...; audio?: ...; }; folderIcons: { generic: ...; images?: ...; text?: ...; link?: ...; video?: ...; audio?: ...; }; loadStyleSheet: ... | ...; defaultTheme: ... | ...; }; appsConfig: { apps: readonly ...[]; installedApps: readonly ...[]; getAppById: ... | ...; getAppByFileExtension: ... | ...; getAppByRole: ... | ...; getAppsByCategory: ...[]; }; desktopConfig: { defaultIconSize: ... | ... | ...; defaultIconDirection: ... | ...; }; miscConfig: { doubleClickDelay: number; }; modalsConfig: { defaultDialogSize: { x: ...; y: ...; clone: ...; magnitude: ...; setX: this; setY: this; set: this; round: this; normalize: ...; scale: ...; getDistanceSquared: ...; getDistance: ...; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; defaultFileSelectorSize: { x: ...; y: ...; clone: ...; magnitude: ...; setX: this; setY: this; set: this; round: this; normalize: ...; scale: ...; getDistanceSquared: ...; getDistance: ...; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; }; taskbarConfig: { height: number; }; trackingConfig: { enabled: boolean; googleAnalyticsMeasurementId: string; }; windowsConfig: { screenMargin: number; titleSeparator: string; minScreenSize: { x: ...; y: ...; clone: ...; magnitude: ...; setX: this; setY: this; set: this; round: this; normalize: ...; scale: ...; getDistanceSquared: ...; getDistance: ...; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; }; virtualDriveConfig: { saveData: ... | ...; defaultData: { includePicturesFolder?: ...; includeDocumentsFolder?: ...; includeDesktopFolder?: ...; includeSourceTree?: ...; includeAppsFolder?: ...; loadData?: ...; }; }; storage: { enableCompression: boolean; prefix: ... | ...; store: void; load: ... | ...; rename: this; remove: this; clear: this; getItemByteSize: number; getEncodedByteSize: number; encode: { result: ...; size: ...; }; decode: string; setPrefix: this; }; getUptime: string; }; storage: { enableCompression: boolean; prefix: string | undefined; rename: this; remove: this; clear: this; getItemByteSize: number; getEncodedByteSize: number; encode: { result: string; size: number; }; decode: string; setPrefix: this; virtualDriveConfig: { saveData: ... | ...; defaultData: { includePicturesFolder?: ...; includeDocumentsFolder?: ...; includeDesktopFolder?: ...; includeSourceTree?: ...; includeAppsFolder?: ...; loadData?: ...; }; }; load: string | null; store: void; synchronize: void; }; loadDefaultData: void; loadData: void; saveData: void; init: VirtualRoot; addShortcut: VirtualRoot; reset: void; path: string; displayPath: string; toJSON: VirtualRootJson | null; toString: string | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; on: Listener<VirtualRootEvents & Record<..., ...>, K>; once: Listener<VirtualRootEvents & Record<..., ...>, K>; onAsync: Listener<VirtualRootEvents & Record<..., ...>, K>; off: void; emit: void; } | null | undefined; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<VirtualFileEvents & Record<keyof VirtualFileEvents, unknown[]>, K>; once: Listener<VirtualFileEvents & Record<keyof VirtualFileEvents, unknown[]>, K>; onAsync: Listener<VirtualFileEvents & Record<keyof VirtualFileEvents, unknown[]>, K>; off: void; emit: void; } | { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; isFile: this is VirtualFile; getType: string; download: void; isDownloadable: boolean; linkedPath?: string; setLinkedFile: VirtualFileLink; setLinkedPath: VirtualFileLink; isValid: boolean; toJSON: VirtualFileLinkJson | null; setAlias: VirtualFileLink; setSource: VirtualFileLink; setContent: VirtualFileLink; id: string; open: object | null; read: Promise<string | null | undefined>; getIconUrl: string; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: object | null; read: Promise<OptionalStringProperty>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: VirtualFileJson | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { subFolders: readonly ...[]; files: readonly ({ readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | { ...; })[]; type: ... | ...; setAlias: this; hasFile: boolean; hasFolder: boolean; findFile: ... | ... | ...; findSubFolder: ... | ... | ...; addFile: this; createFile: this; createFiles: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolder: this; createFolders: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: ... | ... | ...; navigateToFolder: ... | ...; navigateToFile: ... | ...; open: ... | ... | ...; delete: void; getFiles: ...[]; getSubFolders: ...[]; getItemCount: number; isFolder: this is VirtualFolder<(...)>; getIconUrl: string; shortcuts: {[key: ...]: ...; }; initiated: boolean; loadedDefaultData: boolean; systemManager: { systemName: ...; tagLine: ...; skin: ...; appsConfig: ...; desktopConfig: ...; miscConfig: ...; modalsConfig: ...; taskbarConfig: ...; trackingConfig: ...; windowsConfig: ...; virtualDriveConfig: ...; storage: ...; getUptime: ...; }; storage: { enableCompression: ...; prefix: ...; rename: this; remove: this; clear: this; getItemByteSize: ...; getEncodedByteSize: ...; encode: ...; decode: ...; setPrefix: this; virtualDriveConfig: ...; load: ...; store: ...; synchronize: ...; }; loadDefaultData: void; loadData: void; saveData: void; init: VirtualRoot; addShortcut: VirtualRoot; reset: void; path: string; displayPath: string; toJSON: ... | ...; toString: ... | ...; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; } | null | undefined; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<VirtualFileEvents & Record<..., ...>, K>; once: Listener<VirtualFileEvents & Record<..., ...>, K>; onAsync: Listener<VirtualFileEvents & Record<..., ...>, K>; off: void; emit: void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { subFolders: readonly ({ readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | { subFolders: ...; files: ...; type: ...; addFile: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: ...; navigateToFolder: ...; navigateToFile: ...; delete: ...; isFolder: this is (...); linkedPath?: ...; setLinkedFolder: ...; setLinkedPath: ...; isValid: ...; getIconUrl: ...; toJSON: ...; setAlias: ...; createFile: ...; createFiles: ...; createFolder: ...; createFolders: ...; hasFile: ...; hasFolder: ...; findFile: ...; findSubFolder: ...; getFiles: ...; getSubFolders: ...; open: ...; getItemCount: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; id: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFile: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; })[]; files: readonly ({ readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | { ...; })[]; type: number | undefined; setAlias: this; hasFile: boolean; hasFolder: boolean; findFile: VirtualFile | VirtualFileLink | null; findSubFolder: VirtualFolder<VirtualBaseEvents> | VirtualFolderLink | null; addFile: this; createFile: this; createFiles: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolder: this; createFolders: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: VirtualFolder<VirtualBaseEvents> | VirtualFile | null; navigateToFolder: VirtualFolder<VirtualBaseEvents> | null; navigateToFile: VirtualFile | null; open: object | null | undefined; delete: void; getFiles: VirtualFile[]; getSubFolders: VirtualFolder<VirtualBaseEvents>[]; getItemCount: number; isFolder: this is VirtualFolder<VirtualBaseEvents>; getIconUrl: string; shortcuts: {[key: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | { subFolders: ...; files: ...; type: ...; addFile: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: ...; navigateToFolder: ...; navigateToFile: ...; delete: ...; isFolder: this is (...); linkedPath?: ...; setLinkedFolder: ...; setLinkedPath: ...; isValid: ...; getIconUrl: ...; toJSON: ...; setAlias: ...; createFile: ...; createFiles: ...; createFolder: ...; createFolders: ...; hasFile: ...; hasFolder: ...; findFile: ...; findSubFolder: ...; getFiles: ...; getSubFolders: ...; open: ...; getItemCount: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; id: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFile: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; } | { extension: ...; source: ...; content: ...; setAlias: this; setSource: this; setContent: this; id: ...; open: ...; read: ...; isFile: this is (...); getIconUrl: ...; getType: ...; download: ...; isDownloadable: ...; toJSON: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFolder: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; } | { readonly linkedPath?: string | undefined; readonly setLinkedFile: (file: VirtualFile | null) => VirtualFileLink; readonly setLinkedPath: (path: string) => VirtualFileLink; ... 44 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; }; }; initiated: boolean; loadedDefaultData: boolean; systemManager: { systemName: string; tagLine: string; skin: { systemIcon: string; appIcons: ... | ...; appNames: ... | ...; wallpapers: readonly ...[]; defaultWallpaper: string; fileIcons: { generic: ...; info?: ...; text?: ...; code?: ...; external?: ...; video?: ...; audio?: ...; }; folderIcons: { generic: ...; images?: ...; text?: ...; link?: ...; video?: ...; audio?: ...; }; loadStyleSheet: ... | ...; defaultTheme: ... | ...; }; appsConfig: { apps: readonly ...[]; installedApps: readonly ...[]; getAppById: ... | ...; getAppByFileExtension: ... | ...; getAppByRole: ... | ...; getAppsByCategory: ...[]; }; desktopConfig: { defaultIconSize: ... | ... | ...; defaultIconDirection: ... | ...; }; miscConfig: { doubleClickDelay: number; }; modalsConfig: { defaultDialogSize: { x: ...; y: ...; clone: ...; magnitude: ...; setX: this; setY: this; set: this; round: this; normalize: ...; scale: ...; getDistanceSquared: ...; getDistance: ...; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; defaultFileSelectorSize: { x: ...; y: ...; clone: ...; magnitude: ...; setX: this; setY: this; set: this; round: this; normalize: ...; scale: ...; getDistanceSquared: ...; getDistance: ...; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; }; taskbarConfig: { height: number; }; trackingConfig: { enabled: boolean; googleAnalyticsMeasurementId: string; }; windowsConfig: { screenMargin: number; titleSeparator: string; minScreenSize: { x: ...; y: ...; clone: ...; magnitude: ...; setX: this; setY: this; set: this; round: this; normalize: ...; scale: ...; getDistanceSquared: ...; getDistance: ...; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; }; virtualDriveConfig: { saveData: ... | ...; defaultData: { includePicturesFolder?: ...; includeDocumentsFolder?: ...; includeDesktopFolder?: ...; includeSourceTree?: ...; includeAppsFolder?: ...; loadData?: ...; }; }; storage: { enableCompression: boolean; prefix: ... | ...; store: void; load: ... | ...; rename: this; remove: this; clear: this; getItemByteSize: number; getEncodedByteSize: number; encode: { result: ...; size: ...; }; decode: string; setPrefix: this; }; getUptime: string; }; storage: { enableCompression: boolean; prefix: string | undefined; rename: this; remove: this; clear: this; getItemByteSize: number; getEncodedByteSize: number; encode: { result: string; size: number; }; decode: string; setPrefix: this; virtualDriveConfig: { saveData: ... | ...; defaultData: { includePicturesFolder?: ...; includeDocumentsFolder?: ...; includeDesktopFolder?: ...; includeSourceTree?: ...; includeAppsFolder?: ...; loadData?: ...; }; }; load: string | null; store: void; synchronize: void; }; loadDefaultData: void; loadData: void; saveData: void; init: VirtualRoot; addShortcut: VirtualRoot; reset: void; path: string; displayPath: string; toJSON: VirtualRootJson | null; toString: string | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: ... | ...; read: Promise<...>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: ... | ...; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<(...)>; toString: ... | ...; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; on: Listener<VirtualRootEvents & Record<..., ...>, K>; once: Listener<VirtualRootEvents & Record<..., ...>, K>; onAsync: Listener<VirtualRootEvents & Record<..., ...>, K>; off: void; emit: void; } | null | undefined; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<VirtualFileEvents & Record<keyof VirtualFileEvents, unknown[]>, K>; once: Listener<VirtualFileEvents & Record<keyof VirtualFileEvents, unknown[]>, K>; onAsync: Listener<VirtualFileEvents & Record<keyof VirtualFileEvents, unknown[]>, K>; off: void; emit: void; })[]; type: number | undefined; setAlias: this; hasFile: boolean; hasFolder: boolean; findFile: VirtualFile | VirtualFileLink | null; findSubFolder: VirtualFolder<VirtualBaseEvents> | VirtualFolderLink | null; addFile: this; createFile: this; createFiles: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolder: this; createFolders: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: VirtualFolder<VirtualBaseEvents> | VirtualFile | null; navigateToFolder: VirtualFolder<VirtualBaseEvents> | null; navigateToFile: VirtualFile | null; open: object | null | undefined; delete: void; getFiles: VirtualFile[]; getSubFolders: VirtualFolder<VirtualBaseEvents>[]; getItemCount: number; isFolder: this is VirtualFolder<VirtualBaseEvents>; getIconUrl: string; toJSON: VirtualFolderJson | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: object | null; read: Promise<OptionalStringProperty>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: VirtualFileJson | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { subFolders: readonly ({ readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | { subFolders: readonly ({ readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ....; files: readonly ...[]; type: ... | ...; addFile: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: ... | ... | ...; navigateToFolder: ... | ...; navigateToFile: ... | ...; delete: void; isFolder: this is VirtualFolder<(...)>; linkedPath?: ... | ...; setLinkedFolder: VirtualFolderLink; setLinkedPath: VirtualFolderLink; isValid: boolean; getIconUrl: string; toJSON: ... | ...; setAlias: VirtualFolderLink; createFile: VirtualFolderLink; createFiles: VirtualFolderLink; createFolder: VirtualFolderLink; createFolders: VirtualFolderLink; hasFile: boolean; hasFolder: boolean; findFile: ... | ... | ...; findSubFolder: ... | ... | ...; getFiles: ...[]; getSubFolders: ...[]; open: ... | ... | ...; getItemCount: number; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; toString: ... | ...; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; })[]; files: readonly ({ readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; isFile: this is VirtualFile; getType: string; download: void; isDownloadable: boolean; linkedPath?: ... | ...; setLinkedFile: VirtualFileLink; setLinkedPath: VirtualFileLink; isValid: boolean; toJSON: ... | ...; setAlias: VirtualFileLink; setSource: VirtualFileLink; setContent: VirtualFileLink; id: string; open: ... | ...; read: Promise<...>; getIconUrl: string; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<(...)>; toString: ... | ...; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; })[]; type: number | undefined; setAlias: this; hasFile: boolean; hasFolder: boolean; findFile: VirtualFile | VirtualFileLink | null; findSubFolder: VirtualFolder<VirtualBaseEvents> | VirtualFolderLink | null; addFile: this; createFile: this; createFiles: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolder: this; createFolders: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: VirtualFolder<VirtualBaseEvents> | VirtualFile | null; navigateToFolder: VirtualFolder<VirtualBaseEvents> | null; navigateToFile: VirtualFile | null; open: object | null | undefined; delete: void; getFiles: VirtualFile[]; getSubFolders: VirtualFolder<VirtualBaseEvents>[]; getItemCount: number; isFolder: this is VirtualFolder<VirtualBaseEvents>; getIconUrl: string; shortcuts: {[key: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | { subFolders: readonly ...[]; files: readonly ...[]; type: ... | ...; addFile: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: ... | ... | ...; navigateToFolder: ... | ...; navigateToFile: ... | ...; delete: void; isFolder: this is VirtualFolder<(...)>; linkedPath?: ... | ...; setLinkedFolder: VirtualFolderLink; setLinkedPath: VirtualFolderLink; isValid: boolean; getIconUrl: string; toJSON: ... | ...; setAlias: VirtualFolderLink; createFile: VirtualFolderLink; createFiles: VirtualFolderLink; createFolder: VirtualFolderLink; createFolders: VirtualFolderLink; hasFile: boolean; hasFolder: boolean; findFile: ... | ... | ...; findSubFolder: ... | ... | ...; getFiles: ...[]; getSubFolders: ...[]; open: ... | ... | ...; getItemCount: number; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; toString: ... | ...; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; } | { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; isFile: this is VirtualFile; getType: string; download: void; isDownloadable: boolean; linkedPath?: ... | ...; setLinkedFile: VirtualFileLink; setLinkedPath: VirtualFileLink; isValid: boolean; toJSON: ... | ...; setAlias: VirtualFileLink; setSource: VirtualFileLink; setContent: VirtualFileLink; id: string; open: ... | ...; read: Promise<...>; getIconUrl: string; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<(...)>; toString: ... | ...; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; }; }; initiated: boolean; loadedDefaultData: boolean; systemManager: { systemName: string; tagLine: string; skin: { systemIcon: string; appIcons: {[key: ...]: ...; } | undefined; appNames: {[key: ...]: ...; } | undefined; wallpapers: readonly string[]; defaultWallpaper: string; fileIcons: { generic: string; info?: ... | ...; text?: ... | ...; code?: ... | ...; external?: ... | ...; video?: ... | ...; audio?: ... | ...; }; folderIcons: { generic: string; images?: ... | ...; text?: ... | ...; link?: ... | ...; video?: ... | ...; audio?: ... | ...; }; loadStyleSheet: () => ... | undefined; defaultTheme: Theme | undefined; }; appsConfig: { apps: readonly { name: ...; id: ...; windowContent: ...; windowOptions?: ...; description: ...; iconUrl: ...; role: ...; associatedExtensions: ...; pinnedByDefault: ...; launchAtStartup: ...; category: ...; metadata: ...; showDesktopIcon: ...; isActive: ...; isPinned?: ...; isInstalled: ...; WindowContent: ...; setName: this; setDescription: this; setIconUrl: this; setRole: this; setAssociatedExtensions: this; setPinnedByDefault: this; setLaunchAtStartup: this; setInstalled: this; setCategory: this; setMetadata: this; setShowDesktopIcon: this; setWindowOptions: this; }[]; installedApps: readonly { name: ...; id: ...; windowContent: ...; windowOptions?: ...; description: ...; iconUrl: ...; role: ...; associatedExtensions: ...; pinnedByDefault: ...; launchAtStartup: ...; category: ...; metadata: ...; showDesktopIcon: ...; isActive: ...; isPinned?: ...; isInstalled: ...; WindowContent: ...; setName: this; setDescription: this; setIconUrl: this; setRole: this; setAssociatedExtensions: this; setPinnedByDefault: this; setLaunchAtStartup: this; setInstalled: this; setCategory: this; setMetadata: this; setShowDesktopIcon: this; setWindowOptions: this; }[]; getAppById: App<...> | null; getAppByFileExtension: App<...> | null; getAppByRole: App<...> | null; getAppsByCategory: App<...>[]; }; desktopConfig: { defaultIconSize: 0 | 1 | 2; defaultIconDirection: 0 | 1; }; miscConfig: { doubleClickDelay: number; }; modalsConfig: { defaultDialogSize: { x: number; y: number; clone: { readonly x: number; readonly y: number; readonly clone: ...; readonly magnitude: number; readonly setX: (x: number) => Vector2; readonly setY: (y: number) => Vector2; ... 10 more ...; readonly lerp: (vector2: Vector2, t: number) => Vector2; }; magnitude: number; setX: this; setY: this; set: this; round: this; normalize: Vector2; scale: Vector2; getDistanceSquared: number; getDistance: number; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; defaultFileSelectorSize: { x: number; y: number; clone: { readonly x: number; readonly y: number; readonly clone: ...; readonly magnitude: number; readonly setX: (x: number) => Vector2; readonly setY: (y: number) => Vector2; ... 10 more ...; readonly lerp: (vector2: Vector2, t: number) => Vector2; }; magnitude: number; setX: this; setY: this; set: this; round: this; normalize: Vector2; scale: Vector2; getDistanceSquared: number; getDistance: number; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; }; taskbarConfig: { height: number; }; trackingConfig: { enabled: boolean; googleAnalyticsMeasurementId: string; }; windowsConfig: { screenMargin: number; titleSeparator: string; minScreenSize: { x: number; y: number; clone: { readonly x: number; readonly y: number; readonly clone: ...; readonly magnitude: number; readonly setX: (x: number) => Vector2; readonly setY: (y: number) => Vector2; ... 10 more ...; readonly lerp: (vector2: Vector2, t: number) => Vector2; }; magnitude: number; setX: this; setY: this; set: this; round: this; normalize: Vector2; scale: Vector2; getDistanceSquared: number; getDistance: number; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; }; virtualDriveConfig: { saveData: false | { enableCompression: ...; prefix?: ...; migrations?: ...; }; defaultData: { includePicturesFolder?: ... | ... | ...; includeDocumentsFolder?: ... | ... | ...; includeDesktopFolder?: ... | ... | ...; includeSourceTree?: ... | ... | ...; includeAppsFolder?: ... | ... | ...; loadData?: ... | ...; }; }; storage: { enableCompression: boolean; prefix: string | undefined; store: void; load: string | null; rename: this; remove: this; clear: this; getItemByteSize: number; getEncodedByteSize: number; encode: { result: string; size: number; }; decode: string; setPrefix: this; }; getUptime: string; }; storage: { enableCompression: boolean; prefix: string | undefined; rename: this; remove: this; clear: this; getItemByteSize: number; getEncodedByteSize: number; encode: { result: string; size: number; }; decode: string; setPrefix: this; virtualDriveConfig: { saveData: false | { enableCompression: ...; prefix?: ...; migrations?: ...; }; defaultData: { includePicturesFolder?: ... | ... | ...; includeDocumentsFolder?: ... | ... | ...; includeDesktopFolder?: ... | ... | ...; includeSourceTree?: ... | ... | ...; includeAppsFolder?: ... | ... | ...; loadData?: ... | ...; }; }; load: string | null; store: void; synchronize: void; }; loadDefaultData: void; loadData: void; saveData: void; init: VirtualRoot; addShortcut: VirtualRoot; reset: void; path: string; displayPath: string; toJSON: VirtualRootJson | null; toString: string | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; on: Listener<VirtualRootEvents & Record<keyof ..., ...[]>, K>; once: Listener<VirtualRootEvents & Record<keyof ..., ...[]>, K>; onAsync: Listener<VirtualRootEvents & Record<keyof ..., ...[]>, K>; off: void; emit: void; } | null | undefined; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<VirtualFileEvents & Record<keyof VirtualFileEvents, unknown[]>, K>; once: Listener<VirtualFileEvents & Record<keyof VirtualFileEvents, unknown[]>, K>; onAsync: Listener<VirtualFileEvents & Record<keyof VirtualFileEvents, unknown[]>, K>; off: void; emit: void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { subFolders: readonly ({ readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | { subFolders: readonly ({ readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ....; files: readonly ({ extension: ...; source: ...; content: ...; setAlias: this; setSource: this; setContent: this; id: ...; open: ...; read: ...; isFile: this is (...); getIconUrl: ...; getType: ...; download: ...; isDownloadable: ...; toJSON: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFolder: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; } | { extension: ...; source: ...; content: ...; isFile: this is (...); getType: ...; download: ...; isDownloadable: ...; linkedPath?: ...; setLinkedFile: ...; setLinkedPath: ...; isValid: ...; toJSON: ...; setAlias: ...; setSource: ...; setContent: ...; id: ...; open: ...; read: ...; getIconUrl: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFolder: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; })[]; type: number | undefined; addFile: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: VirtualFolder<VirtualBaseEvents> | VirtualFile | null; navigateToFolder: VirtualFolder<VirtualBaseEvents> | null; navigateToFile: VirtualFile | null; delete: void; isFolder: this is VirtualFolder<VirtualBaseEvents>; linkedPath?: string; setLinkedFolder: VirtualFolderLink; setLinkedPath: VirtualFolderLink; isValid: boolean; getIconUrl: string; toJSON: VirtualFolderLinkJson | null; setAlias: VirtualFolderLink; createFile: VirtualFolderLink; createFiles: VirtualFolderLink; createFolder: VirtualFolderLink; createFolders: VirtualFolderLink; hasFile: boolean; hasFolder: boolean; findFile: VirtualFile | VirtualFileLink | null; findSubFolder: VirtualFolder<VirtualBaseEvents> | VirtualFolderLink | null; getFiles: VirtualFile[]; getSubFolders: VirtualFolder<VirtualBaseEvents>[]; open: object | null | undefined; getItemCount: number; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: ... | ...; read: Promise<...>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: ... | ...; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<(...)>; toString: ... | ...; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; toString: string | null; on: Listener<VirtualBaseEvents & Record<..., ...>, K>; once: Listener<VirtualBaseEvents & Record<..., ...>, K>; onAsync: Listener<VirtualBaseEvents & Record<..., ...>, K>; off: void; emit: void; })[]; files: readonly ({ extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: object | null; read: Promise<OptionalStringProperty>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: VirtualFileJson | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<VirtualFileEvents & Record<..., ...>, K>; once: Listener<VirtualFileEvents & Record<..., ...>, K>; onAsync: Listener<VirtualFileEvents & Record<..., ...>, K>; off: void; emit: void; } | { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; isFile: this is VirtualFile; getType: string; download: void; isDownloadable: boolean; linkedPath?: string; setLinkedFile: VirtualFileLink; setLinkedPath: VirtualFileLink; isValid: boolean; toJSON: VirtualFileLinkJson | null; setAlias: VirtualFileLink; setSource: VirtualFileLink; setContent: VirtualFileLink; id: string; open: object | null; read: Promise<string | null | undefined>; getIconUrl: string; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: ... | ...; read: Promise<...>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: ... | ...; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<(...)>; toString: ... | ...; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<VirtualFileEvents & Record<..., ...>, K>; once: Listener<VirtualFileEvents & Record<..., ...>, K>; onAsync: Listener<VirtualFileEvents & Record<..., ...>, K>; off: void; emit: void; })[]; type: number | undefined; setAlias: this; hasFile: boolean; hasFolder: boolean; findFile: VirtualFile | VirtualFileLink | null; findSubFolder: VirtualFolder<VirtualBaseEvents> | VirtualFolderLink | null; addFile: this; createFile: this; createFiles: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolder: this; createFolders: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: VirtualFolder<VirtualBaseEvents> | VirtualFile | null; navigateToFolder: VirtualFolder<VirtualBaseEvents> | null; navigateToFile: VirtualFile | null; open: object | null | undefined; delete: void; getFiles: VirtualFile[]; getSubFolders: VirtualFolder<VirtualBaseEvents>[]; getItemCount: number; isFolder: this is VirtualFolder<VirtualBaseEvents>; getIconUrl: string; shortcuts: {[key: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | { subFolders: readonly ({ readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; files: readonly ({ extension: ...; source: ...; content: ...; setAlias: this; setSource: this; setContent: this; id: ...; open: ...; read: ...; isFile: this is (...); getIconUrl: ...; getType: ...; download: ...; isDownloadable: ...; toJSON: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFolder: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; } | { extension: ...; source: ...; content: ...; isFile: this is (...); getType: ...; download: ...; isDownloadable: ...; linkedPath?: ...; setLinkedFile: ...; setLinkedPath: ...; isValid: ...; toJSON: ...; setAlias: ...; setSource: ...; setContent: ...; id: ...; open: ...; read: ...; getIconUrl: ...; name: ...; alias: ...; parent: ...; isProtected: ...; iconUrl: ...; linkedFile: ...; linkedFolder: ...; editedByUser: ...; isRoot: ...; root: ...; isDeleted: ...; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: ...; confirmChanges: ...; path: ...; displayPath: ...; absolutePath: ...; canBeEdited: ...; getRoot: ...; isFolder: this is (...); toString: ...; on: ...; once: ...; onAsync: ...; off: ...; emit: ...; })[]; type: number | undefined; addFile: this; createFileLink: this; createFileLinks: this; addFolder: this; createFolderLink: this; createFolderLinks: this; remove: this; navigate: VirtualFolder<VirtualBaseEvents> | VirtualFile | null; navigateToFolder: VirtualFolder<VirtualBaseEvents> | null; navigateToFile: VirtualFile | null; delete: void; isFolder: this is VirtualFolder<VirtualBaseEvents>; linkedPath?: string; setLinkedFolder: VirtualFolderLink; setLinkedPath: VirtualFolderLink; isValid: boolean; getIconUrl: string; toJSON: VirtualFolderLinkJson | null; setAlias: VirtualFolderLink; createFile: VirtualFolderLink; createFiles: VirtualFolderLink; createFolder: VirtualFolderLink; createFolders: VirtualFolderLink; hasFile: boolean; hasFolder: boolean; findFile: VirtualFile | VirtualFileLink | null; findSubFolder: VirtualFolder<VirtualBaseEvents> | VirtualFolderLink | null; getFiles: VirtualFile[]; getSubFolders: VirtualFolder<VirtualBaseEvents>[]; open: object | null | undefined; getItemCount: number; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: ... | ...; read: Promise<...>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: ... | ...; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<(...)>; toString: ... | ...; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; toString: string | null; on: Listener<VirtualBaseEvents & Record<..., ...>, K>; once: Listener<VirtualBaseEvents & Record<..., ...>, K>; onAsync: Listener<VirtualBaseEvents & Record<..., ...>, K>; off: void; emit: void; } | { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: object | null; read: Promise<OptionalStringProperty>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: VirtualFileJson | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<VirtualFileEvents & Record<..., ...>, K>; once: Listener<VirtualFileEvents & Record<..., ...>, K>; onAsync: Listener<VirtualFileEvents & Record<..., ...>, K>; off: void; emit: void; } | { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; isFile: this is VirtualFile; getType: string; download: void; isDownloadable: boolean; linkedPath?: string; setLinkedFile: VirtualFileLink; setLinkedPath: VirtualFileLink; isValid: boolean; toJSON: VirtualFileLinkJson | null; setAlias: VirtualFileLink; setSource: VirtualFileLink; setContent: VirtualFileLink; id: string; open: object | null; read: Promise<string | null | undefined>; getIconUrl: string; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: ... | ...; read: Promise<...>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: ... | ...; name: string; alias: ... | ... | ...; parent: ... | ... | ...; isProtected: ... | ... | ... | ...; iconUrl: ... | ... | ...; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: ... | ... | ...; editedByUser: ... | ... | ... | ...; isRoot: ... | ... | ... | ...; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<(...)>; toString: ... | ...; on: Listener<..., ...>; once: Listener<..., ...>; onAsync: Listener<..., ...>; off: void; emit: void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<VirtualFileEvents & Record<..., ...>, K>; once: Listener<VirtualFileEvents & Record<..., ...>, K>; onAsync: Listener<VirtualFileEvents & Record<..., ...>, K>; off: void; emit: void; }; }; initiated: boolean; loadedDefaultData: boolean; systemManager: { systemName: string; tagLine: string; skin: { systemIcon: string; appIcons: {[key: string]: string; } | undefined; appNames: {[key: string]: string; } | undefined; wallpapers: readonly string[]; defaultWallpaper: string; fileIcons: { generic: string; info?: string; text?: string; code?: string; external?: string; video?: string; audio?: string; }; folderIcons: { generic: string; images?: string; text?: string; link?: string; video?: string; audio?: string; }; loadStyleSheet: () => void | undefined; defaultTheme: Theme | undefined; }; appsConfig: { apps: readonly { name: string; id: string; windowContent: FC<...> | null; windowOptions?: {[key: ...]: ...; fullscreen?: ...; setTitle?: ...; setIconUrl?: ...; close?: ...; focus?: ...; active?: ...; minimized?: ...; toggleMinimized?: ...; index?: ...; standalone?: ...; id?: ...; app?: ...; size?: ...; position?: ...; options?: ...; isFocused?: ...; lastInteraction?: ...; }; description: string | null; iconUrl: string | null; role: string | null; associatedExtensions: readonly string[]; pinnedByDefault: boolean; launchAtStartup: boolean; category: "Business" | "Developer tools" | "Education" | "Entertainment" | "Food & dining" | "Health & fitness" | "Kids & family" | "Lifestyle" | "Media" | "Medical" | "Multimedia design" | "Music" | "Navigation & maps" | "News & weather" | "Personal finance" | "Personalization" | "Photo & video" | "Productivity" | "Security" | "Shopping" | "Social" | "Sports" | "Travel" | "Utilities & tools" | null; metadata: { name: ...; version: ...; author: ...; } | null; showDesktopIcon: boolean; isActive: boolean; isPinned?: boolean; isInstalled: boolean; WindowContent: Element | null; setName: this; setDescription: this; setIconUrl: this; setRole: this; setAssociatedExtensions: this; setPinnedByDefault: this; setLaunchAtStartup: this; setInstalled: this; setCategory: this; setMetadata: this; setShowDesktopIcon: this; setWindowOptions: this; }[]; installedApps: readonly { name: string; id: string; windowContent: FC<...> | null; windowOptions?: {[key: ...]: ...; fullscreen?: ...; setTitle?: ...; setIconUrl?: ...; close?: ...; focus?: ...; active?: ...; minimized?: ...; toggleMinimized?: ...; index?: ...; standalone?: ...; id?: ...; app?: ...; size?: ...; position?: ...; options?: ...; isFocused?: ...; lastInteraction?: ...; }; description: string | null; iconUrl: string | null; role: string | null; associatedExtensions: readonly string[]; pinnedByDefault: boolean; launchAtStartup: boolean; category: "Business" | "Developer tools" | "Education" | "Entertainment" | "Food & dining" | "Health & fitness" | "Kids & family" | "Lifestyle" | "Media" | "Medical" | "Multimedia design" | "Music" | "Navigation & maps" | "News & weather" | "Personal finance" | "Personalization" | "Photo & video" | "Productivity" | "Security" | "Shopping" | "Social" | "Sports" | "Travel" | "Utilities & tools" | null; metadata: { name: ...; version: ...; author: ...; } | null; showDesktopIcon: boolean; isActive: boolean; isPinned?: boolean; isInstalled: boolean; WindowContent: Element | null; setName: this; setDescription: this; setIconUrl: this; setRole: this; setAssociatedExtensions: this; setPinnedByDefault: this; setLaunchAtStartup: this; setInstalled: this; setCategory: this; setMetadata: this; setShowDesktopIcon: this; setWindowOptions: this; }[]; getAppById: App<WindowProps> | null; getAppByFileExtension: App<WindowProps> | null; getAppByRole: App<WindowProps> | null; getAppsByCategory: App<WindowProps>[]; }; desktopConfig: { defaultIconSize: 0 | 1 | 2; defaultIconDirection: 0 | 1; }; miscConfig: { doubleClickDelay: number; }; modalsConfig: { defaultDialogSize: { x: number; y: number; clone: { readonly x: number; readonly y: number; readonly clone: ...; readonly magnitude: number; readonly setX: (x: number) => Vector2; readonly setY: (y: number) => Vector2; ... 10 more ...; readonly lerp: (vector2: Vector2, t: number) => Vector2; }; magnitude: number; setX: this; setY: this; set: this; round: this; normalize: Vector2; scale: Vector2; getDistanceSquared: number; getDistance: number; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; defaultFileSelectorSize: { x: number; y: number; clone: { readonly x: number; readonly y: number; readonly clone: ...; readonly magnitude: number; readonly setX: (x: number) => Vector2; readonly setY: (y: number) => Vector2; ... 10 more ...; readonly lerp: (vector2: Vector2, t: number) => Vector2; }; magnitude: number; setX: this; setY: this; set: this; round: this; normalize: Vector2; scale: Vector2; getDistanceSquared: number; getDistance: number; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; }; taskbarConfig: { height: number; }; trackingConfig: { enabled: boolean; googleAnalyticsMeasurementId: string; }; windowsConfig: { screenMargin: number; titleSeparator: string; minScreenSize: { x: number; y: number; clone: { readonly x: number; readonly y: number; readonly clone: ...; readonly magnitude: number; readonly setX: (x: number) => Vector2; readonly setY: (y: number) => Vector2; ... 10 more ...; readonly lerp: (vector2: Vector2, t: number) => Vector2; }; magnitude: number; setX: this; setY: this; set: this; round: this; normalize: Vector2; scale: Vector2; getDistanceSquared: number; getDistance: number; add: this; subtract: this; multiply: this; divide: this; lerp: this; }; }; virtualDriveConfig: { saveData: false | { enableCompression: boolean; prefix?: string; migrations?: readonly ...[]; }; defaultData: { includePicturesFolder?: boolean; includeDocumentsFolder?: boolean; includeDesktopFolder?: boolean; includeSourceTree?: boolean; includeAppsFolder?: boolean; loadData?: (virtualRoot: VirtualRoot) => void; }; }; storage: { enableCompression: boolean; prefix: string | undefined; store: void; load: string | null; rename: this; remove: this; clear: this; getItemByteSize: number; getEncodedByteSize: number; encode: { result: string; size: number; }; decode: string; setPrefix: this; }; getUptime: string; }; storage: { enableCompression: boolean; prefix: string | undefined; rename: this; remove: this; clear: this; getItemByteSize: number; getEncodedByteSize: number; encode: { result: string; size: number; }; decode: string; setPrefix: this; virtualDriveConfig: { saveData: false | { enableCompression: boolean; prefix?: string; migrations?: readonly ...[]; }; defaultData: { includePicturesFolder?: boolean; includeDocumentsFolder?: boolean; includeDesktopFolder?: boolean; includeSourceTree?: boolean; includeAppsFolder?: boolean; loadData?: (virtualRoot: VirtualRoot) => void; }; }; load: string | null; store: void; synchronize: void; }; loadDefaultData: void; loadData: void; saveData: void; init: VirtualRoot; addShortcut: VirtualRoot; reset: void; path: string; displayPath: string; toJSON: VirtualRootJson | null; toString: string | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { extension: OptionalStringProperty; source: OptionalStringProperty; content: OptionalStringProperty; setAlias: this; setSource: this; setContent: this; id: string; open: object | null; read: Promise<OptionalStringProperty>; isFile: this is VirtualFile; getIconUrl: string; getType: string; download: void; isDownloadable: boolean; toJSON: VirtualFileJson | null; name: string; alias: string | null | undefined; parent: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; isProtected: boolean | null | undefined; iconUrl: string | null | undefined; linkedFile: { readonly extension: OptionalStringProperty; readonly source: OptionalStringProperty; readonly content: OptionalStringProperty; ... 40 more ...; readonly emit: <K extends keyof VirtualFileEvents>(event: K, ...args: (VirtualFileEvents & Record<...>)[K]) => void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; setName: this; setParent: this; setProtected: this; setIconUrl: this; delete: void; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFolder: this is VirtualFolder<VirtualBaseEvents>; toString: string | null; on: Listener<VirtualFileEvents & Record<keyof ..., ...[]>, K>; once: Listener<VirtualFileEvents & Record<keyof ..., ...[]>, K>; onAsync: Listener<VirtualFileEvents & Record<keyof ..., ...[]>, K>; off: void; emit: void; } | null | undefined; linkedFolder: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents & Record<...>)[K]) => void; })[]; ... 58 more... | null | undefined; editedByUser: boolean | null | undefined; isRoot: boolean | null | undefined; root: { readonly shortcuts: { readonly [x: string]: { readonly subFolders: readonly (... | { readonly linkedPath?: string | undefined; readonly setLinkedFolder: (folder: VirtualFolder<VirtualBaseEvents> | null) => VirtualFolderLink; ... 61 more ...; readonly emit: <K extends "update">(event: K, ...args: (VirtualBaseEvents...; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; on: Listener<VirtualRootEvents & Record<keyof VirtualRootEvents, unknown[]>, K>; once: Listener<VirtualRootEvents & Record<keyof VirtualRootEvents, unknown[]>, K>; onAsync: Listener<VirtualRootEvents & Record<keyof VirtualRootEvents, unknown[]>, K>; off: void; emit: void; } | null | undefined; isDeleted: boolean; id: string; setName: this; setParent: this; setProtected: this; setIconUrl: this; getType: string; confirmChanges: void; path: string; displayPath: string; absolutePath: string; canBeEdited: boolean; getRoot: VirtualRoot; isFile: this is VirtualFile; toString: string | null; on: Listener<VirtualBaseEvents & Record<"update", unknown[]>, K>; once: Listener<VirtualBaseEvents & Record<"update", unknown[]>, K>; onAsync: Listener<VirtualBaseEvents & Record<"update", unknown[]>, K>; off: void; emit: void; }; prompt: string; stream: { enabled: boolean; start: this; stop: this; signal: this; write: this; pipe: Stream<string>; wait: Promise<void>; on: Listener<StreamEvents<string>, K>; once: Listener<StreamEvents<string>, K>; onAsync: Listener<StreamEvents<string>, K>; off: void; emit: void; } | null; ttyBuffer: string | null; isUsingAltScreen: boolean; env: {[key: string]: string; }; }]

A tuple containing the stable Shell instance and its reactive ShellState snapshot.

Example

ts
const sizeRef = useRef(Vector2.ZERO);
const [shell, state] = useShell({
		app: myApp,
		path: "~",
		input: "echo \"Hello world!\"",
		exit: () => closeWindow(),
		sizeRef,
	});

Built by Prozilla