@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,246 @@
|
|
|
1
|
+
import { EventDispatcher, Event } from '@kurot/core';
|
|
2
|
+
import { ToggleButton } from './ToggleButton.js';
|
|
3
|
+
import { PropertyEvent } from '../events/PropertyEvent.js';
|
|
4
|
+
/**
|
|
5
|
+
* Manages a group of mutually exclusive RadioButtons.
|
|
6
|
+
* Only one radio button in a group can be selected at a time.
|
|
7
|
+
*
|
|
8
|
+
* Dispatches `Event.CHANGE` on interactive selection (via `buttonReleased`),
|
|
9
|
+
* and `PropertyEvent` for `selectedValue` on every selection change.
|
|
10
|
+
*/
|
|
11
|
+
export class RadioButtonGroup extends EventDispatcher {
|
|
12
|
+
// ── Instance fields ───────────────────────────────────────────────────
|
|
13
|
+
_radioButtons = [];
|
|
14
|
+
_selectedValue;
|
|
15
|
+
_selection;
|
|
16
|
+
_name;
|
|
17
|
+
_enabled = true;
|
|
18
|
+
// ── Constructor ───────────────────────────────────────────────────────
|
|
19
|
+
constructor(name = '') {
|
|
20
|
+
super();
|
|
21
|
+
this._name = name;
|
|
22
|
+
}
|
|
23
|
+
// ── Getters / Setters ─────────────────────────────────────────────────
|
|
24
|
+
get name() {
|
|
25
|
+
return this._name;
|
|
26
|
+
}
|
|
27
|
+
get numRadioButtons() {
|
|
28
|
+
return this._radioButtons.length;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Whether the group (and therefore all its members) is enabled.
|
|
32
|
+
* Toggling invalidates every member's state so skins re-render.
|
|
33
|
+
*/
|
|
34
|
+
get enabled() {
|
|
35
|
+
return this._enabled;
|
|
36
|
+
}
|
|
37
|
+
set enabled(value) {
|
|
38
|
+
value = !!value;
|
|
39
|
+
if (this._enabled === value)
|
|
40
|
+
return;
|
|
41
|
+
this._enabled = value;
|
|
42
|
+
for (const rb of this._radioButtons) {
|
|
43
|
+
rb.invalidateState();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The value of the selected radio. Falls back to the radio's `label`
|
|
48
|
+
* when `value` is empty.
|
|
49
|
+
*/
|
|
50
|
+
get selectedValue() {
|
|
51
|
+
if (this._selection) {
|
|
52
|
+
return this._selection.value !== '' ? this._selection.value : this._selection.label;
|
|
53
|
+
}
|
|
54
|
+
return this._selectedValue;
|
|
55
|
+
}
|
|
56
|
+
set selectedValue(value) {
|
|
57
|
+
this._selectedValue = value;
|
|
58
|
+
if (value === undefined) {
|
|
59
|
+
this.$setSelection(undefined, false);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
for (const rb of this._radioButtons) {
|
|
63
|
+
if (rb.value === value || rb.label === value) {
|
|
64
|
+
this.$setSelection(rb, false);
|
|
65
|
+
this._selectedValue = undefined;
|
|
66
|
+
PropertyEvent.dispatchPropertyEvent(this, 'selectedValue');
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
get selection() {
|
|
72
|
+
return this._selection;
|
|
73
|
+
}
|
|
74
|
+
set selection(value) {
|
|
75
|
+
if (this._selection === value)
|
|
76
|
+
return;
|
|
77
|
+
this.$setSelection(value, false);
|
|
78
|
+
}
|
|
79
|
+
// ── Public methods ────────────────────────────────────────────────────
|
|
80
|
+
addInstance(radioButton) {
|
|
81
|
+
if (this._radioButtons.indexOf(radioButton) !== -1)
|
|
82
|
+
return;
|
|
83
|
+
this._radioButtons.push(radioButton);
|
|
84
|
+
// Adopt an already-selected radio as the group's selection.
|
|
85
|
+
if (radioButton.selected) {
|
|
86
|
+
this.$setSelection(radioButton, false);
|
|
87
|
+
}
|
|
88
|
+
else if (this._selectedValue !== undefined) {
|
|
89
|
+
// A selectedValue was set before this radio joined — re-apply.
|
|
90
|
+
this.selectedValue = this._selectedValue;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
removeInstance(radioButton) {
|
|
94
|
+
const idx = this._radioButtons.indexOf(radioButton);
|
|
95
|
+
if (idx === -1)
|
|
96
|
+
return;
|
|
97
|
+
this._radioButtons.splice(idx, 1);
|
|
98
|
+
if (this._selection === radioButton) {
|
|
99
|
+
this._selection = undefined;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* The single source of truth for changing the selection.
|
|
104
|
+
*
|
|
105
|
+
* @param value The radio to select, or `undefined` to clear.
|
|
106
|
+
* @param fireChange If `true`, dispatches `Event.CHANGE` — use `true` for
|
|
107
|
+
* interactive changes (tap), `false` for programmatic ones.
|
|
108
|
+
*/
|
|
109
|
+
$setSelection(value, fireChange) {
|
|
110
|
+
if (this._selection === value)
|
|
111
|
+
return false;
|
|
112
|
+
if (value === undefined) {
|
|
113
|
+
if (this._selection) {
|
|
114
|
+
this._selection.$setSelected(false);
|
|
115
|
+
this._selection = undefined;
|
|
116
|
+
if (fireChange)
|
|
117
|
+
this.dispatchEventWith(Event.CHANGE);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
if (this._selection)
|
|
122
|
+
this._selection.$setSelected(false);
|
|
123
|
+
this._selection = value;
|
|
124
|
+
this._selection.$setSelected(true);
|
|
125
|
+
if (fireChange)
|
|
126
|
+
this.dispatchEventWith(Event.CHANGE);
|
|
127
|
+
}
|
|
128
|
+
PropertyEvent.dispatchPropertyEvent(this, 'selectedValue');
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// ── Global registry for named groups ─────────────────────────────────────
|
|
133
|
+
const _groups = {};
|
|
134
|
+
function getGroup(name) {
|
|
135
|
+
if (!_groups[name]) {
|
|
136
|
+
_groups[name] = new RadioButtonGroup(name);
|
|
137
|
+
}
|
|
138
|
+
return _groups[name];
|
|
139
|
+
}
|
|
140
|
+
// ── RadioButton Component ────────────────────────────────────────────────
|
|
141
|
+
/**
|
|
142
|
+
* RadioButton — a toggle button belonging to a mutually exclusive group.
|
|
143
|
+
* Only one radio per group can be selected at a time.
|
|
144
|
+
*
|
|
145
|
+
* Defaults to `groupName = "radioGroup"` so that radios with no explicit
|
|
146
|
+
* group still get mutual exclusion.
|
|
147
|
+
*
|
|
148
|
+
* States: same as Button (`up`, `down`, `disabled`, `upAndSelected`, `downAndSelected`, `disabledAndSelected`).
|
|
149
|
+
*/
|
|
150
|
+
export class RadioButton extends ToggleButton {
|
|
151
|
+
// ── Instance fields ───────────────────────────────────────────────────
|
|
152
|
+
_groupName = '';
|
|
153
|
+
_group;
|
|
154
|
+
_value = '';
|
|
155
|
+
// ── Constructor ───────────────────────────────────────────────────────
|
|
156
|
+
constructor() {
|
|
157
|
+
super();
|
|
158
|
+
this.groupName = 'radioGroup';
|
|
159
|
+
}
|
|
160
|
+
// ── Getters / Setters ─────────────────────────────────────────────────
|
|
161
|
+
/** Enabled only if both the radio itself and its group are enabled. */
|
|
162
|
+
get enabled() {
|
|
163
|
+
if (!super.enabled)
|
|
164
|
+
return false;
|
|
165
|
+
return !this._group || this._group.enabled;
|
|
166
|
+
}
|
|
167
|
+
set enabled(value) {
|
|
168
|
+
super.enabled = value;
|
|
169
|
+
}
|
|
170
|
+
get group() {
|
|
171
|
+
return this._group;
|
|
172
|
+
}
|
|
173
|
+
set group(value) {
|
|
174
|
+
if (this._group === value)
|
|
175
|
+
return;
|
|
176
|
+
this._group?.removeInstance(this);
|
|
177
|
+
this._group = value;
|
|
178
|
+
this._group?.addInstance(this);
|
|
179
|
+
}
|
|
180
|
+
get groupName() {
|
|
181
|
+
return this._groupName;
|
|
182
|
+
}
|
|
183
|
+
set groupName(value) {
|
|
184
|
+
if (this._groupName === value)
|
|
185
|
+
return;
|
|
186
|
+
this._groupName = value;
|
|
187
|
+
this.group = value ? getGroup(value) : undefined;
|
|
188
|
+
}
|
|
189
|
+
get value() {
|
|
190
|
+
return this._value;
|
|
191
|
+
}
|
|
192
|
+
set value(val) {
|
|
193
|
+
if (this._value === val)
|
|
194
|
+
return;
|
|
195
|
+
this._value = val;
|
|
196
|
+
// If this radio is the current selection, notify the group so
|
|
197
|
+
// selectedValue bindings update.
|
|
198
|
+
if (this.selected && this._group) {
|
|
199
|
+
PropertyEvent.dispatchPropertyEvent(this._group, 'selectedValue');
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
get selected() {
|
|
203
|
+
return super.selected;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Keeps the group's selection in sync. Programmatic changes use
|
|
207
|
+
* `fireChange=false` (no `Event.CHANGE`); interactive changes go through
|
|
208
|
+
* `buttonReleased`, which dispatches `CHANGE` separately.
|
|
209
|
+
*/
|
|
210
|
+
set selected(value) {
|
|
211
|
+
if (this.selected === value)
|
|
212
|
+
return;
|
|
213
|
+
super.selected = value;
|
|
214
|
+
if (!this._group)
|
|
215
|
+
return;
|
|
216
|
+
if (value) {
|
|
217
|
+
this._group.$setSelection(this, false);
|
|
218
|
+
}
|
|
219
|
+
else if (this._group.selection === this) {
|
|
220
|
+
this._group.$setSelection(undefined, false);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* @internal Sets `selected` without triggering group sync.
|
|
225
|
+
* Used by `RadioButtonGroup.$setSelection` to avoid recursion.
|
|
226
|
+
*/
|
|
227
|
+
$setSelected(value) {
|
|
228
|
+
super.selected = value;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Interactive tap: toggle `selected` (syncs the group with no Change via
|
|
232
|
+
* the setter), then dispatch `Event.CHANGE` on the group — reserved for
|
|
233
|
+
* interaction, not programmatic selection.
|
|
234
|
+
*/
|
|
235
|
+
buttonReleased() {
|
|
236
|
+
if (!this.enabled || this.selected)
|
|
237
|
+
return;
|
|
238
|
+
if (!this._group) {
|
|
239
|
+
super.buttonReleased();
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
super.buttonReleased();
|
|
243
|
+
this._group.dispatchEventWith(Event.CHANGE);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=RadioButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioButton.js","sourceRoot":"","sources":["../../../src/kurot/components/RadioButton.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Component } from './Component.js';
|
|
2
|
+
/**
|
|
3
|
+
* Range holds a numeric value constrained between `minimum` and `maximum`.
|
|
4
|
+
* Optionally snaps to multiples of `snapInterval`.
|
|
5
|
+
*
|
|
6
|
+
* Base class for future Slider / ScrollBar-with-value components.
|
|
7
|
+
*/
|
|
8
|
+
export declare class Range extends Component {
|
|
9
|
+
private _maximum;
|
|
10
|
+
private _maxChanged;
|
|
11
|
+
private _minimum;
|
|
12
|
+
private _minChanged;
|
|
13
|
+
private _value;
|
|
14
|
+
private _changedValue;
|
|
15
|
+
private _valueChanged;
|
|
16
|
+
private _snapInterval;
|
|
17
|
+
private _snapIntervalChanged;
|
|
18
|
+
private _explicitSnapInterval;
|
|
19
|
+
get maximum(): number;
|
|
20
|
+
set maximum(value: number);
|
|
21
|
+
get minimum(): number;
|
|
22
|
+
set minimum(value: number);
|
|
23
|
+
get value(): number;
|
|
24
|
+
set value(newValue: number);
|
|
25
|
+
get snapInterval(): number;
|
|
26
|
+
set snapInterval(value: number);
|
|
27
|
+
commitProperties(): void;
|
|
28
|
+
updateDisplayList(w: number, h: number): void;
|
|
29
|
+
protected setValuePending(newValue: number): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Returns the closest valid value to `value` that is between minimum and maximum
|
|
32
|
+
* and snaps to multiples of `interval`.
|
|
33
|
+
*/
|
|
34
|
+
protected nearestValidValue(value: number, interval: number): number;
|
|
35
|
+
protected setValue(value: number): void;
|
|
36
|
+
/**
|
|
37
|
+
* Override to update skin parts based on minimum, maximum, and value.
|
|
38
|
+
*/
|
|
39
|
+
protected updateSkinDisplayList(): void;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=Range.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Range.d.ts","sourceRoot":"","sources":["../../../src/kurot/components/Range.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C;;;;;GAKG;AACH,qBAAa,KAAM,SAAQ,SAAS;IAGnC,OAAO,CAAC,QAAQ,CAAO;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,qBAAqB,CAAS;IAItC,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,OAAO,CAAC,KAAK,EAAE,MAAM,EAO/B;IAED,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,OAAO,CAAC,KAAK,EAAE,MAAM,EAO/B;IAED,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,IAAW,KAAK,CAAC,QAAQ,EAAE,MAAM,EAGhC;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,MAAM,EAYpC;IAIe,gBAAgB,IAAI,IAAI;IAqBxB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAO7D,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAQpD;;;OAGG;IACH,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAuBpE,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAYvC;;OAEG;IACH,SAAS,CAAC,qBAAqB,IAAI,IAAI;CACvC"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { Component } from './Component.js';
|
|
2
|
+
import { PropertyEvent } from '../events/PropertyEvent.js';
|
|
3
|
+
/**
|
|
4
|
+
* Range holds a numeric value constrained between `minimum` and `maximum`.
|
|
5
|
+
* Optionally snaps to multiples of `snapInterval`.
|
|
6
|
+
*
|
|
7
|
+
* Base class for future Slider / ScrollBar-with-value components.
|
|
8
|
+
*/
|
|
9
|
+
export class Range extends Component {
|
|
10
|
+
// ── Instance fields ───────────────────────────────────────────────────
|
|
11
|
+
_maximum = 100;
|
|
12
|
+
_maxChanged = false;
|
|
13
|
+
_minimum = 0;
|
|
14
|
+
_minChanged = false;
|
|
15
|
+
_value = 0;
|
|
16
|
+
_changedValue = 0;
|
|
17
|
+
_valueChanged = false;
|
|
18
|
+
_snapInterval = 1;
|
|
19
|
+
_snapIntervalChanged = false;
|
|
20
|
+
_explicitSnapInterval = false;
|
|
21
|
+
// ── Getters / Setters ─────────────────────────────────────────────────
|
|
22
|
+
get maximum() {
|
|
23
|
+
return this._maximum;
|
|
24
|
+
}
|
|
25
|
+
set maximum(value) {
|
|
26
|
+
value = +value || 0;
|
|
27
|
+
if (this._maximum === value)
|
|
28
|
+
return;
|
|
29
|
+
this._maximum = value;
|
|
30
|
+
this._maxChanged = true;
|
|
31
|
+
this.invalidateProperties();
|
|
32
|
+
this.invalidateDisplayList();
|
|
33
|
+
}
|
|
34
|
+
get minimum() {
|
|
35
|
+
return this._minimum;
|
|
36
|
+
}
|
|
37
|
+
set minimum(value) {
|
|
38
|
+
value = +value || 0;
|
|
39
|
+
if (this._minimum === value)
|
|
40
|
+
return;
|
|
41
|
+
this._minimum = value;
|
|
42
|
+
this._minChanged = true;
|
|
43
|
+
this.invalidateProperties();
|
|
44
|
+
this.invalidateDisplayList();
|
|
45
|
+
}
|
|
46
|
+
get value() {
|
|
47
|
+
return this._valueChanged ? this._changedValue : this._value;
|
|
48
|
+
}
|
|
49
|
+
set value(newValue) {
|
|
50
|
+
newValue = +newValue || 0;
|
|
51
|
+
this.setValuePending(newValue);
|
|
52
|
+
}
|
|
53
|
+
get snapInterval() {
|
|
54
|
+
return this._snapInterval;
|
|
55
|
+
}
|
|
56
|
+
set snapInterval(value) {
|
|
57
|
+
this._explicitSnapInterval = true;
|
|
58
|
+
value = +value || 0;
|
|
59
|
+
if (value === this._snapInterval)
|
|
60
|
+
return;
|
|
61
|
+
if (isNaN(value)) {
|
|
62
|
+
this._snapInterval = 1;
|
|
63
|
+
this._explicitSnapInterval = false;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
this._snapInterval = value;
|
|
67
|
+
}
|
|
68
|
+
this._snapIntervalChanged = true;
|
|
69
|
+
this.invalidateProperties();
|
|
70
|
+
}
|
|
71
|
+
// ── Override methods ──────────────────────────────────────────────────
|
|
72
|
+
commitProperties() {
|
|
73
|
+
super.commitProperties();
|
|
74
|
+
if (this._minimum > this._maximum) {
|
|
75
|
+
if (!this._maxChanged) {
|
|
76
|
+
this._minimum = this._maximum;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
this._maximum = this._minimum;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (this._valueChanged || this._maxChanged || this._minChanged || this._snapIntervalChanged) {
|
|
83
|
+
const currentValue = this._valueChanged ? this._changedValue : this._value;
|
|
84
|
+
this._valueChanged = false;
|
|
85
|
+
this._maxChanged = false;
|
|
86
|
+
this._minChanged = false;
|
|
87
|
+
this._snapIntervalChanged = false;
|
|
88
|
+
this.setValue(this.nearestValidValue(currentValue, this._snapInterval));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
updateDisplayList(w, h) {
|
|
92
|
+
super.updateDisplayList(w, h);
|
|
93
|
+
this.updateSkinDisplayList();
|
|
94
|
+
}
|
|
95
|
+
// ── Protected methods ─────────────────────────────────────────────────
|
|
96
|
+
setValuePending(newValue) {
|
|
97
|
+
if (newValue === this.value)
|
|
98
|
+
return false;
|
|
99
|
+
this._changedValue = newValue;
|
|
100
|
+
this._valueChanged = true;
|
|
101
|
+
this.invalidateProperties();
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Returns the closest valid value to `value` that is between minimum and maximum
|
|
106
|
+
* and snaps to multiples of `interval`.
|
|
107
|
+
*/
|
|
108
|
+
nearestValidValue(value, interval) {
|
|
109
|
+
if (interval === 0) {
|
|
110
|
+
return Math.max(this._minimum, Math.min(this._maximum, value));
|
|
111
|
+
}
|
|
112
|
+
const maxValue = this._maximum - this._minimum;
|
|
113
|
+
let scale = 1;
|
|
114
|
+
value -= this._minimum;
|
|
115
|
+
if (interval !== Math.round(interval)) {
|
|
116
|
+
const parts = (1 + interval).toString().split('.');
|
|
117
|
+
scale = Math.pow(10, parts[1].length);
|
|
118
|
+
value = Math.round(value * scale);
|
|
119
|
+
interval = Math.round(interval * scale);
|
|
120
|
+
}
|
|
121
|
+
const lower = Math.max(0, Math.floor(value / interval) * interval);
|
|
122
|
+
const upper = Math.min(maxValue * scale, Math.floor((value + interval) / interval) * interval);
|
|
123
|
+
const validValue = value - lower >= (upper - lower) / 2 ? upper : lower;
|
|
124
|
+
return validValue / scale + this._minimum;
|
|
125
|
+
}
|
|
126
|
+
setValue(value) {
|
|
127
|
+
if (this._value === value)
|
|
128
|
+
return;
|
|
129
|
+
if (this._maximum > this._minimum) {
|
|
130
|
+
this._value = Math.min(this._maximum, Math.max(this._minimum, value));
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
this._value = value;
|
|
134
|
+
}
|
|
135
|
+
this._valueChanged = false;
|
|
136
|
+
this.invalidateDisplayList();
|
|
137
|
+
PropertyEvent.dispatchPropertyEvent(this, 'value');
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Override to update skin parts based on minimum, maximum, and value.
|
|
141
|
+
*/
|
|
142
|
+
updateSkinDisplayList() { }
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=Range.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Range.js","sourceRoot":"","sources":["../../../src/kurot/components/Range.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,OAAO,KAAM,SAAQ,SAAS;IACnC,yEAAyE;IAEjE,QAAQ,GAAG,GAAG,CAAC;IACf,WAAW,GAAG,KAAK,CAAC;IACpB,QAAQ,GAAG,CAAC,CAAC;IACb,WAAW,GAAG,KAAK,CAAC;IACpB,MAAM,GAAG,CAAC,CAAC;IACX,aAAa,GAAG,CAAC,CAAC;IAClB,aAAa,GAAG,KAAK,CAAC;IACtB,aAAa,GAAG,CAAC,CAAC;IAClB,oBAAoB,GAAG,KAAK,CAAC;IAC7B,qBAAqB,GAAG,KAAK,CAAC;IAEtC,yEAAyE;IAEzE,IAAW,OAAO;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,IAAW,OAAO,CAAC,KAAa;QAC/B,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;QACpB,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK;YAAE,OAAO;QACpC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC9B,CAAC;IAED,IAAW,OAAO;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,IAAW,OAAO,CAAC,KAAa;QAC/B,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;QACpB,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK;YAAE,OAAO;QACpC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC9B,CAAC;IAED,IAAW,KAAK;QACf,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IAC9D,CAAC;IAED,IAAW,KAAK,CAAC,QAAgB;QAChC,QAAQ,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,IAAW,YAAY;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC3B,CAAC;IAED,IAAW,YAAY,CAAC,KAAa;QACpC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAClC,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;QACpB,IAAI,KAAK,KAAK,IAAI,CAAC,aAAa;YAAE,OAAO;QACzC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;QACpC,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC7B,CAAC;IAED,yEAAyE;IAEzD,gBAAgB;QAC/B,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAEzB,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/B,CAAC;QACF,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC7F,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YAC3E,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACzE,CAAC;IACF,CAAC;IAEe,iBAAiB,CAAC,CAAS,EAAE,CAAS;QACrD,KAAK,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC9B,CAAC;IAED,yEAAyE;IAE/D,eAAe,CAAC,QAAgB;QACzC,IAAI,QAAQ,KAAK,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;OAGG;IACO,iBAAiB,CAAC,KAAa,EAAE,QAAgB;QAC1D,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC;QAEvB,IAAI,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACtC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;YAClC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC/F,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAExE,OAAO,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC3C,CAAC;IAES,QAAQ,CAAC,KAAa;QAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO;QAClC,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,aAAa,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACO,qBAAqB,KAAU,CAAC;CAC1C"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Component } from './Component.js';
|
|
2
|
+
/**
|
|
3
|
+
* A rectangular shape component with fill and stroke support.
|
|
4
|
+
* Extends Component and uses the inherited Graphics to draw a filled/stroked rectangle.
|
|
5
|
+
*
|
|
6
|
+
* States: none (non-interactive visual element).
|
|
7
|
+
*/
|
|
8
|
+
export declare class Rect extends Component {
|
|
9
|
+
private _fillColor;
|
|
10
|
+
private _fillAlpha;
|
|
11
|
+
private _strokeColor;
|
|
12
|
+
private _strokeAlpha;
|
|
13
|
+
private _strokeWeight;
|
|
14
|
+
private _ellipseWidth;
|
|
15
|
+
private _ellipseHeight;
|
|
16
|
+
constructor(width?: number, height?: number, fillColor?: number);
|
|
17
|
+
get fillColor(): number;
|
|
18
|
+
set fillColor(value: number);
|
|
19
|
+
get fillAlpha(): number;
|
|
20
|
+
set fillAlpha(value: number);
|
|
21
|
+
get strokeColor(): number;
|
|
22
|
+
set strokeColor(value: number);
|
|
23
|
+
get strokeAlpha(): number;
|
|
24
|
+
set strokeAlpha(value: number);
|
|
25
|
+
get strokeWeight(): number;
|
|
26
|
+
set strokeWeight(value: number);
|
|
27
|
+
get ellipseWidth(): number;
|
|
28
|
+
set ellipseWidth(value: number);
|
|
29
|
+
get ellipseHeight(): number;
|
|
30
|
+
set ellipseHeight(value: number);
|
|
31
|
+
updateDisplayList(unscaledWidth: number, unscaledHeight: number): void;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=Rect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Rect.d.ts","sourceRoot":"","sources":["../../../src/kurot/components/Rect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;GAKG;AACH,qBAAa,IAAK,SAAQ,SAAS;IAGlC,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,YAAY,CAAY;IAChC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAAK;gBAIR,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;IAUtE,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,SAAS,CAAC,KAAK,EAAE,MAAM,EAIjC;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,SAAS,CAAC,KAAK,EAAE,MAAM,EAIjC;IAED,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,WAAW,CAAC,KAAK,EAAE,MAAM,EAInC;IAED,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,WAAW,CAAC,KAAK,EAAE,MAAM,EAInC;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,MAAM,EAIpC;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,MAAM,EAIpC;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,aAAa,CAAC,KAAK,EAAE,MAAM,EAIrC;IAIe,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;CAiCtF"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { Component } from './Component.js';
|
|
2
|
+
/**
|
|
3
|
+
* A rectangular shape component with fill and stroke support.
|
|
4
|
+
* Extends Component and uses the inherited Graphics to draw a filled/stroked rectangle.
|
|
5
|
+
*
|
|
6
|
+
* States: none (non-interactive visual element).
|
|
7
|
+
*/
|
|
8
|
+
export class Rect extends Component {
|
|
9
|
+
// ── Instance fields ───────────────────────────────────────────────────
|
|
10
|
+
_fillColor = 0x000000;
|
|
11
|
+
_fillAlpha = 1;
|
|
12
|
+
_strokeColor = 0x444444;
|
|
13
|
+
_strokeAlpha = 1;
|
|
14
|
+
_strokeWeight = 0;
|
|
15
|
+
_ellipseWidth = 0;
|
|
16
|
+
_ellipseHeight = 0;
|
|
17
|
+
// ── Constructor ───────────────────────────────────────────────────────
|
|
18
|
+
constructor(width, height, fillColor) {
|
|
19
|
+
super();
|
|
20
|
+
this.touchChildren = false;
|
|
21
|
+
if (width !== undefined)
|
|
22
|
+
this.width = width;
|
|
23
|
+
if (height !== undefined)
|
|
24
|
+
this.height = height;
|
|
25
|
+
if (fillColor !== undefined)
|
|
26
|
+
this.fillColor = fillColor;
|
|
27
|
+
}
|
|
28
|
+
// ── Getters / Setters ─────────────────────────────────────────────────
|
|
29
|
+
get fillColor() {
|
|
30
|
+
return this._fillColor;
|
|
31
|
+
}
|
|
32
|
+
set fillColor(value) {
|
|
33
|
+
if (value === undefined || this._fillColor === value)
|
|
34
|
+
return;
|
|
35
|
+
this._fillColor = value;
|
|
36
|
+
this.invalidateDisplayList();
|
|
37
|
+
}
|
|
38
|
+
get fillAlpha() {
|
|
39
|
+
return this._fillAlpha;
|
|
40
|
+
}
|
|
41
|
+
set fillAlpha(value) {
|
|
42
|
+
if (this._fillAlpha === value)
|
|
43
|
+
return;
|
|
44
|
+
this._fillAlpha = value;
|
|
45
|
+
this.invalidateDisplayList();
|
|
46
|
+
}
|
|
47
|
+
get strokeColor() {
|
|
48
|
+
return this._strokeColor;
|
|
49
|
+
}
|
|
50
|
+
set strokeColor(value) {
|
|
51
|
+
if (this._strokeColor === value)
|
|
52
|
+
return;
|
|
53
|
+
this._strokeColor = value;
|
|
54
|
+
this.invalidateDisplayList();
|
|
55
|
+
}
|
|
56
|
+
get strokeAlpha() {
|
|
57
|
+
return this._strokeAlpha;
|
|
58
|
+
}
|
|
59
|
+
set strokeAlpha(value) {
|
|
60
|
+
if (this._strokeAlpha === value)
|
|
61
|
+
return;
|
|
62
|
+
this._strokeAlpha = value;
|
|
63
|
+
this.invalidateDisplayList();
|
|
64
|
+
}
|
|
65
|
+
get strokeWeight() {
|
|
66
|
+
return this._strokeWeight;
|
|
67
|
+
}
|
|
68
|
+
set strokeWeight(value) {
|
|
69
|
+
if (this._strokeWeight === value)
|
|
70
|
+
return;
|
|
71
|
+
this._strokeWeight = value;
|
|
72
|
+
this.invalidateDisplayList();
|
|
73
|
+
}
|
|
74
|
+
get ellipseWidth() {
|
|
75
|
+
return this._ellipseWidth;
|
|
76
|
+
}
|
|
77
|
+
set ellipseWidth(value) {
|
|
78
|
+
if (this._ellipseWidth === value)
|
|
79
|
+
return;
|
|
80
|
+
this._ellipseWidth = value;
|
|
81
|
+
this.invalidateDisplayList();
|
|
82
|
+
}
|
|
83
|
+
get ellipseHeight() {
|
|
84
|
+
return this._ellipseHeight;
|
|
85
|
+
}
|
|
86
|
+
set ellipseHeight(value) {
|
|
87
|
+
if (this._ellipseHeight === value)
|
|
88
|
+
return;
|
|
89
|
+
this._ellipseHeight = value;
|
|
90
|
+
this.invalidateDisplayList();
|
|
91
|
+
}
|
|
92
|
+
// ── Override methods ──────────────────────────────────────────────────
|
|
93
|
+
updateDisplayList(unscaledWidth, unscaledHeight) {
|
|
94
|
+
super.updateDisplayList(unscaledWidth, unscaledHeight);
|
|
95
|
+
const g = this.graphics;
|
|
96
|
+
g.clear();
|
|
97
|
+
if (unscaledWidth <= 0 || unscaledHeight <= 0)
|
|
98
|
+
return;
|
|
99
|
+
const sw = this._strokeWeight;
|
|
100
|
+
const ew = this._ellipseWidth;
|
|
101
|
+
const eh = this._ellipseHeight;
|
|
102
|
+
const isRound = ew !== 0 || eh !== 0;
|
|
103
|
+
if (sw > 0) {
|
|
104
|
+
g.beginFill(this._fillColor, 0);
|
|
105
|
+
g.lineStyle(sw, this._strokeColor, this._strokeAlpha);
|
|
106
|
+
if (isRound) {
|
|
107
|
+
g.drawRoundRect(sw / 2, sw / 2, unscaledWidth - sw, unscaledHeight - sw, ew, eh);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
g.drawRect(sw / 2, sw / 2, unscaledWidth - sw, unscaledHeight - sw);
|
|
111
|
+
}
|
|
112
|
+
g.endFill();
|
|
113
|
+
}
|
|
114
|
+
g.beginFill(this._fillColor, this._fillAlpha);
|
|
115
|
+
g.lineStyle(sw, this._strokeColor, 0);
|
|
116
|
+
if (isRound) {
|
|
117
|
+
g.drawRoundRect(sw, sw, unscaledWidth - sw * 2, unscaledHeight - sw * 2, ew, eh);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
g.drawRect(sw, sw, unscaledWidth - sw * 2, unscaledHeight - sw * 2);
|
|
121
|
+
}
|
|
122
|
+
g.endFill();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=Rect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Rect.js","sourceRoot":"","sources":["../../../src/kurot/components/Rect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Component } from './Component.js';
|
|
2
|
+
import type { IViewport } from '../core/IViewport.js';
|
|
3
|
+
import type { IUIComponent } from '../core/IUIComponent.js';
|
|
4
|
+
import { PropertyEvent } from '../events/PropertyEvent.js';
|
|
5
|
+
/**
|
|
6
|
+
* Base class for scroll bars.
|
|
7
|
+
*
|
|
8
|
+
* Connects to an IViewport and positions a `thumb` skin part based on the
|
|
9
|
+
* viewport's scroll position relative to its content size.
|
|
10
|
+
*
|
|
11
|
+
* @skinPart thumb — the draggable thumb indicator.
|
|
12
|
+
*/
|
|
13
|
+
export declare class ScrollBarBase extends Component {
|
|
14
|
+
thumb?: IUIComponent;
|
|
15
|
+
autoVisibility: boolean;
|
|
16
|
+
private _viewport?;
|
|
17
|
+
get viewport(): IViewport | undefined;
|
|
18
|
+
set viewport(value: IViewport | undefined);
|
|
19
|
+
/**
|
|
20
|
+
* Called when viewport properties (scrollH, scrollV, contentWidth, etc.) change.
|
|
21
|
+
* Override in subclasses to react.
|
|
22
|
+
*/
|
|
23
|
+
protected onPropertyChanged(_event: PropertyEvent): void;
|
|
24
|
+
private _onPropChange;
|
|
25
|
+
private _onResize;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=ScrollBarBase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScrollBarBase.d.ts","sourceRoot":"","sources":["../../../src/kurot/components/ScrollBarBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D;;;;;;;GAOG;AACH,qBAAa,aAAc,SAAQ,SAAS;IAGpC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,cAAc,UAAQ;IAE7B,OAAO,CAAC,SAAS,CAAC,CAAY;IAI9B,IAAW,QAAQ,IAAI,SAAS,GAAG,SAAS,CAE3C;IAED,IAAW,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,EAa/C;IAID;;;OAGG;IACH,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAIxD,OAAO,CAAC,aAAa,CAEnB;IAEF,OAAO,CAAC,SAAS,CAEf;CACF"}
|