Skip to content

TextFileView

This class implements a plaintext-based editable file view, which can be loaded and saved given an editor.

Note that by default, this view only saves when it’s closing. To implement auto-save, your editor should call this.requestSave() when the content is changed.

Extends

Extended by

Constructors

new TextFileView()

new TextFileView(leaf): TextFileView

Parameters

leaf: WorkspaceLeaf

Returns

TextFileView

Overrides

EditableFileView.constructor

Properties

_children

_children: Component[]

Child Components attached to current component, will be unloaded on unloading parent component

Inherited from

EditableFileView._children


_events

_events: EventRef[]

Events that are attached to the current component, will be detached on unloading parent component

Inherited from

EditableFileView._events


_loaded

_loaded: boolean

Whether the component and its children are loaded

Inherited from

EditableFileView._loaded


actionsEl

actionsEl: HTMLElement

Container of actions for the view

Inherited from

EditableFileView.actionsEl


allowNoFile

allowNoFile: boolean

Inherited from

EditableFileView.allowNoFile


app

app: App

Inherited from

EditableFileView.app


backButtonEl

backButtonEl: HTMLButtonElement

Back button element for changing view history

Inherited from

EditableFileView.backButtonEl


canDropAnywhere

canDropAnywhere: boolean

Whether the view may be dropped anywhere in workspace

Inherited from

EditableFileView.canDropAnywhere


closeable

closeable: boolean

Whether the leaf may close the view

Inherited from

EditableFileView.closeable


containerEl

containerEl: HTMLElement

Inherited from

EditableFileView.containerEl


contentEl

contentEl: HTMLElement

Inherited from

EditableFileView.contentEl


data

data: string

In memory data


dirty

dirty: boolean

Whether current file is dirty (different from saved contents)


file

file: null | TFile

Inherited from

EditableFileView.file


fileBeingRenamed

fileBeingRenamed: null | TFile

The file that is currently being renamed

Inherited from

EditableFileView.fileBeingRenamed


forwardButtonEl

forwardButtonEl: HTMLButtonElement

Forward button element for changing view history

Inherited from

EditableFileView.forwardButtonEl


headerEl

headerEl: HTMLElement

Header bar container of view

Inherited from

EditableFileView.headerEl


icon

icon: string

Inherited from

EditableFileView.icon


iconEl

iconEl: HTMLElement

Icon element for the view (for dragging)

Inherited from

EditableFileView.iconEl


isPlaintext

isPlaintext: boolean

Whether editor should be rendered as plaintext


lastSavedData

lastSavedData: null | string

The data that was last saved


leaf

leaf: WorkspaceLeaf

Inherited from

EditableFileView.leaf


moreOptionsButtonEl

moreOptionsButtonEl: HTMLAnchorElement

Anchor button for revealing more view actions

Inherited from

EditableFileView.moreOptionsButtonEl


navigation: boolean

Whether or not the view is intended for navigation. If your view is a static view that is not intended to be navigated away, set this to false. (For example: File explorer, calendar, etc.) If your view opens a file or can be otherwise navigated, set this to true. (For example: Markdown editor view, Kanban view, PDF view, etc.)

Inherited from

EditableFileView.navigation


requestSave()

requestSave: () => void

Debounced save in 2 seconds from now

Returns

void


saveAgain

saveAgain: boolean

Whether on saving, the file should be saved again (for dirtiness checks)


saving

saving: boolean

Whether the file is currently saving


scope

scope: null | Scope

Assign an optional scope to your view to register hotkeys for when the view is in focus.

Example

this.scope = new Scope(this.app.scope);

Default

null
@public

Inherited from

EditableFileView.scope


titleContainerEl

titleContainerEl: HTMLElement

Container for the title of the view

Inherited from

EditableFileView.titleContainerEl


titleEl

titleEl: HTMLElement

Title element for the view

Inherited from

EditableFileView.titleEl


titleParentEl

titleParentEl: HTMLElement

Title of the parent

Inherited from

EditableFileView.titleParentEl

Methods

addAction()

addAction(icon, title, callback)

addAction(icon, title, callback): HTMLElement

Parameters

icon: string

title: string

callback

Returns

HTMLElement

