import { DisplayObject, InteractionEvent, Texture } from "pixi.js"; import { DBase } from "./d-base"; import { DLinkMenu } from "./d-link-menu"; import { DLinkMenuItemId } from "./d-link-menu-item-id"; import { DLinkTarget } from "./d-link-target"; import { DMenu, DMenuOptions } from "./d-menu"; import { DBaseStateSet } from "./d-base-state-set"; export type DLinkUrlValue = string | null | undefined; export type DLinkUrlMaker = () => DLinkUrlValue | Promise; export type DLinkTargetValue = DLinkTarget | null | undefined | keyof typeof DLinkTarget; export type DLinkChecker = () => boolean | Promise; export interface DLinkOptions { url?: DLinkUrlValue | DLinkUrlMaker; target?: DLinkTargetValue; checker?: DLinkChecker; menu?: DMenuOptions | DMenu; } export interface DThemeLink { getImageSource(state: DBaseStateSet): Texture | DisplayObject | null; getMenuOptions(): DMenuOptions; } export declare class DLink { protected static ANCHOR_ELEMENT?: HTMLAnchorElement; protected static MENU?: DLinkMenu; protected _options?: DLinkOptions; protected _url: DLinkUrlValue | DLinkUrlMaker; protected _target: DLinkTarget; protected _checker?: DLinkChecker; protected _menu?: DLinkMenu; protected _isEnabled: boolean; constructor(options?: DLinkOptions); get enable(): boolean; set enable(enable: boolean); get url(): DLinkUrlValue | DLinkUrlMaker; set url(url: DLinkUrlValue | DLinkUrlMaker); get target(): DLinkTarget; set target(target: DLinkTargetValue); get checker(): DLinkChecker | undefined; set checker(checker: DLinkChecker | undefined); get menu(): DLinkMenu; protected newMenu(): DLinkMenu; protected toStringifiedUrl(target: DLinkUrlValue | DLinkUrlMaker, onResolved: (url: string) => void): void; protected toNormalizedUrl(url: string): string; protected toNormalizedTarget(target: DLinkTargetValue): DLinkTarget; /** * Copys the URL to the clipboard. */ copy(): void; /** * Checks and opens the URL. * * @param e An event object which triggered this method call. */ open(e?: InteractionEvent | KeyboardEvent | MouseEvent | TouchEvent): void; /** * Checks and opens the URL. * * @param inNewWindow True to open in a new window */ open(inNewWindow: boolean): void; check(url: string, inNewWindow: boolean, onResolved: () => void): void; /** * Opens the given URL. * * @param url An URL to be opened * @param inNewWindow True to open in a new window. */ exec(url: string, inNewWindow: boolean): void; /** * Returns true if the URL need to be opened in a new window. * * @param e An event object. */ inNewWindow(e?: InteractionEvent | KeyboardEvent | MouseEvent | TouchEvent): boolean; onClick(base: DBase, e: InteractionEvent): boolean; }