Source code

Revision control

Copy as Markdown

Other Tools

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
import { InputPickerChildCommon } from "./InputPickerChildCommon.sys.mjs";
export class ColorPickerChild extends InputPickerChildCommon {
initialValue = null;
constructor() {
super("ColorPicker");
}
/**
* Cleanup function called when picker is closed.
*
* @param {HTMLInputElement} inputElement
*/
closeImpl(inputElement) {
inputElement.setOpenState(false);
if (this.initialValue !== inputElement.value) {
inputElement.dispatchEvent(new inputElement.ownerGlobal.Event("change"));
}
}
/**
* Element updater function called when the picker value is changed.
*
* @param {ReceiveMessageArgument} aMessage
* @param {HTMLInputElement} inputElement
*/
pickerValueChangedImpl(aMessage, inputElement) {
if (!aMessage.data) {
inputElement.setUserInput(this.initialValue);
return;
}
const { rgb } = aMessage.data;
inputElement.setUserInputColor({
component1: rgb[0],
component2: rgb[1],
component3: rgb[2],
});
}
/**
* Picker initialization function called when opening the picker
*
* @param {HTMLInputElement} inputElement
* @returns An argument object to pass to the picker panel, or undefined to stop.
*/
openPickerImpl(inputElement) {
this.initialValue = inputElement.value;
return { value: inputElement.getColor() };
}
}