Inherited from

EditableFileView.addAction

addAction(icon, title, callback)

addAction(icon, title, callback): HTMLElement

Adds an action button to the header of the view

Parameters

icon: string

The icon for the action

title: string

The title for the action

callback

Callback to execute on click

Returns

HTMLElement

Inherited from

EditableFileView.addAction


addChild()

addChild<T>(component): T

Adds a child component, loading it if this component is loaded

Type Parameters

T extends Component

Parameters

component: T

Returns

T

Inherited from

EditableFileView.addChild


canAcceptExtension()

canAcceptExtension(extension)

canAcceptExtension(extension): boolean

Parameters

extension: string

Returns

boolean

Inherited from

EditableFileView.canAcceptExtension

canAcceptExtension(extension)

canAcceptExtension(extension): boolean

Determines whether the specified file extension can be opened in this view.

Parameters

extension: string

The file extension to be evaluated

Returns

boolean

Inherited from

EditableFileView.canAcceptExtension


clear()

abstract clear(): void

Clear the editor. This is usually called when we’re about to open a completely different file, so it’s best to clear any editor states like undo-redo history, and any caches/indexes associated with the previous file contents.

Returns

void


close()

close(): Promise<void>

Closes the view

Returns

Promise<void>

Inherited from

EditableFileView.close


getDisplayText()

getDisplayText(): string

Returns

string

Inherited from

EditableFileView.getDisplayText


getEphemeralState()

getEphemeralState()

getEphemeralState(): Record<string, unknown>

Returns

Record<string, unknown>

Inherited from

EditableFileView.getEphemeralState

getEphemeralState()

getEphemeralState(): object

Gets the ephemeral (non-persistent) state of the editor

Returns

object

Inherited from

EditableFileView.getEphemeralState


getIcon()

getIcon()

getIcon(): string

Returns

string

Inherited from

EditableFileView.getIcon

getIcon()

getIcon(): string

Returns the icon name

Returns

string

Inherited from

EditableFileView.getIcon


getSideTooltipPlacement()

getSideTooltipPlacement(): undefined | "left" | "right"

Returns the placement of the tooltip

Returns

undefined | "left" | "right"

Inherited from

EditableFileView.getSideTooltipPlacement


getState()

getState(): Record<string, unknown>

Returns

Record<string, unknown>

Inherited from

EditableFileView.getState


getSyncViewState()

getSyncViewState(): any

Get view state for sync plugin

Returns

any

Inherited from

EditableFileView.getSyncViewState


getViewData()

abstract getViewData(): string

Gets the data from the editor. This will be called to save the editor contents to the file.

Returns

string


getViewType()

abstract getViewType(): string

Returns

string

Inherited from

EditableFileView.getViewType


handleCopy()

handleCopy(event): void

Handle copy event on metadata editor and serialize properties

Parameters

event: ClipboardEvent

Returns

void

Inherited from

EditableFileView.handleCopy


handleCut()

handleCut(event): void

Handle cut event on metadata editor and serialize and remove properties

Parameters

event: ClipboardEvent

Returns

void

Inherited from

EditableFileView.handleCut


handleDrop()

handleDrop(event, t, n): unknown

Parameters

event: DragEvent

t: unknown

n: unknown

Returns

unknown

Inherited from

EditableFileView.handleDrop


handlePaste()

handlePaste(event): void

Handle paste event of properties on metadata editor

Parameters

event: ClipboardEvent

Returns

void

Inherited from

EditableFileView.handlePaste


load()

load(): void

Load this component and its children

Returns

void

Inherited from

EditableFileView.load


loadFile()

loadFile(file): Promise<unknown>

Loads the file with the onLoadFile function

Parameters

file: TFile

The File to load

Returns

Promise<unknown>

Inherited from

EditableFileView.loadFile


loadFileInternal()

loadFileInternal(file, clear): Promise<unknown>

Parameters

file: TFile

clear: boolean

Returns

Promise<unknown>


onClose()

onClose(): Promise<void>

Returns

Promise<void>

Inherited from

EditableFileView.onClose


onDelete()

onDelete(file): Promise<void>

Updates the view if it contains the deleted file

Parameters

file: TFile

