obsidian-paste-plugin/obsidian.d.ts
2020-10-25 16:58:31 -04:00

1453 lines
28 KiB
TypeScript

import * as CodeMirror from 'codemirror';
declare global {
interface ObjectConstructor {
isEmpty(object: Record<string, any>): boolean;
each<T>(object: {
[key: string]: T;
}, callback: (value: T, key?: string) => boolean | void, context?: any): boolean;
assign(target: any, ...sources: any): any;
entries(obj: any): any[];
}
}
declare global {
interface Array<T> {
first(): T;
last(): T;
contains(target: T): boolean;
remove(target: T): void;
}
}
declare global {
interface Math {
clamp(value: number, min: number, max: number): number;
square(value: number): number;
}
}
declare global {
interface StringConstructor {
isString(obj: any): obj is string;
}
interface String {
contains(target: string): boolean;
startsWith(searchString: string, position?: number): boolean;
endsWith(target: string, length?: number): boolean;
format(...args: string[]): string;
}
}
declare global {
interface NumberConstructor {
isNumber(obj: any): obj is number;
}
}
declare global {
interface Window {
isBoolean(obj: any): obj is boolean;
}
function isBoolean(obj: any): obj is boolean;
}
declare global {
interface Element {
getText(): string;
setText(val: string): void;
}
}
declare global {
interface Element {
addClass(...classes: string[]): void;
addClasses(classes: string[]): void;
removeClass(...classes: string[]): void;
removeClasses(classes: string[]): void;
toggleClass(classes: string | string[], value: boolean): void;
hasClass(cls: string): boolean;
}
}
declare global {
interface Node {
detach(): void;
empty(): void;
insertAfter(other: Node): void;
indexOf(other: Node): number;
setChildrenInPlace(children: Node[]): void;
appendText(val: string): void;
}
}
declare global {
interface Element extends Node {
setAttr(qualifiedName: string, value: string | number | boolean): void;
setAttrs(obj: {
[key: string]: string | number | boolean;
}): void;
getAttr(qualifiedName: string): string;
matchParent(selector: string, lastParent?: Element): Element | null;
}
}
declare global {
interface HTMLElement extends Element {
show(): void;
hide(): void;
toggle(show: boolean): void;
}
}
declare global {
function fish(selector: string): HTMLElement;
function fishAll(selector: string): HTMLElement[];
interface Window extends EventTarget, AnimationFrameProvider, GlobalEventHandlers, WindowEventHandlers, WindowLocalStorage, WindowOrWorkerGlobalScope, WindowSessionStorage {
fish(selector: string): HTMLElement;
fishAll(selector: string): HTMLElement[];
ElementList: any;
}
interface Element extends Node {
find(selector: string): Element;
findAll(selector: string): HTMLElement[];
findAllSelf(selector: string): HTMLElement[];
}
interface HTMLElement extends Element {
find(selector: string): HTMLElement;
findAll(selector: string): HTMLElement[];
findAllSelf(selector: string): HTMLElement[];
}
}
declare global {
interface DomElementInfo {
/**
* The class to be assigned. Can be a space-separated string or an array of strings.
*/
cls?: string | string[];
/**
* The textContent to be assigned.
*/
text?: string;
/**
* HTML attributes to be added.
*/
attr?: {
[key: string]: string | number | boolean;
};
/**
* HTML title (for hover tooltip).
*/
title?: string;
/**
* The parent element to be assigned to.
*/
parent?: Node;
value?: string;
type?: string;
prepend?: boolean;
href?: string;
}
interface Node {
/**
* Create an element and append it to this node.
*/
createEl<K extends keyof HTMLElementTagNameMap>(tag: K, o?: DomElementInfo, callback?: (el: HTMLElementTagNameMap[K]) => void): HTMLElementTagNameMap[K];
}
function createEl<K extends keyof HTMLElementTagNameMap>(tag: K, o?: DomElementInfo, callback?: (el: HTMLElementTagNameMap[K]) => void): HTMLElementTagNameMap[K];
}
interface EventListenerInfo {
selector: string;
listener: Function;
options?: boolean | AddEventListenerOptions;
callback: Function;
}
declare global {
interface HTMLElement extends Element {
_EVENTS?: {
[K in keyof HTMLElementEventMap]?: EventListenerInfo[];
};
on<K extends keyof HTMLElementEventMap>(this: HTMLElement, type: K, selector: string, listener: (this: HTMLElement, ev: HTMLElementEventMap[K], delegateTarget: HTMLElement) => any, options?: boolean | AddEventListenerOptions): void;
off<K extends keyof HTMLElementEventMap>(this: HTMLElement, type: K, selector: string, listener: (this: HTMLElement, ev: HTMLElementEventMap[K], delegateTarget: HTMLElement) => any, options?: boolean | AddEventListenerOptions): void;
onClickEvent(this: HTMLElement, listener: (this: HTMLElement, ev: MouseEvent) => any, options?: boolean | AddEventListenerOptions): void;
trigger(eventType: string): void;
}
interface Document {
_EVENTS?: {
[K in keyof HTMLElementEventMap]?: EventListenerInfo[];
};
on<K extends keyof HTMLElementEventMap>(this: Document, type: K, selector: string, listener: (this: Document, ev: HTMLElementEventMap[K], delegateTarget: HTMLElement) => any, options?: boolean | AddEventListenerOptions): void;
off<K extends keyof HTMLElementEventMap>(this: Document, type: K, selector: string, listener: (this: Document, ev: HTMLElementEventMap[K], delegateTarget: HTMLElement) => any, options?: boolean | AddEventListenerOptions): void;
}
}
export interface AjaxOptions {
method?: 'GET' | 'POST';
url: string;
success?: (response: any, req: XMLHttpRequest) => any;
error?: (error: any, req: XMLHttpRequest) => any;
data?: object | string | ArrayBuffer;
headers?: Record<string, string>;
withCredentials?: boolean;
}
declare global {
function ajax(options: AjaxOptions): void;
function ajaxPromise(options: AjaxOptions): Promise<any>;
function ready(fn: () => any): void;
}
//# sourceMappingURL=enhance.d.ts.map
/**
* @public
*/
export class AbstractTextComponent<T extends HTMLInputElement | HTMLTextAreaElement> extends ValueComponent<string> {
/**
* @public
*/
inputEl: T;
/**
* @public
*/
constructor(setting: Setting, inputEl: T);
/**
* @public
*/
getValue(): string;
/**
* @public
*/
setValue(value: string): this;
/**
* @public
*/
setPlaceholder(placeholder: string): this;
/**
* @public
*/
onChanged(): void;
/**
* @public
*/
onChange(callback: (value: string) => any): this;
}
/**
* @public
*/
export class App extends Events {
/**
* @public
*/
workspace: Workspace;
/**
* @public
*/
vault: Vault;
/**
* @public
*/
metadataCache: MetadataCache;
/**
* @public
*/
on(name: 'codemirror', callback: (cm: CodeMirror.Editor) => any, ctx?: any): EventRef;
}
/**
* @public
*/
export abstract class BaseComponent {
/**
* @public
*/
setting: Setting;
/**
* @public
*/
constructor(setting: Setting);
/**
* Facilitates chaining
* @public
*/
then(cb: (component: this) => any): this;
}
/**
* @public
*/
export interface BlockCache {
}
/**
* @public
*/
export class ButtonComponent extends BaseComponent {
/**
* @public
*/
buttonEl: HTMLButtonElement;
/**
* @public
*/
constructor(setting: Setting);
/**
* @public
*/
setCta(): this;
/**
* @public
*/
setButtonText(name: string): this;
/**
* @public
*/
setIcon(icon: string): this;
/**
* @public
*/
setClass(cls: string): this;
/**
* @public
*/
onClick(callback: () => any): this;
}
/**
* @public
*/
export interface CachedMetadata {
}
/**
* @public
*/
export interface Command {
/**
* Globally unique ID to identify this command.
* @public
*/
id: string;
/**
* Human friendly name for searching.
* @public
*/
name: string;
/**
* Simple callback, triggered globally.
* @public
*/
callback?: () => any;
/**
* Complex callback, overrides the simple callback.
* If checking is true, then this should not perform any action.
* If checking is false, then it should check and perform the action.
* Must return whether this command can be executed at the moment.
* @public
*/
checkCallback?: (checking: boolean) => boolean;
/**
* Sets the default hotkey
* @public
*/
hotkeys?: Hotkey[];
}
/**
* @public
*/
export class Component {
/**
* @public
*/
load(): void;
/**
* @public
* @virtual
*/
onload(): void;
/**
* @public
*/
unload(): void;
/**
* @public
* @virtual
*/
onunload(): void;
}
/**
* @public
*/
export abstract class CustomPlugin extends Component {
/**
* @public
*/
app: App;
/**
* @public
*/
manifest: PluginManifest;
/**
* @public
*/
constructor(app: App, manifest: PluginManifest);
/**
* @public
* @virtual
*/
onInit(): void;
/**
* @public
*/
addRibbonIcon(icon: string, title: string, callback: (evt: MouseEvent) => any): HTMLElement;
/**
* @public
*/
addStatusBarItem(): HTMLElement;
/**
* Register a command globally. The command id and name will be automatically prefixed with this plugin's id and name.
* @public
*/
addCommand(command: Command): Command;
/**
* @public
*/
addSettingTab(settingTab: PluginSettingTab): void;
/**
* @public
*/
registerView(type: string, viewCreator: ViewCreator): void;
/**
* @public
*/
registerExtensions(extensions: string[], viewType: string): void;
/**
* @public
*/
loadData(): Promise<any>;
/**
* @public
*/
saveData(data: any): Promise<void>;
}
/**
* @public
*/
export class DropdownComponent extends ValueComponent<string> {
/**
* @public
*/
selectEl: HTMLSelectElement;
/**
* @public
*/
constructor(setting: Setting);
/**
* @public
*/
addOption(value: string, display: string): this;
/**
* @public
*/
addOptions(options: Record<string, string>): this;
/**
* @public
*/
getValue(): string;
/**
* @public
*/
setValue(value: string): this;
/**
* @public
*/
onChange(callback: (value: string) => any): this;
}
/**
* @public
*/
export interface EmbedCache extends ReferenceCache {
}
/**
* @public
*/
export interface EventRef {
}
/**
* @public
*/
export class Events {
/**
* @public
*/
on(name: string, callback: (...data: any) => any, ctx?: any): EventRef;
/**
* @public
*/
off(name: string, callback: (...data: any) => any): void;
/**
* @public
*/
offref(ref: EventRef): void;
/**
* @public
*/
trigger(name: string, ...data: any[]): void;
/**
* @public
*/
tryTrigger(evt: EventRef, args: any[]): void;
}
/**
* @public
*/
export class ExtraButtonComponent extends BaseComponent {
/**
* @public
*/
extraSettingsEl: HTMLElement;
/**
* @public
*/
constructor(setting: Setting);
/**
* @public
*/
onClick(callback: () => any): this;
}
/**
* @public
*/
export interface FileStats {
}
/**
* @public
*/
export interface HeadingCache {
}
/**
* @public
*/
export interface Hotkey {
}
/**
* @public
*/
export interface LinkCache extends ReferenceCache {
}
/**
* @public
*/
export interface Loc {
}
/**
* @public
*/
export interface MarkdownPostProcessor {
}
/**
* @public
*/
export interface MarkdownPostProcessorContext {
}
/**
* @public
*/
export class MarkdownPreviewRenderer {
/**
* @public
*/
static registerPostProcessor(postProcessor: MarkdownPostProcessor): void;
/**
* @public
*/
static unregisterPostProcessor(postProcessor: MarkdownPostProcessor): void;
}
/**
* @public
*/
export class MenuGroupDom {
/**
* @public
*/
constructor();
/**
* @public
*/
addItem(name: string, callback?: (evt: MouseEvent) => any, icon?: string): MenuItemDom;
}
/**
* @public
*/
export class MenuItemDom {
/**
* @public
*/
constructor(name: string, callback?: (evt: MouseEvent) => any, icon?: string);
/**
* @public
*/
setDisabled(disabled: boolean): void;
/**
* @public
*/
setActive(active: boolean): void;
}
/**
* @public
*/
export class MetadataCache extends Events {
/**
* @public
*/
getFileCache(file: TFile): CachedMetadata;
/**
* @public
*/
getCache(path: string): CachedMetadata;
}
/**
* @public
*/
export class Modal {
/**
* @public
*/
app: App;
/**
* @public
*/
containerEl: HTMLElement;
/**
* @public
*/
contentEl: HTMLElement;
/**
* @public
*/
constructor(app: App);
/**
* @public
*/
open(): void;
/**
* @public
*/
close(): void;
/**
* @public
*/
onOpen(): void;
/**
* @public
*/
onClose(): void;
}
/**
* @public
*/
export class MomentFormatComponent extends TextComponent {
/**
* @public
*/
sampleEl: HTMLElement;
/**
* @public
*/
constructor(setting: Setting);
/**
* Sets the default format when input is cleared. Also used for placeholder.
* @public
*/
setDefaultFormat(defaultFormat: string): this;
/**
* @public
*/
setSampleEl(sampleEl: HTMLElement): this;
/**
* @public
*/
setValue(value: string): this;
/**
* @public
*/
onChanged(): void;
/**
* @public
*/
updateSample(): void;
}
/**
* @public
*/
export class Notice {
/**
* @public
*/
constructor(message: string);
}
/**
* @public
*/
export interface OpenViewState {
}
/**
* @public
*/
export interface PluginManifest {
}
/**
* @public
*/
export abstract class PluginSettingTab extends SettingTab {
/**
* @public
*/
constructor(app: App, plugin: CustomPlugin);
/**
* @public
*/
load(): void;
}
/**
* @public
*/
export interface Pos {
}
/**
* @public
*/
export interface ReferenceCache {
}
/**
* @public
*/
export class Scope {
}
/**
* @public
*/
export class Setting {
/**
* @public
*/
settingEl: HTMLElement;
/**
* @public
*/
infoEl: HTMLElement;
/**
* @public
*/
nameEl: HTMLElement;
/**
* @public
*/
descEl: HTMLElement;
/**
* @public
*/
controlEl: HTMLElement;
/**
* @public
*/
constructor(containerEl: HTMLElement);
/**
* @public
*/
setName(name: string): this;
/**
* @public
*/
setDesc(desc: string | DocumentFragment): this;
/**
* @public
*/
setClass(cls: string): this;
/**
* @public
*/
setTooltip(tooltip: string): this;
/**
* @public
*/
addButton(cb: (component: ButtonComponent) => any): this;
/**
* @public
*/
addExtraSetting(cb: (component: ExtraButtonComponent) => any): this;
/**
* @public
*/
addToggle(cb: (component: ToggleComponent) => any): this;
/**
* @public
*/
addText(cb: (component: TextComponent) => any): this;
/**
* @public
*/
addTextArea(cb: (component: TextAreaComponent) => any): this;
/**
* @public
*/
addMomentFormat(cb: (component: MomentFormatComponent) => any): this;
/**
* @public
*/
addDropdown(cb: (component: DropdownComponent) => any): this;
/**
* @public
*/
addSlider(cb: (component: SliderComponent) => any): this;
}
/**
* @public
*/
export abstract class SettingTab {
/**
* @public
*/
app: App;
/**
* @public
*/
containerEl: HTMLElement;
/**
* @public
*/
load(): void;
/**
* @public
*/
unload(): void;
/**
* @public
*/
open(): void;
/**
* @public
*/
close(): void;
/**
* @public
*/
abstract display(): void;
}
/**
* @public
*/
export class SliderComponent extends ValueComponent<number> {
/**
* @public
*/
sliderEl: HTMLInputElement;
/**
* @public
*/
constructor(setting: Setting);
/**
* @public
*/
setLimits(min: number, max: number, step: number | 'any'): this;
/**
* @public
*/
getValue(): number;
/**
* @public
*/
setValue(value: number): this;
/**
* @public
*/
getValuePretty(): string;
/**
* @public
*/
setDynamicTooltip(): this;
/**
* @public
*/
showTooltip(): void;
/**
* @public
*/
onChange(callback: (value: number) => any): this;
}
/**
* @public
*/
export type SplitDirection = 'vertical' | 'horizontal';
/**
* @public
*/
export abstract class TAbstractFile {
/**
* @public
*/
vault: Vault;
/**
* @public
*/
path: string;
/**
* @public
*/
name: string;
/**
* @public
*/
parent: TFolder;
}
/**
* @public
*/
export interface TagCache {
}
/**
* @public
*/
export class TextAreaComponent extends AbstractTextComponent<HTMLTextAreaElement> {
/**
* @public
*/
constructor(setting: Setting);
}
/**
* @public
*/
export class TextComponent extends AbstractTextComponent<HTMLInputElement> {
/**
* @public
*/
constructor(setting: Setting);
}
/**
* @public
*/
export class TFile extends TAbstractFile {
/**
* @public
*/
stat: FileStats;
/**
* @public
*/
basename: string;
/**
* @public
*/
extension: string;
}
/**
* @public
*/
export class TFolder extends TAbstractFile {
/**
* @public
*/
children: TAbstractFile[];
/**
* @public
*/
isRoot(): boolean;
}
/**
* @public
*/
export class ToggleComponent extends ValueComponent<boolean> {
/**
* @public
*/
toggleEl: HTMLElement;
/**
* @public
*/
constructor(setting: Setting);
/**
* @public
*/
getValue(): boolean;
/**
* @public
*/
setValue(on: boolean): this;
/**
* @public
*/
onClick(): void;
/**
* @public
*/
onChange(callback: (value: boolean) => any): this;
}
/**
* @public
*/
export abstract class ValueComponent<T> extends BaseComponent {
/**
* @public
*/
registerOptionListener(listeners: Record<string, (value?: T) => T>, key: string): this;
/**
* @public
*/
abstract getValue(): T;
/**
* @public
*/
abstract setValue(value: T): this;
}
/**
* @public
*/
export class Vault extends Events {
/**
* @public
*/
getAbstractFileByPath(path: string): TAbstractFile;
/**
* @public
*/
getRoot(): TFolder;
/**
* @public
*/
create(normalizedPath: string, data: string): Promise<TFile>;
/**
* @public
*/
createBinary(normalizedPath: string, data: ArrayBuffer): Promise<TFile>;
/**
* @public
*/
createFolder(normalizedPath: string): Promise<void>;
/**
* @public
*/
read(file: TFile): Promise<string>;
/**
* @public
*/
cachedRead(file: TFile): Promise<string>;
/**
* @public
*/
readBinary(file: TFile): Promise<ArrayBuffer>;
/**
* @public
*/
getResourcePath(file: TFile): string;
/**
* @param file
* @param force Should attempt to delete folder even if it has hidden children
* @public
*/
delete(file: TAbstractFile, force?: boolean): Promise<void>;
/**
* Tries to move to system trash. If that isn't successful/allowed, use local trash
* @param file
* @param system
* @public
*/
trash(file: TAbstractFile, system: boolean): Promise<void>;
/**
* @public
*/
rename(file: TAbstractFile, normalizedNewPath: string): Promise<void>;
/**
* @public
*/
modify(file: TFile, data: string): Promise<void>;
/**
* @public
*/
modifyBinary(file: TFile, data: ArrayBuffer): Promise<void>;
/**
* @public
*/
copy(file: TFile, normalizedNewPath: string): Promise<TFile>;
/**
* @public
*/
getAllLoadedFiles(): TAbstractFile[];
/**
* @public
*/
static recurseChildren(root: TFolder, cb: (file: TAbstractFile) => any): void;
/**
* @public
*/
getMarkdownFiles(): TFile[];
/**
* @public
*/
getFiles(): TFile[];
/**
* @public
*/
on(name: 'create', callback: (file: TAbstractFile) => any, ctx?: any): EventRef;
/**
* @public
*/
on(name: 'modify', callback: (file: TAbstractFile) => any, ctx?: any): EventRef;
/**
* @public
*/
on(name: 'delete', callback: (file: TAbstractFile) => any, ctx?: any): EventRef;
/**
* @public
*/
on(name: 'rename', callback: (file: TAbstractFile, oldPath: string) => any, ctx?: any): EventRef;
/**
* @public
*/
on(name: 'closed', callback: () => any, ctx?: any): EventRef;
}
/**
* @public
*/
export abstract class View extends Component {
/**
* @public
*/
app: App;
/**
* @public
*/
icon: string;
/**
* @public
*/
navigation: boolean;
/**
* @public
*/
leaf: WorkspaceLeaf;
/**
* @public
*/
containerEl: HTMLElement;
/**
* @public
*/
constructor(leaf: WorkspaceLeaf);
/**
* @public
*/
open(containerEl: HTMLElement): Promise<void>;
/**
* @public
*/
close(): Promise<void>;
/**
* @public
*/
protected onOpen(): Promise<void>;
/**
* @public
*/
protected onClose(): Promise<void>;
/**
* @public
*/
abstract getViewType(): string;
/**
* @public
*/
getState(): any;
/**
* @public
*/
setState(state: any, result: ViewStateResult): Promise<void>;
/**
* @public
*/
getEphemeralState(): any;
/**
* @public
*/
setEphemeralState(state: any): void;
/**
* @public
*/
getIcon(): string;
/**
* @public
*/
onResize(): void;
/**
* @public
*/
abstract getDisplayText(): string;
/**
* @public
*/
onHeaderMenu(menuGroup: MenuGroupDom): void;
}
/**
* @public
*/
export type ViewCreator = (leaf: WorkspaceLeaf) => View;
/**
* @public
*/
export interface ViewStateResult {
}
/**
* @public
*/
export class Workspace extends Events {
/**
* @public
*/
activeLeaf: WorkspaceLeaf;
/**
* @public
*/
requestSaveLayout: () => void;
/**
* @public
*/
requestSaveHistory: () => void;
/**
* @public
*/
changeLayout(workspace: any): Promise<void>;
/**
* @public
*/
getLayout(): any;
/**
* @public
*/
splitLeaf(source: WorkspaceItem, newLeaf: WorkspaceItem, direction?: SplitDirection, before?: boolean): void;
/**
* @public
*/
createLeafBySplit(leaf: WorkspaceLeaf, direction?: SplitDirection, before?: boolean): WorkspaceLeaf;
/**
* @public
*/
splitActiveLeaf(direction?: SplitDirection): WorkspaceLeaf;
/**
* @public
*/
splitLeafOrActive(leaf?: WorkspaceLeaf, direction?: SplitDirection): WorkspaceLeaf;
/**
* @public
*/
duplicateLeaf(leaf: WorkspaceLeaf, direction?: SplitDirection): Promise<void>;
/**
* @public
*/
getUnpinnedLeaf(type?: string): WorkspaceLeaf;
/**
* @public
*/
getLeaf(newLeaf?: boolean): WorkspaceLeaf;
/**
* @public
*/
openLinkText(linktext: string, sourcePath: string, newLeaf?: boolean, openViewState?: OpenViewState): Promise<void>;
/**
* @public
*/
getLeafById(id: string): WorkspaceLeaf;
/**
* @public
*/
getGroupLeaves(group: string): WorkspaceLeaf[];
/**
* @public
*/
getMostRecentLeaf(): WorkspaceLeaf;
/**
* @public
*/
getLeftLeaf(shouldSplit: boolean): WorkspaceLeaf;
/**
* @public
*/
getRightLeaf(shouldSplit: boolean): WorkspaceLeaf;
/**
* @public
*/
iterateRootLeaves(callback: (leaf: WorkspaceLeaf) => any): void;
/**
* @public
*/
iterateAllLeaves(callback: (leaf: WorkspaceLeaf) => any): void;
/**
* @public
*/
getLeavesOfType(viewType: string): WorkspaceLeaf[];
/**
* @public
*/
detachLeavesOfType(viewType: string): void;
/**
* @public
*/
revealLeaf(leaf: WorkspaceLeaf): void;
/**
* @public
*/
getLastOpenFiles(): string[];
/**
* @public
*/
on(name: 'quick-preview', callback: (file: TFile, data: string) => any, ctx?: any): EventRef;
/**
* @public
*/
on(name: 'resize', callback: () => any, ctx?: any): EventRef;
/**
* @public
*/
on(name: 'click', callback: () => any, ctx?: any): EventRef;
/**
* @public
*/
on(name: 'file-open', callback: (file: TFile) => any, ctx?: any): EventRef;
/**
* @public
*/
on(name: 'layout-ready', callback: () => any, ctx?: any): EventRef;
/**
* @public
*/
on(name: 'css-change', callback: () => any, ctx?: any): EventRef;
}
/**
* @public
*/
export abstract class WorkspaceItem extends Events {
}
/**
* @public
*/
export class WorkspaceLeaf extends WorkspaceItem {
}
/**
* @public
*/
export abstract class WorkspaceParent extends WorkspaceItem {
}
/**
* @public
*/
export class WorkspaceSidedock extends WorkspaceSplit {
}
/**
* @public
*/
export class WorkspaceSplit extends WorkspaceParent {
}
export { }