This is an automated email from the ASF dual-hosted git repository.

greg-dove pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/develop by this push:
     new efa7e07eb7 removing this for now. Still working on it and its 
dependencies
efa7e07eb7 is described below

commit efa7e07eb7823298a263d70930b5dee309453c3e
Author: greg-dove <[email protected]>
AuthorDate: Mon Jun 15 19:23:16 2026 +0200

    removing this for now. Still working on it and its dependencies
---
 .../royale/org/apache/royale/style/ColorPicker.as  | 891 ---------------------
 1 file changed, 891 deletions(-)

diff --git 
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/ColorPicker.as
 
b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/ColorPicker.as
deleted file mode 100644
index ae95bca90c..0000000000
--- 
a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/ColorPicker.as
+++ /dev/null
@@ -1,891 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  Licensed to the Apache Software Foundation (ASF) under one or more
-//  contributor license agreements.  See the NOTICE file distributed with
-//  this work for additional information regarding copyright ownership.
-//  The ASF licenses this file to You under the Apache License, Version 2.0
-//  (the "License"); you may not use this file except in compliance with
-//  the License.  You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS,
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//  See the License for the specific language governing permissions and
-//  limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-package org.apache.royale.style
-{
-       COMPILE::JS
-       {
-               import org.apache.royale.core.WrappedHTMLElement;
-       }
-       import org.apache.royale.events.Event;
-       import org.apache.royale.events.ValueEvent;
-       import org.apache.royale.core.IRGBA;
-       import org.apache.royale.core.RGBColor;
-       import org.apache.royale.style.colors.AlphaSlider;
-       import org.apache.royale.style.colors.ColorArea;
-       import org.apache.royale.style.colors.HueSlider;
-       import org.apache.royale.style.elements.Div;
-       import org.apache.royale.style.elements.Span;
-       import org.apache.royale.style.stylebeads.flexgrid.AlignItems;
-       import org.apache.royale.style.stylebeads.flexgrid.FlexDirection;
-       import org.apache.royale.style.stylebeads.flexgrid.Gap;
-       import org.apache.royale.style.stylebeads.flexgrid.JustifyContent;
-       import org.apache.royale.style.stylebeads.layout.Display;
-       import org.apache.royale.style.stylebeads.sizing.WidthStyle;
-       import org.apache.royale.style.stylebeads.spacing.Margin;
-       import org.apache.royale.utils.HSV;
-       import org.apache.royale.utils.number.pinValue;
-       import org.apache.royale.utils.rgbToHsv;
-
-       /**
-        *  ColorPicker composes a ColorSwatchButton trigger with a Popover
-        *  containing the color editing UI: an HSV ColorArea, a HueSlider,
-        *  an optional AlphaSlider, a preview swatch with hex input, and
-        *  optional Apply/Cancel buttons. All controls stay in sync via the
-        *  shared <code>color</code> property.
-        */
-       [Event(name="colorChanged", type="org.apache.royale.events.ValueEvent")]
-       [Event(name="colorCommit", type="org.apache.royale.events.ValueEvent")]
-       [Event(name="cancel", type="org.apache.royale.events.Event")]
-       [Event(name="openChanged", type="org.apache.royale.events.Event")]
-       public class ColorPicker extends Group
-       {
-               public function ColorPicker()
-               {
-                       super();
-               }
-
-               protected var trigger:ColorSwatchButton;
-               protected var popover:Popover;
-               protected var originalSwatch:ColorSwatchButton;
-               protected var previewSwatch:ColorSwatchButton;
-               protected var hexInput:TextInput;
-               protected var hexLabel:Span;
-               protected var inputRow:Div;
-               protected var colorArea:ColorArea;
-               protected var hueSlider:HueSlider;
-               protected var alphaSlider:AlphaSlider;
-               protected var alphaPercent:TextInput;
-               protected var buttonRow:Div;
-               protected var applyButton:Button;
-               protected var cancelButton:Button;
-               protected var swatchGrid:Div;
-               protected var mainRow:Div;
-               protected var rightColumn:Div;
-               protected var sliderColumn:Div;
-               protected var swatchPreviewRow:Div;
-
-               // Guards re-entrant updates while propagating a color change to
-               // all child controls.
-               private var _syncing:Boolean = false;
-
-               // The color the picker exposes (and that the trigger displays).
-               private var _color:IRGBA;
-
-               public function get color():IRGBA
-               {
-                       return _color;
-               }
-
-               public function set color(value:IRGBA):void
-               {
-                       if (value === _color) return;
-                       _color = value;
-                       updateSelectedIndexFromColor(false);
-                       syncControlsFromColor();
-                       dispatchEvent(new ValueEvent("colorChanged", _color));
-               }
-
-               public function get appliedColor():IRGBA
-               {
-                       return color;
-               }
-
-               public function set appliedColor(value:IRGBA):void
-               {
-                       color = value;
-               }
-
-               private function syncControlsFromColor():void
-               {
-                       if (_syncing) return;
-                       _syncing = true;
-                       try
-                       {
-                               var valid:Boolean = _color != null && 
_color.isValid;
-                               if (trigger) trigger.color = _color;
-                               if (previewSwatch) previewSwatch.color = _color;
-                               if (hexInput && _color) hexInput.value = 
_color.hexString.replace(/^#/, "");
-                               if (colorArea && valid)
-                                       colorArea.appliedColor = _color;
-                               if (colorArea)
-                                       colorArea.thumbVisible = valid;
-                               if (hueSlider)
-                               {
-                                       if (valid)
-                                       {
-                                               var hsv:HSV = 
rgbToHsv(_color.r, _color.g, _color.b);
-                                               hueSlider.hue = hsv.h;
-                                       }
-                                       hueSlider.thumbVisible = valid;
-                               }
-                               if (alphaSlider && _color)
-                               {
-                                       alphaSlider.baseColor = _color;
-                                       alphaSlider.alphaValue = 
isNaN(_color.alpha) ? 1 : _color.alpha;
-                               }
-                               if (alphaSlider)
-                                       alphaSlider.thumbVisible = valid;
-                               updateAlphaInput();
-                       }
-                       finally
-                       {
-                               _syncing = false;
-                       }
-               }
-
-               public function get colorValue():uint
-               {
-                       return _color ? _color.colorValue : 0;
-               }
-
-               public function set colorValue(value:uint):void
-               {
-                       var c:RGBColor = new RGBColor();
-                       c.colorValue = value;
-                       color = c;
-               }
-
-               private var _direction:String = "bottom";               /**
-                *  Side of the trigger the picker popup opens toward.
-                */
-               public function get direction():String
-               {
-                       return _direction;
-               }
-
-               [Inspectable(category="General", 
enumeration="top,right,bottom,left", defaultValue="bottom")]
-               public function set direction(value:String):void
-               {
-                       _direction = value;
-                       if (popover) popover.direction = value;
-               }
-
-               /**
-                *  Spectrum-compatible alias for direction.
-                */
-               public function get position():String
-               {
-                       return direction;
-               }
-
-               [Inspectable(category="General", 
enumeration="bottom,top,right,left", defaultValue="bottom")]
-               public function set position(value:String):void
-               {
-                       direction = value;
-               }
-
-               public function get open():Boolean
-               {
-                       return popover ? popover.open : false;
-               }
-
-               public function set open(value:Boolean):void
-               {
-                       if (popover) popover.open = value;
-               }
-
-               private var _showAlphaControls:Boolean = true;
-               public function get showAlphaControls():Boolean { return 
_showAlphaControls; }
-               public function set showAlphaControls(value:Boolean):void
-               {
-                       if (value == _showAlphaControls) return;
-                       _showAlphaControls = value;
-                       applyApiState();
-               }
-
-               private var _showApplyButtons:Boolean = true;
-               public function get showApplyButtons():Boolean { return 
_showApplyButtons; }
-               public function set showApplyButtons(value:Boolean):void
-               {
-                       if (value == _showApplyButtons) return;
-                       _showApplyButtons = value;
-                       applyApiState();
-               }
-
-               private var _showColorControls:Boolean = true;
-               public function get showColorControls():Boolean { return 
_showColorControls; }
-               public function set showColorControls(value:Boolean):void
-               {
-                       if (value == _showColorControls) return;
-                       _showColorControls = value;
-                       applyApiState();
-               }
-
-               private var _showSelectionSwatch:Boolean = true;
-               public function get showSelectionSwatch():Boolean { return 
_showSelectionSwatch; }
-               public function set showSelectionSwatch(value:Boolean):void
-               {
-                       if (value == _showSelectionSwatch) return;
-                       _showSelectionSwatch = value;
-                       applyApiState();
-               }
-
-               private var _preferredColumns:int = 0;
-               public function get preferredColumns():int { return 
_preferredColumns; }
-               public function set preferredColumns(value:int):void
-               {
-                       if (value == _preferredColumns) return;
-                       _preferredColumns = value;
-                       applyApiState();
-               }
-
-               private var _preferredRows:int = 0;
-               public function get preferredRows():int { return 
_preferredRows; }
-               public function set preferredRows(value:int):void
-               {
-                       if (value == _preferredRows) return;
-                       _preferredRows = value;
-                       applyApiState();
-               }
-
-               private var _hexEditable:Boolean = true;
-               public function get hexEditable():Boolean { return 
_hexEditable; }
-               public function set hexEditable(value:Boolean):void
-               {
-                       if (value == _hexEditable) return;
-                       _hexEditable = value;
-                       applyApiState();
-               }
-
-               private var _areaSize:Number = 180;
-               public function get areaSize():Number { return _areaSize; }
-               public function set areaSize(value:Number):void
-               {
-                       _areaSize = value;
-                       if (colorArea) colorArea.pickerSize = value;
-                       applyApiState();
-               }
-
-               private var _applyText:String = "Apply";
-               public function get applyText():String { return _applyText; }
-               public function set applyText(value:String):void
-               {
-                       _applyText = value;
-                       if (applyButton) applyButton.text = value;
-               }
-
-               private var _cancelText:String = "Cancel";
-               public function get cancelText():String { return _cancelText; }
-               public function set cancelText(value:String):void
-               {
-                       _cancelText = value;
-                       if (cancelButton) cancelButton.text = value;
-               }
-
-               // Snapshot of color when the popup was opened (used for 
cancel).
-               private var _initialColor:IRGBA;
-
-               private var _dataProvider:Object;
-               public function get dataProvider():Object
-               {
-                       return _dataProvider;
-               }
-
-               public function set dataProvider(value:Object):void
-               {
-                       _dataProvider = value;
-                       if (_selectedIndex >= 0)
-                               selectDataProviderIndex(_selectedIndex, false);
-                       else if (!_color && getDataProviderLength() > 0)
-                               selectDataProviderIndex(0, false);
-                       buildSwatches();
-               }
-
-               private var _selectedIndex:int = -1;
-               public function get selectedIndex():int
-               {
-                       return _selectedIndex;
-               }
-
-               public function set selectedIndex(value:int):void
-               {
-                       selectDataProviderIndex(value, true);
-               }
-
-               public function get selectedItem():Object
-               {
-                       return getDataProviderItem(_selectedIndex);
-               }
-
-               public function set selectedItem(value:Object):void
-               {
-                       var index:int = getDataProviderItemIndex(value);
-                       if (index >= 0)
-                               selectDataProviderIndex(index, true);
-               }
-
-               COMPILE::JS
-               override protected function createElement():WrappedHTMLElement
-               {
-                       var elem:WrappedHTMLElement = super.createElement();
-
-                       trigger = new ColorSwatchButton();
-                       if (_color) trigger.color = _color;
-
-                       popover = new Popover();
-                       popover.direction = _direction;
-                       popover.trigger = trigger;
-                       popover.addEventListener("openChanged", 
handlePopoverOpenChanged);
-
-                       buildPopoverContent();
-                       addElement(popover);
-
-                       return elem;
-               }
-
-               private function buildPopoverContent():void
-               {
-                       swatchGrid = new Div();
-                       COMPILE::JS
-                       {
-                               var gridStyle:CSSStyleDeclaration = 
(swatchGrid.element as HTMLElement).style;
-                               gridStyle.display = "grid";
-                               // Bracket notation: these CSS props are not in 
the bundled
-                               // CSSStyleDeclaration extern, so dotted access 
gets renamed
-                               // in the js-release (Closure ADVANCED) build.
-                               gridStyle["gridTemplateColumns"] = "repeat(10, 
20px)";
-                               gridStyle["gap"] = "4px";
-                               gridStyle.marginBottom = "10px";
-                       }
-                       popover.addElement(swatchGrid);
-                       buildSwatches();
-
-                       mainRow = new Div();
-                       mainRow.setStyles([
-                               new Display("flex"),
-                               new AlignItems("stretch"),
-                               new Gap("16px")
-                       ], true);
-                       popover.addElement(mainRow);
-
-                       // 1. HSV color area
-                       colorArea = new ColorArea();
-                       colorArea.pickerSize = _areaSize;
-                       colorArea.addEventListener("colorChanged", 
handleColorAreaChange);
-                       mainRow.addElement(colorArea);
-
-                       // Right-hand column: sliders row on top, preview 
swatches row below.
-                       rightColumn = new Div();
-                       rightColumn.setStyles([
-                               new Display("flex"),
-                               new FlexDirection("column"),
-                               new Gap("6px")
-                       ], true);
-                       mainRow.addElement(rightColumn);
-
-                       sliderColumn = new Div();
-                       sliderColumn.setStyles([
-                               new Display("flex"),
-                               new Gap("16px")
-                       ], true);
-                       sliderColumn.height = _areaSize;
-                       rightColumn.addElement(sliderColumn);
-
-                       // 2. Hue slider
-                       hueSlider = new HueSlider();
-                       hueSlider.vertical = true;
-                       hueSlider.width = 24;
-                       hueSlider.height = _areaSize;
-                       hueSlider.addEventListener("hueChanged", 
handleHueChange);
-                       sliderColumn.addElement(hueSlider);
-
-                       // 3. Alpha slider
-                       alphaSlider = new AlphaSlider();
-                       alphaSlider.vertical = true;
-                       alphaSlider.width = 24;
-                       alphaSlider.height = _areaSize;
-                       COMPILE::JS
-                       {
-                               (alphaSlider.element as 
HTMLElement).style.display = "inline-block";
-                       }
-                       alphaSlider.addEventListener("alphaChanged", 
handleAlphaChange);
-                       sliderColumn.addElement(alphaSlider);
-
-                       // 4. Original / preview swatches sit under the 
sliders, each
-                       // approximately aligned under its slider so users can 
compare
-                       // before/after color & alpha.
-                       swatchPreviewRow = new Div();
-                       swatchPreviewRow.setStyles([
-                               new Display("flex"),
-                               new JustifyContent("start")
-                       ], true);
-                       rightColumn.addElement(swatchPreviewRow);
-
-                       originalSwatch = new ColorSwatchButton();
-                       originalSwatch.disabled = true;
-                       originalSwatch.width = 32;
-                       originalSwatch.height = 40;
-                       COMPILE::JS
-                       {
-                               var originalStyle:CSSStyleDeclaration = 
(originalSwatch.element as HTMLElement).style;
-                               originalStyle.display = "inline-block";
-                               originalStyle["borderTopRightRadius"] = "0";
-                               originalStyle["borderBottomRightRadius"] = "0";
-                       }
-                       swatchPreviewRow.addElement(originalSwatch);
-
-                       previewSwatch = new ColorSwatchButton();
-                       previewSwatch.disabled = true;
-                       previewSwatch.width = 32;
-                       previewSwatch.height = 40;
-                       COMPILE::JS
-                       {
-                               var previewStyle:CSSStyleDeclaration = 
(previewSwatch.element as HTMLElement).style;
-                               previewStyle.display = "inline-block";
-                               previewStyle["borderTopLeftRadius"] = "0";
-                               previewStyle["borderBottomLeftRadius"] = "0";
-                       }
-                       swatchPreviewRow.addElement(previewSwatch);
-
-                       // 5. Hex + alpha inputs
-                       inputRow = new Div();
-                       inputRow.setStyles([
-                               new Display("flex"),
-                               new AlignItems("center"),
-                               new Gap("6px"),
-                               new Margin(8, "px")
-                       ], true);
-                       popover.addElement(inputRow);
-
-                       hexLabel = new Span();
-                       hexLabel.text = "#";
-                       inputRow.addElement(hexLabel);
-
-                       hexInput = new TextInput();
-                       hexInput.setStyles([
-                               new WidthStyle("80px")
-                       ], true);
-                       hexInput.placeholder = "rrggbb";
-                       COMPILE::JS
-                       {
-                               (hexInput.element as 
HTMLElement).addEventListener("change", handleHexChange);
-                               (hexInput.element as 
HTMLElement).addEventListener("keydown", handleHexKeyDown);
-                               (hexInput.element as 
HTMLElement).addEventListener("input", handleHexInput);
-                               (hexInput.element as 
HTMLElement).addEventListener("focus", handleHexFocus);
-                       }
-                       inputRow.addElement(hexInput);
-
-                       alphaPercent = new TextInput();
-                       alphaPercent.setStyles([
-                               new WidthStyle("50px")
-                       ], true);
-                       alphaPercent.value = "100%";
-                       COMPILE::JS
-                       {
-                               var alphaInput:HTMLInputElement = 
alphaPercent.element as HTMLInputElement;
-                               alphaInput.style.textAlign = "right";
-                               alphaInput.addEventListener("change", 
handleAlphaInputChange);
-                               alphaInput.addEventListener("keydown", 
handleAlphaInputKeyDown);
-                               alphaInput.addEventListener("input", 
handleAlphaInput);
-                               alphaInput.addEventListener("focus", 
handleAlphaFocus);
-                       }
-                       inputRow.addElement(alphaPercent);
-
-                       // 6. Apply / Cancel buttons (Apply first to match 
Spectrum)
-                       buttonRow = new Div();
-                       buttonRow.setStyles([
-                               new Display("flex"),
-                               new JustifyContent("end"),
-                               new Gap("6px"),
-                               new Margin(8, "px")
-                       ], true);
-                       popover.addElement(buttonRow);
-
-                       applyButton = new Button();
-                       applyButton.text = _applyText;
-                       COMPILE::JS
-                       {
-                               (applyButton.element as 
HTMLElement).addEventListener("click", handleApplyClick);
-                       }
-                       buttonRow.addElement(applyButton);
-
-                       cancelButton = new Button();
-                       cancelButton.text = _cancelText;
-                       COMPILE::JS
-                       {
-                               (cancelButton.element as 
HTMLElement).addEventListener("click", handleCancelClick);
-                       }
-                       buttonRow.addElement(cancelButton);
-
-                       syncControlsFromColor();
-                       applyApiState();
-               }
-
-               private function applyApiState():void
-               {
-                       if (mainRow) mainRow.visible = _showColorControls;
-                       if (inputRow) inputRow.visible = _showColorControls;
-                       if (swatchPreviewRow) swatchPreviewRow.visible = 
_showColorControls && _showSelectionSwatch;
-                       if (previewSwatch) previewSwatch.visible = 
_showSelectionSwatch;
-                       if (originalSwatch) originalSwatch.visible = 
_showSelectionSwatch;
-                       if (hexLabel) hexLabel.visible = _showColorControls;
-                       if (hexInput) hexInput.visible = _showColorControls;
-                       if (alphaSlider) alphaSlider.visible = 
_showColorControls && _showAlphaControls;
-                       if (alphaPercent) alphaPercent.visible = 
_showColorControls && _showAlphaControls;
-                       if (buttonRow) buttonRow.visible = _showApplyButtons;
-                       if (swatchGrid) swatchGrid.visible = 
getDataProviderLength() > 0;
-                       if (colorArea) colorArea.width = _areaSize;
-                       if (sliderColumn) sliderColumn.height = _areaSize;
-                       if (hueSlider) hueSlider.height = _areaSize;
-                       if (alphaSlider) alphaSlider.height = _areaSize;
-                       COMPILE::JS
-                       {
-                               if (hexInput)
-                                       (hexInput.element as 
HTMLInputElement).readOnly = !_hexEditable;
-                               if (alphaPercent)
-                                       (alphaPercent.element as 
HTMLInputElement).readOnly = !_hexEditable;
-                               if (swatchGrid)
-                               {
-                                       var gridStyle:CSSStyleDeclaration = 
(swatchGrid.element as HTMLElement).style;
-                                       gridStyle["gridTemplateColumns"] = 
_preferredColumns > 0
-                                               ? "repeat(" + _preferredColumns 
+ ", 20px)"
-                                               : "repeat(10, 20px)";
-                                       gridStyle["maxHeight"] = _preferredRows 
> 0 ? String(Math.max(24, -4 + (_preferredRows * 24))) + "px" : "";
-                                       gridStyle["overflowY"] = _preferredRows 
> 0 ? "auto" : "";
-                               }
-                       }
-               }
-
-               private function handleColorAreaChange(event:ValueEvent):void
-               {
-                       if (_syncing) return;
-                       var c:RGBColor = event.value as RGBColor;
-                       if (!c) return;
-                       var next:RGBColor = c.clone() as RGBColor;
-                       if (_color && !isNaN(_color.alpha)) next.alpha = 
_color.alpha;
-                       _color = next;
-                       // don't re-sync the colorArea (it's the source); 
update the rest
-                       if (trigger) trigger.color = next;
-                       if (previewSwatch) previewSwatch.color = next;
-                       if (hexInput) hexInput.value = 
next.hexString.replace(/^#/, "");
-                       colorArea.thumbVisible = true;
-                       if (hueSlider) hueSlider.thumbVisible = true;
-                       if (alphaSlider) alphaSlider.thumbVisible = true;
-                       if (alphaSlider) alphaSlider.baseColor = next;
-                       updateAlphaInput();
-                       updateSelectedIndexFromColor(true);
-                       dispatchEvent(new ValueEvent("colorChanged", next));
-               }
-
-               private function handleHueChange(event:ValueEvent):void
-               {
-                       if (_syncing) return;
-                       if (!colorArea) return;
-                       colorArea.hue = Number(event.value);
-                       var next:IRGBA = colorArea.appliedColor;
-                       if (!next) return;
-                       if (_color && !isNaN(_color.alpha)) next.alpha = 
_color.alpha;
-                       _color = next;
-                       if (trigger) trigger.color = next;
-                       if (previewSwatch) previewSwatch.color = next;
-                       if (hexInput) hexInput.value = 
next.hexString.replace(/^#/, "");
-                       colorArea.thumbVisible = true;
-                       if (hueSlider) hueSlider.thumbVisible = true;
-                       if (alphaSlider) alphaSlider.thumbVisible = true;
-                       if (alphaSlider) alphaSlider.baseColor = next;
-                       updateAlphaInput();
-                       updateSelectedIndexFromColor(true);
-                       dispatchEvent(new ValueEvent("colorChanged", next));
-               }
-
-               private function handleAlphaChange(event:ValueEvent):void
-               {
-                       if (_syncing) return;
-                       if (!_color) return;
-                       var next:RGBColor = new RGBColor([_color.r, _color.g, 
_color.b, Number(event.value)]);
-                       _color = next;
-                       if (trigger) trigger.color = next;
-                       if (previewSwatch) previewSwatch.color = next;
-                       updateAlphaInput();
-                       updateSelectedIndexFromColor(true);
-                       dispatchEvent(new ValueEvent("colorChanged", next));
-               }
-
-               COMPILE::JS
-               private function handleApplyClick(event:Object):void
-               {
-                       dispatchEvent(new ValueEvent("colorCommit", _color));
-                       open = false;
-               }
-
-               COMPILE::JS
-               private function handleCancelClick(event:Object):void
-               {
-                       cancel();
-               }
-
-               COMPILE::JS
-               private function handleHexChange(event:Object):void
-               {
-                       commitHexFromInput(false);
-               }
-
-               COMPILE::JS
-               private function handleHexKeyDown(event:Object):void
-               {
-                       if (event.key == "Enter")
-                       {
-                               event.preventDefault();
-                               commitHexFromInput(true);
-                       }
-                       else if (event.key == "Escape")
-                       {
-                               cancel();
-                       }
-               }
-
-               COMPILE::JS
-               private function handleHexInput(event:Object):void
-               {
-                       var input:HTMLInputElement = hexInput.element as 
HTMLInputElement;
-                       input.value = input.value.replace(/[^#0-9A-Fa-f]/g, 
"").toUpperCase();
-               }
-
-               COMPILE::JS
-               private function handleHexFocus(event:Object):void
-               {
-                       var input:HTMLInputElement = hexInput.element as 
HTMLInputElement;
-                       input.setSelectionRange(0, input.value.length);
-               }
-
-               COMPILE::JS
-               private function handleAlphaInputChange(event:Object):void
-               {
-                       commitAlphaFromInput();
-               }
-
-               COMPILE::JS
-               private function handleAlphaInput(event:Object):void
-               {
-                       var input:HTMLInputElement = alphaPercent.element as 
HTMLInputElement;
-                       input.value = input.value.replace(/[^0-9%]/g, "");
-               }
-
-               COMPILE::JS
-               private function handleAlphaFocus(event:Object):void
-               {
-                       var input:HTMLInputElement = alphaPercent.element as 
HTMLInputElement;
-                       input.setSelectionRange(0, input.value.length);
-               }
-
-               COMPILE::JS
-               private function handleAlphaInputKeyDown(event:Object):void
-               {
-                       if (event.key == "Enter")
-                       {
-                               event.preventDefault();
-                               commitAlphaFromInput();
-                       }
-                       else if (event.key == "Escape")
-                       {
-                               cancel();
-                       }
-                       else if (event.key == "ArrowUp" || event.key == 
"ArrowDown")
-                       {
-                               event.preventDefault();
-                               var current:Number = 
alphaPercentToNumber(alphaPercent.value);
-                               if (isNaN(current)) current = 100;
-                               current += event.key == "ArrowUp" ? 1 : -1;
-                               alphaPercent.value = 
Math.round(pinValue(current, 0, 100)) + "%";
-                               commitAlphaFromInput();
-                               handleAlphaFocus(event);
-                       }
-               }
-
-               private function commitHexFromInput(closeAfter:Boolean):void
-               {
-                       var raw:String = hexInput.value;
-                       if (raw == null) return;
-                       raw = raw.replace(/^#/, "");
-                       if (raw.length != 6) return;
-                       var c:RGBColor = RGBColor.fromHex(raw);
-                       if (!c.isValid) return;
-                       if (_color && !isNaN(_color.alpha)) c.alpha = 
_color.alpha;
-                       color = c;
-                       if (closeAfter)
-                       {
-                               dispatchEvent(new ValueEvent("colorCommit", 
_color));
-                               open = false;
-                       }
-               }
-
-               private function commitAlphaFromInput():void
-               {
-                       if (!_color || !alphaPercent) return;
-                       var value:Number = 
alphaPercentToNumber(alphaPercent.value);
-                       if (isNaN(value)) return;
-                       value = pinValue(value, 0, 100);
-                       var next:RGBColor = new RGBColor([_color.r, _color.g, 
_color.b, value / 100]);
-                       color = next;
-               }
-
-               private function alphaPercentToNumber(value:String):Number
-               {
-                       if (value == null) return NaN;
-                       return parseFloat(value.replace(/%/g, ""));
-               }
-
-               private function updateAlphaInput():void
-               {
-                       if (!alphaPercent) return;
-                       alphaPercent.value = _color && !isNaN(_color.alpha)
-                               ? Math.round(_color.alpha * 100) + "%" : "100%";
-               }
-
-               public function cancel():void
-               {
-                       if (_initialColor)
-                               color = _initialColor;
-                       dispatchEvent(new Event("cancel"));
-                       open = false;
-               }
-
-               private function handlePopoverOpenChanged(event:Event):void
-               {
-                       if (popover.open)
-                       {
-                               _initialColor = _color ? _color.clone() : null;
-                               if (originalSwatch) originalSwatch.color = 
_initialColor;
-                               syncControlsFromColor();
-                       }
-                       dispatchEvent(new Event("openChanged"));
-               }
-
-               private function selectDataProviderIndex(index:int, 
dispatchChange:Boolean):void
-               {
-                       _selectedIndex = index;
-                       var item:Object = getDataProviderItem(index);
-                       if (item is IRGBA)
-                       {
-                               _color = (item as IRGBA).clone();
-                               syncControlsFromColor();
-                               if (dispatchChange)
-                                       dispatchEvent(new 
ValueEvent("colorChanged", _color));
-                       }
-                       updateSwatchSelection();
-               }
-
-               private function getDataProviderLength():int
-               {
-                       if (!_dataProvider) return 0;
-                       if (_dataProvider is Array) return (_dataProvider as 
Array).length;
-                       if (_dataProvider["length"] !== undefined) return 
int(_dataProvider["length"]);
-                       return 0;
-               }
-
-               private function getDataProviderItem(index:int):Object
-               {
-                       if (!_dataProvider || index < 0 || index >= 
getDataProviderLength()) return null;
-                       if (_dataProvider is Array) return (_dataProvider as 
Array)[index];
-                       if (_dataProvider["getItemAt"] != null) return 
_dataProvider["getItemAt"](index);
-                       return _dataProvider[index];
-               }
-
-               private function getDataProviderItemIndex(value:Object):int
-               {
-                       if (!_dataProvider || value == null) return -1;
-                       var len:int = getDataProviderLength();
-                       for (var i:int = 0; i < len; i++)
-                       {
-                               if (getDataProviderItem(i) == value)
-                                       return i;
-                       }
-                       return -1;
-               }
-
-               private function buildSwatches():void
-               {
-                       if (!swatchGrid) return;
-                       COMPILE::JS
-                       {
-                               var grid:HTMLElement = swatchGrid.element as 
HTMLElement;
-                               while (grid.firstChild) 
grid.removeChild(grid.firstChild);
-                       }
-                       var len:int = getDataProviderLength();
-                       swatchGrid.visible = len > 0;
-                       for (var i:int = 0; i < len; i++)
-                       {
-                               var item:IRGBA = getDataProviderItem(i) as 
IRGBA;
-                               var swatch:ColorSwatchButton = new 
ColorSwatchButton();
-                               swatch.color = item;
-                               swatch.width = 20;
-                               swatch.height = 20;
-                               COMPILE::JS
-                               {
-                                       var swatchElem:HTMLElement = 
swatch.element as HTMLElement;
-                                       swatchElem.setAttribute("data-index", 
String(i));
-                                       swatchElem.addEventListener("click", 
handleSwatchClick);
-                               }
-                               swatchGrid.addElement(swatch);
-                       }
-                       updateSwatchSelection();
-               }
-
-               COMPILE::JS
-               private function handleSwatchClick(event:Object):void
-               {
-                       var target:HTMLElement = event.currentTarget as 
HTMLElement;
-                       var index:int = int(target.getAttribute("data-index"));
-                       selectDataProviderIndex(index, true);
-               }
-
-               private function 
updateSelectedIndexFromColor(resetWhenMissing:Boolean):void
-               {
-                       var len:int = getDataProviderLength();
-                       var index:int = -1;
-                       for (var i:int = 0; i < len; i++)
-                       {
-                               var item:IRGBA = getDataProviderItem(i) as 
IRGBA;
-                               if (sameColor(item, _color))
-                               {
-                                       index = i;
-                                       break;
-                               }
-                       }
-                       if (index >= 0 || resetWhenMissing)
-                       {
-                               _selectedIndex = index;
-                               updateSwatchSelection();
-                       }
-               }
-
-               private function updateSwatchSelection():void
-               {
-                       if (!swatchGrid) return;
-                       COMPILE::JS
-                       {
-                               var grid:HTMLElement = swatchGrid.element as 
HTMLElement;
-                               for (var i:int = 0; i < grid.children.length; 
i++)
-                               {
-                                       var child:HTMLElement = 
grid.children[i] as HTMLElement;
-                                       child.style.outline = i == 
_selectedIndex ? "2px solid #2680eb" : "";
-                                       child.style["outlineOffset"] = "1px";
-                               }
-                       }
-               }
-
-               private function sameColor(a:IRGBA, b:IRGBA):Boolean
-               {
-                       if (!a || !b) return false;
-                       var aa:Number = isNaN(a.alpha) ? 1 : a.alpha;
-                       var ba:Number = isNaN(b.alpha) ? 1 : b.alpha;
-                       return a.r == b.r && a.g == b.g && a.b == b.b && 
Math.round(aa * 100) == Math.round(ba * 100);
-               }
-       }
-}

Reply via email to