UNPKG

tween24

Version:

Tween24.js is animation library that enables fast coding using method chains.

353 lines (305 loc) 14 kB
import { Event24Core } from "./core/Event24Core"; import { Tween24 } from "./Tween24"; import { ClassUtil } from "./utils/ClassUtil"; import { HTMLUtil } from "./utils/HTMLUtil"; export class Event24 { // Etc Events static readonly CANCEL :string = "cancel"; static readonly ERROR :string = "error"; static readonly SCROLL :string = "scroll"; static readonly SELECT :string = "select"; static readonly SHOW :string = "show"; static readonly WHEEL :string = "wheel"; // Connection Events static readonly OFFLINE :string = "offline"; static readonly ONLINE :string = "online"; // Key Events static readonly KEY_DOWN :string = "keydown"; static readonly KEY_UP :string = "keyup"; // Focus Events static readonly FOCUS_BLUR :string = "blur"; static readonly FOCUS :string = "focus"; static readonly FOCUS_IN :string = "focusin"; static readonly FOCUS_OUT :string = "focusout"; // Drag Events static readonly DRAG :string = "drag"; static readonly DRAG_END :string = "dragend"; static readonly DRAG_EXIT :string = "dragexit"; static readonly DRAG_LEAVE :string = "dragleave"; static readonly DRAG_OVER :string = "dragover"; static readonly DRAG_START :string = "dragstart"; static readonly DROP :string = "drop"; // History Events static readonly HASH_CHANGE :string = "hashchange"; static readonly PAGE_HIDE :string = "pagehide"; static readonly PAGE_SHOW :string = "pageshow"; static readonly POP_STATE :string = "popstate"; // Mouse Events static readonly MOUSE_OVER :string = "mouseover"; static readonly MOUSE_OUT :string = "mouseout"; static readonly MOUSE_ENTER :string = "mouseenter"; static readonly MOUSE_LEAVE :string = "mouseleave"; static readonly MOUSE_MOVE :string = "mousemove"; static readonly MOUSE_UP :string = "mouseleave"; static readonly MOUSE_DOWN :string = "mouseleave"; // Click Events static readonly CLICK :string = "click"; static readonly AUX_CLICK :string = "auxclick"; static readonly DOUBLE_CLICK :string = "dblclick"; // Touch Events static readonly TOUCH_START :string = "touchstart"; static readonly TOUCH_END :string = "touchend"; static readonly TOUCH_MOVE :string = "touchmove"; static readonly TOUCH_CANCEL :string = "touchcancel"; // Print Events static readonly AFTER_PRINT :string = "afterprint"; static readonly BEFORE_PRINT :string = "beforeprint"; // Messaging Events static readonly MESSAGE :string = "message"; static readonly MESSAGE_ERROR :string = "messageerror"; // Clipboard Events static readonly CLIPBOARD_COPY :string = "copy"; static readonly CLIPBOARD_CUT :string = "cut"; static readonly CLIPBOARD_PASTE :string = "paste"; // Fullscreen Events static readonly FULLSCREEN_CHANGE :string = "fullscreenchange"; static readonly FULLSCREEN_ERROR :string = "fullscreenerror"; // Load, Unload Events static readonly BEFOREUN_LOAD :string = "beforeunload"; static readonly DOM_CONTENT_LOADED :string = "DOMContentLoaded"; static readonly LOAD :string = "load"; static readonly UNLOAD :string = "unload"; // Window Events static readonly LANGUAGE_CHANGE :string = "languagechange"; static readonly ORIENTATION_CHANGE :string = "orientationchange"; static readonly DEVICE_MOTION :string = "devicemotion"; static readonly DEVICE_ORIENTATION :string = "deviceorientation"; static readonly RESIZE :string = "resize"; static readonly STORAGE :string = "storage"; // Pointer Events static readonly POINTER_OVER :string = "pointerover"; static readonly POINTER_ENTER :string = "pointerenter"; static readonly POINTER_DOWN :string = "pointerdown"; static readonly POINTER_MOVE :string = "pointermove"; static readonly POINTER_UP :string = "pointerup"; static readonly POINTER_CANCEL :string = "pointercancel"; static readonly POINTER_OUT :string = "pointerout"; static readonly POINTER_LEAVE :string = "pointerleave"; static readonly GOT_POINTERCAPTURE :string = "gotpointercapture"; static readonly LOST_POINTERCAPTURE :string = "lostpointercapture"; // Animation, Transition Events static readonly ANIMATION_CANCEL :string = "animationcancel"; static readonly ANIMATION_END :string = "animationend"; static readonly ANIMATION_ITERATION :string = "animationiteration"; static readonly ANIMATION_START :string = "animationstart"; static readonly TRANSITION_CANCEL :string = "transitioncancel"; static readonly TRANSITION_END :string = "transitionend"; static readonly TRANSITION_RUN :string = "transitionrun"; static readonly TRANSITION_START :string = "transitionstart"; // Promise Rejection Events static readonly REJECTION_HANDLED :string = "rejectionhandled"; static readonly UNHANDLED_REJECTION :string = "unhandledrejection"; // Gamepad Events static readonly GAMEPAD_CONNECTED :string = "gamepadconnected"; static readonly GAMEPAD_DISCONNECTED :string = "gamepaddisconnected"; // Manifest Events static readonly APP_INSTALLED :string = "appinstalled"; static readonly BEFORE_INSTALL_PROMPT :string = "beforeinstallprompt"; // Mouse Force Events static readonly WEBKIT_MOUSE_FORCE_CHANGED :string = "webkitmouseforcechanged"; static readonly WEBKIT_MOUSE_FORCE_DOWN :string = "webkitmouseforcedown"; static readonly WEBKIT_MOUSE_FORCE_WILLBEGIN :string = "webkitmouseforcewillbegin"; static readonly WEBKIT_MOUSE_FORCE_UP :string = "webkitmouseforceup"; // Web VR Events static readonly VR_DISPLAY_ACTIVATE :string = "vrdisplayactivate"; static readonly VR_DISPLAY_BLUR :string = "vrdisplayblur"; static readonly VR_DISPLAY_CONNECT :string = "vrdisplayconnect"; static readonly VR_DISPLAY_DEACTIVATE :string = "vrdisplaydeactivate"; static readonly VR_DISPLAY_DISCONNECT :string = "vrdisplaydisconnect"; static readonly VR_DISPLAY_FOCUS :string = "vrdisplayfocus"; static readonly VR_DISPLAY_PRESENT_CHANGE :string = "vrdisplaypresentchange"; static readonly VR_DISPLAY_POINTER_RESTRICTED :string = "vrdisplaypointerrestricted"; static readonly VR_DISPLAY_POINTER_UNRESTRICTED :string = "vrdisplaypointerunrestricted"; private static _allEvents:Map<any, {[key:string]:Event24Core[]}> = new Map<any, {[key:string]:Event24Core[]}>(); private _eventCores:Event24Core[]; constructor () { this._eventCores = []; } private _addEventCore(core:Event24Core) { this._eventCores.push(core); } /** * イベントリスナーを設定します。 * @memberof Event24 */ setEventListener() { for (const eventCore of this._eventCores) { eventCore.setEventListener(); } } /** * イベントリスナーを解除します。 * @memberof Event24 */ removeEventListener() { for (const eventCore of this._eventCores) { eventCore.removeEventListener(); } } /** * 設定したトゥイーンを停止させるイベントを設定します。 * @param {(string|string[])} eventType トゥイーンを停止するイベントタイプ * @memberof Event24 */ addStopEvent(eventType:string|string[]):Event24 { for (const eventCore of this._eventCores) { eventCore.addStopEvent(eventType); } return this; } willChange(use:boolean):Event24 { for (const eventCore of this._eventCores) { eventCore.willChange(use); } return this; } // ------------------------------------------ // // Static Method // // ------------------------------------------ /** * イベントに合わせて再生されるトゥイーンを設定します。 * @static * @param {(any|any[])} target イベントの対象 * @param {(string|string[])} eventType トゥイーンを再生するイベントタイプ * @param {Tween24} tween イベントに合わせて再生されるトゥイーン * @memberof Event24 */ public static add(target:any|any[], eventType:string|string[], tween:Tween24):Event24 { return Event24._add(target, eventType, tween, null); } public static __addCallback(target:any|any[], eventType:string|string[], callback:Function):Event24 { return Event24._add(target, eventType, null, callback); } private static _add(target:any|any[], eventType:string|string[], tween:Tween24|null, callback:Function|null):Event24 { const event:Event24 = new Event24(); const eventTypes = Array.isArray(eventType) ? eventType : [eventType]; if (ClassUtil.isString(target)) { target = String(target).split(","); } for (const type of eventTypes) { if (Array.isArray(target)) { if (ClassUtil.isString(target[0])) { for (const query of target) { for (const eventTarget of HTMLUtil.querySelectorAll(query)) { event._addEventCore(Event24._create(eventTarget, query, type, tween, callback)); } } } else { for (const eventTarget of target) { event._addEventCore(Event24._create(eventTarget, null, type, tween, callback)); } } } else { event._addEventCore(Event24._create(target, null, type, tween, callback)); } } return event; } private static _create(target:HTMLElement|any, query:string|null, eventType:string, tween:Tween24|null, callback:Function|null):Event24Core { let events = Event24._allEvents.get(target); if (!events) { events = {}; Event24._allEvents?.set(target, events); } const core = new Event24Core(target, query, eventType, tween, callback); core.setEventListener(); let cores = events[eventType]; if (!cores) cores = events[eventType] = []; cores.push(core); return core; } /** * 対象に設定されたイベントを解除します。 * @static * @param {(any|any[])} target イベントの対象 * @param {(string|string[])} eventType トゥイーンを再生するイベントタイプ * @memberof Event24 */ public static remove(target:any|any[], eventType:string|string[]):void { const eventTypes = Array.isArray(eventType) ? eventType : [eventType]; for (const t of Event24._getEventTarget(target)) { let events = Event24._allEvents.get(t); if (events) { for (const type of eventTypes) { let cores = events[type]; if (cores) { for (const core of cores) { core.removeEventListener(); } delete events[type]; } } } } } /** * 対象のイベントをすべて解除します。 * @static * @param {(any|any[])} target イベントの対象 * @memberof Event24 */ public static removeAllByTarget(target:any|any[]):void { for (const t of Event24._getEventTarget(target)) { let events = Event24._allEvents.get(t); if (events) { for (const type in events) { for (const core of events[type]) { core.removeEventListener(); } delete events[type]; } } Event24._allEvents.delete(t); } } /** * 設定したすべてのイベントを解除します。 * @static * @memberof Event24 */ public static removeAll():void { Event24._allEvents.forEach(function(events, target) { for (const type in events) { for (const core of events[type]) { core.removeEventListener(); } delete events[type]; } Event24._allEvents.delete(target); }); } private static _getEventTarget(target:any):any[] { let eventTarget:any[] = []; if (ClassUtil.isString(target)) { target = String(target).split(","); } if (Array.isArray(target)) { if (ClassUtil.isString(target[0])) { for (const t of target) { eventTarget = eventTarget.concat(HTMLUtil.querySelectorAll(t)); } } else { eventTarget = target; } } else { eventTarget.push(target); } return eventTarget; } }