Options
All
  • Public
  • Public/Protected
  • All
Menu

The Application responsible for displaying and editing a single JournalEntry document.

param object

The JournalEntry instance which is being edited

param [options]

Application options

Hierarchy

Index

Constructors

Properties

_pages: any[]

The cached list of processed page entries.

_secrets: HTMLSecret[]
object: any

The object target which we are using this form to modify

form: HTMLElement

A convenience reference to the form HTMLElement

filepickers: FilePicker[]

Keep track of any FilePicker instances which are associated with this form The values of this Array are inner-objects with references to the FilePicker instances and other metadata

editors: Object

Keep track of any mce editors which may be active as part of this form The values of this object are inner-objects with references to the MCE editor and other metadata

_submitting: boolean
_state: any

The current render state of the Application

options: any

The options provided to this application upon initialization

appId: number

The application ID is a unique incrementing integer which is used to identify every application window drawn by the VTT

_element: jQuery

An internal reference to the HTML element this application renders

position: any

Track the current position and dimensions of the Application UI

_dragDrop: DragDrop[]

DragDrop workflow handlers which are active for this Application

_tabs: Tabs[]

Tab navigation handlers which are active for this Application

_searchFilters: SearchFilter[]

SearchFilter handlers which are active for this Application

_minimized: boolean

Track whether the Application is currently minimized

_scrollPositions: any

Track the most recent scroll positions for any vertically scrolling containers

_priorState: number

The prior render state of this Application. This allows for rendering logic to understand if the application is being rendered for the first time.

see

{Application.RENDER_STATES}

#filteredPages: Set<string> = ...

Track which page IDs are currently displayed due to a search filter

#pagesInView: HTMLElement[] = []

The pages that are currently scrolled into view and marked as 'active' in the sidebar.

#pageIndex: number = 0

The index of the currently viewed page.

#tempOwnership: boolean = false

Has the player been granted temporary ownership of this journal entry or its pages?

#sheets: any = {}

A mapping of page IDs to JournalPageSheet instances used for rendering the pages inside the journal entry.

#restoreTOCPositions: boolean = false

Store a flag to restore ToC positions after a render.

#sidebarState: { position: number; active: boolean; collapsed: boolean } = ...

Store transient sidebar state so it can be restored after context menus are closed.

Type declaration

  • position: number
  • active: boolean
  • collapsed: boolean
#observer: IntersectionObserver

Store a reference to the currently active IntersectionObserver.

#headingIntersections: Map<HTMLHeadingElement, IntersectionObserverEntry> = ...

Store a special set of heading intersections so that we can quickly compute the top-most heading in the viewport.

#mode: number = null

Store the journal entry's current view mode.

VIEW_MODES: { SINGLE: number; MULTIPLE: number } = ...

Available view modes for journal entries.

Type declaration

  • SINGLE: number
  • MULTIPLE: number
INTERSECTION_RATIO: number = .25

The minimum amount of content that must be visible before the next page is marked as in view. Cannot be less than 25% without also modifying the IntersectionObserver threshold.

OWNERSHIP_ICONS: {} = ...

Icons for page ownership.

