mirror of
https://github.com/barsdeveloper/ueblueprint.git
synced 2026-02-04 08:50:33 +08:00
* Fix node reference when changing elements * Fix ScriptVariables parsing * Fix invariant text and niagara types * Niagara convert nodes * Move node tests to own files * More Niagara tests * Niagara float and smaller fixes * More Decoding * More decoding * WIP * Float is real * WIP * More types and colors * Test case and small polish * WIP * WIP * Fix niagara script variables merging * Fix Niagara variables * Fixing mirrored ExportPath * Fix Export paths name adjustments * Simplify arc calculation * Simplify a bit arc calculation * source / destionation => origin / target * Minor refactoring * Fix switched link position * Rename some properties for uniformity * Fix input escape * Simplify test * About window * Dialog backdrop style * About dialog touches * Remove dependency and minot improvement * Light mode * Fix link location and css small improvement * Link direction and minor fixes * Some minor fixes and refactoring * Refactoring WIP * Shorting repetitive bits * More tests * Simplify linking tests
70 lines
2.0 KiB
JavaScript
Executable File
70 lines
2.0 KiB
JavaScript
Executable File
import IInput from "../IInput.js"
|
|
import Utility from "../../Utility.js"
|
|
|
|
/**
|
|
* @typedef {import("../IInput.js").Options & {
|
|
* ignoreTranslateCompensate?: Boolean,
|
|
* ignoreScale?: Boolean,
|
|
* movementSpace?: HTMLElement,
|
|
* enablerKey?: KeyboardShortcut,
|
|
* }} Options
|
|
*/
|
|
|
|
/**
|
|
* @template {Element} T
|
|
* @extends {IInput<T>}
|
|
*/
|
|
export default class IPointing extends IInput {
|
|
|
|
#location = /** @type {Coordinates} */([0, 0])
|
|
get location() {
|
|
return this.#location
|
|
}
|
|
|
|
/** @type {KeyboardShortcut?} */
|
|
#enablerKey
|
|
get enablerKey() {
|
|
return this.#enablerKey
|
|
}
|
|
#enablerActivated = true
|
|
get enablerActivated() {
|
|
return this.#enablerActivated
|
|
}
|
|
|
|
/**
|
|
* @param {T} target
|
|
* @param {Blueprint} blueprint
|
|
* @param {Options} options
|
|
*/
|
|
constructor(target, blueprint, options = {}) {
|
|
options.ignoreTranslateCompensate ??= false
|
|
options.ignoreScale ??= false
|
|
options.movementSpace ??= blueprint.getGridDOMElement() ?? document.documentElement
|
|
super(target, blueprint, options)
|
|
/** @type {HTMLElement} */
|
|
this.movementSpace = options.movementSpace
|
|
if (options.enablerKey) {
|
|
this.#enablerKey = options.enablerKey
|
|
this.#enablerKey.onKeyDown = () => this.#enablerActivated = true
|
|
this.#enablerKey.onKeyUp = () => this.#enablerActivated = false
|
|
this.#enablerKey.consumeEvent = false
|
|
this.#enablerKey.listenEvents()
|
|
this.#enablerActivated = false
|
|
}
|
|
}
|
|
|
|
/** @param {MouseEvent} mouseEvent */
|
|
setLocationFromEvent(mouseEvent) {
|
|
let location = Utility.convertLocation(
|
|
[mouseEvent.clientX, mouseEvent.clientY],
|
|
this.movementSpace,
|
|
this.options.ignoreScale
|
|
)
|
|
location = this.options.ignoreTranslateCompensate
|
|
? location
|
|
: this.blueprint.compensateTranslation(location[0], location[1])
|
|
this.#location = [...location]
|
|
return this.#location
|
|
}
|
|
}
|