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
53 lines
2.2 KiB
JavaScript
Executable File
53 lines
2.2 KiB
JavaScript
Executable File
import { html, nothing } from "lit"
|
|
import Configuration from "../../Configuration.js"
|
|
import ElementFactory from "../../element/ElementFactory.js"
|
|
import ColorPickerWindowTemplate from "../window/ColorPickerWindowTemplate.js"
|
|
import PinTemplate from "./PinTemplate.js"
|
|
|
|
/** @extends PinTemplate<LinearColorEntity> */
|
|
export default class LinearColorPinTemplate extends PinTemplate {
|
|
|
|
/** @type {WindowElement} */
|
|
#window
|
|
|
|
/** @param {MouseEvent} e */
|
|
#launchColorPickerWindow = e => {
|
|
e.preventDefault()
|
|
this.blueprint.setFocused(true)
|
|
/** @type {WindowElement} */
|
|
this.#window = /** @type {WindowElementConstructor} */(ElementFactory.getConstructor("ueb-window"))
|
|
.newObject({
|
|
type: new ColorPickerWindowTemplate(),
|
|
windowOptions: {
|
|
// The created window will use the following functions to get and set the color
|
|
getPinColor: () => this.element.defaultValue,
|
|
/** @param {LinearColorEntity} color */
|
|
setPinColor: color => this.element.setDefaultValue(color),
|
|
},
|
|
})
|
|
this.blueprint.append(this.#window)
|
|
const windowApplyHandler = () => {
|
|
this.element.setDefaultValue(
|
|
/** @type {ColorPickerWindowTemplate} */(this.#window.template).color
|
|
)
|
|
}
|
|
const windowCloseHandler = () => {
|
|
this.#window.removeEventListener(Configuration.windowApplyEventName, windowApplyHandler)
|
|
this.#window.removeEventListener(Configuration.windowCloseEventName, windowCloseHandler)
|
|
this.#window = null
|
|
}
|
|
this.#window.addEventListener(Configuration.windowApplyEventName, windowApplyHandler)
|
|
this.#window.addEventListener(Configuration.windowCloseEventName, windowCloseHandler)
|
|
}
|
|
|
|
renderInput() {
|
|
return html`
|
|
<span class="ueb-pin-input-wrapper ueb-pin-input"
|
|
data-linear-color="${this.element.getDefaultValue()?.toString() ?? nothing}"
|
|
@click="${this.#launchColorPickerWindow}"
|
|
style="--ueb-linear-color: rgba(${this.element.getDefaultValue()?.toString() ?? nothing})">
|
|
</span>
|
|
`
|
|
}
|
|
}
|