@easemate/web-kit 0.1.0
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 +824 -0
- package/build/components/code/index.cjs +152 -0
- package/build/components/code/index.d.cts +11 -0
- package/build/components/code/index.d.ts +11 -0
- package/build/components/code/index.js +148 -0
- package/build/components/code/utils/highlight-api.cjs +18 -0
- package/build/components/code/utils/highlight-api.d.cts +7 -0
- package/build/components/code/utils/highlight-api.d.ts +7 -0
- package/build/components/code/utils/highlight-api.js +14 -0
- package/build/components/code/utils/syntax-grammars.cjs +62 -0
- package/build/components/code/utils/syntax-grammars.d.cts +7 -0
- package/build/components/code/utils/syntax-grammars.d.ts +7 -0
- package/build/components/code/utils/syntax-grammars.js +59 -0
- package/build/components/code/utils/syntax-highlighter-theme.cjs +27 -0
- package/build/components/code/utils/syntax-highlighter-theme.d.cts +3 -0
- package/build/components/code/utils/syntax-highlighter-theme.d.ts +3 -0
- package/build/components/code/utils/syntax-highlighter-theme.js +23 -0
- package/build/components/code/utils/syntax-highlighter-types.cjs +2 -0
- package/build/components/code/utils/syntax-highlighter-types.d.cts +12 -0
- package/build/components/code/utils/syntax-highlighter-types.d.ts +12 -0
- package/build/components/code/utils/syntax-highlighter-types.js +1 -0
- package/build/components/code/utils/syntax-tokenizer.cjs +63 -0
- package/build/components/code/utils/syntax-tokenizer.d.cts +3 -0
- package/build/components/code/utils/syntax-tokenizer.d.ts +3 -0
- package/build/components/code/utils/syntax-tokenizer.js +58 -0
- package/build/components/curve/bezier-conversion.cjs +23 -0
- package/build/components/curve/bezier-conversion.d.cts +2 -0
- package/build/components/curve/bezier-conversion.d.ts +2 -0
- package/build/components/curve/bezier-conversion.js +19 -0
- package/build/components/curve/canvas-controls.cjs +300 -0
- package/build/components/curve/canvas-controls.d.cts +12 -0
- package/build/components/curve/canvas-controls.d.ts +12 -0
- package/build/components/curve/canvas-controls.js +296 -0
- package/build/components/curve/canvas.cjs +1208 -0
- package/build/components/curve/canvas.d.cts +24 -0
- package/build/components/curve/canvas.d.ts +24 -0
- package/build/components/curve/canvas.js +1204 -0
- package/build/components/curve/constants.cjs +203 -0
- package/build/components/curve/constants.d.cts +23 -0
- package/build/components/curve/constants.d.ts +23 -0
- package/build/components/curve/constants.js +200 -0
- package/build/components/curve/controls.cjs +942 -0
- package/build/components/curve/controls.d.cts +37 -0
- package/build/components/curve/controls.d.ts +37 -0
- package/build/components/curve/controls.js +938 -0
- package/build/components/curve/index.cjs +335 -0
- package/build/components/curve/index.d.cts +31 -0
- package/build/components/curve/index.d.ts +31 -0
- package/build/components/curve/index.js +330 -0
- package/build/components/curve/output.cjs +141 -0
- package/build/components/curve/output.d.cts +19 -0
- package/build/components/curve/output.d.ts +19 -0
- package/build/components/curve/output.js +137 -0
- package/build/components/curve/styles.cjs +493 -0
- package/build/components/curve/styles.d.cts +6 -0
- package/build/components/curve/styles.d.ts +6 -0
- package/build/components/curve/styles.js +490 -0
- package/build/components/curve/svg-renderer.cjs +185 -0
- package/build/components/curve/svg-renderer.d.cts +9 -0
- package/build/components/curve/svg-renderer.d.ts +9 -0
- package/build/components/curve/svg-renderer.js +175 -0
- package/build/components/curve/toolbar.cjs +368 -0
- package/build/components/curve/toolbar.d.cts +26 -0
- package/build/components/curve/toolbar.d.ts +26 -0
- package/build/components/curve/toolbar.js +364 -0
- package/build/components/curve/types.cjs +10 -0
- package/build/components/curve/types.d.cts +33 -0
- package/build/components/curve/types.d.ts +33 -0
- package/build/components/curve/types.js +7 -0
- package/build/components/curve/utils.cjs +541 -0
- package/build/components/curve/utils.d.cts +33 -0
- package/build/components/curve/utils.d.ts +33 -0
- package/build/components/curve/utils.js +521 -0
- package/build/components/index.cjs +18 -0
- package/build/components/index.d.cts +2 -0
- package/build/components/index.d.ts +2 -0
- package/build/components/index.js +2 -0
- package/build/decorators/Component.cjs +127 -0
- package/build/decorators/Component.d.cts +28 -0
- package/build/decorators/Component.d.ts +28 -0
- package/build/decorators/Component.js +123 -0
- package/build/decorators/Listen.cjs +154 -0
- package/build/decorators/Listen.d.cts +18 -0
- package/build/decorators/Listen.d.ts +18 -0
- package/build/decorators/Listen.js +151 -0
- package/build/decorators/OutsideClick.cjs +64 -0
- package/build/decorators/OutsideClick.d.cts +16 -0
- package/build/decorators/OutsideClick.d.ts +16 -0
- package/build/decorators/OutsideClick.js +59 -0
- package/build/decorators/Prop.cjs +273 -0
- package/build/decorators/Prop.d.cts +22 -0
- package/build/decorators/Prop.d.ts +22 -0
- package/build/decorators/Prop.js +270 -0
- package/build/decorators/Query.cjs +79 -0
- package/build/decorators/Query.d.cts +27 -0
- package/build/decorators/Query.d.ts +27 -0
- package/build/decorators/Query.js +76 -0
- package/build/decorators/Watch.cjs +52 -0
- package/build/decorators/Watch.d.cts +11 -0
- package/build/decorators/Watch.d.ts +11 -0
- package/build/decorators/Watch.js +49 -0
- package/build/decorators/index.cjs +15 -0
- package/build/decorators/index.d.cts +6 -0
- package/build/decorators/index.d.ts +6 -0
- package/build/decorators/index.js +6 -0
- package/build/elements/button/index.cjs +214 -0
- package/build/elements/button/index.d.cts +11 -0
- package/build/elements/button/index.d.ts +11 -0
- package/build/elements/button/index.js +210 -0
- package/build/elements/checkbox/index.cjs +316 -0
- package/build/elements/checkbox/index.d.cts +14 -0
- package/build/elements/checkbox/index.d.ts +14 -0
- package/build/elements/checkbox/index.js +312 -0
- package/build/elements/color/index.cjs +154 -0
- package/build/elements/color/index.d.cts +18 -0
- package/build/elements/color/index.d.ts +18 -0
- package/build/elements/color/index.js +150 -0
- package/build/elements/color/picker.cjs +544 -0
- package/build/elements/color/picker.d.cts +37 -0
- package/build/elements/color/picker.d.ts +37 -0
- package/build/elements/color/picker.js +540 -0
- package/build/elements/color/utils.cjs +235 -0
- package/build/elements/color/utils.d.cts +37 -0
- package/build/elements/color/utils.d.ts +37 -0
- package/build/elements/color/utils.js +218 -0
- package/build/elements/dropdown/index.cjs +875 -0
- package/build/elements/dropdown/index.d.cts +30 -0
- package/build/elements/dropdown/index.d.ts +30 -0
- package/build/elements/dropdown/index.js +871 -0
- package/build/elements/field/index.cjs +82 -0
- package/build/elements/field/index.d.cts +4 -0
- package/build/elements/field/index.d.ts +4 -0
- package/build/elements/field/index.js +78 -0
- package/build/elements/icons/animation/chevron.cjs +57 -0
- package/build/elements/icons/animation/chevron.d.cts +10 -0
- package/build/elements/icons/animation/chevron.d.ts +10 -0
- package/build/elements/icons/animation/chevron.js +53 -0
- package/build/elements/icons/animation/clear.cjs +74 -0
- package/build/elements/icons/animation/clear.d.cts +3 -0
- package/build/elements/icons/animation/clear.d.ts +3 -0
- package/build/elements/icons/animation/clear.js +70 -0
- package/build/elements/icons/animation/grid.cjs +77 -0
- package/build/elements/icons/animation/grid.d.cts +8 -0
- package/build/elements/icons/animation/grid.d.ts +8 -0
- package/build/elements/icons/animation/grid.js +73 -0
- package/build/elements/icons/animation/loading.cjs +68 -0
- package/build/elements/icons/animation/loading.d.cts +3 -0
- package/build/elements/icons/animation/loading.d.ts +3 -0
- package/build/elements/icons/animation/loading.js +64 -0
- package/build/elements/icons/animation/snap.cjs +133 -0
- package/build/elements/icons/animation/snap.d.cts +8 -0
- package/build/elements/icons/animation/snap.d.ts +8 -0
- package/build/elements/icons/animation/snap.js +129 -0
- package/build/elements/icons/index.cjs +40 -0
- package/build/elements/icons/index.d.cts +24 -0
- package/build/elements/icons/index.d.ts +24 -0
- package/build/elements/icons/index.js +24 -0
- package/build/elements/icons/interface/anchor-add.cjs +35 -0
- package/build/elements/icons/interface/anchor-add.d.cts +3 -0
- package/build/elements/icons/interface/anchor-add.d.ts +3 -0
- package/build/elements/icons/interface/anchor-add.js +31 -0
- package/build/elements/icons/interface/anchor-remove.cjs +34 -0
- package/build/elements/icons/interface/anchor-remove.d.cts +3 -0
- package/build/elements/icons/interface/anchor-remove.d.ts +3 -0
- package/build/elements/icons/interface/anchor-remove.js +30 -0
- package/build/elements/icons/interface/arrow-up.cjs +30 -0
- package/build/elements/icons/interface/arrow-up.d.cts +3 -0
- package/build/elements/icons/interface/arrow-up.d.ts +3 -0
- package/build/elements/icons/interface/arrow-up.js +26 -0
- package/build/elements/icons/interface/arrows-vertical.cjs +30 -0
- package/build/elements/icons/interface/arrows-vertical.d.cts +3 -0
- package/build/elements/icons/interface/arrows-vertical.d.ts +3 -0
- package/build/elements/icons/interface/arrows-vertical.js +26 -0
- package/build/elements/icons/interface/bezier-angle.cjs +33 -0
- package/build/elements/icons/interface/bezier-angle.d.cts +3 -0
- package/build/elements/icons/interface/bezier-angle.d.ts +3 -0
- package/build/elements/icons/interface/bezier-angle.js +29 -0
- package/build/elements/icons/interface/bezier-distribute.cjs +34 -0
- package/build/elements/icons/interface/bezier-distribute.d.cts +3 -0
- package/build/elements/icons/interface/bezier-distribute.d.ts +3 -0
- package/build/elements/icons/interface/bezier-distribute.js +30 -0
- package/build/elements/icons/interface/bezier-length.cjs +31 -0
- package/build/elements/icons/interface/bezier-length.d.cts +3 -0
- package/build/elements/icons/interface/bezier-length.d.ts +3 -0
- package/build/elements/icons/interface/bezier-length.js +27 -0
- package/build/elements/icons/interface/bezier-mirror.cjs +31 -0
- package/build/elements/icons/interface/bezier-mirror.d.cts +3 -0
- package/build/elements/icons/interface/bezier-mirror.d.ts +3 -0
- package/build/elements/icons/interface/bezier-mirror.js +27 -0
- package/build/elements/icons/interface/bezier.cjs +26 -0
- package/build/elements/icons/interface/bezier.d.cts +3 -0
- package/build/elements/icons/interface/bezier.d.ts +3 -0
- package/build/elements/icons/interface/bezier.js +22 -0
- package/build/elements/icons/interface/check.cjs +30 -0
- package/build/elements/icons/interface/check.d.cts +3 -0
- package/build/elements/icons/interface/check.d.ts +3 -0
- package/build/elements/icons/interface/check.js +26 -0
- package/build/elements/icons/interface/circle-arrow-left.cjs +30 -0
- package/build/elements/icons/interface/circle-arrow-left.d.cts +3 -0
- package/build/elements/icons/interface/circle-arrow-left.d.ts +3 -0
- package/build/elements/icons/interface/circle-arrow-left.js +26 -0
- package/build/elements/icons/interface/circle-arrow-right.cjs +30 -0
- package/build/elements/icons/interface/circle-arrow-right.d.cts +3 -0
- package/build/elements/icons/interface/circle-arrow-right.d.ts +3 -0
- package/build/elements/icons/interface/circle-arrow-right.js +26 -0
- package/build/elements/icons/interface/code.cjs +30 -0
- package/build/elements/icons/interface/code.d.cts +3 -0
- package/build/elements/icons/interface/code.d.ts +3 -0
- package/build/elements/icons/interface/code.js +26 -0
- package/build/elements/icons/interface/dots.cjs +32 -0
- package/build/elements/icons/interface/dots.d.cts +3 -0
- package/build/elements/icons/interface/dots.d.ts +3 -0
- package/build/elements/icons/interface/dots.js +28 -0
- package/build/elements/icons/interface/mention.cjs +30 -0
- package/build/elements/icons/interface/mention.d.cts +3 -0
- package/build/elements/icons/interface/mention.d.ts +3 -0
- package/build/elements/icons/interface/mention.js +26 -0
- package/build/elements/icons/interface/minus.cjs +30 -0
- package/build/elements/icons/interface/minus.d.cts +3 -0
- package/build/elements/icons/interface/minus.d.ts +3 -0
- package/build/elements/icons/interface/minus.js +26 -0
- package/build/elements/icons/interface/picker.cjs +34 -0
- package/build/elements/icons/interface/picker.d.cts +3 -0
- package/build/elements/icons/interface/picker.d.ts +3 -0
- package/build/elements/icons/interface/picker.js +30 -0
- package/build/elements/icons/interface/plus.cjs +30 -0
- package/build/elements/icons/interface/plus.d.cts +3 -0
- package/build/elements/icons/interface/plus.d.ts +3 -0
- package/build/elements/icons/interface/plus.js +26 -0
- package/build/elements/icons/interface/settings.cjs +30 -0
- package/build/elements/icons/interface/settings.d.cts +3 -0
- package/build/elements/icons/interface/settings.d.ts +3 -0
- package/build/elements/icons/interface/settings.js +26 -0
- package/build/elements/index.cjs +62 -0
- package/build/elements/index.d.cts +22 -0
- package/build/elements/index.d.ts +22 -0
- package/build/elements/index.js +22 -0
- package/build/elements/input/index.cjs +273 -0
- package/build/elements/input/index.d.cts +17 -0
- package/build/elements/input/index.d.ts +17 -0
- package/build/elements/input/index.js +269 -0
- package/build/elements/logo/index.cjs +732 -0
- package/build/elements/logo/index.d.cts +17 -0
- package/build/elements/logo/index.d.ts +17 -0
- package/build/elements/logo/index.js +728 -0
- package/build/elements/monitor/fps.cjs +432 -0
- package/build/elements/monitor/fps.d.cts +21 -0
- package/build/elements/monitor/fps.d.ts +21 -0
- package/build/elements/monitor/fps.js +428 -0
- package/build/elements/monitor/index.cjs +670 -0
- package/build/elements/monitor/index.d.cts +112 -0
- package/build/elements/monitor/index.d.ts +112 -0
- package/build/elements/monitor/index.js +666 -0
- package/build/elements/number/index.cjs +173 -0
- package/build/elements/number/index.d.cts +19 -0
- package/build/elements/number/index.d.ts +19 -0
- package/build/elements/number/index.js +169 -0
- package/build/elements/origin/index.cjs +169 -0
- package/build/elements/origin/index.d.cts +12 -0
- package/build/elements/origin/index.d.ts +12 -0
- package/build/elements/origin/index.js +165 -0
- package/build/elements/popover/index.cjs +209 -0
- package/build/elements/popover/index.d.cts +19 -0
- package/build/elements/popover/index.d.ts +19 -0
- package/build/elements/popover/index.js +205 -0
- package/build/elements/radio/index.cjs +301 -0
- package/build/elements/radio/index.d.cts +13 -0
- package/build/elements/radio/index.d.ts +13 -0
- package/build/elements/radio/index.js +283 -0
- package/build/elements/radio/input.cjs +329 -0
- package/build/elements/radio/input.d.cts +15 -0
- package/build/elements/radio/input.d.ts +15 -0
- package/build/elements/radio/input.js +325 -0
- package/build/elements/radio/option.cjs +15 -0
- package/build/elements/radio/option.d.cts +3 -0
- package/build/elements/radio/option.d.ts +3 -0
- package/build/elements/radio/option.js +11 -0
- package/build/elements/shared.cjs +66 -0
- package/build/elements/shared.d.cts +40 -0
- package/build/elements/shared.d.ts +40 -0
- package/build/elements/shared.js +59 -0
- package/build/elements/slider/index.cjs +232 -0
- package/build/elements/slider/index.d.cts +20 -0
- package/build/elements/slider/index.d.ts +20 -0
- package/build/elements/slider/index.js +228 -0
- package/build/elements/state/index.cjs +681 -0
- package/build/elements/state/index.d.cts +86 -0
- package/build/elements/state/index.d.ts +86 -0
- package/build/elements/state/index.js +677 -0
- package/build/elements/toggle/index.cjs +151 -0
- package/build/elements/toggle/index.d.cts +9 -0
- package/build/elements/toggle/index.d.ts +9 -0
- package/build/elements/toggle/index.js +147 -0
- package/build/elements/tooltip/index.cjs +187 -0
- package/build/elements/tooltip/index.d.cts +17 -0
- package/build/elements/tooltip/index.d.ts +17 -0
- package/build/elements/tooltip/index.js +183 -0
- package/build/index.cjs +40 -0
- package/build/index.d.cts +6 -0
- package/build/index.d.ts +6 -0
- package/build/index.js +12 -0
- package/build/init.cjs +325 -0
- package/build/init.d.cts +157 -0
- package/build/init.d.ts +157 -0
- package/build/init.js +289 -0
- package/build/internal/component-loaders.cjs +206 -0
- package/build/internal/component-loaders.d.cts +52 -0
- package/build/internal/component-loaders.d.ts +52 -0
- package/build/internal/component-loaders.js +167 -0
- package/build/internal/fonts.cjs +128 -0
- package/build/internal/fonts.d.cts +32 -0
- package/build/internal/fonts.d.ts +32 -0
- package/build/internal/fonts.js +123 -0
- package/build/internal/lazy-load.cjs +89 -0
- package/build/internal/lazy-load.d.cts +32 -0
- package/build/internal/lazy-load.d.ts +32 -0
- package/build/internal/lazy-load.js +86 -0
- package/build/internal/style-inject.cjs +236 -0
- package/build/internal/style-inject.d.cts +44 -0
- package/build/internal/style-inject.d.ts +44 -0
- package/build/internal/style-inject.js +226 -0
- package/build/register.cjs +36 -0
- package/build/register.d.cts +32 -0
- package/build/register.d.ts +32 -0
- package/build/register.js +34 -0
- package/build/theme/index.cjs +452 -0
- package/build/theme/index.d.cts +146 -0
- package/build/theme/index.d.ts +146 -0
- package/build/theme/index.js +423 -0
- package/build/theme/presets.cjs +54 -0
- package/build/theme/presets.d.cts +19 -0
- package/build/theme/presets.d.ts +19 -0
- package/build/theme/presets.js +51 -0
- package/build/theme/registry.cjs +204 -0
- package/build/theme/registry.d.cts +99 -0
- package/build/theme/registry.d.ts +99 -0
- package/build/theme/registry.js +194 -0
- package/build/theme/tokens.cjs +148 -0
- package/build/theme/tokens.d.cts +163 -0
- package/build/theme/tokens.d.ts +163 -0
- package/build/theme/tokens.js +145 -0
- package/build/utils/dismiss-controller.cjs +77 -0
- package/build/utils/dismiss-controller.d.cts +14 -0
- package/build/utils/dismiss-controller.d.ts +14 -0
- package/build/utils/dismiss-controller.js +73 -0
- package/build/utils/index.cjs +18 -0
- package/build/utils/index.d.cts +3 -0
- package/build/utils/index.d.ts +3 -0
- package/build/utils/index.js +3 -0
- package/build/utils/outside-click.cjs +82 -0
- package/build/utils/outside-click.d.cts +18 -0
- package/build/utils/outside-click.d.ts +18 -0
- package/build/utils/outside-click.js +74 -0
- package/build/utils/template-helpers.cjs +39 -0
- package/build/utils/template-helpers.d.cts +13 -0
- package/build/utils/template-helpers.d.ts +13 -0
- package/build/utils/template-helpers.js +28 -0
- package/package.json +96 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export class RadioOption extends HTMLElement {
|
|
2
|
+
connectedCallback() {
|
|
3
|
+
this.hidden = true;
|
|
4
|
+
if (!this.hasAttribute('slot')) {
|
|
5
|
+
this.setAttribute('slot', 'option');
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
if (!customElements.get('radio-option')) {
|
|
10
|
+
customElements.define('radio-option', RadioOption);
|
|
11
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readControlValue = exports.coerceNumber = exports.setBooleanAttribute = exports.dispatchControlEvent = exports.CONTROL_CHANGE_EVENT = void 0;
|
|
4
|
+
/** The standard event type for control value changes */
|
|
5
|
+
exports.CONTROL_CHANGE_EVENT = 'control-change';
|
|
6
|
+
/**
|
|
7
|
+
* Dispatch a control change event with standard shape.
|
|
8
|
+
* Events bubble and are composed (cross shadow DOM boundaries).
|
|
9
|
+
*
|
|
10
|
+
* @param host - The element dispatching the event
|
|
11
|
+
* @param type - Event type (prefer CONTROL_CHANGE_EVENT for standard controls)
|
|
12
|
+
* @param detail - Event detail with value and optional name
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* dispatchControlEvent(this, CONTROL_CHANGE_EVENT, {
|
|
17
|
+
* name: this.name,
|
|
18
|
+
* value: this.value,
|
|
19
|
+
* event: e
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
const dispatchControlEvent = (host, type, detail) => {
|
|
24
|
+
host.dispatchEvent(new CustomEvent(type, {
|
|
25
|
+
detail,
|
|
26
|
+
bubbles: true,
|
|
27
|
+
composed: true
|
|
28
|
+
}));
|
|
29
|
+
};
|
|
30
|
+
exports.dispatchControlEvent = dispatchControlEvent;
|
|
31
|
+
const setBooleanAttribute = (element, name, value) => {
|
|
32
|
+
if (!element) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (value) {
|
|
36
|
+
element.setAttribute(name, '');
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
element.removeAttribute(name);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
exports.setBooleanAttribute = setBooleanAttribute;
|
|
43
|
+
const coerceNumber = (value) => {
|
|
44
|
+
if (value === '') {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
const parsed = Number(value);
|
|
48
|
+
return Number.isNaN(parsed) ? null : parsed;
|
|
49
|
+
};
|
|
50
|
+
exports.coerceNumber = coerceNumber;
|
|
51
|
+
const readControlValue = (element) => {
|
|
52
|
+
if (typeof element.value === 'string' || typeof element.value === 'number') {
|
|
53
|
+
return String(element.value);
|
|
54
|
+
}
|
|
55
|
+
if (typeof element.checked === 'boolean') {
|
|
56
|
+
return element.checked ? 'true' : 'false';
|
|
57
|
+
}
|
|
58
|
+
if ('getAttribute' in element) {
|
|
59
|
+
const attr = element.getAttribute('value');
|
|
60
|
+
if (attr !== null) {
|
|
61
|
+
return attr;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return element.textContent?.trim() ?? null;
|
|
65
|
+
};
|
|
66
|
+
exports.readControlValue = readControlValue;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standard control event detail interface for Leva/lil-gui style state aggregation.
|
|
3
|
+
* All control components should dispatch events with this shape.
|
|
4
|
+
*/
|
|
5
|
+
export interface ControlEventDetail<TValue = unknown> {
|
|
6
|
+
/** The control's name/identifier for state aggregation */
|
|
7
|
+
name?: string;
|
|
8
|
+
/** The current value of the control */
|
|
9
|
+
value: TValue;
|
|
10
|
+
/** The original DOM event that triggered this change */
|
|
11
|
+
event: Event;
|
|
12
|
+
}
|
|
13
|
+
/** The standard event type for control value changes */
|
|
14
|
+
export declare const CONTROL_CHANGE_EVENT = "control-change";
|
|
15
|
+
/**
|
|
16
|
+
* Dispatch a control change event with standard shape.
|
|
17
|
+
* Events bubble and are composed (cross shadow DOM boundaries).
|
|
18
|
+
*
|
|
19
|
+
* @param host - The element dispatching the event
|
|
20
|
+
* @param type - Event type (prefer CONTROL_CHANGE_EVENT for standard controls)
|
|
21
|
+
* @param detail - Event detail with value and optional name
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* dispatchControlEvent(this, CONTROL_CHANGE_EVENT, {
|
|
26
|
+
* name: this.name,
|
|
27
|
+
* value: this.value,
|
|
28
|
+
* event: e
|
|
29
|
+
* });
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare const dispatchControlEvent: <THost extends HTMLElement, TValue>(host: THost, type: string, detail: ControlEventDetail<TValue>) => void;
|
|
33
|
+
export declare const setBooleanAttribute: (element: Element | null | undefined, name: string, value: boolean) => void;
|
|
34
|
+
export declare const coerceNumber: (value: string) => number | null;
|
|
35
|
+
type ControlElement = Element & {
|
|
36
|
+
value?: unknown;
|
|
37
|
+
checked?: unknown;
|
|
38
|
+
};
|
|
39
|
+
export declare const readControlValue: (element: ControlElement) => string | null;
|
|
40
|
+
export {};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standard control event detail interface for Leva/lil-gui style state aggregation.
|
|
3
|
+
* All control components should dispatch events with this shape.
|
|
4
|
+
*/
|
|
5
|
+
export interface ControlEventDetail<TValue = unknown> {
|
|
6
|
+
/** The control's name/identifier for state aggregation */
|
|
7
|
+
name?: string;
|
|
8
|
+
/** The current value of the control */
|
|
9
|
+
value: TValue;
|
|
10
|
+
/** The original DOM event that triggered this change */
|
|
11
|
+
event: Event;
|
|
12
|
+
}
|
|
13
|
+
/** The standard event type for control value changes */
|
|
14
|
+
export declare const CONTROL_CHANGE_EVENT = "control-change";
|
|
15
|
+
/**
|
|
16
|
+
* Dispatch a control change event with standard shape.
|
|
17
|
+
* Events bubble and are composed (cross shadow DOM boundaries).
|
|
18
|
+
*
|
|
19
|
+
* @param host - The element dispatching the event
|
|
20
|
+
* @param type - Event type (prefer CONTROL_CHANGE_EVENT for standard controls)
|
|
21
|
+
* @param detail - Event detail with value and optional name
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* dispatchControlEvent(this, CONTROL_CHANGE_EVENT, {
|
|
26
|
+
* name: this.name,
|
|
27
|
+
* value: this.value,
|
|
28
|
+
* event: e
|
|
29
|
+
* });
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare const dispatchControlEvent: <THost extends HTMLElement, TValue>(host: THost, type: string, detail: ControlEventDetail<TValue>) => void;
|
|
33
|
+
export declare const setBooleanAttribute: (element: Element | null | undefined, name: string, value: boolean) => void;
|
|
34
|
+
export declare const coerceNumber: (value: string) => number | null;
|
|
35
|
+
type ControlElement = Element & {
|
|
36
|
+
value?: unknown;
|
|
37
|
+
checked?: unknown;
|
|
38
|
+
};
|
|
39
|
+
export declare const readControlValue: (element: ControlElement) => string | null;
|
|
40
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/** The standard event type for control value changes */
|
|
2
|
+
export const CONTROL_CHANGE_EVENT = 'control-change';
|
|
3
|
+
/**
|
|
4
|
+
* Dispatch a control change event with standard shape.
|
|
5
|
+
* Events bubble and are composed (cross shadow DOM boundaries).
|
|
6
|
+
*
|
|
7
|
+
* @param host - The element dispatching the event
|
|
8
|
+
* @param type - Event type (prefer CONTROL_CHANGE_EVENT for standard controls)
|
|
9
|
+
* @param detail - Event detail with value and optional name
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* dispatchControlEvent(this, CONTROL_CHANGE_EVENT, {
|
|
14
|
+
* name: this.name,
|
|
15
|
+
* value: this.value,
|
|
16
|
+
* event: e
|
|
17
|
+
* });
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export const dispatchControlEvent = (host, type, detail) => {
|
|
21
|
+
host.dispatchEvent(new CustomEvent(type, {
|
|
22
|
+
detail,
|
|
23
|
+
bubbles: true,
|
|
24
|
+
composed: true
|
|
25
|
+
}));
|
|
26
|
+
};
|
|
27
|
+
export const setBooleanAttribute = (element, name, value) => {
|
|
28
|
+
if (!element) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (value) {
|
|
32
|
+
element.setAttribute(name, '');
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
element.removeAttribute(name);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
export const coerceNumber = (value) => {
|
|
39
|
+
if (value === '') {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const parsed = Number(value);
|
|
43
|
+
return Number.isNaN(parsed) ? null : parsed;
|
|
44
|
+
};
|
|
45
|
+
export const readControlValue = (element) => {
|
|
46
|
+
if (typeof element.value === 'string' || typeof element.value === 'number') {
|
|
47
|
+
return String(element.value);
|
|
48
|
+
}
|
|
49
|
+
if (typeof element.checked === 'boolean') {
|
|
50
|
+
return element.checked ? 'true' : 'false';
|
|
51
|
+
}
|
|
52
|
+
if ('getAttribute' in element) {
|
|
53
|
+
const attr = element.getAttribute('value');
|
|
54
|
+
if (attr !== null) {
|
|
55
|
+
return attr;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return element.textContent?.trim() ?? null;
|
|
59
|
+
};
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Slider = void 0;
|
|
4
|
+
require("../input/index.cjs");
|
|
5
|
+
const lit_html_1 = require("lit-html");
|
|
6
|
+
const shared_1 = require("../shared.cjs");
|
|
7
|
+
const Component_1 = require("~/decorators/Component");
|
|
8
|
+
const Listen_1 = require("~/decorators/Listen");
|
|
9
|
+
const Prop_1 = require("~/decorators/Prop");
|
|
10
|
+
const Query_1 = require("~/decorators/Query");
|
|
11
|
+
@(0, Component_1.Component)({
|
|
12
|
+
tag: 'ease-slider',
|
|
13
|
+
styles: `
|
|
14
|
+
:host {
|
|
15
|
+
display: contents;
|
|
16
|
+
--track-color: var(--ease-slider-track-color, var(--color-gray-825));
|
|
17
|
+
--active-track-color: var(--ease-slider-active-track-color, var(--color-blue-1100));
|
|
18
|
+
--thumb-color: var(--ease-slider-thumb-color, var(--color-blue-900));
|
|
19
|
+
--thumb-size: var(--ease-slider-thumb-size, 18px);
|
|
20
|
+
--track-height: var(--ease-slider-track-height, 4px);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
[part="container"] {
|
|
24
|
+
flex: 1;
|
|
25
|
+
display: grid;
|
|
26
|
+
grid-template-columns: auto var(--ease-slider-value-width, 36px);
|
|
27
|
+
grid-gap: var(--ease-slider-gap, 12px);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
ease-input[part="value"] {
|
|
31
|
+
--ease-input-padding: 8px 0;
|
|
32
|
+
min-width: 0;
|
|
33
|
+
text-align: center;
|
|
34
|
+
width: var(--ease-slider-value-width, 36px);
|
|
35
|
+
font-variant-numeric: tabular-nums;
|
|
36
|
+
font-feature-settings: "tnum";
|
|
37
|
+
font-family: var(--ease-font-mono, 'Geist Mono', monospace);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
input[part="control"][type="range"] {
|
|
41
|
+
height: var(--ease-slider-height, 30px);
|
|
42
|
+
margin: 0;
|
|
43
|
+
padding: 0;
|
|
44
|
+
appearance: none;
|
|
45
|
+
background-color: transparent;
|
|
46
|
+
width: 100%;
|
|
47
|
+
cursor: pointer;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
input[part="control"][type="range"]::-webkit-slider-runnable-track {
|
|
51
|
+
width: 100%;
|
|
52
|
+
height: var(--track-height);
|
|
53
|
+
background: linear-gradient(to right, var(--active-track-color) var(--progress, 0%), var(--track-color) var(--progress, 0%));
|
|
54
|
+
border-radius: calc(var(--track-height) / 2);
|
|
55
|
+
border: none;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
input[part="control"][type="range"]::-moz-range-track {
|
|
59
|
+
width: 100%;
|
|
60
|
+
height: var(--track-height);
|
|
61
|
+
background: var(--track-color);
|
|
62
|
+
border-radius: calc(var(--track-height) / 2);
|
|
63
|
+
border: none;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
input[part="control"][type="range"]::-moz-range-progress {
|
|
67
|
+
background-color: var(--active-track-color);
|
|
68
|
+
height: var(--track-height);
|
|
69
|
+
border-radius: calc(var(--track-height) / 2);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
input[part="control"][type="range"]::-webkit-slider-thumb {
|
|
73
|
+
appearance: none;
|
|
74
|
+
height: var(--thumb-size);
|
|
75
|
+
width: var(--thumb-size);
|
|
76
|
+
border-radius: 50%;
|
|
77
|
+
margin-top: calc((var(--track-height) - var(--thumb-size)) / 2);
|
|
78
|
+
box-shadow: inset 0 0 0 .75px var(--color-white-15), inset 0 0 5px var(--color-white-20);
|
|
79
|
+
transition: transform 0.2s;
|
|
80
|
+
position: relative;
|
|
81
|
+
background: radial-gradient(circle at center, var(--color-blue-100-50) 4.5px, var(--color-white-0) 4.5px), var(--thumb-color) no-repeat center center;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
input[part="control"][type="range"]:hover::-webkit-slider-thumb {
|
|
85
|
+
transform: scale(1.075);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
input[part="control"][type="range"]:active::-webkit-slider-thumb {
|
|
89
|
+
transform: scale(.975);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
input[part="control"][type="range"]::-moz-range-thumb {
|
|
93
|
+
height: var(--thumb-size);
|
|
94
|
+
width: var(--thumb-size);
|
|
95
|
+
border-radius: 50%;
|
|
96
|
+
background: radial-gradient(circle at center, var(--color-blue-100-50) 4.5px, var(--color-white-0) 4.5px), var(--thumb-color) no-repeat center center;
|
|
97
|
+
border: none;
|
|
98
|
+
box-shadow: inset 0 0 0 .75px var(--color-white-15), inset 0 0 5px var(--color-white-20);
|
|
99
|
+
transition: transform 0.2s;
|
|
100
|
+
position: relative;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
input[part="control"][type="range"]:hover::-moz-range-thumb {
|
|
104
|
+
transform: scale(1.075);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
input[part="control"][type="range"]:active::-moz-range-thumb {
|
|
108
|
+
transform: scale(.975);
|
|
109
|
+
}
|
|
110
|
+
`,
|
|
111
|
+
template() {
|
|
112
|
+
return (0, lit_html_1.html) `
|
|
113
|
+
<div part="container">
|
|
114
|
+
<input
|
|
115
|
+
part="control"
|
|
116
|
+
type="range"
|
|
117
|
+
.min=${this.min ?? 0}
|
|
118
|
+
.max=${this.max ?? 100}
|
|
119
|
+
.step=${this.step ?? 1}
|
|
120
|
+
.value=${String(this.value ?? 0)}
|
|
121
|
+
?disabled=${this.disabled}
|
|
122
|
+
?aria-disabled=${this.disabled}
|
|
123
|
+
/>
|
|
124
|
+
|
|
125
|
+
<ease-input
|
|
126
|
+
part="value"
|
|
127
|
+
type="number"
|
|
128
|
+
placeholder="-"
|
|
129
|
+
.disabled=${Boolean(this.disabled)}
|
|
130
|
+
.value=${this.value === null || this.value === undefined ? '' : String(this.value)}
|
|
131
|
+
/>
|
|
132
|
+
</div>
|
|
133
|
+
`;
|
|
134
|
+
}
|
|
135
|
+
})
|
|
136
|
+
class Slider extends HTMLElement {
|
|
137
|
+
@(0, Prop_1.Prop)({ type: Number, reflect: true })
|
|
138
|
+
accessor value;
|
|
139
|
+
@(0, Prop_1.Prop)({ type: Number, reflect: true })
|
|
140
|
+
accessor min;
|
|
141
|
+
@(0, Prop_1.Prop)({ type: Number, reflect: true })
|
|
142
|
+
accessor max;
|
|
143
|
+
@(0, Prop_1.Prop)({ type: Number, reflect: true })
|
|
144
|
+
accessor step;
|
|
145
|
+
@(0, Prop_1.Prop)({ type: Boolean, reflect: true })
|
|
146
|
+
accessor disabled;
|
|
147
|
+
@(0, Query_1.Query)('input')
|
|
148
|
+
accessor control;
|
|
149
|
+
@(0, Query_1.Query)('ease-input')
|
|
150
|
+
accessor valueControl;
|
|
151
|
+
afterRender() {
|
|
152
|
+
if (!this.control) {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
const control = this.control;
|
|
156
|
+
const value = this.value ?? 0;
|
|
157
|
+
control.value = String(value);
|
|
158
|
+
control.min = this.min === null || this.min === undefined ? '' : String(this.min);
|
|
159
|
+
control.max = this.max === null || this.max === undefined ? '' : String(this.max);
|
|
160
|
+
control.step = this.step === null || this.step === undefined ? '' : String(this.step);
|
|
161
|
+
control.type = 'range';
|
|
162
|
+
control.setAttribute('part', 'control');
|
|
163
|
+
control.disabled = Boolean(this.disabled);
|
|
164
|
+
(0, shared_1.setBooleanAttribute)(this, 'disabled', Boolean(this.disabled));
|
|
165
|
+
this.updateProgress();
|
|
166
|
+
}
|
|
167
|
+
@(0, Listen_1.Listen)('input', { selector: 'input[type="range"]' })
|
|
168
|
+
handleRangeInput(event, target) {
|
|
169
|
+
if (!target) {
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
const numericValue = (0, shared_1.coerceNumber)(target.value);
|
|
173
|
+
this.value = numericValue;
|
|
174
|
+
this.updateProgress();
|
|
175
|
+
if (this.valueControl) {
|
|
176
|
+
this.valueControl.value = numericValue === null ? '' : String(numericValue);
|
|
177
|
+
}
|
|
178
|
+
(0, shared_1.dispatchControlEvent)(this, 'input', { value: this.value, event });
|
|
179
|
+
}
|
|
180
|
+
@(0, Listen_1.Listen)('change', { selector: 'input[type="range"]' })
|
|
181
|
+
handleRangeChange(event, target) {
|
|
182
|
+
if (target) {
|
|
183
|
+
const numericValue = (0, shared_1.coerceNumber)(target.value);
|
|
184
|
+
this.value = numericValue;
|
|
185
|
+
this.updateProgress();
|
|
186
|
+
if (this.valueControl) {
|
|
187
|
+
this.valueControl.value = numericValue === null ? '' : String(numericValue);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
(0, shared_1.dispatchControlEvent)(this, 'change', { value: this.value, event });
|
|
191
|
+
}
|
|
192
|
+
@(0, Listen_1.Listen)('input', {
|
|
193
|
+
selector: 'ease-input',
|
|
194
|
+
when: (event) => event instanceof CustomEvent && typeof event.detail?.value === 'string'
|
|
195
|
+
})
|
|
196
|
+
handleValueInput(event) {
|
|
197
|
+
const rawValue = event.detail?.value ?? '';
|
|
198
|
+
const numericValue = (0, shared_1.coerceNumber)(rawValue);
|
|
199
|
+
this.value = numericValue;
|
|
200
|
+
this.updateProgress();
|
|
201
|
+
if (this.control) {
|
|
202
|
+
this.control.value = String(numericValue ?? 0);
|
|
203
|
+
}
|
|
204
|
+
(0, shared_1.dispatchControlEvent)(this, 'input', { value: this.value, event: event.detail?.event ?? event });
|
|
205
|
+
}
|
|
206
|
+
@(0, Listen_1.Listen)('change', {
|
|
207
|
+
selector: 'ease-input',
|
|
208
|
+
when: (event) => event instanceof CustomEvent && typeof event.detail?.value === 'string'
|
|
209
|
+
})
|
|
210
|
+
handleValueChange(event) {
|
|
211
|
+
const rawValue = event.detail?.value ?? '';
|
|
212
|
+
const numericValue = (0, shared_1.coerceNumber)(rawValue);
|
|
213
|
+
this.value = numericValue;
|
|
214
|
+
this.updateProgress();
|
|
215
|
+
if (this.control) {
|
|
216
|
+
this.control.value = String(numericValue ?? 0);
|
|
217
|
+
}
|
|
218
|
+
(0, shared_1.dispatchControlEvent)(this, 'change', { value: this.value, event: event.detail?.event ?? event });
|
|
219
|
+
}
|
|
220
|
+
updateProgress() {
|
|
221
|
+
if (!this.control) {
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
// Ensure numeric coercion for proper calculation
|
|
225
|
+
const value = Number(this.value) || 0;
|
|
226
|
+
const min = Number(this.min) || 0;
|
|
227
|
+
const max = Number(this.max) || 100;
|
|
228
|
+
const percent = max === min ? 0 : ((value - min) / (max - min)) * 100;
|
|
229
|
+
this.control.style.setProperty('--progress', `${Math.max(0, Math.min(100, percent))}%`);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
exports.Slider = Slider;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import "../input/index.cjs";
|
|
2
|
+
import { type ControlEventDetail } from "../shared.cjs";
|
|
3
|
+
export declare class Slider extends HTMLElement {
|
|
4
|
+
requestRender: () => void;
|
|
5
|
+
accessor value: number | null;
|
|
6
|
+
accessor min: number | null;
|
|
7
|
+
accessor max: number | null;
|
|
8
|
+
accessor step: number | null;
|
|
9
|
+
accessor disabled: boolean;
|
|
10
|
+
accessor control: HTMLInputElement | null;
|
|
11
|
+
accessor valueControl: (HTMLElement & {
|
|
12
|
+
value?: string | null;
|
|
13
|
+
}) | null;
|
|
14
|
+
afterRender(): void;
|
|
15
|
+
handleRangeInput(event: Event, target?: HTMLInputElement | null): void;
|
|
16
|
+
handleRangeChange(event: Event, target?: HTMLInputElement | null): void;
|
|
17
|
+
handleValueInput(event: CustomEvent<ControlEventDetail<string>>): void;
|
|
18
|
+
handleValueChange(event: CustomEvent<ControlEventDetail<string>>): void;
|
|
19
|
+
updateProgress(): void;
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import "../input/index.js";
|
|
2
|
+
import { type ControlEventDetail } from "../shared.js";
|
|
3
|
+
export declare class Slider extends HTMLElement {
|
|
4
|
+
requestRender: () => void;
|
|
5
|
+
accessor value: number | null;
|
|
6
|
+
accessor min: number | null;
|
|
7
|
+
accessor max: number | null;
|
|
8
|
+
accessor step: number | null;
|
|
9
|
+
accessor disabled: boolean;
|
|
10
|
+
accessor control: HTMLInputElement | null;
|
|
11
|
+
accessor valueControl: (HTMLElement & {
|
|
12
|
+
value?: string | null;
|
|
13
|
+
}) | null;
|
|
14
|
+
afterRender(): void;
|
|
15
|
+
handleRangeInput(event: Event, target?: HTMLInputElement | null): void;
|
|
16
|
+
handleRangeChange(event: Event, target?: HTMLInputElement | null): void;
|
|
17
|
+
handleValueInput(event: CustomEvent<ControlEventDetail<string>>): void;
|
|
18
|
+
handleValueChange(event: CustomEvent<ControlEventDetail<string>>): void;
|
|
19
|
+
updateProgress(): void;
|
|
20
|
+
}
|