The file that is deleted

Returns

Promise<void>

Inherited from

EditableFileView.onDelete


onGroupChange()

onGroupChange(): void

Returns

void

Inherited from

EditableFileView.onGroupChange


onHeaderMenu()

onHeaderMenu(e): void

Parameters

e: unknown

Returns

void

Inherited from

EditableFileView.onHeaderMenu


onload()

onload(): void

Returns

void

Inherited from

EditableFileView.onload


onLoadFile()

onLoadFile(file): Promise<void>

Parameters

file: TFile

Returns

Promise<void>

Overrides

EditableFileView.onLoadFile


onModify()

onModify(file): void

Is called when the vault has a ‘modify’ event. Reloads the file if the view is currently not saving the file and the modified file is the file in this view.

Parameters

file: TFile

The modified file

Returns

void


onMoreOptions()

onMoreOptions(event): void

Parameters

event: Event

Returns

void

Inherited from

EditableFileView.onMoreOptions


onMoreOptionsMenu()

onMoreOptionsMenu(e): void

Parameters

e: unknown

Returns

void

Inherited from

EditableFileView.onMoreOptionsMenu


onOpen()

onOpen(): Promise<void>

Returns

Promise<void>

Inherited from

EditableFileView.onOpen


onPaneMenu()

onPaneMenu(menu, source): void

Populates the pane menu.

(Replaces the previously removed onHeaderMenu and onMoreOptionsMenu)

Parameters

menu: Menu

source: string

Returns

void

Inherited from

EditableFileView.onPaneMenu


onRename()

onRename(file)

onRename(file): Promise<void>

Parameters

file: TFile

Returns

Promise<void>

Inherited from

EditableFileView.onRename

onRename(file)

onRename(file): Promise<void>

Updates the view information based on the new file name

Parameters

file: TFile

The file that is renamed

Returns

Promise<void>

Inherited from

EditableFileView.onRename


onResize()

onResize(): void

Called when the size of this view is changed.

Returns

void

Inherited from

EditableFileView.onResize


onTabMenu()

onTabMenu(menu): void

Adds the menu items to the menu

Parameters

menu: Menu

the menu to fill

Returns

void

Inherited from

EditableFileView.onTabMenu


onTitleBlur()

onTitleBlur(): Promise<void>

Is called when the titleEl looses focus Event type: ‘blur’

Returns

Promise<void>

Inherited from

EditableFileView.onTitleBlur


onTitleChange()

onTitleChange(titleEl): void

Is called when the titleEl is changed Event type: ‘input’

Parameters

titleEl: HTMLElement

The titleEl of the view

Returns

void

Inherited from

EditableFileView.onTitleChange


onTitleFocus()

onTitleFocus(): void

Is called when the titleEl gains focus Event type: ‘focus’

Returns

void

Inherited from

EditableFileView.onTitleFocus


onTitleKeydown()

onTitleKeydown(event): void

Is called when the titleEl is focused and a keydown is triggered Event type: ‘keydown’

Parameters

event: KeyboardEvent

The KeyboardEvent which triggered this function

Returns

void

Inherited from

EditableFileView.onTitleKeydown


onTitlePaste()

onTitlePaste(titleEl, event): void

Is called when the titleEl is focused and a paste event is triggered Event type: ‘paste’

Parameters

titleEl: HTMLElement

The titleEl of the view

event: ClipboardEvent

The ClipboardEvent which triggered this function

Returns

void

Inherited from

EditableFileView.onTitlePaste


onunload()

onunload(): void

Override this to unload your component

Returns

void

Inherited from

EditableFileView.onunload


onUnloadFile()

onUnloadFile(file): Promise<void>

Parameters

file: TFile

Returns

Promise<void>

Overrides

EditableFileView.onUnloadFile


open()

open(parentEl): Promise<void>

Opens the view

Parameters

parentEl: Node

The node the view get attached to

Returns

Promise<void>

Inherited from

EditableFileView.open


register()

register(cb): void

Registers a callback to be called when unloading

Parameters

cb

Returns

void

Inherited from

EditableFileView.register


registerDomEvent()

registerDomEvent(el, type, callback, options)

registerDomEvent<K>(el, type, callback, options?): void