Type declaration

    RENDER_STATES: Readonly<{ CLOSING: -2; CLOSED: -1; NONE: 0; RENDERING: 1; RENDERED: 2; ERROR: 3 }> = ...

    The sequence of rendering states that track the Application life-cycle.

    Accessors

    • get mode(): number
    • get pagesInView(): HTMLElement[]
    • The pages that are currently scrolled into view and marked as 'active' in the sidebar.

      Returns HTMLElement[]

    • get pageIndex(): number
    • The index of the currently viewed page.

      Returns number

    • get observer(): IntersectionObserver
    • The currently active IntersectionObserver.

      Returns IntersectionObserver

    • get sidebarCollapsed(): boolean
    • Is the table-of-contents sidebar currently collapsed?

      Returns boolean

    • get title(): string
    • inheritdoc

      Returns string

    • get document(): Document
    • A semantic convenience reference to the Document instance which is the target object for this form.

      Returns Document

    • get id(): string
    • inheritdoc

      Returns string

    • get isEditable(): any
    • inheritdoc

      Returns any

    • get element(): jQuery
    • Return the active application element, if it currently exists in the DOM

      Returns jQuery

    • get template(): string
    • The path to the HTML template file which should be used to render the inner content of the app

      Returns string

    • get popOut(): boolean
    • Control the rendering style of the application. If popOut is true, the application is rendered in its own wrapper window, otherwise only the inner app content is rendered

      Returns boolean

    • get rendered(): boolean
    • Return a flag for whether the Application instance is currently rendered

      Returns boolean

    Methods

    • getData(options?: {}): { cssClass: string; editable: any; document: Document; data: any; limited: any; options: any; owner: any; title: string }
    • An application should define the data object used to render its template. This function may either return an Object directly, or a Promise which resolves to an Object If undefined, the default implementation will return an empty object allowing only for rendering of static HTML

      Parameters

      • options: {} = {}

        Returns { cssClass: string; editable: any; document: Document; data: any; limited: any; options: any; owner: any; title: string }

        • cssClass: string
        • editable: any
        • document: Document
        • data: any
        • limited: any
        • options: any
        • owner: any
        • title: string
      • activateListeners(html: any): void
      • After rendering, activate event listeners which provide interactivity for the Application. This is where user-defined Application subclasses should attach their event-handling logic.

        Parameters

        • html: any

        Returns void

      • _render(force: any, options?: {}): Promise<void>
      • An asynchronous inner function which handles the rendering of the Application

        Parameters

        • force: any

          Render and display the application even if it is not currently displayed.

        • options: {} = {}

          Additional options which update the current values of the Application#options object

          Returns Promise<void>

          A Promise that resolves to the Application once rendering is complete

        • close(options?: {}): Promise<void>
        • Close the application and un-register references to it within UI mappings This function returns a Promise which resolves once the window closing animation concludes

          Parameters

          • options: {} = {}

            Returns Promise<void>

            A Promise which resolves once the application is closed

          • createPage(): any
          • Prompt the user with a Dialog for creation of a new JournalEntryPage

            Returns any

          • Turn to a specific page.

            Parameters

            • pageId: string

              The ID of the page to turn to.

            • anchor: string

            Returns Application | JournalSheet

          • Retrieve the sheet instance for rendering this page inline.

            Parameters

            • pageId: string

              The ID of the page.

            Returns JournalPageSheet

          • Determine whether a page is visible to the current user.

            Parameters

            Returns boolean

          • toggleSidebar(): void
          • Toggle the collapsed or expanded state of the Journal Entry table-of-contents sidebar.

            Returns void

          • _contextMenu(html: any): void
          • inheritdoc

            Parameters

            • html: any

            Returns void

          • _updateObject(event: any, formData: any): Promise<any>
          • This method is called upon form submission after form data is validated

            Parameters

            • event: any

              The initial triggering submission event

            • formData: any

              The object of validated form data with which to update the object

            Returns Promise<any>

            A Promise which resolves once the update operation has completed

          • Handle requests to show the referenced Journal Entry to other Users Save the form before triggering the show request, in case content has changed

            Parameters

            • event: Event

              The triggering click event

            Returns Promise<void | JournalEntry | JournalEntryPage>

          • _canDragStart(selector: any): any
          • Define whether a user is able to begin a dragstart workflow for a given drag selector

            Parameters

            • selector: any

              The candidate HTML selector for dragging

            Returns any

            Can the current user drag this selector?

          • _canDragDrop(selector: any): any
          • Define whether a user is able to conclude a drag-and-drop workflow for a given drop selector

            Parameters

            • selector: any

              The candidate HTML selector for the drop target

            Returns any

            Can the current user drop on this selector?

          • _onDragStart(event: any): void
          • Callback actions which occur at the beginning of a drag start workflow.

            Parameters

            • event: any

              The originating DragEvent

            Returns void

          • _onDrop(event: any): Promise<any>
          • Callback actions which occur when a dragged element is dropped on a target.

            Parameters

            • event: any

              The originating DragEvent

            Returns Promise<any>

          • _onSearchFilter(event: any, query: any, rgx: any, html: any): void
          • Handle changes to search filtering controllers which are bound to the Application

            Parameters

            • event: any

              The key-up event from keyboard input

            • query: any

              The raw string input to the search field

            • rgx: any

              The regular expression to test against

            • html: any

              The HTML element which should be filtered

            Returns void

          • _activateCoreListeners(html: any): void
          • Activate required listeners which must be enabled on every Application. These are internal interactions which should not be overridden by downstream subclasses.

            Parameters

            • html: any

            Returns void

          • activateEditor(name: any, options?: {}, initialContent?: string): Promise<any>
          • Activate a named TinyMCE text editor

            Parameters

            • name: any

              The named data field which the editor modifies.

            • options: {} = {}

              Editor initialization options passed to TextEditor.create.

              • initialContent: string = ""

                Initial text content for the editor area.

              Returns Promise<any>

            • Render the Application by evaluating it's HTML template against the object of data provided by the getData method If the Application is rendered as a pop-out window, wrap the contained HTML in an outer frame with window controls

              Parameters

              • force: boolean = false

                Add the rendered application to the DOM if it is not already present. If false, the Application will only be re-rendered if it is already present.

              • options: {} = {}

                Additional rendering options which are applied to customize the way that the Application is rendered in the DOM.

                Returns Application | JournalSheet

                The rendered Application instance

              • _renderOuter(): Promise<jQuery>
              • Render the outer application wrapper

                Returns Promise<jQuery>

                A promise resolving to the constructed jQuery object

              • _renderInner(...args: any[]): Promise<jQuery>
              • Render the inner application content

                Parameters

                • Rest ...args: any[]

                  The data used to render the inner template

                Returns Promise<jQuery>

                A promise resolving to the constructed jQuery object

              • saveEditor(name: string, [remove]?: boolean): Promise<void>
              • Handle saving the content of a specific editor by name

                Parameters

                • name: string

                  The named editor to save

                • [remove]: boolean = {}

                  Remove the editor after saving its content

                Returns Promise<void>

              • Submit the contents of a Form Application, processing its content as defined by the Application

                Parameters

                • options: any = {}

                Returns FormApplication

                Return a self-reference for convenient method chaining

              • activateTab(tabName: string, options?: { group: string; triggerCallback: boolean }): void
              • Change the currently active tab

                Parameters

                • tabName: string

                  The target tab name to switch to

                • options: { group: string; triggerCallback: boolean } = {}

                  Options which configure changing the tab

                  • group: string

                    A specific named tab group, useful if multiple sets of tabs are present

                  • triggerCallback: boolean

                    Whether to trigger tab-change callback functions

                Returns void

              • bringToTop(): void
              • minimize(): Promise<void>
              • Minimize the pop-out window, collapsing it to a small tab Take no action for applications which are not of the pop-out variety or apps which are already minimized

                Returns Promise<void>

                A Promise which resolves once the minimization action has completed

              • maximize(): Promise<void>
              • Maximize the pop-out window, expanding it to its original size Take no action for applications which are not of the pop-out variety or are already maximized

                Returns Promise<void>

                A Promise which resolves once the maximization action has completed

              • setPosition(position?: { left: number; top: number; width: number; height: string | number; scale: number }): void | { left: number; top: number; width: number; height: number; scale: number }
              • Set the application position and store its new location. Returns the updated position object for the application containing the new values.

                Parameters

                • position: { left: number; top: number; width: number; height: string | number; scale: number } = {}

                  Positional data

                  • left: number

                    The left offset position in pixels

                  • top: number

                    The top offset position in pixels

                  • width: number

                    The application width in pixels

                  • height: string | number

                    The application height in pixels

                  • scale: number

                    The application scale as a numeric factor where 1.0 is default

                Returns void | { left: number; top: number; width: number; height: number; scale: number }

                |void}

              • Prepare pages for display.

                Returns JournalEntryPage[]

                The sorted list of pages.

              • _activatePageListeners(): void
              • Activate listeners after page content has been injected.

                Returns void

              • _renderPageViews(): Promise<void>
              • Update child views inside the main sheet.

                Returns Promise<void>

              • _renderHeadings(pageNode: HTMLElement, toc: any): Promise<void>
              • Add headings to the table of contents for the given page node.

                Parameters

                • pageNode: HTMLElement

                  The HTML node of the page's rendered contents.

                • toc: any

                  The page's table of contents.

                Returns Promise<void>

              • _observeHeadings(): void
              • Create an intersection observer to maintain a list of headings that are in view. This is much more performant than calling getBoundingClientRect on all headings whenever we want to determine this list.

                Returns void

              • _onAction(event: TriggeredEvent): any
              • Handle clicking the previous and next page buttons.

                Parameters

                • event: TriggeredEvent

                  The button click event.

                Returns any

              • _updateButtonState(): void
              • Update the disabled state of the previous and next page buttons.

                Returns void

              • _onEditPage(event: TriggeredEvent): any
              • Edit one of this JournalEntry's JournalEntryPages.

                Parameters

                • event: TriggeredEvent

                  The originating page edit event.

                Returns any

              • _onClickPageLink(event: TriggeredEvent): void
              • Handle clicking an entry in the sidebar to scroll that heading into view.

                Parameters

                • event: TriggeredEvent

                  The originating click event.

                Returns void

              • _onClickImage(event: MouseEvent): void
              • Handle clicking an image to pop it out for fullscreen view.

                Parameters

                • event: MouseEvent

                  The click event.

                Returns void

              • _onPageScroll(entries: IntersectionObserverEntry[], observer: IntersectionObserver): void
              • Handle new pages scrolling into view.

                Parameters

                • entries: IntersectionObserverEntry[]

                  An Array of elements that have scrolled into or out of view.

                • observer: IntersectionObserver

                  The IntersectionObserver that invoked this callback.

                Returns void

              • _activatePagesInView(): void
              • Highlights the currently viewed page in the sidebar.

                Returns void

              • _synchronizeSidebar(): void
              • If the set of active pages has changed, various elements in the sidebar will expand and collapse. For particularly long ToCs, this can leave the scroll position of the sidebar in a seemingly random state. We try to do our best to sync the sidebar scroll position with the current journal viewport.

                Returns void

              • _onContextMenuOpen(target: HTMLElement): void
              • Handle opening the context menu.

                Parameters

                • target: HTMLElement

                  The element the context menu has been triggered for.

                Returns void

              • _onContextMenuClose(target: HTMLElement): void
              • Handle closing the context menu.

                Parameters

                • target: HTMLElement

                  The element the context menu has been triggered for.

                Returns void

              • Get the set of ContextMenu options which should be used for JournalEntryPages in the sidebar.

                Returns ContextMenuEntry[]

                The Array of context options passed to the ContextMenu instance.

              • _createDocumentIdLink(html: jQuery): void
              • Create an ID link button in the document sheet header which displays the document ID and copies to clipboard

                Parameters

                • html: jQuery

                Returns void

              • _canUserView(user: User): boolean
              • Test whether a certain User has permission to view this Document Sheet.

                Parameters

                • user: User

                  The user requesting to render the sheet

                Returns boolean

                Does the User have permission to view this sheet?

              • _getSecretContent(secret: HTMLElement): string
              • Get the HTML content that a given secret block is embedded in.

                Parameters

                • secret: HTMLElement

                  The secret block.

                Returns string

              • _updateSecret(secret: HTMLElement, content: string): Promise<Document>
              • Update the HTML content that a given secret block is embedded in.

                Parameters

                • secret: HTMLElement

                  The secret block.

                • content: string

                  The new content.

                Returns Promise<Document>

                The updated Document.

              • _disableFields(form: HTMLElement): void
              • If the form is not editable, disable its input fields

                Parameters

                • form: HTMLElement

                  The form HTML

                Returns void

              • _onSubmit(event: Event, __namedParameters?: any): Promise<any>
              • Handle standard form submission steps

                Parameters

                • event: Event

                  The submit event which triggered this handler

                • __namedParameters: any = {}

                Returns Promise<any>

                A promise which resolves to the validated update data

              • _getSubmitData(updateData?: any): any
              • Get an object of update data used to update the form's target object

                Parameters

                • updateData: any = {}

                  Additional data that should be merged with the form data

                Returns any

                The prepared update data

              • _onChangeInput(event: Event): Promise<any>
              • Handle changes to an input element, submitting the form if options.submitOnChange is true. Do not preventDefault in this handler as other interactions on the form may also be occurring.

                Parameters

                • event: Event

                  The initial change event

                Returns Promise<any>

              • _onChangeColorPicker(event: Event): void
              • Handle the change of a color picker input which enters it's chosen value into a related input field

                Parameters

                • event: Event

                  The color picker change event

                Returns void

              • _onChangeRange(event: Event): void
              • Handle changes to a range type input by propagating those changes to the sibling range-value element

                Parameters

                • event: Event

                  The initial change event

                Returns void

              • _onSelectFile(selection: string, filePicker: FilePicker): void
              • Additional handling which should trigger when a FilePicker contained within this FormApplication is submitted.

                Parameters

                • selection: string

                  The target path which was selected

                • filePicker: FilePicker

                  The FilePicker instance which was submitted

                Returns void

              • _activateEditor(div: HTMLElement): void
              • Activate an editor instance present within the form

                Parameters

                • div: HTMLElement

                  The element which contains the editor

                Returns void

              • _configureProseMirrorPlugins(name: string, [options]?: { remove: boolean }): any
              • Configure ProseMirror plugins for this sheet.

                Parameters

                • name: string

                  The name of the editor.

                • [options]: { remove: boolean } = {}

                  Additional options to configure the plugins.

                  • remove: boolean

                Returns any

              • _activateFilePicker(event: PointerEvent): Promise<any>
              • Activate a FilePicker instance present within the form

                Parameters

                • event: PointerEvent

                  The mouse click event on a file picker activation button

                Returns Promise<any>

              • _getFilePickerOptions(event: PointerEvent): any
              • Determine the configuration options used to initialize a FilePicker instance within this FormApplication. Subclasses can extend this method to customize the behavior of pickers within their form.

                Parameters

                • event: PointerEvent

                  The initiating mouse click event which opens the picker

                Returns any

                Options passed to the FilePicker constructor

              • _saveScrollPositions(html: jQuery): void
              • Persist the scroll positions of containers within the app before re-rendering the content

                Parameters

                • html: jQuery

                  The HTML object being traversed

                Returns void

              • _restoreScrollPositions(html: jQuery): void
              • Restore the scroll positions of containers within the app after re-rendering the content

                Parameters

                • html: jQuery

                  The HTML object being traversed

                Returns void

              • _onChangeTab(event: MouseEvent, tabs: Tabs, active: string): void
              • Handle changes to the active tab in a configured Tabs controller

                Parameters

                • event: MouseEvent

                  A left click event

                • tabs: Tabs

                  The Tabs controller

                • active: string

                  The new active tab name

                Returns void

              • _onDragOver(event: DragEvent): void
              • Callback actions which occur when a dragged element is over a drop target.

                Parameters

                • event: DragEvent

                  The originating DragEvent

                Returns void

              • #callCloseHooks(pageIndex: number): void
              • Call close hooks for individual pages.

                Parameters

                • pageIndex: number

                Returns void