An Abstract Base Class which defines a Placeable Object which represents a Document placed on the Canvas

Abstract

Param: document

The Document instance which is represented by this object

Hierarchy (view full)

Properties

scene: Scene

Retain a reference to the Scene within which this Placeable Object resides

document: Document

A reference to the Scene embedded Document instance which this object represents

controlIcon: ControlIcon

A control icon for interacting with the object

mouseInteractionManager: MouseInteractionManager

A mouse interaction manager instance which handles mouse workflows related to this object.

#original: PlaceableObject

The object that this object is a preview of if this object is a preview.

#lastQuadtreeBounds: Rectangle

The bounds that the placeable was added to the quadtree with.

#drawing: Promise<PlaceableObject> = ...

An internal reference to a Promise in-progress to draw the Placeable Object.

#drawn: boolean = false

Has this Placeable Object been drawn and is there no drawing in progress?

embeddedName: string

Identify the official Document name for this PlaceableObject class

RENDER_FLAGS: {
    redraw: {
        propagate: string[];
    };
    refresh: {
        propagate: string[];
        alias: boolean;
    };
    refreshState: {};
} = ...

The flags declared here are required for all PlaceableObject subclasses to also support.

Type declaration

  • redraw: {
        propagate: string[];
    }
    • propagate: string[]
  • refresh: {
        propagate: string[];
        alias: boolean;
    }
    • propagate: string[]
    • alias: boolean
  • refreshState: {}

    Accessors

    • get isOwner(): boolean
    • A convenient reference for whether the current User has full control over the document.

      Returns boolean

    • get interactionState(): {
          NONE: number;
          HOVER: number;
          CLICKED: number;
          GRABBED: number;
          DRAG: number;
          DROP: number;
      }
    • The mouse interaction state of this placeable.

      Returns {
          NONE: number;
          HOVER: number;
          CLICKED: number;
          GRABBED: number;
          DRAG: number;
          DROP: number;
      }

      • NONE: number
      • HOVER: number
      • CLICKED: number
      • GRABBED: number
      • DRAG: number
      • DROP: number
    • get bounds(): Rectangle
    • The bounding box for this PlaceableObject. This is required if the layer uses a Quadtree, otherwise it is optional

      Returns Rectangle

    • get center(): Point
    • The central coordinate pair of the placeable object based on it's own width and height

      Returns Point

    • get id(): string
    • The id of the corresponding Document which this PlaceableObject represents.

      Returns string

    • get objectId(): string
    • A unique identifier which is used to uniquely identify elements on the canvas related to this object.

      Returns string

    • get sourceId(): string
    • The named identified for the source object associated with this PlaceableObject. This differs from the objectId because the sourceId is the same for preview objects as for the original.

      Returns string

    • get isPreview(): boolean
    • Is this placeable object a temporary preview?

      Returns boolean

    • get hasPreview(): boolean
    • Does there exist a temporary preview of this placeable object?

      Returns boolean

    • get sheet(): FormApplication
    • A Form Application which is used to configure the properties of this Placeable Object or the Document it represents.

      Returns FormApplication

    • get controlled(): boolean
    • An indicator for whether the object is currently controlled

      Returns boolean

    • get hover(): boolean
    • An indicator for whether the object is currently a hover target

      Returns boolean

    • get hasActiveHUD(): boolean
    • Is the HUD display active for this Placeable?

      Returns boolean

    Methods

    • Get the snapped position for a given position or the current position.

      Parameters

      • Optional position: Point

        The position to be used instead of the current position

      Returns Point

      The snapped position

    • Returns void

    • Parameters

      • options: any

      Returns any

      Inherit Doc

    • Draw the placeable object into its parent container

      Parameters

      • Optional options: any = {}

        Options which may modify the draw and refresh workflow

      Returns Promise<PlaceableObject>

      The drawn object

    • Internal

      Execute a partial draw.

      Parameters

      • fn: (() => Promise<void>)

        The draw function

          • (): Promise<void>
          • Returns Promise<void>

      Returns Promise<PlaceableObject>

      The drawn object

    • Refresh all incremental render flags for the PlaceableObject. This method is no longer used by the core software but provided for backwards compatibility.

      Parameters

      • Optional options: any = {}

        Options which may modify the refresh workflow

      Returns PlaceableObject

      The refreshed object

    • Internal

      Update the quadtree.

      Returns void

    • Assume control over a PlaceableObject, flagging it as controlled and enabling downstream behaviors

      Parameters

      • options: {
            releaseOthers: boolean;
        } = {}

        Additional options which modify the control request

        • releaseOthers: boolean

          Release any other controlled objects first

      Returns boolean

      A flag denoting whether control was successful

    • Release control over a PlaceableObject, removing it from the controlled set

      Parameters

      • options: any = {}

        Options which modify the releasing workflow

      Returns boolean

      A Boolean flag confirming the object was released.

    • Clone the placeable object, returning a new object with identical attributes. The returned object is non-interactive, and has no assigned ID. If you plan to use it permanently you should call the create method.

      Returns PlaceableObject

      A new object with identical data

    • Rotate the PlaceableObject to a certain angle of facing

      Parameters

      • angle: number

        The desired angle of rotation

      • snap: number

        Snap the angle of rotation to a certain target degree increment

      Returns Promise<PlaceableObject>

      The rotated object

    • Internal

      Determine a new angle of rotation for a PlaceableObject either from an explicit angle or from a delta offset.

      Parameters

      • options: {
            angle: number;
            delta: number;
            snap: number;
        } = {}

        An object which defines the rotation update parameters

        • angle: number

          An explicit angle, either this or delta must be provided

        • delta: number

          A relative angle delta, either this or the angle must be provided

        • snap: number

          A precision (in degrees) to which the resulting angle should snap. Default is 0.

      Returns number

      The new rotation angle for the object

    • Internal

      Obtain a shifted position for the Placeable Object

      Parameters

      • dx: -1 | 0 | 1

        The number of grid units to shift along the X-axis

      • dy: -1 | 0 | 1

        The number of grid units to shift along the Y-axis

      Returns Point

      The shifted target coordinates

    • Activate interactivity for the Placeable Object

      Returns void

    • Test whether a user can perform a certain interaction regarding a Placeable Object

      Parameters

      • user: User

        The User performing the action

      • action: string

        The named action being attempted

      Returns boolean

      Does the User have rights to perform the action?

    • Perform the database updates that should occur as the result of a drag-left-drop operation.

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      Returns any[]

      An array of database updates to perform for documents in this collection

    • Protected

      Apply render flags before a render occurs.

      Parameters

      • flags: Record<string, boolean>

        The render flags which must be applied

      Returns void

    • Protected

      The inner _destroy method which may optionally be defined by each PlaceableObject subclass.

      Parameters

      • Optional options: any

        Options passed to the initial destroy call

      Returns void

    • Protected

      The inner _draw method which must be defined by each PlaceableObject subclass.

      Parameters

      • options: any

        Options which may modify the draw workflow

      Returns Promise<void>

      Abstract

    • Protected Internal

      Is this PlaceableObject within the selection rectangle?

      Parameters

      • rectangle: Rectangle

        The selection rectangle

      Returns any

    • Protected

      Get the target opacity that should be used for a Placeable Object depending on its preview state.

      Returns number

    • Protected

      Register pending canvas operations which should occur after a new PlaceableObject of this type is created

      Parameters

      • data: any
      • options: any
      • userId: string

      Returns void

    • Protected

      Define additional steps taken when an existing placeable object of this type is updated with new data

      Parameters

      • changed: any
      • options: any
      • userId: string

      Returns void

    • Protected

      Define additional steps taken when an existing placeable object of this type is deleted

      Parameters

      • options: any
      • userId: string

      Returns void

    • Protected

      Additional events which trigger once control of the object is established

      Parameters

      • options: any

        Optional parameters which apply for specific implementations

      Returns void

    • Protected

      Additional events which trigger once control of the object is released

      Parameters

      • options: any

        Options which modify the releasing workflow

      Returns void

    • Protected

      Can the User access the HUD for this Placeable Object?

      Parameters

      • user: User

        The User performing the action.

      • event: any

        The event object.

      Returns boolean

      The returned status.

    • Protected

      Does the User have permission to configure the Placeable Object?

      Parameters

      • user: User

        The User performing the action.

      • event: any

        The event object.

      Returns boolean

      The returned status.

    • Protected

      Does the User have permission to control the Placeable Object?

      Parameters

      • user: User

        The User performing the action.

      • event: any

        The event object.

      Returns boolean

      The returned status.

    • Protected

      Does the User have permission to view details of the Placeable Object?

      Parameters

      • user: User

        The User performing the action.

      • event: any

        The event object.

      Returns boolean

      The returned status.

    • Protected

      Does the User have permission to create the underlying Document?

      Parameters

      • user: User

        The User performing the action.

      • event: any

        The event object.

      Returns boolean

      The returned status.

    • Protected

      Does the User have permission to drag this Placeable Object?

      Parameters

      • user: User

        The User performing the action.

      • event: any

        The event object.

      Returns boolean

      The returned status.

    • Protected

      Does the User have permission to left-click drag this Placeable Object?

      Parameters

      • user: User

        The User performing the action.

      • event: any

        The event object.

      Returns boolean

      The returned status.

    • Protected

      Does the User have permission to hover on this Placeable Object?

      Parameters

      • user: User

        The User performing the action.

      • event: any

        The event object.

      Returns boolean

      The returned status.

    • Protected

      Does the User have permission to update the underlying Document?

      Parameters

      • user: User

        The User performing the action.

      • event: any

        The event object.

      Returns boolean

      The returned status.

    • Protected

      Does the User have permission to delete the underlying Document?

      Parameters

      • user: User

        The User performing the action.

      • event: any

        The event object.

      Returns boolean

      The returned status.

    • Protected

      Actions that should be taken for this Placeable Object when a mouseover event occurs. Hover events on PlaceableObject instances allow event propagation by default.

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      • options: {
            hoverOutOthers: boolean;
        } = {}

        Options which customize event handling

        • hoverOutOthers: boolean

          Trigger hover-out behavior on sibling objects

      Returns void

      See

      MouseInteractionManager##handlePointerOver

    • Protected

      Actions that should be taken for this Placeable Object when a mouseout event occurs

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      Returns void

      See

      MouseInteractionManager##handlePointerOut

    • Protected

      Should the placeable propagate left click downstream?

      Parameters

      • event: FederatedEvent

      Returns boolean

    • Protected

      Callback actions which occur on a single left-click event to assume control of the object

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      Returns void

      See

      MouseInteractionManager##handleClickLeft

    • Protected

      Callback actions which occur on a single left-unclick event to assume control of the object

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      Returns void

    • Protected

      Callback actions which occur on a double left-click event to activate

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      Returns void

      See

      MouseInteractionManager##handleClickLeft2

    • Protected

      Should the placeable propagate right click downstream?

      Parameters

      • event: FederatedEvent

      Returns boolean

    • Protected

      Callback actions which occur on a single right-click event to configure properties of the object

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      Returns void

      See

      MouseInteractionManager##handleClickRight

    • Protected

      Callback actions which occur on a single right-unclick event

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      Returns void

    • Protected

      Callback actions which occur on a double right-click event to configure properties of the object

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      Returns void

      See

      MouseInteractionManager##handleClickRight2

    • Protected

      Callback actions which occur when a mouse-drag action is first begun.

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      Returns void

      See

      MouseInteractionManager##handleDragStart

    • Protected

      Begin a drag operation from the perspective of the preview clone. Modify the appearance of both the clone (this) and the original (_original) object.

      Returns void

    • Protected

      Conclude a drag operation from the perspective of the preview clone. Modify the appearance of both the clone (this) and the original (_original) object.

      Returns void

    • Protected

      Callback actions which occur on a mouse-move operation.

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      Returns void

      See

      MouseInteractionManager##handleDragMove

    • Protected

      Callback actions which occur on a mouse-move operation.

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      Returns boolean

      See

      MouseInteractionManager##handleDragDrop

    • Protected

      Callback actions which occur on a mouse-move operation.

      Parameters

      • event: FederatedEvent

        The triggering mouse click event

      Returns void

      See

      MouseInteractionManager##handleDragCancel

    • Protected

      Callback actions which occur on a right mouse-drag operation.

      Parameters

      • event: FederatedEvent

        The triggering mouse click event

      Returns any

      See

      MouseInteractionManager##handleDragStart

    • Protected

      Callback actions which occur on a right mouse-drag operation.

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      Returns any

      See

      MouseInteractionManager##handleDragMove

    • Protected

      Callback actions which occur on a right mouse-drag operation.

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      Returns Promise<any>

      See

      MouseInteractionManager##handleDragDrop

    • Protected

      Callback actions which occur on a right mouse-drag operation.

      Parameters

      • event: FederatedEvent

        The triggering mouse click event

      Returns any

      See

      MouseInteractionManager##handleDragCancel

    • Protected

      Callback action which occurs on a long press.

      Parameters

      • event: FederatedEvent

        The triggering canvas interaction event

      • origin: Point

        The local canvas coordinates of the mousepress.

      Returns any

      See

      MouseInteractionManager##handleLongPress

    • Perform database updates using the result of a drag-left-drop operation.

      Parameters

      • updates: any[]

        The database updates for documents in this collection

      Returns Promise<void>