Registers an DOM event to be detached when unloading

Type Parameters

K extends keyof WindowEventMap

Parameters

el: Window

type: K

callback

options?: boolean | AddEventListenerOptions

Returns

void

Inherited from

EditableFileView.registerDomEvent

registerDomEvent(el, type, callback, options)

registerDomEvent<K>(el, type, callback, options?): void

Registers an DOM event to be detached when unloading

Type Parameters

K extends keyof DocumentEventMap

Parameters

el: Document

type: K

callback

options?: boolean | AddEventListenerOptions

Returns

void

Inherited from

EditableFileView.registerDomEvent

registerDomEvent(el, type, callback, options)

registerDomEvent<K>(el, type, callback, options?): void

Registers an DOM event to be detached when unloading

Type Parameters

K extends keyof HTMLElementEventMap

Parameters

el: HTMLElement

type: K

callback

options?: boolean | AddEventListenerOptions

Returns

void

Inherited from

EditableFileView.registerDomEvent


registerEvent()

registerEvent(eventRef): void

Registers an event to be detached when unloading

Parameters

eventRef: EventRef

Returns

void

Inherited from

EditableFileView.registerEvent


registerInterval()

registerInterval(id): number

Registers an interval (from setInterval) to be cancelled when unloading Use setInterval instead of setInterval to avoid TypeScript confusing between NodeJS vs Browser API

Parameters

id: number

Returns

number

Inherited from

EditableFileView.registerInterval


registerScopeEvent()

registerScopeEvent(keymapEventHandler): void

Parameters

keymapEventHandler: KeymapEventHandler

Returns

void

Inherited from

EditableFileView.registerScopeEvent


removeChild()

removeChild<T>(component): T

Removes a child component, unloading it

Type Parameters

T extends Component

Parameters

component: T

Returns

T

Inherited from

EditableFileView.removeChild


renderBreadcrumbs()

renderBreadcrumbs(): void

Returns

void

Inherited from

EditableFileView.renderBreadcrumbs


save()

save(clear)

save(clear?): Promise<void>

Parameters

clear?: boolean

Returns

Promise<void>

save(clear)

save(clear?): Promise<void>

Saves the opened file

Parameters

clear?: boolean

If set clears the editor under certain conditions

Returns

Promise<void>


saveImmediately()

saveImmediately(): void

If any changes(dirty = true) in the file forces the file to save

Returns

void


saveTitle()

saveTitle(titleEl): Promise<void>

Updates the file to match the updated title

Parameters

titleEl: HTMLElement

The current titleEl

Returns

Promise<void>

Inherited from

EditableFileView.saveTitle


setData()

setData(data, clear): void

Set the data to the editor. This is used to load the file contents.

Parameters

data: string

The new data

clear: boolean

If clear is set, then it means we’re opening a completely different file. In that case, you should call clear(), or implement a slightly more efficient clearing mechanism given the new data to be set.

Returns

void


setEphemeralState()

setEphemeralState(state)

setEphemeralState(state): void

Parameters

state: unknown

Returns

void

Inherited from

EditableFileView.setEphemeralState

setEphemeralState(state)

setEphemeralState(state): void

Set the ephemeral (non-persistent) state of the editor

Parameters

state: any

Returns

void

Inherited from

EditableFileView.setEphemeralState


setState()

setState(state, result): Promise<void>

Parameters

state: any

result: ViewStateResult

Returns

Promise<void>

Inherited from

EditableFileView.setState


setViewData()

abstract setViewData(data, clear): void

Set the data to the editor. This is used to load the file contents.

If clear is set, then it means we’re opening a completely different file. In that case, you should call clear(), or implement a slightly more efficient clearing mechanism given the new data to be set.

Parameters

data: string

clear: boolean

Returns

void


syncState()

syncState(e): Promise<unknown>

Parameters

e: boolean

Returns

Promise<unknown>

Inherited from

EditableFileView.syncState


unload()

unload(): void

Unload this component and its children

Returns

void

Inherited from

EditableFileView.unload


updateNavButtons()

updateNavButtons(): void

Updates the navigation buttons depending on the history

Returns

void

Inherited from

EditableFileView.updateNavButtons