The Application responsible for configuring a single MeasuredTemplate document within a parent Scene.

The document being configured.

Application configuration options.

Hierarchy (View Summary)

Properties

options: Readonly<ApplicationConfiguration>

Application instance configuration options.

position: ApplicationPosition = ...

The current position of the application with respect to the window.document.body.

tabGroups: Record<string, null | string> = ...

If this Application uses tabbed navigation groups, this mapping is updated whenever the changeTab method is called. Reports the active tab for each group, with a value of null indicating no tab is active. Subclasses may override this property to define default tabs for each group.

_appId: number = 0

An incrementing integer Application ID.

_maxZ: number = ...

The current maximum z-index of any displayed Application.

BASE_APPLICATION: typeof ApplicationV2 = ApplicationV2

Designates which upstream Application class in this class' inheritance chain is the base application. Any DEFAULT_OPTIONS of super-classes further upstream of the BASE_APPLICATION are ignored. Hook events for super-classes further upstream of the BASE_APPLICATION are not dispatched.

DEFAULT_OPTIONS: {
    canCreate: boolean;
    classes: string[];
    form: { closeOnSubmit: boolean };
    position: { width: number };
    window: { contentClasses: string[]; icon: string };
} = ...
emittedEvents: readonly ["render", "close", "position"] = ...
PARTS: {
    footer: { template: string };
    main: { root: boolean; template: string };
} = ...
RENDER_STATES: Record<string, number> = ...

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

TABS: Record<string, ApplicationTabsConfiguration> = {}

Configuration of application tabs, with an entry per tab group.

Accessors

  • get classList(): DOMTokenList

    The CSS class list of this Application instance

    Returns DOMTokenList

  • get element(): HTMLElement

    The HTMLElement which renders this Application into the DOM.

    Returns HTMLElement

  • get form(): null | HTMLFormElement

    Does this Application have a top-level form element?

    Returns null | HTMLFormElement

  • get hasFrame(): boolean

    Does this Application instance render within an outer window frame?

    Returns boolean

  • get id(): string

    The HTML element ID of this Application instance. This provides a readonly view into the internal ID used by this application. This getter should not be overridden by subclasses, which should instead configure the ID in DEFAULT_OPTIONS or by defining a uniqueId during _initializeApplicationOptions.

    Returns string

  • get minimized(): boolean

    Is this Application instance currently minimized?

    Returns boolean

  • get parts(): Record<string, HTMLElement>

    A record of all rendered template parts.

    Returns Record<string, HTMLElement>

  • get rendered(): boolean

    Is this Application instance currently rendered?

    Returns boolean

  • get state(): number

    The current render state of the Application.

    Returns number

  • get title(): string

    A convenience reference to the title of the Application window.

    Returns string

  • get window(): {
        close: HTMLButtonElement;
        content: HTMLElement;
        controls: HTMLButtonElement;
        controlsDropdown: HTMLDivElement;
        header: HTMLElement;
        icon: HTMLElement;
        onDrag: Function;
        onResize: Function;
        pointerMoveThrottle: boolean;
        pointerStartPosition: ApplicationPosition;
        resize: HTMLElement;
        title: HTMLHeadingElement;
    }

    Convenience references to window header elements.

    Returns {
        close: HTMLButtonElement;
        content: HTMLElement;
        controls: HTMLButtonElement;
        controlsDropdown: HTMLDivElement;
        header: HTMLElement;
        icon: HTMLElement;
        onDrag: Function;
        onResize: Function;
        pointerMoveThrottle: boolean;
        pointerStartPosition: ApplicationPosition;
        resize: HTMLElement;
        title: HTMLHeadingElement;
    }

