Foundry Virtual Tabletop - API Documentation - Version 14
    Preparing search index...

    The World Playlist directory listing.

    Hierarchy (View Summary)

    Index

    Properties

    Accessors

    Methods

    _attachFrameListeners _awaitTransition _canDetach _canRender _configureRenderParts _createContextMenus _doEvent _getEntryContextOptions _initializeApplicationOptions _matchSearchEntries _matchSearchFolders _onClickEntry _onClose _onDragStart _onDrop _onFirstRender _onMatchSearchEntry _onRender _prepareContext _prepareDirectoryContext _prepareDuplicateData _preparePartContext _preSyncPartState _renderFrame _renderHTML _syncPartState activate addEventListener attachWindow bringToFront changeTab close collapseAll detachWindow dispatchEvent maximize minimize removeEventListener render renderChild renderPopout setPosition submit updateTimestamps _canAttach _canCreateEntry _canCreateFolder _canDragDrop _canDragStart _configureRenderOptions _createContextMenu _createDroppedEntry _createDroppedFolderContent _createDroppedFolderDocuments _entryAlreadyExists _entryBelongsToFolder _getDroppedEntryFromData _getEntryDragData _getFolderContextOptions _getFolderDragData _getHeaderControls _getSoundContextOptions _getTabsConfig _handleDroppedEntry _handleDroppedFolder _handleDroppedForeignFolder _headerControlButtons _headerControlContextEntries _insertElement _onActivate _onAttach _onChangeForm _onClickAction _onClickTab _onCreateEntry _onCreateFolder _onDeactivate _onDetach _onDragHighlight _onDragOver _onGlobalVolume _onPosition _onSearchFilter _onSoundVolume _onSubmitForm _onToggleFolder _organizeDroppedFoldersAndDocuments _postRender _preClose _preFirstRender _prepareControlsContext _prepareFooterContext _prepareHeaderContext _preparePlayingContext _preparePlaylistContext _prepareTabs _prepareTreeContext _prePosition _preRender _removeElement _renderHeaderControl _replaceHTML _tearDown _updateFrame _updatePosition _getFolderContextOptions _handleDroppedFolder _registerSettings inheritanceChain instances parseCSSDimension waitForImages formatTimestamp

    Properties

    Application instance configuration options.

    position: ApplicationPosition = ...

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

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

    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.

    _expanded: Set<string> = ...

    Track the playlist IDs which are currently expanded in the display.

    _playing: {
        context: PlaylistSoundRenderContext[];
        playlists: documents.Playlist[];
        sounds: documents.PlaylistSound[];
    } = ...

    Cache the set of Playlist and PlaylistSound documents that are displayed as playing when the directory is rendered.

    _volumeExpanded: boolean = true

    Whether the global volume controls are currently expanded.

    _appId: number = 0

    An incrementing integer Application ID.

    _entryPartial: string = "templates/sidebar/tabs/playlist/playlist-partial.hbs"
    _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: {
        actions: {
            pinCurrentlyPlaying: (this: PlaylistDirectory) => void;
            playlistBackward: (
                this: PlaylistDirectory,
                event: PointerEvent,
                target: HTMLElement,
            ) => Promise<documents.Playlist | null | undefined>;
            playlistForward: (
                this: PlaylistDirectory,
                event: PointerEvent,
                target: HTMLElement,
            ) => Promise<documents.Playlist | null | undefined>;
            playlistMode: (
                this: PlaylistDirectory,
                event: PointerEvent,
                target: HTMLElement,
            ) => Promise<documents.Playlist>;
            playlistPlay: (
                this: PlaylistDirectory,
                event: PointerEvent,
                target: HTMLElement,
            ) => Promise<documents.Playlist>;
            playlistStop: (
                this: PlaylistDirectory,
                event: PointerEvent,
                target: HTMLElement,
            ) => Promise<documents.Playlist>;
            soundCreate: (
                this: PlaylistDirectory,
                event: PointerEvent,
                target: HTMLElement,
            ) => void;
            soundPause: (
                this: PlaylistDirectory,
                event: PointerEvent,
                target: HTMLElement,
            ) => any;
            soundPlay: (
                this: PlaylistDirectory,
                event: PointerEvent,
                target: HTMLElement,
            ) => any;
            soundRepeat: (
                this: PlaylistDirectory,
                event: PointerEvent,
                target: HTMLElement,
            ) => any;
            soundStop: (
                this: PlaylistDirectory,
                event: PointerEvent,
                target: HTMLElement,
            ) => any;
            volumeExpand: (
                this: PlaylistDirectory,
                event: PointerEvent,
                target: HTMLElement,
            ) => void;
        };
        collection: string;
        renderUpdateKeys: string[];
    } = ...
    emittedEvents: readonly [
        "prerender",
        "render",
        "close",
        "position",
        "activate",
        "deactivate",
    ] = ...
    PARTS: {
        controls: { template: string };
        directory: { scrollable: string[]; template: string };
        footer: { template: string };
        header: { template: string };
        playing: { template: string; templates: string[] };
    } = ...
    PLAYLIST_MODES: Record<
        Readonly<{ DISABLED: -1; SEQUENTIAL: 0; SHUFFLE: 1; SIMULTANEOUS: 2 }>,
        PlaylistDirectoryControlContext,
    > = ...

    Playlist mode button descriptors.

    RENDER_STATES: Record<string, number> = ...

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

    tabName: string = "playlists"
    TABS: Record<string, ApplicationTabsConfiguration> = {}

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

    _folderPartial: string = "templates/sidebar/partials/folder-partial.hbs"

    The path to the template used to render a single folder within the directory.

    Accessors

    • get active(): boolean

      Whether this tab is currently active in the sidebar.

      Returns boolean

    • get classList(): DOMTokenList

      The CSS class list of this Application instance

      Returns DOMTokenList

    • get collection(): DirectoryCollection

      The Document collection that this directory represents.

      Returns DirectoryCollection

    • get currentlyPlayingLocation(): "top" | "bottom"

      The location of the currently-playing widget.

      Returns "top" | "bottom"

    • get documentName(): string

      The named Document type that this directory represents.

      Returns string

    • get element(): HTMLElement

      The HTMLElement which renders this Application into the DOM.

      Returns HTMLElement

    • get form(): HTMLFormElement | null

      Does this Application have a top-level form element?

      Returns HTMLFormElement | null

    • 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 isPopout(): boolean

      Whether this is the popped-out tab or the in-sidebar one.

      Returns boolean

    • get minimized(): boolean

      Is this Application instance currently minimized?

      Returns boolean

    • get rendered(): boolean

      Is this Application instance currently rendered?

      Returns boolean

    • get state(): number

      The current render state of the Application.

      Returns number

    • get tabName(): string

      The base name of the sidebar tab.

      Returns string

    • get title(): string

      Returns string

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

      Convenience references to window header elements.

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

    Methods

    • Returns void

    • 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>

    • Whether this Application is permitted to detach from the main workspace. Managed children (those with an active parent) may detach to break the parent link and claim their own window.

      Returns boolean

    • Parameters

      • options: any

      Returns false | void

    • Parameters

      • options: any

      Returns 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

    • Returns { icon: string; label: string; onClick: (event: any, header: any) => any }[]

    • Parameters

      • options: any

      Returns any

    • Parameters

      • query: any
      • entryIds: any
      • folderIds: any
      • autoExpandIds: any
      • options: {} = {}

      Returns void

    • Parameters

      • query: any
      • folderIds: any
      • autoExpandIds: any

      Returns void

    • Parameters

      • event: any
      • target: any

      Returns Promise<void>

    • Parameters

      • options: any

      Returns void

    • Parameters

      • event: any

      Returns void

    • Parameters

      • event: any

      Returns Promise<void>

    • Parameters

      • context: any
      • options: any

      Returns Promise<void>

    • Parameters

      • query: any
      • entryIds: any
      • element: any
      • __namedParameters: { plNameHits?: Set<any>; soundIds?: Set<any> } = {}

      Returns void

    • Parameters

      • context: any
      • options: any

      Returns Promise<void>

    • Parameters

      • options: any

      Returns Promise<
          ApplicationRenderContext & {
              canCreateEntry: boolean;
              canCreateFolder: boolean;
              documentName: string;
              folderIcon: string;
              sidebarIcon: any;
          },
      >

    • Parameters

      • context: any
      • options: any

      Returns Promise<void>

    • Parameters

      • document: any

      Returns object

    • Parameters

      • partId: any
      • context: any
      • options: any

      Returns Promise<any>

    • Parameters

      • partId: any
      • newElement: any
      • priorElement: any
      • state: any

      Returns void

    • Parameters

      • options: any

      Returns Promise<HTMLElement>

    • Render an HTMLElement for the Application. An Application subclass must implement this method in order for the Application to be renderable.

      Parameters

      Returns Promise<any>

      The result of HTML rendering may be implementation specific. Whatever value is returned here is passed to _replaceHTML

    • Parameters

      • partId: any
      • newElement: any
      • priorElement: any
      • state: any

      Returns void

    • Activate this tab in the sidebar.

      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

    • Returns void

    • Detach an application from the main workspace, and render it in a separate browser window. If this application is a registered child, detaching it breaks the parent link and gives it its own window.

      Parameters

      Returns Promise<PlaylistDirectory>

    • Restore the Application to its original dimensions.

      Returns Promise<void>

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

      Returns Promise<void>

    • Parameters

      • options: any
      • _options: any

      Returns Promise<PlaylistDirectory>

    • 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.

    • Update the displayed timestamps for all currently playing audio sources every second.

      Returns void

    • Protected

      Whether this Application is permitted to re-attach to the main workspace. Managed children (those with an active parent) cannot re-attach independently; their parent controls placement.

      Returns boolean

    • Protected

      Determine if the current user has permission to create directory entries.

      Returns boolean

    • Protected

      Determine if the current user has permission to create folders in this directory.

      Returns boolean

    • Protected

      Determine if drop operations are permitted.

      Parameters

      • selector: string

        The candidate HTML selector for dragging

      Returns boolean

      Can the current user drag this selector?

    • Protected

      Determine if drag operations are permitted.

      Parameters

      • selector: string

        The candidate HTML selector for dragging

      Returns boolean

      Can the current user drag this selector?

    • Protected

      Modify the provided options passed to a render request.

      Parameters

      Returns void

    • 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 ContextMenu | null

      A created ContextMenu or null if no menu items were defined

    • Protected

      Create a new entry in this directory from one that was dropped on it.

      Parameters

      • entry: DirectoryMixinEntry

        The dropped entry.

      • Optionalupdates: object = {}

        Modifications to the creation data.

      Returns Promise<documents.Playlist>

    • Protected

      Import a dropped folder and its children into this collection if they do not already exist.

      Parameters

      Returns Promise<documents.Folder[]>

    • Protected

      Create a set of documents in a dropped folder.

      Parameters

      Returns Promise<void>

    • Protected

      Test if the given entry is already present in this directory.

      Parameters

      • entry: ClientDocument

        The directory entry.

      Returns boolean

    • Protected

      Determine whether a given directory entry belongs to the given folder.

      Parameters

      • entry: DirectoryMixinEntry

        The entry.

      • folder: string

        The target folder ID.

      Returns boolean

    • Protected

      Get the entry instance from its dropped data.

      Parameters

      • data: object

        The drag data.

      Returns Promise<ClientDocument>

      If the correct instance type could not be retrieved.

    • Protected

      Get drag data for an entry in this directory.

      Parameters

      • entryId: string

        The entry's ID.

      Returns any

    • Protected

      Get context menu entries for folders in this directory.

      Returns ContextMenuEntry[]

    • Protected

      Get drag data for a folder in this directory.

      Parameters

      • folderId: string

        The folder ID.

      Returns any

    • Protected

      Handle dropping a new entry into this directory.

      Parameters

      • target: HTMLElement

        The drop target element.

      • data: object

        The drop data.

      Returns Promise<void>

    • Protected

      Handle dropping a folder onto the directory.

      Parameters

      • target: HTMLElement

        The drop target element.

      • data: object

        The drop data.

      Returns Promise<void>

    • Protected

      Handle importing a new folder's into the directory.

      Parameters

      • folder: documents.Folder

        The dropped folder.

      • closestFolderId: string

        The ID of the closest folder to the drop target.

      • sortData: object

        Sort data for the folder.

      Returns Promise<{ folder: documents.Folder; sortNeeded: boolean } | null>

    • Protected

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

      Returns Generator<ApplicationHeaderControlsEntry, any, any>

    • Protected

      Generate context menu entries based on the header control specification.

      Returns Generator<ContextMenuEntry, void, any>

    • Protected

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

      Parameters

      Returns Promise<void>

    • Protected

      Actions performed when this tab is activated in the sidebar.

      Returns void

    • Protected

      Actions performed after the Application has been re-attached to the main workspace. Registered child Applications are re-attached automatically after this method returns.

      Parameters

      • from: Document

        The Application's former host document. This document's window may have been closed.

      • to: Document

        The main workspace document.

      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

      Handle creating a new entry in this directory.

      Parameters

      • event: PointerEvent

        The triggering click event.

      • target: HTMLElement

        The action target element.

      Returns any

    • Protected

      Handle creating a new folder in this directory.

      Parameters

      • event: PointerEvent

        The triggering click event.

      • target: HTMLElement

        The action target element.

      Returns void

    • Protected

      Actions performed when this tab is deactivated in the sidebar.

      Returns void

    • Protected

      Actions performed after the Application has been detached from the main workspace. Registered child Applications are moved into the same detached window automatically after this method returns.

      Parameters

      • from: Document

        The main workspace document.

      • to: Document

        The Application's new host document.

      Returns void

    • Protected

      Highlight folders as drop targets when a drag event enters or exits their area.

      Parameters

      • event: DragEvent

        The in-progress drag event.

      Returns void

    • Protected

      Handle drag events over the directory.

      Parameters

      • event: DragEvent

      Returns void

    • Protected

      Handle modifying a global volume slider.

      Parameters

      • slider: HTMLRangePickerElement

        The slider.

      Returns void

    • Protected

      Actions performed after the Application is re-positioned.

      Parameters

      Returns void

    • Protected

      Handle directory searching and filtering.

      Parameters

      • event: KeyboardEvent

        The keyboard input event.

      • query: string

        The input search string.

      • rgx: RegExp

        The regular expression query that should be matched against.

      • html: HTMLElement

        The container to filter entries from.

      Returns void

    • Protected

      Handle modifying a playing PlaylistSound's volume.

      Parameters

      • slider: HTMLRangePickerElement

        The volume slider.

      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

      Handle toggling a folder's expanded state.

      Parameters

      • event: PointerEvent

        The triggering click event.

      • target: HTMLElement

        The action target element.

      • Optionaloptions: { _skipDeprecation?: boolean } = {}
        • Optional_skipDeprecation?: boolean

          Internal use only.

      Returns any

    • Protected

      Organize a dropped folder and its children into a list of folders and documents to create.

      Parameters

      Returns Promise<
          {
              documentsToCreate: object[]
              | documents.Playlist[];
              foldersToCreate: documents.Folder[];
          },
      >

    • Protected

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

      Parameters

      Returns Promise<void>

    • 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

      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

      Replace the HTML of the application with the result provided by the rendering backend. An Application subclass should implement this method in order for the Application to be renderable.

      Parameters

      • result: any

        The result returned by the application rendering backend

      • content: HTMLElement

        The content element into which the rendered result must be inserted

      • options: HandlebarsRenderOptions

        Options which configure application rendering behavior

      Returns void

    • Protected

      Remove elements from the DOM and trigger garbage collection as part of application closure.

      Parameters

      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

    • Internal

      Get context menu entries for folders in a directory.

      Returns ContextMenuEntry[]

    • Internal

      Helper method to handle dropping a folder onto the directory.

      Parameters

      • target: HTMLElement

        The drop target element.

      • data: object

        The drop data.

      • config: {
            folders: documents.Folder[];
            label: string;
            maxFolderDepth: number;
            type: string;
        }
        • folders: documents.Folder[]

          The sibling folders.

        • label: string

          The label for entries in the directory.

        • maxFolderDepth: number

          The maximum folder depth in this directory.

        • type: string

          The type of entries in the directory.

      Returns Promise<void | { folder: documents.Folder; sortData: object }>

    • Internal

      Register playlist directory specific settings.

      Returns void

    • 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>

    • Iterate over the instances of this Application.

      Returns Generator<typeof ApplicationV2, any, any>

    • 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>

    • Protected

      Format the displayed timestamp given a number of seconds as input.

      Parameters

      • seconds: number

        The current playback time in seconds.

      Returns string

      The formatted timestamp.