@kurot/ui 1.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +258 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/kurot/binding/Binding.d.ts +38 -0
- package/dist/kurot/binding/Binding.d.ts.map +1 -0
- package/dist/kurot/binding/Binding.js +88 -0
- package/dist/kurot/binding/Binding.js.map +1 -0
- package/dist/kurot/binding/Watcher.d.ts +57 -0
- package/dist/kurot/binding/Watcher.d.ts.map +1 -0
- package/dist/kurot/binding/Watcher.js +119 -0
- package/dist/kurot/binding/Watcher.js.map +1 -0
- package/dist/kurot/binding/index.d.ts +3 -0
- package/dist/kurot/binding/index.d.ts.map +1 -0
- package/dist/kurot/binding/index.js +3 -0
- package/dist/kurot/binding/index.js.map +1 -0
- package/dist/kurot/collections/ArrayCollection.d.ts +56 -0
- package/dist/kurot/collections/ArrayCollection.d.ts.map +1 -0
- package/dist/kurot/collections/ArrayCollection.js +143 -0
- package/dist/kurot/collections/ArrayCollection.js.map +1 -0
- package/dist/kurot/collections/ICollection.d.ts +24 -0
- package/dist/kurot/collections/ICollection.d.ts.map +1 -0
- package/dist/kurot/collections/ICollection.js +2 -0
- package/dist/kurot/collections/ICollection.js.map +1 -0
- package/dist/kurot/collections/index.d.ts +3 -0
- package/dist/kurot/collections/index.d.ts.map +1 -0
- package/dist/kurot/collections/index.js +2 -0
- package/dist/kurot/collections/index.js.map +1 -0
- package/dist/kurot/components/Animation.d.ts +34 -0
- package/dist/kurot/components/Animation.d.ts.map +1 -0
- package/dist/kurot/components/Animation.js +100 -0
- package/dist/kurot/components/Animation.js.map +1 -0
- package/dist/kurot/components/Button.d.ts +61 -0
- package/dist/kurot/components/Button.d.ts.map +1 -0
- package/dist/kurot/components/Button.js +176 -0
- package/dist/kurot/components/Button.js.map +1 -0
- package/dist/kurot/components/CheckBox.d.ts +11 -0
- package/dist/kurot/components/CheckBox.d.ts.map +1 -0
- package/dist/kurot/components/CheckBox.js +13 -0
- package/dist/kurot/components/CheckBox.js.map +1 -0
- package/dist/kurot/components/ComboBox.d.ts +93 -0
- package/dist/kurot/components/ComboBox.d.ts.map +1 -0
- package/dist/kurot/components/ComboBox.js +307 -0
- package/dist/kurot/components/ComboBox.js.map +1 -0
- package/dist/kurot/components/Component.d.ts +203 -0
- package/dist/kurot/components/Component.d.ts.map +1 -0
- package/dist/kurot/components/Component.js +522 -0
- package/dist/kurot/components/Component.js.map +1 -0
- package/dist/kurot/components/DataGroup.d.ts +90 -0
- package/dist/kurot/components/DataGroup.d.ts.map +1 -0
- package/dist/kurot/components/DataGroup.js +483 -0
- package/dist/kurot/components/DataGroup.js.map +1 -0
- package/dist/kurot/components/EditableText.d.ts +44 -0
- package/dist/kurot/components/EditableText.d.ts.map +1 -0
- package/dist/kurot/components/EditableText.js +126 -0
- package/dist/kurot/components/EditableText.js.map +1 -0
- package/dist/kurot/components/Group.d.ts +133 -0
- package/dist/kurot/components/Group.d.ts.map +1 -0
- package/dist/kurot/components/Group.js +454 -0
- package/dist/kurot/components/Group.js.map +1 -0
- package/dist/kurot/components/HScrollBar.d.ts +13 -0
- package/dist/kurot/components/HScrollBar.d.ts.map +1 -0
- package/dist/kurot/components/HScrollBar.js +55 -0
- package/dist/kurot/components/HScrollBar.js.map +1 -0
- package/dist/kurot/components/HSlider.d.ts +17 -0
- package/dist/kurot/components/HSlider.d.ts.map +1 -0
- package/dist/kurot/components/HSlider.js +48 -0
- package/dist/kurot/components/HSlider.js.map +1 -0
- package/dist/kurot/components/Image.d.ts +35 -0
- package/dist/kurot/components/Image.d.ts.map +1 -0
- package/dist/kurot/components/Image.js +141 -0
- package/dist/kurot/components/Image.js.map +1 -0
- package/dist/kurot/components/ItemRenderer.d.ts +42 -0
- package/dist/kurot/components/ItemRenderer.d.ts.map +1 -0
- package/dist/kurot/components/ItemRenderer.js +117 -0
- package/dist/kurot/components/ItemRenderer.js.map +1 -0
- package/dist/kurot/components/Label.d.ts +49 -0
- package/dist/kurot/components/Label.d.ts.map +1 -0
- package/dist/kurot/components/Label.js +193 -0
- package/dist/kurot/components/Label.js.map +1 -0
- package/dist/kurot/components/List.d.ts +16 -0
- package/dist/kurot/components/List.d.ts.map +1 -0
- package/dist/kurot/components/List.js +34 -0
- package/dist/kurot/components/List.js.map +1 -0
- package/dist/kurot/components/ListBase.d.ts +61 -0
- package/dist/kurot/components/ListBase.d.ts.map +1 -0
- package/dist/kurot/components/ListBase.js +202 -0
- package/dist/kurot/components/ListBase.js.map +1 -0
- package/dist/kurot/components/Panel.d.ts +53 -0
- package/dist/kurot/components/Panel.d.ts.map +1 -0
- package/dist/kurot/components/Panel.js +145 -0
- package/dist/kurot/components/Panel.js.map +1 -0
- package/dist/kurot/components/ProgressBar.d.ts +48 -0
- package/dist/kurot/components/ProgressBar.d.ts.map +1 -0
- package/dist/kurot/components/ProgressBar.js +180 -0
- package/dist/kurot/components/ProgressBar.js.map +1 -0
- package/dist/kurot/components/RadioButton.d.ts +86 -0
- package/dist/kurot/components/RadioButton.d.ts.map +1 -0
- package/dist/kurot/components/RadioButton.js +246 -0
- package/dist/kurot/components/RadioButton.js.map +1 -0
- package/dist/kurot/components/Range.d.ts +41 -0
- package/dist/kurot/components/Range.d.ts.map +1 -0
- package/dist/kurot/components/Range.js +144 -0
- package/dist/kurot/components/Range.js.map +1 -0
- package/dist/kurot/components/Rect.d.ts +33 -0
- package/dist/kurot/components/Rect.d.ts.map +1 -0
- package/dist/kurot/components/Rect.js +125 -0
- package/dist/kurot/components/Rect.js.map +1 -0
- package/dist/kurot/components/ScrollBarBase.d.ts +27 -0
- package/dist/kurot/components/ScrollBarBase.d.ts.map +1 -0
- package/dist/kurot/components/ScrollBarBase.js +50 -0
- package/dist/kurot/components/ScrollBarBase.js.map +1 -0
- package/dist/kurot/components/Scroller.d.ts +82 -0
- package/dist/kurot/components/Scroller.d.ts.map +1 -0
- package/dist/kurot/components/Scroller.js +416 -0
- package/dist/kurot/components/Scroller.js.map +1 -0
- package/dist/kurot/components/Skin.d.ts +64 -0
- package/dist/kurot/components/Skin.d.ts.map +1 -0
- package/dist/kurot/components/Skin.js +136 -0
- package/dist/kurot/components/Skin.js.map +1 -0
- package/dist/kurot/components/SliderBase.d.ts +60 -0
- package/dist/kurot/components/SliderBase.d.ts.map +1 -0
- package/dist/kurot/components/SliderBase.js +197 -0
- package/dist/kurot/components/SliderBase.js.map +1 -0
- package/dist/kurot/components/TabBar.d.ts +29 -0
- package/dist/kurot/components/TabBar.d.ts.map +1 -0
- package/dist/kurot/components/TabBar.js +92 -0
- package/dist/kurot/components/TabBar.js.map +1 -0
- package/dist/kurot/components/TextInput.d.ts +49 -0
- package/dist/kurot/components/TextInput.d.ts.map +1 -0
- package/dist/kurot/components/TextInput.js +157 -0
- package/dist/kurot/components/TextInput.js.map +1 -0
- package/dist/kurot/components/ToggleButton.d.ts +11 -0
- package/dist/kurot/components/ToggleButton.d.ts.map +1 -0
- package/dist/kurot/components/ToggleButton.js +14 -0
- package/dist/kurot/components/ToggleButton.js.map +1 -0
- package/dist/kurot/components/ToggleSwitch.d.ts +10 -0
- package/dist/kurot/components/ToggleSwitch.d.ts.map +1 -0
- package/dist/kurot/components/ToggleSwitch.js +10 -0
- package/dist/kurot/components/ToggleSwitch.js.map +1 -0
- package/dist/kurot/components/TouchScroll.d.ts +38 -0
- package/dist/kurot/components/TouchScroll.d.ts.map +1 -0
- package/dist/kurot/components/TouchScroll.js +133 -0
- package/dist/kurot/components/TouchScroll.js.map +1 -0
- package/dist/kurot/components/UILayer.d.ts +14 -0
- package/dist/kurot/components/UILayer.d.ts.map +1 -0
- package/dist/kurot/components/UILayer.js +38 -0
- package/dist/kurot/components/UILayer.js.map +1 -0
- package/dist/kurot/components/VScrollBar.d.ts +13 -0
- package/dist/kurot/components/VScrollBar.d.ts.map +1 -0
- package/dist/kurot/components/VScrollBar.js +55 -0
- package/dist/kurot/components/VScrollBar.js.map +1 -0
- package/dist/kurot/components/VSlider.d.ts +17 -0
- package/dist/kurot/components/VSlider.d.ts.map +1 -0
- package/dist/kurot/components/VSlider.js +49 -0
- package/dist/kurot/components/VSlider.js.map +1 -0
- package/dist/kurot/components/ViewStack.d.ts +42 -0
- package/dist/kurot/components/ViewStack.d.ts.map +1 -0
- package/dist/kurot/components/ViewStack.js +160 -0
- package/dist/kurot/components/ViewStack.js.map +1 -0
- package/dist/kurot/components/index.d.ts +34 -0
- package/dist/kurot/components/index.d.ts.map +1 -0
- package/dist/kurot/components/index.js +34 -0
- package/dist/kurot/components/index.js.map +1 -0
- package/dist/kurot/core/AssetAdapterRegistry.d.ts +4 -0
- package/dist/kurot/core/AssetAdapterRegistry.d.ts.map +1 -0
- package/dist/kurot/core/AssetAdapterRegistry.js +9 -0
- package/dist/kurot/core/AssetAdapterRegistry.js.map +1 -0
- package/dist/kurot/core/DefaultAssetAdapter.d.ts +10 -0
- package/dist/kurot/core/DefaultAssetAdapter.d.ts.map +1 -0
- package/dist/kurot/core/DefaultAssetAdapter.js +22 -0
- package/dist/kurot/core/DefaultAssetAdapter.js.map +1 -0
- package/dist/kurot/core/DefaultThemeAdapter.d.ts +8 -0
- package/dist/kurot/core/DefaultThemeAdapter.d.ts.map +1 -0
- package/dist/kurot/core/DefaultThemeAdapter.js +27 -0
- package/dist/kurot/core/DefaultThemeAdapter.js.map +1 -0
- package/dist/kurot/core/Direction.d.ts +10 -0
- package/dist/kurot/core/Direction.d.ts.map +1 -0
- package/dist/kurot/core/Direction.js +10 -0
- package/dist/kurot/core/Direction.js.map +1 -0
- package/dist/kurot/core/IAssetAdapter.d.ts +15 -0
- package/dist/kurot/core/IAssetAdapter.d.ts.map +1 -0
- package/dist/kurot/core/IAssetAdapter.js +2 -0
- package/dist/kurot/core/IAssetAdapter.js.map +1 -0
- package/dist/kurot/core/IDisplayText.d.ts +12 -0
- package/dist/kurot/core/IDisplayText.d.ts.map +1 -0
- package/dist/kurot/core/IDisplayText.js +2 -0
- package/dist/kurot/core/IDisplayText.js.map +1 -0
- package/dist/kurot/core/IItemRenderer.d.ts +19 -0
- package/dist/kurot/core/IItemRenderer.d.ts.map +1 -0
- package/dist/kurot/core/IItemRenderer.js +2 -0
- package/dist/kurot/core/IItemRenderer.js.map +1 -0
- package/dist/kurot/core/IThemeAdapter.d.ts +14 -0
- package/dist/kurot/core/IThemeAdapter.d.ts.map +1 -0
- package/dist/kurot/core/IThemeAdapter.js +2 -0
- package/dist/kurot/core/IThemeAdapter.js.map +1 -0
- package/dist/kurot/core/IUIComponent.d.ts +63 -0
- package/dist/kurot/core/IUIComponent.d.ts.map +1 -0
- package/dist/kurot/core/IUIComponent.js +2 -0
- package/dist/kurot/core/IUIComponent.js.map +1 -0
- package/dist/kurot/core/IViewport.d.ts +12 -0
- package/dist/kurot/core/IViewport.d.ts.map +1 -0
- package/dist/kurot/core/IViewport.js +2 -0
- package/dist/kurot/core/IViewport.js.map +1 -0
- package/dist/kurot/core/ScrollPolicy.d.ts +9 -0
- package/dist/kurot/core/ScrollPolicy.d.ts.map +1 -0
- package/dist/kurot/core/ScrollPolicy.js +9 -0
- package/dist/kurot/core/ScrollPolicy.js.map +1 -0
- package/dist/kurot/core/Theme.d.ts +53 -0
- package/dist/kurot/core/Theme.d.ts.map +1 -0
- package/dist/kurot/core/Theme.js +169 -0
- package/dist/kurot/core/Theme.js.map +1 -0
- package/dist/kurot/core/UIComponent.d.ts +2 -0
- package/dist/kurot/core/UIComponent.d.ts.map +1 -0
- package/dist/kurot/core/UIComponent.js +4 -0
- package/dist/kurot/core/UIComponent.js.map +1 -0
- package/dist/kurot/core/UIState.d.ts +84 -0
- package/dist/kurot/core/UIState.d.ts.map +1 -0
- package/dist/kurot/core/UIState.js +512 -0
- package/dist/kurot/core/UIState.js.map +1 -0
- package/dist/kurot/core/Validator.d.ts +46 -0
- package/dist/kurot/core/Validator.d.ts.map +1 -0
- package/dist/kurot/core/Validator.js +368 -0
- package/dist/kurot/core/Validator.js.map +1 -0
- package/dist/kurot/core/index.d.ts +17 -0
- package/dist/kurot/core/index.d.ts.map +1 -0
- package/dist/kurot/core/index.js +10 -0
- package/dist/kurot/core/index.js.map +1 -0
- package/dist/kurot/events/CollectionEvent.d.ts +22 -0
- package/dist/kurot/events/CollectionEvent.d.ts.map +1 -0
- package/dist/kurot/events/CollectionEvent.js +37 -0
- package/dist/kurot/events/CollectionEvent.js.map +1 -0
- package/dist/kurot/events/ItemTapEvent.d.ts +11 -0
- package/dist/kurot/events/ItemTapEvent.d.ts.map +1 -0
- package/dist/kurot/events/ItemTapEvent.js +24 -0
- package/dist/kurot/events/ItemTapEvent.js.map +1 -0
- package/dist/kurot/events/PropertyEvent.d.ts +8 -0
- package/dist/kurot/events/PropertyEvent.d.ts.map +1 -0
- package/dist/kurot/events/PropertyEvent.js +20 -0
- package/dist/kurot/events/PropertyEvent.js.map +1 -0
- package/dist/kurot/events/ScrollerThrowEvent.d.ts +17 -0
- package/dist/kurot/events/ScrollerThrowEvent.d.ts.map +1 -0
- package/dist/kurot/events/ScrollerThrowEvent.js +22 -0
- package/dist/kurot/events/ScrollerThrowEvent.js.map +1 -0
- package/dist/kurot/events/UIEvent.d.ts +29 -0
- package/dist/kurot/events/UIEvent.d.ts.map +1 -0
- package/dist/kurot/events/UIEvent.js +39 -0
- package/dist/kurot/events/UIEvent.js.map +1 -0
- package/dist/kurot/events/index.d.ts +6 -0
- package/dist/kurot/events/index.d.ts.map +1 -0
- package/dist/kurot/events/index.js +6 -0
- package/dist/kurot/events/index.js.map +1 -0
- package/dist/kurot/layouts/BasicLayout.d.ts +13 -0
- package/dist/kurot/layouts/BasicLayout.d.ts.map +1 -0
- package/dist/kurot/layouts/BasicLayout.js +146 -0
- package/dist/kurot/layouts/BasicLayout.js.map +1 -0
- package/dist/kurot/layouts/ColumnAlign.d.ts +9 -0
- package/dist/kurot/layouts/ColumnAlign.d.ts.map +1 -0
- package/dist/kurot/layouts/ColumnAlign.js +9 -0
- package/dist/kurot/layouts/ColumnAlign.js.map +1 -0
- package/dist/kurot/layouts/HorizontalLayout.d.ts +23 -0
- package/dist/kurot/layouts/HorizontalLayout.d.ts.map +1 -0
- package/dist/kurot/layouts/HorizontalLayout.js +405 -0
- package/dist/kurot/layouts/HorizontalLayout.js.map +1 -0
- package/dist/kurot/layouts/ILayoutTarget.d.ts +25 -0
- package/dist/kurot/layouts/ILayoutTarget.d.ts.map +1 -0
- package/dist/kurot/layouts/ILayoutTarget.js +2 -0
- package/dist/kurot/layouts/ILayoutTarget.js.map +1 -0
- package/dist/kurot/layouts/JustifyAlign.d.ts +8 -0
- package/dist/kurot/layouts/JustifyAlign.d.ts.map +1 -0
- package/dist/kurot/layouts/JustifyAlign.js +8 -0
- package/dist/kurot/layouts/JustifyAlign.js.map +1 -0
- package/dist/kurot/layouts/LayoutBase.d.ts +23 -0
- package/dist/kurot/layouts/LayoutBase.d.ts.map +1 -0
- package/dist/kurot/layouts/LayoutBase.js +45 -0
- package/dist/kurot/layouts/LayoutBase.js.map +1 -0
- package/dist/kurot/layouts/LinearLayoutBase.d.ts +70 -0
- package/dist/kurot/layouts/LinearLayoutBase.d.ts.map +1 -0
- package/dist/kurot/layouts/LinearLayoutBase.js +246 -0
- package/dist/kurot/layouts/LinearLayoutBase.js.map +1 -0
- package/dist/kurot/layouts/RowAlign.d.ts +9 -0
- package/dist/kurot/layouts/RowAlign.d.ts.map +1 -0
- package/dist/kurot/layouts/RowAlign.js +9 -0
- package/dist/kurot/layouts/RowAlign.js.map +1 -0
- package/dist/kurot/layouts/TileLayout.d.ts +79 -0
- package/dist/kurot/layouts/TileLayout.d.ts.map +1 -0
- package/dist/kurot/layouts/TileLayout.js +577 -0
- package/dist/kurot/layouts/TileLayout.js.map +1 -0
- package/dist/kurot/layouts/TileOrientation.d.ts +8 -0
- package/dist/kurot/layouts/TileOrientation.d.ts.map +1 -0
- package/dist/kurot/layouts/TileOrientation.js +8 -0
- package/dist/kurot/layouts/TileOrientation.js.map +1 -0
- package/dist/kurot/layouts/VerticalLayout.d.ts +23 -0
- package/dist/kurot/layouts/VerticalLayout.d.ts.map +1 -0
- package/dist/kurot/layouts/VerticalLayout.js +406 -0
- package/dist/kurot/layouts/VerticalLayout.js.map +1 -0
- package/dist/kurot/layouts/index.d.ts +12 -0
- package/dist/kurot/layouts/index.d.ts.map +1 -0
- package/dist/kurot/layouts/index.js +11 -0
- package/dist/kurot/layouts/index.js.map +1 -0
- package/dist/kurot/states/AddItems.d.ts +17 -0
- package/dist/kurot/states/AddItems.d.ts.map +1 -0
- package/dist/kurot/states/AddItems.js +42 -0
- package/dist/kurot/states/AddItems.js.map +1 -0
- package/dist/kurot/states/IOverride.d.ts +12 -0
- package/dist/kurot/states/IOverride.d.ts.map +1 -0
- package/dist/kurot/states/IOverride.js +2 -0
- package/dist/kurot/states/IOverride.js.map +1 -0
- package/dist/kurot/states/SetProperty.d.ts +19 -0
- package/dist/kurot/states/SetProperty.d.ts.map +1 -0
- package/dist/kurot/states/SetProperty.js +50 -0
- package/dist/kurot/states/SetProperty.js.map +1 -0
- package/dist/kurot/states/SetStateProperty.d.ts +17 -0
- package/dist/kurot/states/SetStateProperty.d.ts.map +1 -0
- package/dist/kurot/states/SetStateProperty.js +35 -0
- package/dist/kurot/states/SetStateProperty.js.map +1 -0
- package/dist/kurot/states/State.d.ts +14 -0
- package/dist/kurot/states/State.d.ts.map +1 -0
- package/dist/kurot/states/State.js +18 -0
- package/dist/kurot/states/State.js.map +1 -0
- package/dist/kurot/states/index.d.ts +6 -0
- package/dist/kurot/states/index.d.ts.map +1 -0
- package/dist/kurot/states/index.js +5 -0
- package/dist/kurot/states/index.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { Component } from './Component.js';
|
|
2
|
+
import { TextField } from '@kurot/core';
|
|
3
|
+
import { PropertyEvent } from '../events/PropertyEvent.js';
|
|
4
|
+
/**
|
|
5
|
+
* Label component for displaying text.
|
|
6
|
+
* Wraps a TextField and integrates it with the UI component lifecycle.
|
|
7
|
+
*
|
|
8
|
+
* States: none (non-interactive visual element).
|
|
9
|
+
*/
|
|
10
|
+
export class Label extends Component {
|
|
11
|
+
// ── Instance fields ───────────────────────────────────────────────────
|
|
12
|
+
_textField;
|
|
13
|
+
_widthConstraint = NaN;
|
|
14
|
+
// ── Constructor ───────────────────────────────────────────────────────
|
|
15
|
+
constructor(text) {
|
|
16
|
+
super();
|
|
17
|
+
this._textField = new TextField();
|
|
18
|
+
this.touchChildren = false;
|
|
19
|
+
if (text)
|
|
20
|
+
this.text = text;
|
|
21
|
+
}
|
|
22
|
+
// ── Getters / Setters ─────────────────────────────────────────────────
|
|
23
|
+
get text() {
|
|
24
|
+
return this._textField.text;
|
|
25
|
+
}
|
|
26
|
+
set text(value) {
|
|
27
|
+
if (this._textField.text === value)
|
|
28
|
+
return;
|
|
29
|
+
this._textField.text = value;
|
|
30
|
+
PropertyEvent.dispatchPropertyEvent(this, 'text');
|
|
31
|
+
this.invalidateSize();
|
|
32
|
+
this.invalidateDisplayList();
|
|
33
|
+
}
|
|
34
|
+
get fontFamily() {
|
|
35
|
+
return this._textField.fontFamily;
|
|
36
|
+
}
|
|
37
|
+
set fontFamily(value) {
|
|
38
|
+
if (this._textField.fontFamily !== value) {
|
|
39
|
+
this._textField.fontFamily = value;
|
|
40
|
+
this.invalidateSize();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
get size() {
|
|
44
|
+
return this._textField.size;
|
|
45
|
+
}
|
|
46
|
+
set size(value) {
|
|
47
|
+
if (this._textField.size !== value) {
|
|
48
|
+
this._textField.size = value;
|
|
49
|
+
this.invalidateSize();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
get bold() {
|
|
53
|
+
return this._textField.bold;
|
|
54
|
+
}
|
|
55
|
+
set bold(value) {
|
|
56
|
+
if (this._textField.bold !== value) {
|
|
57
|
+
this._textField.bold = value;
|
|
58
|
+
this.invalidateSize();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
get italic() {
|
|
62
|
+
return this._textField.italic;
|
|
63
|
+
}
|
|
64
|
+
set italic(value) {
|
|
65
|
+
if (this._textField.italic !== value) {
|
|
66
|
+
this._textField.italic = value;
|
|
67
|
+
this.invalidateSize();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
get textColor() {
|
|
71
|
+
return this._textField.textColor;
|
|
72
|
+
}
|
|
73
|
+
set textColor(value) {
|
|
74
|
+
this._textField.textColor = value;
|
|
75
|
+
}
|
|
76
|
+
get strokeColor() {
|
|
77
|
+
return this._textField.strokeColor;
|
|
78
|
+
}
|
|
79
|
+
set strokeColor(value) {
|
|
80
|
+
this._textField.strokeColor = value;
|
|
81
|
+
}
|
|
82
|
+
get stroke() {
|
|
83
|
+
return this._textField.stroke;
|
|
84
|
+
}
|
|
85
|
+
set stroke(value) {
|
|
86
|
+
this._textField.stroke = value;
|
|
87
|
+
}
|
|
88
|
+
get textAlign() {
|
|
89
|
+
return this._textField.textAlign;
|
|
90
|
+
}
|
|
91
|
+
set textAlign(value) {
|
|
92
|
+
if (this._textField.textAlign !== value) {
|
|
93
|
+
this._textField.textAlign = value;
|
|
94
|
+
this.invalidateDisplayList();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
get verticalAlign() {
|
|
98
|
+
return this._textField.verticalAlign;
|
|
99
|
+
}
|
|
100
|
+
set verticalAlign(value) {
|
|
101
|
+
if (this._textField.verticalAlign !== value) {
|
|
102
|
+
this._textField.verticalAlign = value;
|
|
103
|
+
this.invalidateDisplayList();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
get multiline() {
|
|
107
|
+
return this._textField.multiline;
|
|
108
|
+
}
|
|
109
|
+
set multiline(value) {
|
|
110
|
+
if (this._textField.multiline !== value) {
|
|
111
|
+
this._textField.multiline = value;
|
|
112
|
+
this.invalidateSize();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
get wordWrap() {
|
|
116
|
+
return this._textField.wordWrap;
|
|
117
|
+
}
|
|
118
|
+
set wordWrap(value) {
|
|
119
|
+
if (this._textField.wordWrap !== value) {
|
|
120
|
+
this._textField.wordWrap = value;
|
|
121
|
+
this.invalidateSize();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
get lineSpacing() {
|
|
125
|
+
return this._textField.lineSpacing;
|
|
126
|
+
}
|
|
127
|
+
set lineSpacing(value) {
|
|
128
|
+
if (this._textField.lineSpacing !== value) {
|
|
129
|
+
this._textField.lineSpacing = value;
|
|
130
|
+
this.invalidateSize();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
get maxChars() {
|
|
134
|
+
return this._textField.maxChars;
|
|
135
|
+
}
|
|
136
|
+
set maxChars(value) {
|
|
137
|
+
this._textField.maxChars = value;
|
|
138
|
+
}
|
|
139
|
+
get displayAsPassword() {
|
|
140
|
+
return this._textField.displayAsPassword;
|
|
141
|
+
}
|
|
142
|
+
set displayAsPassword(value) {
|
|
143
|
+
this._textField.displayAsPassword = value;
|
|
144
|
+
}
|
|
145
|
+
// ── Override methods ──────────────────────────────────────────────────
|
|
146
|
+
createChildren() {
|
|
147
|
+
super.createChildren();
|
|
148
|
+
this.addChild(this._textField);
|
|
149
|
+
}
|
|
150
|
+
measure() {
|
|
151
|
+
const tf = this._textField;
|
|
152
|
+
// Mirror Egret: determine the available width for wrapping, then
|
|
153
|
+
// temporarily apply it to measure textWidth/textHeight, restoring the
|
|
154
|
+
// original width afterwards so measure() has no lasting side effect.
|
|
155
|
+
const oldWidth = tf.$explicitWidth;
|
|
156
|
+
let availableWidth = NaN;
|
|
157
|
+
if (!isNaN(this._widthConstraint)) {
|
|
158
|
+
availableWidth = this._widthConstraint;
|
|
159
|
+
this._widthConstraint = NaN;
|
|
160
|
+
}
|
|
161
|
+
else if (!isNaN(this.$explicitWidth)) {
|
|
162
|
+
availableWidth = this.$explicitWidth;
|
|
163
|
+
}
|
|
164
|
+
else if (this.maxWidth !== 100000) {
|
|
165
|
+
availableWidth = this.maxWidth;
|
|
166
|
+
}
|
|
167
|
+
tf.width = availableWidth;
|
|
168
|
+
this.setMeasuredSize(tf.textWidth, tf.textHeight);
|
|
169
|
+
tf.width = oldWidth;
|
|
170
|
+
}
|
|
171
|
+
setLayoutBoundsSize(layoutWidth, layoutHeight) {
|
|
172
|
+
super.setLayoutBoundsSize(layoutWidth, layoutHeight);
|
|
173
|
+
// Mirror Egret: track the layout-assigned width so the next measure()
|
|
174
|
+
// can re-measure wrapped text height at that constraint. Skip if the
|
|
175
|
+
// width didn't change or an explicit height is set.
|
|
176
|
+
if (isNaN(layoutWidth) || layoutWidth === this._widthConstraint || layoutWidth === 0) {
|
|
177
|
+
this._widthConstraint = layoutWidth;
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
this._widthConstraint = layoutWidth;
|
|
181
|
+
if (!isNaN(this.$explicitHeight))
|
|
182
|
+
return;
|
|
183
|
+
if (layoutWidth === this.measuredWidth)
|
|
184
|
+
return;
|
|
185
|
+
this.invalidateSize();
|
|
186
|
+
}
|
|
187
|
+
updateDisplayList(unscaledWidth, unscaledHeight) {
|
|
188
|
+
super.updateDisplayList(unscaledWidth, unscaledHeight);
|
|
189
|
+
this._textField.width = unscaledWidth;
|
|
190
|
+
this._textField.height = unscaledHeight;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=Label.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Label.js","sourceRoot":"","sources":["../../../src/kurot/components/Label.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,OAAO,KAAM,SAAQ,SAAS;IACnC,yEAAyE;IAE/D,UAAU,CAAY;IAExB,gBAAgB,GAAG,GAAG,CAAC;IAE/B,yEAAyE;IAEzE,YAAmB,IAAa;QAC/B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,EAAE,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,yEAAyE;IAEzE,IAAW,IAAI;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IAC7B,CAAC;IAED,IAAW,IAAI,CAAC,KAAa;QAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,KAAK;YAAE,OAAO;QAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC;QAC7B,aAAa,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC9B,CAAC;IAED,IAAW,UAAU;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;IACnC,CAAC;IAED,IAAW,UAAU,CAAC,KAAa;QAClC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;YAC1C,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC,cAAc,EAAE,CAAC;QACvB,CAAC;IACF,CAAC;IAED,IAAW,IAAI;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IAC7B,CAAC;IAED,IAAW,IAAI,CAAC,KAAa;QAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACpC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,cAAc,EAAE,CAAC;QACvB,CAAC;IACF,CAAC;IAED,IAAW,IAAI;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IAC7B,CAAC;IAED,IAAW,IAAI,CAAC,KAAc;QAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACpC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,cAAc,EAAE,CAAC;QACvB,CAAC;IACF,CAAC;IAED,IAAW,MAAM;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED,IAAW,MAAM,CAAC,KAAc;QAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YACtC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;QACvB,CAAC;IACF,CAAC;IAED,IAAW,SAAS;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;IAClC,CAAC;IAED,IAAW,SAAS,CAAC,KAAa;QACjC,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC;IACnC,CAAC;IAED,IAAW,WAAW;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;IACpC,CAAC;IAED,IAAW,WAAW,CAAC,KAAa;QACnC,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,KAAK,CAAC;IACrC,CAAC;IAED,IAAW,MAAM;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED,IAAW,MAAM,CAAC,KAAa;QAC9B,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;IAChC,CAAC;IAED,IAAW,SAAS;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;IAClC,CAAC;IAED,IAAW,SAAS,CAAC,KAAa;QACjC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YACzC,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,KAAwB,CAAC;YACrD,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC9B,CAAC;IACF,CAAC;IAED,IAAW,aAAa;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;IACtC,CAAC;IAED,IAAW,aAAa,CAAC,KAAa;QACrC,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;YAC7C,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,KAAsB,CAAC;YACvD,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC9B,CAAC;IACF,CAAC;IAED,IAAW,SAAS;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;IAClC,CAAC;IAED,IAAW,SAAS,CAAC,KAAc;QAClC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YACzC,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC;YAClC,IAAI,CAAC,cAAc,EAAE,CAAC;QACvB,CAAC;IACF,CAAC;IAED,IAAW,QAAQ;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED,IAAW,QAAQ,CAAC,KAAc;QACjC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,cAAc,EAAE,CAAC;QACvB,CAAC;IACF,CAAC;IAED,IAAW,WAAW;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;IACpC,CAAC;IAED,IAAW,WAAW,CAAC,KAAa;QACnC,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YAC3C,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,KAAK,CAAC;YACpC,IAAI,CAAC,cAAc,EAAE,CAAC;QACvB,CAAC;IACF,CAAC;IAED,IAAW,QAAQ;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED,IAAW,QAAQ,CAAC,KAAa;QAChC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;IAClC,CAAC;IAED,IAAW,iBAAiB;QAC3B,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;IAC1C,CAAC;IAED,IAAW,iBAAiB,CAAC,KAAc;QAC1C,IAAI,CAAC,UAAU,CAAC,iBAAiB,GAAG,KAAK,CAAC;IAC3C,CAAC;IAED,yEAAyE;IAEzD,cAAc;QAC7B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAEe,OAAO;QACtB,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QAC3B,iEAAiE;QACjE,sEAAsE;QACtE,qEAAqE;QACrE,MAAM,QAAQ,GAAG,EAAE,CAAC,cAAc,CAAC;QACnC,IAAI,cAAc,GAAG,GAAG,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACnC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC;YACvC,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC;QAC7B,CAAC;aAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YACxC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QACtC,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YACrC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;QAChC,CAAC;QACD,EAAE,CAAC,KAAK,GAAG,cAAc,CAAC;QAC1B,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;QAClD,EAAE,CAAC,KAAK,GAAG,QAAQ,CAAC;IACrB,CAAC;IAEe,mBAAmB,CAAC,WAAmB,EAAE,YAAoB;QAC5E,KAAK,CAAC,mBAAmB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACrD,sEAAsE;QACtE,qEAAqE;QACrE,oDAAoD;QACpD,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,WAAW,KAAK,IAAI,CAAC,gBAAgB,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YACtF,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC;YACpC,OAAO;QACR,CAAC;QACD,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;YAAE,OAAO;QACzC,IAAI,WAAW,KAAK,IAAI,CAAC,aAAa;YAAE,OAAO;QAC/C,IAAI,CAAC,cAAc,EAAE,CAAC;IACvB,CAAC;IAEe,iBAAiB,CAAC,aAAqB,EAAE,cAAsB;QAC9E,KAAK,CAAC,iBAAiB,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,aAAa,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,cAAc,CAAC;IACzC,CAAC;CACD"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ListBase } from './ListBase.js';
|
|
2
|
+
import { ItemRenderer } from './ItemRenderer.js';
|
|
3
|
+
/**
|
|
4
|
+
* List extends ListBase with touch-to-select interaction.
|
|
5
|
+
*
|
|
6
|
+
* Tapping a renderer selects it (updating `selectedIndex`) and dispatches
|
|
7
|
+
* an {@link ItemTapEvent.ITEM_TAP}.
|
|
8
|
+
*
|
|
9
|
+
* @defaultProperty dataProvider
|
|
10
|
+
*/
|
|
11
|
+
export declare class List extends ListBase {
|
|
12
|
+
private readonly _rendererHandlers;
|
|
13
|
+
protected rendererAdded(renderer: ItemRenderer, _index: number, _item: unknown): void;
|
|
14
|
+
protected rendererRemoved(renderer: ItemRenderer, _index: number, _item: unknown): void;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=List.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../../src/kurot/components/List.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD;;;;;;;GAOG;AACH,qBAAa,IAAK,SAAQ,QAAQ;IAGjC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA+C;cAI9D,aAAa,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;cAU3E,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;CAOhG"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { TouchEvent } from '@kurot/core';
|
|
2
|
+
import { ListBase } from './ListBase.js';
|
|
3
|
+
import { ItemTapEvent } from '../events/ItemTapEvent.js';
|
|
4
|
+
/**
|
|
5
|
+
* List extends ListBase with touch-to-select interaction.
|
|
6
|
+
*
|
|
7
|
+
* Tapping a renderer selects it (updating `selectedIndex`) and dispatches
|
|
8
|
+
* an {@link ItemTapEvent.ITEM_TAP}.
|
|
9
|
+
*
|
|
10
|
+
* @defaultProperty dataProvider
|
|
11
|
+
*/
|
|
12
|
+
export class List extends ListBase {
|
|
13
|
+
// ── Instance fields ───────────────────────────────────────────────────
|
|
14
|
+
_rendererHandlers = new Map();
|
|
15
|
+
// ── Override methods ──────────────────────────────────────────────────
|
|
16
|
+
rendererAdded(renderer, _index, _item) {
|
|
17
|
+
const handler = (_e) => {
|
|
18
|
+
const idx = renderer.itemIndex;
|
|
19
|
+
if (idx >= 0)
|
|
20
|
+
this.setSelectedIndex(idx, true);
|
|
21
|
+
ItemTapEvent.dispatchItemTapEvent(this, renderer.data, idx, renderer);
|
|
22
|
+
};
|
|
23
|
+
this._rendererHandlers.set(renderer, handler);
|
|
24
|
+
renderer.addEventListener(TouchEvent.TOUCH_TAP, handler);
|
|
25
|
+
}
|
|
26
|
+
rendererRemoved(renderer, _index, _item) {
|
|
27
|
+
const handler = this._rendererHandlers.get(renderer);
|
|
28
|
+
if (handler) {
|
|
29
|
+
this._rendererHandlers.delete(renderer);
|
|
30
|
+
renderer.removeEventListener(TouchEvent.TOUCH_TAP, handler);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=List.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"List.js","sourceRoot":"","sources":["../../../src/kurot/components/List.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAS,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,OAAO,IAAK,SAAQ,QAAQ;IACjC,yEAAyE;IAExD,iBAAiB,GAAG,IAAI,GAAG,EAAoC,CAAC;IAEjF,yEAAyE;IAEtD,aAAa,CAAC,QAAsB,EAAE,MAAc,EAAE,KAAc;QACtF,MAAM,OAAO,GAAG,CAAC,EAAS,EAAQ,EAAE;YACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC;YAC/B,IAAI,GAAG,IAAI,CAAC;gBAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC/C,YAAY,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QACvE,CAAC,CAAC;QACF,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9C,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAEkB,eAAe,CAAC,QAAsB,EAAE,MAAc,EAAE,KAAc;QACxF,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACxC,QAAQ,CAAC,mBAAmB,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7D,CAAC;IACF,CAAC;CACD"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { DataGroup } from './DataGroup.js';
|
|
2
|
+
import type { ItemRenderer } from './ItemRenderer.js';
|
|
3
|
+
import { CollectionEvent } from '../events/CollectionEvent.js';
|
|
4
|
+
/**
|
|
5
|
+
* ListBase extends DataGroup with selection support.
|
|
6
|
+
*
|
|
7
|
+
* Maintains a `selectedIndex` and tracks the currently selected renderer.
|
|
8
|
+
* Subclasses (e.g. List) add touch interaction.
|
|
9
|
+
*/
|
|
10
|
+
export declare class ListBase extends DataGroup {
|
|
11
|
+
/** Sentinel for "no selection" — matches egret `ListBase.NO_SELECTION`. */
|
|
12
|
+
protected static readonly NO_SELECTION = -1;
|
|
13
|
+
private _selectedIndex;
|
|
14
|
+
private _previousSelectedIndex;
|
|
15
|
+
private _selectedIndexChanged;
|
|
16
|
+
private _dispatchChangeAfterSelection;
|
|
17
|
+
private _requireSelection;
|
|
18
|
+
private _requireSelectionChanged;
|
|
19
|
+
/** Item passed to selectedItem setter before dataProvider is available (egret `pendingSelectedItem`). */
|
|
20
|
+
private _pendingSelectedItem;
|
|
21
|
+
get selectedIndex(): number;
|
|
22
|
+
set selectedIndex(value: number);
|
|
23
|
+
get selectedItem(): unknown;
|
|
24
|
+
set selectedItem(value: unknown);
|
|
25
|
+
/**
|
|
26
|
+
* If `true`, the list always keeps an item selected (defaults to the first).
|
|
27
|
+
* Setting this to true when no item is selected selects index 0.
|
|
28
|
+
*/
|
|
29
|
+
get requireSelection(): boolean;
|
|
30
|
+
set requireSelection(value: boolean);
|
|
31
|
+
commitProperties(): void;
|
|
32
|
+
/**
|
|
33
|
+
* Override updateRenderer to sync the renderer's `selected` state when it
|
|
34
|
+
* is created/recycled (matching Egret's `itemSelected` call).
|
|
35
|
+
*/
|
|
36
|
+
updateRenderer(renderer: ItemRenderer, itemIndex: number, data: unknown): ItemRenderer;
|
|
37
|
+
protected onCollectionChange(event: CollectionEvent): void;
|
|
38
|
+
protected setSelectedIndex(value: number, dispatchChangeEvent?: boolean): void;
|
|
39
|
+
protected commitSelection(): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Called when an item is selected or deselected.
|
|
42
|
+
* Override to update renderer visual state.
|
|
43
|
+
*/
|
|
44
|
+
protected itemSelected(index: number, selected: boolean): void;
|
|
45
|
+
/**
|
|
46
|
+
* Adjust the selection index in response to collection mutations without
|
|
47
|
+
* dispatching events or calling `itemSelected` (egret `adjustSelection`).
|
|
48
|
+
*
|
|
49
|
+
* The index is mutated silently so that multiple add/remove operations
|
|
50
|
+
* within a single frame only produce one final commit event when
|
|
51
|
+
* `commitProperties` runs.
|
|
52
|
+
*/
|
|
53
|
+
protected adjustSelection(newIndex: number, _add: boolean): void;
|
|
54
|
+
/**
|
|
55
|
+
* Called when the data provider is reset or refreshed (egret parity).
|
|
56
|
+
* Re-applies {@link requireSelection} logic so that the first item is
|
|
57
|
+
* automatically selected when the data source is replaced.
|
|
58
|
+
*/
|
|
59
|
+
protected dataProviderRefreshed(): void;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=ListBase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListBase.d.ts","sourceRoot":"","sources":["../../../src/kurot/components/ListBase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAuB,MAAM,8BAA8B,CAAC;AAGpF;;;;;GAKG;AACH,qBAAa,QAAS,SAAQ,SAAS;IAGtC,2EAA2E;IAC3E,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,MAAM;IAI5C,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,sBAAsB,CAAM;IACpC,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,6BAA6B,CAAS;IAC9C,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,wBAAwB,CAAS;IAEzC,yGAAyG;IACzG,OAAO,CAAC,oBAAoB,CAAU;IAItC,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,aAAa,CAAC,KAAK,EAAE,MAAM,EAErC;IAED,IAAW,YAAY,IAAI,OAAO,CAGjC;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,OAAO,EAQrC;IAED;;;OAGG;IACH,IAAW,gBAAgB,IAAI,OAAO,CAErC;IAED,IAAW,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAKzC;IAIe,gBAAgB,IAAI,IAAI;IAuBxC;;;OAGG;IACa,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,YAAY;cAKnF,kBAAkB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAoCnE,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,mBAAmB,UAAQ,GAAG,IAAI;IAW5E,SAAS,CAAC,eAAe,IAAI,OAAO;IAwCpC;;;OAGG;IACH,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAK9D;;;;;;;OAOG;IACH,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAIhE;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,IAAI,IAAI;CAMvC"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { Event } from '@kurot/core';
|
|
2
|
+
import { DataGroup } from './DataGroup.js';
|
|
3
|
+
import { CollectionEventKind } from '../events/CollectionEvent.js';
|
|
4
|
+
import { PropertyEvent } from '../events/PropertyEvent.js';
|
|
5
|
+
/**
|
|
6
|
+
* ListBase extends DataGroup with selection support.
|
|
7
|
+
*
|
|
8
|
+
* Maintains a `selectedIndex` and tracks the currently selected renderer.
|
|
9
|
+
* Subclasses (e.g. List) add touch interaction.
|
|
10
|
+
*/
|
|
11
|
+
export class ListBase extends DataGroup {
|
|
12
|
+
// ── Sentinel constants ──────────────────────────────────────────────
|
|
13
|
+
/** Sentinel for "no selection" — matches egret `ListBase.NO_SELECTION`. */
|
|
14
|
+
static NO_SELECTION = -1;
|
|
15
|
+
// ── Instance fields ───────────────────────────────────────────────────
|
|
16
|
+
_selectedIndex = -1;
|
|
17
|
+
_previousSelectedIndex = -1;
|
|
18
|
+
_selectedIndexChanged = false;
|
|
19
|
+
_dispatchChangeAfterSelection = false;
|
|
20
|
+
_requireSelection = false;
|
|
21
|
+
_requireSelectionChanged = false;
|
|
22
|
+
/** Item passed to selectedItem setter before dataProvider is available (egret `pendingSelectedItem`). */
|
|
23
|
+
_pendingSelectedItem;
|
|
24
|
+
// ── Getters / Setters ─────────────────────────────────────────────────
|
|
25
|
+
get selectedIndex() {
|
|
26
|
+
return this._selectedIndex;
|
|
27
|
+
}
|
|
28
|
+
set selectedIndex(value) {
|
|
29
|
+
this.setSelectedIndex(value, false);
|
|
30
|
+
}
|
|
31
|
+
get selectedItem() {
|
|
32
|
+
if (this._selectedIndex < 0 || !this.dataProvider)
|
|
33
|
+
return undefined;
|
|
34
|
+
return this.dataProvider.getItemAt(this._selectedIndex);
|
|
35
|
+
}
|
|
36
|
+
set selectedItem(value) {
|
|
37
|
+
if (!this.dataProvider) {
|
|
38
|
+
this._pendingSelectedItem = value;
|
|
39
|
+
this.invalidateProperties();
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
this._pendingSelectedItem = undefined;
|
|
43
|
+
this.selectedIndex = this.dataProvider.getItemIndex(value);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* If `true`, the list always keeps an item selected (defaults to the first).
|
|
47
|
+
* Setting this to true when no item is selected selects index 0.
|
|
48
|
+
*/
|
|
49
|
+
get requireSelection() {
|
|
50
|
+
return this._requireSelection;
|
|
51
|
+
}
|
|
52
|
+
set requireSelection(value) {
|
|
53
|
+
if (this._requireSelection === value)
|
|
54
|
+
return;
|
|
55
|
+
this._requireSelection = value;
|
|
56
|
+
this._requireSelectionChanged = true;
|
|
57
|
+
this.invalidateProperties();
|
|
58
|
+
}
|
|
59
|
+
// ── Override methods ──────────────────────────────────────────────────
|
|
60
|
+
commitProperties() {
|
|
61
|
+
if (this._requireSelectionChanged) {
|
|
62
|
+
this._requireSelectionChanged = false;
|
|
63
|
+
if (this._requireSelection && this._selectedIndex === -1 && this.dataProvider && this.dataProvider.length > 0) {
|
|
64
|
+
this.setSelectedIndex(0, false);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Resolve a pending selectedItem now that dataProvider is available
|
|
68
|
+
// (egret `commitProperties` pendingSelectedItem resolve).
|
|
69
|
+
if (this._pendingSelectedItem !== undefined && this.dataProvider) {
|
|
70
|
+
const item = this._pendingSelectedItem;
|
|
71
|
+
this._pendingSelectedItem = undefined;
|
|
72
|
+
this.setSelectedIndex(this.dataProvider.getItemIndex(item), false);
|
|
73
|
+
}
|
|
74
|
+
if (this._selectedIndexChanged) {
|
|
75
|
+
this._selectedIndexChanged = false;
|
|
76
|
+
this.commitSelection();
|
|
77
|
+
}
|
|
78
|
+
super.commitProperties();
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Override updateRenderer to sync the renderer's `selected` state when it
|
|
82
|
+
* is created/recycled (matching Egret's `itemSelected` call).
|
|
83
|
+
*/
|
|
84
|
+
updateRenderer(renderer, itemIndex, data) {
|
|
85
|
+
this.itemSelected(itemIndex, this._selectedIndex === itemIndex);
|
|
86
|
+
return super.updateRenderer(renderer, itemIndex, data);
|
|
87
|
+
}
|
|
88
|
+
onCollectionChange(event) {
|
|
89
|
+
const kind = event.kind;
|
|
90
|
+
const location = event.location ?? -1;
|
|
91
|
+
switch (kind) {
|
|
92
|
+
case CollectionEventKind.ADD: {
|
|
93
|
+
if (this._requireSelection && this._selectedIndex === -1) {
|
|
94
|
+
this.adjustSelection(location, true);
|
|
95
|
+
}
|
|
96
|
+
else if (location <= this._selectedIndex) {
|
|
97
|
+
this.adjustSelection(this._selectedIndex + 1, true);
|
|
98
|
+
}
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
case CollectionEventKind.REMOVE: {
|
|
102
|
+
const sel = this._selectedIndex;
|
|
103
|
+
if (location < sel) {
|
|
104
|
+
this.adjustSelection(sel - 1, false);
|
|
105
|
+
}
|
|
106
|
+
else if (location === sel) {
|
|
107
|
+
if (this.numChildren === 0) {
|
|
108
|
+
this.adjustSelection(-1, false);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
case CollectionEventKind.RESET:
|
|
114
|
+
case CollectionEventKind.REFRESH: {
|
|
115
|
+
this.dataProviderRefreshed();
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
super.onCollectionChange(event);
|
|
120
|
+
}
|
|
121
|
+
// ── Protected methods ─────────────────────────────────────────────────
|
|
122
|
+
setSelectedIndex(value, dispatchChangeEvent = false) {
|
|
123
|
+
if (this._selectedIndex === value)
|
|
124
|
+
return;
|
|
125
|
+
if (dispatchChangeEvent) {
|
|
126
|
+
this._dispatchChangeAfterSelection = true;
|
|
127
|
+
}
|
|
128
|
+
this._previousSelectedIndex = this._selectedIndex;
|
|
129
|
+
this._selectedIndex = value;
|
|
130
|
+
this._selectedIndexChanged = true;
|
|
131
|
+
this.invalidateProperties();
|
|
132
|
+
}
|
|
133
|
+
commitSelection() {
|
|
134
|
+
const maxIndex = this.dataProvider ? this.dataProvider.length - 1 : -1;
|
|
135
|
+
if (this._selectedIndex < -1)
|
|
136
|
+
this._selectedIndex = -1;
|
|
137
|
+
if (this._selectedIndex > maxIndex)
|
|
138
|
+
this._selectedIndex = maxIndex;
|
|
139
|
+
// requireSelection: refuse to deselect when there is data.
|
|
140
|
+
if (this._requireSelection && this._selectedIndex === -1 && this.dataProvider && this.dataProvider.length > 0) {
|
|
141
|
+
this._selectedIndex = this._previousSelectedIndex;
|
|
142
|
+
this._dispatchChangeAfterSelection = false;
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
// Interactive selection: dispatch CHANGING (cancelable). If prevented,
|
|
146
|
+
// revert to the previous selection.
|
|
147
|
+
if (this._dispatchChangeAfterSelection && this._previousSelectedIndex !== this._selectedIndex) {
|
|
148
|
+
const allowed = this.dispatchEventWith(Event.CHANGING, false, true, true);
|
|
149
|
+
if (!allowed) {
|
|
150
|
+
this.itemSelected(this._selectedIndex, false);
|
|
151
|
+
this._selectedIndex = this._previousSelectedIndex;
|
|
152
|
+
this._dispatchChangeAfterSelection = false;
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
if (this._previousSelectedIndex !== this._selectedIndex) {
|
|
157
|
+
this.itemSelected(this._previousSelectedIndex, false);
|
|
158
|
+
}
|
|
159
|
+
if (this._selectedIndex >= 0) {
|
|
160
|
+
this.itemSelected(this._selectedIndex, true);
|
|
161
|
+
}
|
|
162
|
+
if (this._dispatchChangeAfterSelection) {
|
|
163
|
+
this._dispatchChangeAfterSelection = false;
|
|
164
|
+
this.dispatchEventWith(Event.CHANGE);
|
|
165
|
+
}
|
|
166
|
+
PropertyEvent.dispatchPropertyEvent(this, 'selectedIndex');
|
|
167
|
+
PropertyEvent.dispatchPropertyEvent(this, 'selectedItem');
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Called when an item is selected or deselected.
|
|
172
|
+
* Override to update renderer visual state.
|
|
173
|
+
*/
|
|
174
|
+
itemSelected(index, selected) {
|
|
175
|
+
const renderer = this.getRendererAt(index);
|
|
176
|
+
if (renderer)
|
|
177
|
+
renderer.selected = selected;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Adjust the selection index in response to collection mutations without
|
|
181
|
+
* dispatching events or calling `itemSelected` (egret `adjustSelection`).
|
|
182
|
+
*
|
|
183
|
+
* The index is mutated silently so that multiple add/remove operations
|
|
184
|
+
* within a single frame only produce one final commit event when
|
|
185
|
+
* `commitProperties` runs.
|
|
186
|
+
*/
|
|
187
|
+
adjustSelection(newIndex, _add) {
|
|
188
|
+
this._selectedIndex = newIndex;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Called when the data provider is reset or refreshed (egret parity).
|
|
192
|
+
* Re-applies {@link requireSelection} logic so that the first item is
|
|
193
|
+
* automatically selected when the data source is replaced.
|
|
194
|
+
*/
|
|
195
|
+
dataProviderRefreshed() {
|
|
196
|
+
this._selectedIndex = -1;
|
|
197
|
+
if (this._requireSelection && this.dataProvider && this.dataProvider.length > 0) {
|
|
198
|
+
this.setSelectedIndex(0, false);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=ListBase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListBase.js","sourceRoot":"","sources":["../../../src/kurot/components/ListBase.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { DisplayObject } from '@kurot/core';
|
|
2
|
+
import { Component } from './Component.js';
|
|
3
|
+
import { Button } from './Button.js';
|
|
4
|
+
import type { Label } from './Label.js';
|
|
5
|
+
/**
|
|
6
|
+
* Panel — a skinnable container with an optional title bar, close button, and drag area.
|
|
7
|
+
*
|
|
8
|
+
* Skin parts:
|
|
9
|
+
* - `titleDisplay` — Label for the panel title
|
|
10
|
+
* - `closeButton` — Button that dispatches UIEvent.CLOSING when tapped
|
|
11
|
+
* - `moveArea` — DisplayObject used as the drag handle
|
|
12
|
+
*
|
|
13
|
+
* Events:
|
|
14
|
+
* - `UIEvent.CLOSING` — dispatched (bubbles, cancelable) when closeButton is tapped
|
|
15
|
+
*
|
|
16
|
+
* @defaultProperty elementsContent
|
|
17
|
+
*/
|
|
18
|
+
export declare class Panel extends Component {
|
|
19
|
+
closeButton?: Button;
|
|
20
|
+
moveArea?: DisplayObject;
|
|
21
|
+
private _title;
|
|
22
|
+
private _titleChanged;
|
|
23
|
+
private _titleDisplay?;
|
|
24
|
+
private _dragStartX;
|
|
25
|
+
private _dragStartY;
|
|
26
|
+
private _panelStartX;
|
|
27
|
+
private _panelStartY;
|
|
28
|
+
private _dragStage?;
|
|
29
|
+
/**
|
|
30
|
+
* Write-only: adds EXML-declared children to the panel.
|
|
31
|
+
* Mirrors Egret's `registerProperty(Panel, "elementsContent", "Array", true)`.
|
|
32
|
+
*/
|
|
33
|
+
set elementsContent(value: DisplayObject[] | undefined);
|
|
34
|
+
get title(): string;
|
|
35
|
+
set title(value: string);
|
|
36
|
+
get titleDisplay(): Label | undefined;
|
|
37
|
+
set titleDisplay(value: Label | undefined);
|
|
38
|
+
commitProperties(): void;
|
|
39
|
+
protected partAdded(partName: string, instance: unknown): void;
|
|
40
|
+
protected partRemoved(partName: string, instance: unknown): void;
|
|
41
|
+
$onRemoveFromStage(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Close the panel by removing it from its parent.
|
|
44
|
+
* Called automatically after UIEvent.CLOSING if not cancelled.
|
|
45
|
+
*/
|
|
46
|
+
close(): void;
|
|
47
|
+
private _onCloseButtonTap;
|
|
48
|
+
private _onMoveAreaTouchBegin;
|
|
49
|
+
private _onMoveAreaTouchMove;
|
|
50
|
+
private _onMoveAreaTouchEnd;
|
|
51
|
+
private _removeDragListeners;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=Panel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Panel.d.ts","sourceRoot":"","sources":["../../../src/kurot/components/Panel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAiC,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;;;;;;;;;;;GAYG;AACH,qBAAa,KAAM,SAAQ,SAAS;IAG5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,aAAa,CAAC;IAEhC,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAC,CAAQ;IAC9B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,UAAU,CAAC,CAAQ;IAI3B;;;OAGG;IACH,IAAW,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,SAAS,EAK5D;IAID,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,EAK7B;IAED,IAAW,YAAY,IAAI,KAAK,GAAG,SAAS,CAE3C;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,EAI/C;IAIe,gBAAgB,IAAI,IAAI;cAQrB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;cAWpD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAYzD,kBAAkB,IAAI,IAAI;IAO1C;;;OAGG;IACI,KAAK,IAAI,IAAI;IAMpB,OAAO,CAAC,iBAAiB,CAIvB;IAEF,OAAO,CAAC,qBAAqB,CAa3B;IAEF,OAAO,CAAC,oBAAoB,CAG1B;IAEF,OAAO,CAAC,mBAAmB,CAEzB;IAEF,OAAO,CAAC,oBAAoB;CAQ5B"}
|