Methods

  • Internal

    Wait for a CSS transition to complete for an element.

    Parameters

    • element: HTMLElement

      The element which is transitioning

    • timeout: number

      A timeout in milliseconds in case the transitionend event does not occur

    Returns Promise<void>

  • Parameters

    • options: any

    Returns void

  • Internal

    Perform an event in the application life-cycle. Await an internal life-cycle method defined by the class. Optionally dispatch an event for any registered listeners.

    Parameters

    • handler: Function

      A handler function to call

    • options: {
          async?: boolean;
          debugText?: string;
          eventName?: string;
          handlerArgs?: any[];
          hookArgs?: any[];
          hookName?: string;
          hookResponse?: boolean;
          parentClassHooks?: boolean;
      } = {}

      Options which configure event handling

      • Optionalasync?: boolean

        Await the result of the handler function?

      • OptionaldebugText?: string

        Debugging text to log for the event

      • OptionaleventName?: string

        An event name to dispatch for registered listeners

      • OptionalhandlerArgs?: any[]

        Arguments passed to the handler function

      • OptionalhookArgs?: any[]

        Arguments passed to the requested hook function

      • OptionalhookName?: string

        A hook name to dispatch for this and all parent classes

      • OptionalhookResponse?: boolean

        Add the handler response to hookArgs

      • OptionalparentClassHooks?: boolean

        Call hooks for parent classes in the inheritance chain?

    Returns void | Promise<void>

    A promise which resoles once the handler is complete if async is true

  • Parameters

    • options: any

    Returns Promise<
        ApplicationRenderContext & {
            buttons: { icon: string; label: string; type: string }[];
            templateTypes: {};
            units: { degrees: string; gridUnits: any; pixels: string };
            userColor: any;
        },
    >

  • Parameters

    • context: any
    • options: any

    Returns Promise<void>

  • Parameters

    • options: any

    Returns void

  • Add a new event listener for a certain type of event.

    Parameters

    • type: string

      The type of event being registered for

    • listener: EmittedEventListener

      The listener function called when the event occurs

    • Optionaloptions: { once?: boolean } = {}

      Options which configure the event listener

      • Optionalonce?: boolean

        Should the event only be responded to once and then removed

    Returns void

  • Bring this Application window to the front of the rendering stack by increasing its z-index. Once ApplicationV1 is deprecated we should switch from _maxZ to ApplicationV2#maxZ We should also eliminate ui.activeWindow in favor of only ApplicationV2#frontApp

    Returns void

  • Change the active tab within a tab group in this Application instance.

    Parameters

    • tab: string

      The name of the tab which should become active

    • group: string

      The name of the tab group which defines the set of tabs

    • Optionaloptions: {
          event?: Event;
          force?: boolean;
          navElement?: HTMLElement;
          updatePosition?: boolean;
      } = {}

      Additional options which affect tab navigation

      • Optionalevent?: Event

        An interaction event which caused the tab change, if any

      • Optionalforce?: boolean

        Force changing the tab even if the new tab is already active

      • OptionalnavElement?: HTMLElement

        An explicit navigation element being modified

      • OptionalupdatePosition?: boolean

        Update application position after changing the tab?

    Returns void

  • Restore the Application to its original dimensions.

    Returns Promise<void>

  • Minimize the Application, collapsing it to a minimal header.

    Returns Promise<void>

  • Render the Application, creating its HTMLElement and replacing its innerHTML. Add it to the DOM if it is not currently rendered and rendering is forced. Otherwise, re-render its contents.

    Parameters

    • Optionaloptions: boolean | HandlebarsRenderOptions = {}

      Options which configure application rendering behavior. A boolean is interpreted as the "force" option.

    • Optional_options: HandlebarsRenderOptions = {}

      Legacy options for backwards-compatibility with the original ApplicationV1#render signature.

    Returns Promise<MeasuredTemplateConfig>

    A Promise which resolves to the rendered Application instance

  • Update the Application element position using provided data which is merged with the prior position.

    Parameters

    Returns void | ApplicationPosition

    The updated application position

  • Programmatically submit an ApplicationV2 instance which implements a single top-level form.

    Parameters

    • OptionalsubmitOptions: object = {}

      Arbitrary options which are supported by and provided to the configured form submission handler.

    Returns Promise<any>

    A promise that resolves to the returned result of the form submission handler, if any.

  • Toggle display of the Application controls menu. Only applicable to window Applications.

    Parameters

    • Optionalexpanded: boolean

      Set the controls visibility to a specific state. Otherwise, the visible state is toggled from its current value

    • Optionaloptions: { animate?: boolean } = {}

      Options to configure the toggling behavior.

      • Optionalanimate?: boolean

        Animate the controls toggling.

    Returns Promise<void>

    A Promise which resolves once the control expansion animation is complete

  • Protected

    Attach event listeners to the Application frame.

    Returns void

  • Protected

    Attach event listeners to rendered template parts.

    Parameters

    • partId: string

      The id of the part being rendered

    • htmlElement: HTMLElement

      The rendered HTML element for the part

    • options: ApplicationRenderOptions

      Rendering options passed to the render method

    Returns void

  • Protected

    Test whether this Application is allowed to be rendered.

    Parameters

    Returns false | void

    Return false to prevent rendering

    An Error to display a warning message

  • Protected

    Create a ContextMenu instance used in this Application.

    Parameters

    • handler: () => ContextMenuEntry[]

      A handler function that provides initial context options

    • selector: string

      A CSS selector to which the ContextMenu will be bound

    • Optionaloptions: { container?: HTMLElement; hookName?: string; parentClassHooks?: boolean } = {}

      Additional options which affect ContextMenu construction

      • Optionalcontainer?: HTMLElement

        A parent HTMLElement which contains the selector target

      • OptionalhookName?: string

        The hook name

      • OptionalparentClassHooks?: boolean

        Whether to call hooks for the parent classes in the inheritance chain.

    Returns null | ContextMenu

    A created ContextMenu or null if no menu items were defined

  • Protected

    Iterate over header control buttons, filtering for controls which are visible for the current client.

    Returns Generator<ApplicationHeaderControlsEntry, any, any>

  • Protected

    Initialize configuration options for the Application instance. The default behavior of this method is to intelligently merge options for each class with those of their parents.

    • Array-based options are concatenated
    • Inner objects are merged
    • Otherwise, properties in the subclass replace those defined by a parent

    Parameters

    Returns ApplicationConfiguration

    Configured options for the application instance

  • Protected

    Insert the application HTML element into the DOM. Subclasses may override this method to customize how the application is inserted.

    Parameters

    • element: HTMLElement

      The element to insert

    Returns void

  • Protected

    Handle changes to an input element within the form.

    Parameters

    • formConfig: ApplicationFormConfiguration

      The form configuration for which this handler is bound

    • event: Event

      An input change event within the form

    Returns void

  • Protected

    A generic event handler for action clicks which can be extended by subclasses. Action handlers defined in DEFAULT_OPTIONS are called first. This method is only called for actions which have no defined handler.

    Parameters

    • event: PointerEvent

      The originating click event

    • target: HTMLElement

      The capturing HTML element which defined a [data-action]

    Returns void

  • Protected

    Handle click events on a tab within the Application.

    Parameters

    • event: PointerEvent

    Returns void

  • Protected

    Actions performed after closing the Application. Post-close steps are not awaited by the close process.

    Parameters

    Returns void

  • Protected

    Actions performed after the Application is re-positioned.

    Parameters

    Returns void

  • Protected

    Handle submission for an Application which uses the form element.

    Parameters

    • formConfig: ApplicationFormConfiguration

      The form configuration for which this handler is bound

    • event: Event | SubmitEvent

      The form submission event

    Returns Promise<void>

  • Protected

    Actions performed before closing the Application. Pre-close steps are awaited by the close process.

    Parameters

    Returns Promise<void>

  • Protected

    Prepare context that is specific to only a single rendered part.

    It is recommended to augment or mutate the shared context so that downstream methods like _onRender have visibility into the data that was used for rendering. It is acceptable to return a different context object rather than mutating the shared context at the expense of this transparency.

    Parameters

    • partId: string

      The part being rendered

    • context: ApplicationRenderContext

      Shared context provided by _prepareContext

    • options: HandlebarsRenderOptions

      Options which configure application rendering behavior

    Returns Promise<ApplicationRenderContext>

    Context data for a specific part

  • Protected

    Prepare application tab data for a single tab group.

    Parameters

    • group: string

      The ID of the tab group to prepare

    Returns Record<string, ApplicationTab>

  • Protected

    Actions performed before the Application is re-positioned. Pre-position steps are not awaited because setPosition is synchronous.

    Parameters

    Returns void

  • Protected

    Prepare data used to synchronize the state of a template part.

    Parameters

    • partId: string

      The id of the part being rendered

    • newElement: HTMLElement

      The new rendered HTML element for the part

    • priorElement: HTMLElement

      The prior rendered HTML element for the part

    • state: object

      A state object which is used to synchronize after replacement

    Returns void

  • Protected

    Remove the application HTML element from the DOM. Subclasses may override this method to customize how the application element is removed.

    Parameters

    • element: HTMLElement

      The element to be removed

    Returns void

  • Protected

    Render the outer framing HTMLElement which wraps the inner HTML of the Application.

    Parameters

    Returns Promise<HTMLElement>

  • Protected

    Render each configured application part using Handlebars templates.

    Parameters

    • context: ApplicationRenderContext

      Context data for the render operation

    • options: HandlebarsRenderOptions

      Options which configure application rendering behavior

    Returns Promise<Record<string, HTMLElement>>

    A single rendered HTMLElement for each requested part

  • Protected

    Replace the HTML of the application with the result provided by Handlebars rendering.

    Parameters

    • result: Record<string, HTMLElement>

      The result from Handlebars template rendering

    • content: HTMLElement

      The content element into which the rendered result must be inserted

    • options: HandlebarsRenderOptions

      Options which configure application rendering behavior

    Returns void

  • Protected

    Synchronize the state of a template part after it has been rendered and replaced in the DOM.

    Parameters

    • partId: string

      The id of the part being rendered

    • newElement: HTMLElement

      The new rendered HTML element for the part

    • priorElement: HTMLElement

      The prior rendered HTML element for the part

    • state: object

      A state object which is used to synchronize after replacement

    Returns void

  • Protected

    When the Application is rendered, optionally update aspects of the window frame.

    Parameters

    Returns void

  • Protected

    Translate a requested application position updated into a resolved allowed position for the Application. Subclasses may override this method to implement more advanced positioning behavior.

    Parameters

    Returns ApplicationPosition

    Resolved Application positioning data

  • Iterate over the inheritance chain of this Application. The chain includes this Application itself and all parents until the base application is encountered.

    Returns Generator<typeof ApplicationV2, void, unknown>

  • Parse a CSS style rule into a number of pixels which apply to that dimension.

    Parameters

    • style: string

      The CSS style rule

    • parentDimension: number

      The relevant dimension of the parent element

    Returns number | void

    The parsed style dimension in pixels

  • Wait for any images in the given element to load.

    Parameters

    • element: HTMLElement

      The element.

    Returns Promise<void>