@ecopages/radiant-ui 0.1.0-rc.3 → 0.1.0-rc.4

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.
Files changed (39) hide show
  1. package/README.md +2 -2
  2. package/dist/components/ui/alert/alert.script.d.ts +1 -8
  3. package/dist/components/ui/carousel/carousel.script.d.ts +1 -5
  4. package/dist/components/ui/date-field/date-field.script.d.ts +1 -12
  5. package/dist/components/ui/date-range-picker/date-range-picker.script.d.ts +1 -6
  6. package/dist/components/ui/dialog/dialog.script.d.ts +1 -6
  7. package/dist/components/ui/grid/grid.script.d.ts +1 -5
  8. package/dist/components/ui/knob/index.js +1 -1
  9. package/dist/components/ui/knob/index.js.map +3 -3
  10. package/dist/components/ui/knob/knob-geometry.d.ts +2 -2
  11. package/dist/components/ui/knob/knob.d.ts +1 -1
  12. package/dist/components/ui/knob/knob.script.d.ts +12 -3
  13. package/dist/components/ui/menubar/menubar.script.d.ts +1 -5
  14. package/dist/components/ui/navigation-menu/navigation-menu.script.d.ts +1 -5
  15. package/dist/components/ui/number-field/number-field.script.d.ts +1 -11
  16. package/dist/components/ui/pagination/pagination.script.d.ts +1 -9
  17. package/dist/components/ui/shared/numeric-range.d.ts +18 -0
  18. package/dist/components/ui/sidebar/sidebar.css +3 -1
  19. package/dist/components/ui/sidebar/sidebar.script.d.ts +1 -5
  20. package/dist/components/ui/slider/index.d.ts +1 -1
  21. package/dist/components/ui/slider/index.js +1 -1
  22. package/dist/components/ui/slider/index.js.map +3 -3
  23. package/dist/components/ui/slider/slider.script.d.ts +13 -3
  24. package/dist/components/ui/table/table.script.d.ts +1 -9
  25. package/dist/components/ui/toast/index.js +1 -1
  26. package/dist/components/ui/toast/index.js.map +2 -2
  27. package/dist/components/ui/toast/toast.script.d.ts +0 -1
  28. package/dist/components/ui/toast/toaster.script.d.ts +1 -6
  29. package/dist/components/ui/toc/index.js +1 -1
  30. package/dist/components/ui/toc/index.js.map +2 -2
  31. package/dist/components/ui/toc/toc.script.d.ts +0 -4
  32. package/dist/components/ui/toolbar/toolbar.script.d.ts +1 -5
  33. package/dist/components/ui/tree/tree.script.d.ts +1 -5
  34. package/dist/components/ui/treegrid/treegrid.script.d.ts +1 -5
  35. package/dist/components/ui/window-splitter/window-splitter.script.d.ts +1 -7
  36. package/dist/index.js +1 -1
  37. package/dist/index.js.map +3 -3
  38. package/dist/styles/styles.css +1 -1
  39. package/package.json +3 -3
package/README.md CHANGED
@@ -17,7 +17,7 @@ This project is **not a React app**. JSX compiles through `@ecopages/jsx`.
17
17
  Framework documentation (API, SSR contract, Vitest, limitations):
18
18
  **[../storybook-radiant-vite/README.md](../storybook-radiant-vite/README.md)**
19
19
 
20
- Library overview and conventions: Storybook **Introduction** (`src/Introduction.mdx`).
20
+ Library overview and conventions: Storybook **Introduction** (`src/Introduction.mdx`). Component authoring: [`src/components/ui/README.md`](./src/components/ui/README.md).
21
21
 
22
22
  ## Develop
23
23
 
@@ -68,7 +68,7 @@ Convenience bundle (default theme + core primitives):
68
68
  import '@ecopages/radiant-ui/radiant-ui.css';
69
69
  ```
70
70
 
71
- Design tokens and themes: see [`DESIGN.md`](./DESIGN.md). Component authoring: [`AGENTS.md`](./AGENTS.md).
71
+ Design tokens and themes: see [`DESIGN.md`](./DESIGN.md). Agent working rules: [`AGENTS.md`](./AGENTS.md).
72
72
 
73
73
  ## Story map
74
74
 
@@ -22,12 +22,6 @@ export type RuiAlertProps = {
22
22
  export type RuiAlertCloseDetail = {
23
23
  reason: 'dismiss';
24
24
  };
25
- type RuiAlertBindings = {
26
- variant: RuiAlertVariant;
27
- layout: RuiAlertLayout;
28
- dismissible: boolean;
29
- closeLabel: string;
30
- };
31
25
  /**
32
26
  * `<rui-alert>` — a brief, important message that attracts attention
33
27
  * without interrupting the user's task.
@@ -63,7 +57,7 @@ type RuiAlertBindings = {
63
57
  * the DOM without re-projecting slot content. A presentational-only wrapper would
64
58
  * need equivalent lifecycle wiring; the CE keeps that behavior self-contained.
65
59
  */
66
- export declare class RuiAlert extends RadiantElement<RuiAlertBindings> {
60
+ export declare class RuiAlert extends RadiantElement {
67
61
  variant: RuiAlertVariant;
68
62
  layout: RuiAlertLayout;
69
63
  dismissible: boolean;
@@ -73,4 +67,3 @@ export declare class RuiAlert extends RadiantElement<RuiAlertBindings> {
73
67
  dismiss(): void;
74
68
  onCloseClick(event: Event): void;
75
69
  }
76
- export {};
@@ -30,9 +30,6 @@ export type RuiCarouselProps = {
30
30
  /** Authored slide count for render-time control state before slot projection. */
31
31
  slideCount?: number;
32
32
  };
33
- type RuiCarouselBindings = {
34
- label: string;
35
- };
36
33
  /**
37
34
  * `<rui-carousel>` — sequentially displays one slide at a time.
38
35
  *
@@ -84,7 +81,7 @@ type RuiCarouselBindings = {
84
81
  * Prev/next and rotation chrome classes are authored by the `RuiCarouselPrev` /
85
82
  * `RuiCarouselNext` / `RuiCarouselRotation` view helpers for custom placement.
86
83
  */
87
- export declare class RuiCarousel extends RadiantElement<RuiCarouselBindings> {
84
+ export declare class RuiCarousel extends RadiantElement {
88
85
  label: string;
89
86
  index: number;
90
87
  autoplay: boolean;
@@ -142,4 +139,3 @@ export declare class RuiCarousel extends RadiantElement<RuiCarouselBindings> {
142
139
  onViewportPointerUp(event: PointerEvent): void;
143
140
  onViewportPointerCancel(event: PointerEvent): void;
144
141
  }
145
- export {};
@@ -25,16 +25,6 @@ export type RuiDateFieldProps = {
25
25
  export type RuiDateFieldChangeDetail = {
26
26
  value: string;
27
27
  };
28
- type RuiDateFieldBindings = {
29
- value: string;
30
- disabled: boolean;
31
- readOnly: boolean;
32
- label: string;
33
- name: string;
34
- placeholder: string;
35
- displayValue: string;
36
- open: boolean;
37
- };
38
28
  /**
39
29
  * `<rui-date-field>` — a locale-aware date text field powered by `Intl`.
40
30
  *
@@ -69,7 +59,7 @@ type RuiDateFieldBindings = {
69
59
  * @cssclass rui-date-field__input - The masked / formatted text input.
70
60
  * @cssclass rui-date-field__popover - Calendar popup shell (`rui-popover` / `rui-floating`).
71
61
  */
72
- export declare class RuiDateField extends RadiantElement<RuiDateFieldBindings> {
62
+ export declare class RuiDateField extends RadiantElement {
73
63
  value: string;
74
64
  min: string;
75
65
  max: string;
@@ -129,4 +119,3 @@ export declare class RuiDateField extends RadiantElement<RuiDateFieldBindings> {
129
119
  onCalendarChange(event: Event): void;
130
120
  onRootKeydown(event: KeyboardEvent): void;
131
121
  }
132
- export {};
@@ -22,11 +22,6 @@ export type RuiDateRangePickerChangeDetail = {
22
22
  end: string;
23
23
  };
24
24
  type EditingField = 'start' | 'end' | null;
25
- type RuiDateRangePickerBindings = {
26
- disabled: boolean;
27
- readOnly: boolean;
28
- open: boolean;
29
- };
30
25
  /**
31
26
  * `<rui-date-range-picker>` — start/end date fields with a range calendar popover.
32
27
  *
@@ -64,7 +59,7 @@ type RuiDateRangePickerBindings = {
64
59
  * @cssclass rui-date-range-picker__separator - Em dash between the inputs.
65
60
  * @cssclass rui-date-range-picker__popover - Range calendar popup shell (`rui-popover` / `rui-floating`).
66
61
  */
67
- export declare class RuiDateRangePicker extends RadiantElement<RuiDateRangePickerBindings> {
62
+ export declare class RuiDateRangePicker extends RadiantElement {
68
63
  value: string;
69
64
  min: string;
70
65
  max: string;
@@ -14,10 +14,6 @@ export type RuiDialogProps = {
14
14
  export type RuiDialogCloseDetail = {
15
15
  reason: 'escape' | 'backdrop' | 'dismiss';
16
16
  };
17
- type RuiDialogBindings = {
18
- open: boolean;
19
- alert: boolean;
20
- };
21
17
  /**
22
18
  * `<rui-dialog>` — a composition-first modal dialog shell.
23
19
  *
@@ -34,7 +30,7 @@ type RuiDialogBindings = {
34
30
  * @cssclass rui-dialog__backdrop - Scrim using the `overlay` role.
35
31
  * @cssclass rui-dialog__surface - Modal panel: `background` + `rounded-container` + `shadow-modal`.
36
32
  */
37
- export declare class RuiDialog extends RadiantElement<RuiDialogBindings> {
33
+ export declare class RuiDialog extends RadiantElement {
38
34
  open: boolean;
39
35
  alert: boolean;
40
36
  label: string;
@@ -55,4 +51,3 @@ export declare class RuiDialog extends RadiantElement<RuiDialogBindings> {
55
51
  onBackdropClick(): void;
56
52
  onCloseClick(): void;
57
53
  }
58
- export {};
@@ -2,9 +2,6 @@ import { RadiantElement } from '@ecopages/radiant';
2
2
  export type RuiGridProps = {
3
3
  label?: string;
4
4
  };
5
- type RuiGridBindings = {
6
- label: string;
7
- };
8
5
  /**
9
6
  * `<rui-grid>` — an interactive grid navigated with arrow keys.
10
7
  *
@@ -26,10 +23,9 @@ type RuiGridBindings = {
26
23
  * Cells are focused with a roving `tabindex` (arrow keys, Home/End). Selection
27
24
  * is not modeled — row and cell classes live on the `RuiGrid` view.
28
25
  */
29
- export declare class RuiGrid extends RadiantElement<RuiGridBindings> {
26
+ export declare class RuiGrid extends RadiantElement {
30
27
  label: string;
31
28
  protected onConnected(): void;
32
29
  private getRows;
33
30
  onKeydown(event: KeyboardEvent): void;
34
31
  }
35
- export {};
@@ -1,2 +1,2 @@
1
- import{RadiantElement as oe,customElement as _e,event as be,onEvent as C,onUpdated as ve,prop as v,query as S}from"@ecopages/radiant";function D(e,t,i){let r=Number.isFinite(e)?e:0,h=Number.isFinite(t)?t:100,s=Math.min(r,h),l=Math.max(r,h),n=Number.isFinite(i)&&i>0?i:1,m=l-s,f=u=>{let _=Number.isFinite(u)?u:s,w=s+Math.round((_-s)/n)*n;return Math.min(l,Math.max(s,w))};return{lowerBound:s,upperBound:l,step:n,clamp:f,ratioFor:u=>m===0?0:(f(u)-s)/m,valueFromRatio:u=>{let _=Math.min(1,Math.max(0,Number.isFinite(u)?u:0));return f(s+_*m)}}}function ht(e,t,i){switch(i){case"ArrowRight":case"ArrowUp":return e.clamp(t+e.step);case"ArrowLeft":case"ArrowDown":return e.clamp(t-e.step);case"Home":return e.lowerBound;case"End":return e.upperBound;case"PageUp":return e.clamp(t+e.step*10);case"PageDown":return e.clamp(t-e.step*10);default:return}}var dt=120,z=300,ue=14,ce=z+(360-z)/2;function he(e){return Math.min(100,Math.max(0,Number.isFinite(e)?Number(e):ue))}function de(e,t,i){return i.replace("{value}",e.toFixed(t<1?2:0))}function X(e,t,i,r,h,s){let l=D(t,i,r),n=he(h),m=50-n/2,f=2*Math.PI*m,u=z/360*f,_=l.clamp(e);return{startAngle:dt,strokeWidth:n,radius:m,circumference:f,arcLength:u,progressLength:l.ratioFor(_)*u,valueText:de(_,l.step,s)}}function H(e,t,i,r){if(i.width===0||i.height===0)return null;let s=(Math.atan2(t-(i.top+i.height/2),e-(i.left+i.width/2))*180/Math.PI-dt+360)%360,l=s<=z?s:s<=ce?z:0;return r.valueFromRatio(l/z)}var pt,gt,mt,ft,_t,bt,vt,Tt,yt,wt,xt,kt,Pt,Vt,Et,Rt,At,St,It,Kt,Lt,Mt,Bt,Ot,Dt,zt,Nt,jt,Ct,$t,Ft,Ut,Wt,Gt,Xt,Yt,qt,Jt,Qt,Zt,Ht,te,ee,ie,re,ne;function pe(e,t,i,r,h,s){var l,n,m,f,u,_,w,$=Symbol.metadata||Symbol.for("Symbol.metadata"),L=Object.defineProperty,E=Object.create,d=[E(null),E(null)],M=t.length;function B(a,x,T){return function(o,c){x&&(c=o,o=e);for(var k=0;k<a.length;k++)c=a[k].apply(o,T?[c]:[]);return T?c:o}}function R(a,x,T,o){if(typeof a!="function"&&(o||a!==void 0))throw new TypeError(x+" must "+(T||"be")+" a function"+(o?"":" or undefined"));return a}function et(a,x,T,o,c,k,I,y,P,V,rt){function Y(g){if(!rt(g))throw new TypeError("Attempted to access private element on non-instance")}var q=[].concat(x[0]),nt=x[3],J=!I,N=c===1,at=c===3,ot=c===4,F=c===2;function U(g,O,ut){return function(G,ct){return O&&(ct=G,G=a),ut&&ut(G),p[g].call(G,ct)}}if(!J){var p={},Q=[],A=at?"get":ot||N?"set":"value";if(P?(V||N?p={get:ae(function(){return nt(this)},o,"get"),set:function(g){x[4](this,g)}}:p[A]=nt,V||ae(p[A],o,F?"":A)):V||(p=Object.getOwnPropertyDescriptor(a,o)),!V&&!P){if((n=d[+y][o])&&(n^c)!==7)throw Error("Decorating two elements with the same name ("+p[A].name+") is not supported yet");d[+y][o]=c<3?1:c}}for(var b=a,W=q.length-1;W>=0;W-=T?2:1){var st=R(q[W],"A decorator","be",!0),lt=T?q[W-1]:void 0,Z={},j={kind:["field","accessor","method","getter","setter","class"][c],name:o,metadata:l,addInitializer:function(g,O){if(g.v)throw new TypeError("attempted to call addInitializer after decoration was finished");R(O,"An initializer","be",!0),k.push(O)}.bind(null,Z)};if(J)n=st.call(lt,b,j),Z.v=1,R(n,"class decorators","return")&&(b=n);else if(j.static=y,j.private=P,n=j.access={has:P?rt.bind():function(g){return o in g}},ot||(n.get=P?F?function(g){return Y(g),p.value}:U("get",0,Y):function(g){return g[o]}),F||at||(n.set=P?U("set",0,Y):function(g,O){g[o]=O}),b=st.call(lt,N?{get:p.get,set:p.set}:p[A],j),Z.v=1,N){if(typeof b=="object"&&b)(n=R(b.get,"accessor.get"))&&(p.get=n),(n=R(b.set,"accessor.set"))&&(p.set=n),(n=R(b.init,"accessor.init"))&&Q.unshift(n);else if(b!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else R(b,(V?"field":"method")+" decorators","return")&&(V?Q.unshift(b):p[A]=b)}return c<2&&I.push(B(Q,y,1),B(k,y,0)),V||J||(P?N?I.splice(-1,0,U("get",y),U("set",y)):I.push(F?p[A]:R.call.bind(p[A])):L(a,o,p)),b}function it(a){return L(a,$,{configurable:!0,enumerable:!0,value:l})}return s!==void 0&&(l=s[$]),l=E(l??null),u=[],_=function(a){a&&u.push(B(a))},w=function(a,x){for(var T=0;T<i.length;T++){var o=i[T],c=o[1],k=7&c;if((8&c)==a&&!k==x){var I=o[2],y=!!o[3],P=16&c;et(a?e:e.prototype,o,P,y?"#"+I:ge(I),k,k<2?[]:a?f=f||[]:m=m||[],u,!!a,y,x,a&&y?function(V){return fe(V)===e}:h)}}},w(8,0),w(0,0),w(8,1),w(0,1),_(m),_(f),n=u,M||it(e),{e:n,get c(){var a=[];return M&&[it(e=et(e,[t],r,e.name,5,a)),B(a,1)]}}}function ge(e){var t=me(e,"string");return typeof t=="symbol"?t:t+""}function me(e,t){if(typeof e!="object"||!e)return e;var i=e[Symbol.toPrimitive];if(i!==void 0){var r=i.call(e,t||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function ae(e,t,i){typeof t=="symbol"&&(t=(t=t.description)?"["+t+"]":"");try{Object.defineProperty(e,"name",{configurable:!0,value:i?i+" "+t:t})}catch{}return e}function fe(e){if(Object(e)!==e)throw TypeError("right-hand side of 'in' should be an object, got "+(e!==null?typeof e:"null"));return e}var le,se=class extends oe{static{({e:[mt,ft,_t,bt,vt,Tt,yt,wt,xt,kt,Pt,Vt,Et,Rt,At,St,It,Kt,Lt,Mt,Bt,Ot,Dt,zt,Nt,jt,Ct,$t,Ft,Ut,Wt,Gt,Xt,Yt,qt,Jt,Qt,Zt,Ht,te,ee,ie,re,ne,pt],c:[le,gt]}=pe(this,[_e("rui-knob")],[[v({type:Number,reflect:!0,defaultValue:50}),0,"value"],[v({type:Number,defaultValue:0}),0,"min"],[v({type:Number,defaultValue:100}),0,"max"],[v({type:Number,defaultValue:1}),0,"step"],[v({type:Boolean,reflect:!0,defaultValue:!1}),0,"disabled"],[v({type:Boolean,attribute:"read-only",reflect:!0,defaultValue:!1}),0,"readOnly"],[v({type:String,defaultValue:""}),0,"label"],[v({type:String,defaultValue:""}),0,"name"],[v({type:Number}),0,"size"],[v({type:Number,attribute:"stroke-width",defaultValue:14}),0,"strokeWidth"],[v({type:Boolean,attribute:"show-value",defaultValue:!0}),0,"showValue"],[v({type:String,attribute:"value-position",defaultValue:"center"}),0,"valuePosition"],[v({type:String,attribute:"value-template",defaultValue:"{value}"}),0,"valueTemplate"],[be({name:"rui-change",bubbles:!0,composed:!0}),0,"changeEvent"],[S({ref:"root"}),0,"rootTarget"],[S({ref:"label"}),0,"labelTarget"],[S({ref:"control"}),0,"controlTarget"],[S({ref:"track"}),0,"trackTarget"],[S({ref:"progress"}),0,"progressTarget"],[S({ref:"centerValue"}),0,"centerValueTarget"],[S({ref:"belowValue"}),0,"belowValueTarget"],[S({ref:"input"}),0,"inputTarget"],[ve(["value","min","max","step","disabled","readOnly","name","label","size","strokeWidth","showValue","valuePosition","valueTemplate"]),2,"onPropsUpdated"],[C({ref:"control",type:"pointerdown"}),2,"onPointerDown"],[C({ref:"control",type:"pointermove"}),2,"onPointerMove"],[C({ref:"control",type:"pointerup"}),2,"onPointerUp"],[C({ref:"control",type:"pointercancel"}),2,"onPointerCancel"],[C({ref:"control",type:"keydown"}),2,"onKeydown"]],0,void 0,oe))}value=(pt(this),mt(this));min=(ft(this),_t(this));max=(bt(this),vt(this));step=(Tt(this),yt(this));disabled=(wt(this),xt(this));readOnly=(kt(this),Pt(this));label=(Vt(this),Et(this));name=(Rt(this),At(this));size=(St(this),It(this));strokeWidth=(Kt(this),Lt(this));showValue=(Mt(this),Bt(this));valuePosition=(Ot(this),Dt(this));valueTemplate=(zt(this),Nt(this));changeEvent=(jt(this),Ct(this));rootTarget=($t(this),Ft(this));labelTarget=(Ut(this),Wt(this));controlTarget=(Gt(this),Xt(this));trackTarget=(Yt(this),qt(this));progressTarget=(Jt(this),Qt(this));centerValueTarget=(Zt(this),Ht(this));belowValueTarget=(te(this),ee(this));inputTarget=(ie(this),re(this));activePointerId=(ne(this),null);lastEmitted=null;onConnected(){this.syncPresentation()}onPropsUpdated(){this.syncPresentation()}get numericRange(){return D(this.min,this.max,this.step)}get resolvedSize(){return typeof this.size=="number"&&Number.isFinite(this.size)&&this.size>0?this.size:void 0}get resolvedValuePosition(){return this.valuePosition==="below"?"below":"center"}paint(t){let i=X(t,this.min,this.max,this.step,this.strokeWidth,this.valueTemplate),r=this.resolvedValuePosition;this.rootTarget?.classList.toggle("rui-knob--value-below",r==="below"),this.labelTarget?.toggleAttribute("hidden",!this.label),this.labelTarget&&(this.labelTarget.textContent=this.label),this.resolvedSize?this.style.setProperty("--rui-knob-size",`${this.resolvedSize}px`):this.style.removeProperty("--rui-knob-size"),this.controlTarget&&(this.controlTarget.setAttribute("aria-valuemin",String(this.numericRange.lowerBound)),this.controlTarget.setAttribute("aria-valuemax",String(this.numericRange.upperBound)),this.controlTarget.setAttribute("aria-valuenow",String(t)),this.controlTarget.setAttribute("aria-valuetext",i.valueText),this.label?this.controlTarget.setAttribute("aria-label",this.label):this.controlTarget.removeAttribute("aria-label"),this.controlTarget.setAttribute("aria-readonly",String(this.readOnly)),this.controlTarget.disabled=this.disabled);for(let h of[this.trackTarget,this.progressTarget])h?.setAttribute("r",String(i.radius)),h?.setAttribute("stroke-width",String(i.strokeWidth));this.trackTarget?.setAttribute("stroke-dasharray",`${i.arcLength} ${i.circumference}`),this.progressTarget?.setAttribute("stroke-dasharray",`${i.progressLength} ${i.circumference}`);for(let[h,s]of[[this.centerValueTarget,this.showValue&&r==="center"],[this.belowValueTarget,this.showValue&&r==="below"]])h&&(h.textContent=i.valueText,h.toggleAttribute("hidden",!s));this.inputTarget&&(this.inputTarget.value=String(t),this.name?this.inputTarget.name=this.name:this.inputTarget.removeAttribute("name"),this.inputTarget.disabled=this.disabled)}syncPresentation(){let t=this.numericRange.clamp(this.value);this.paint(t),this.value!==t&&(this.value=t)}commitValue(t){if(this.disabled||this.readOnly)return;let i=this.numericRange.clamp(t);this.paint(i),i!==this.value&&(this.value=i,this.lastEmitted!==i&&(this.lastEmitted=i,this.changeEvent.emit({value:i})))}onPointerDown(t){if(t.button!==0||this.disabled||this.readOnly)return;this.activePointerId=t.pointerId,this.lastEmitted=this.value,this.controlTarget.setPointerCapture(t.pointerId);let i=this.controlTarget.getBoundingClientRect(),r=H(t.clientX,t.clientY,i,this.numericRange);r!=null&&this.commitValue(r),t.preventDefault()}onPointerMove(t){if(t.pointerId!==this.activePointerId)return;let i=this.controlTarget.getBoundingClientRect(),r=H(t.clientX,t.clientY,i,this.numericRange);r!=null&&this.commitValue(r)}onPointerUp(t){t.pointerId===this.activePointerId&&(this.controlTarget.releasePointerCapture(t.pointerId),this.activePointerId=null)}onPointerCancel(t){t.pointerId===this.activePointerId&&(this.controlTarget.hasPointerCapture(t.pointerId)&&this.controlTarget.releasePointerCapture(t.pointerId),this.activePointerId=null)}onKeydown(t){if(this.disabled||this.readOnly)return;let i=ht(this.numericRange,this.value,t.key);i!=null&&(t.preventDefault(),this.lastEmitted=this.value,this.commitValue(i))}static{gt()}};import{jsx as K,jsxs as tt}from"@ecopages/jsx/jsx-runtime";function Te({value:e=50,min:t=0,max:i=100,step:r=1,disabled:h=!1,readOnly:s=!1,label:l,name:n,size:m,strokeWidth:f=14,showValue:u=!0,valuePosition:_="center",valueTemplate:w="{value}",...$}){let L=D(t,i,r),E=L.clamp(e),d=X(E,t,i,r,f,w),M=_==="below",B=m?{"--rui-knob-size":`${m}px`}:void 0;return K("rui-knob",{...$,value:E,min:t,max:i,step:r,disabled:h,"prop:readOnly":s,label:l,name:n,size:m,strokeWidth:f,showValue:u,valuePosition:_,valueTemplate:w,style:B,children:tt("div",{class:M?"rui-knob rui-knob--value-below":"rui-knob","data-ref":"root",children:[K("span",{class:"rui-knob__label","data-ref":"label",hidden:!l,children:l}),tt("button",{type:"button",class:"rui-knob__control","data-ref":"control","data-knob-control":!0,role:"slider","aria-label":l||void 0,"aria-valuemin":L.lowerBound,"aria-valuemax":L.upperBound,"aria-valuenow":E,"aria-valuetext":d.valueText,"aria-readonly":s,disabled:h,children:[tt("svg",{class:"rui-knob__svg",viewBox:"0 0 100 100","aria-hidden":"true",children:[K("circle",{class:"rui-knob__track","data-ref":"track",cx:"50",cy:"50",r:d.radius,fill:"none","stroke-width":d.strokeWidth,"stroke-dasharray":`${d.arcLength} ${d.circumference}`,transform:`rotate(${d.startAngle} 50 50)`}),K("circle",{class:"rui-knob__progress","data-ref":"progress",cx:"50",cy:"50",r:d.radius,fill:"none","stroke-width":d.strokeWidth,"stroke-dasharray":`${d.progressLength} ${d.circumference}`,transform:`rotate(${d.startAngle} 50 50)`})]}),K("span",{class:"rui-knob__value","data-ref":"centerValue","aria-hidden":"true",hidden:!u||M,children:d.valueText})]}),K("span",{class:"rui-knob__value rui-knob__value--below","data-ref":"belowValue","aria-hidden":"true",hidden:!u||!M,children:d.valueText}),K("input",{"data-ref":"input",type:"hidden",name:n||void 0,value:E})]})})}export{Te as RuiKnob,le as RuiKnobElement};
1
+ import{RadiantElement as ce,customElement as xe,event as we,onEvent as C,onUpdated as ke,prop as g,query as S}from"@ecopages/radiant";function pe(e){if(!Number.isFinite(e)||e<=0)return 0;let t=e.toString().match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);if(!t)return 0;let i=t[1]?.length??0,r=t[2]?Number(t[2]):0;return Math.min(15,Math.max(0,i-r))}function ht(e,t){return typeof t=="number"&&Number.isFinite(t)&&t>=0?Math.min(15,Math.round(t)):pe(e)}function dt(e,t){return Number.isFinite(e)?e.toFixed(t):""}function K(e,t,i){let r=Number.isFinite(e)?e:0,h=Number.isFinite(t)?t:100,s=Math.min(r,h),l=Math.max(r,h),n=Number.isFinite(i)&&i>0?i:1,f=l-s,_=u=>{let b=Number.isFinite(u)?u:s,v=s+Math.round((b-s)/n)*n;return Math.min(l,Math.max(s,v))};return{lowerBound:s,upperBound:l,step:n,clamp:_,ratioFor:u=>f===0?0:(_(u)-s)/f,valueFromRatio:u=>{let b=Math.min(1,Math.max(0,Number.isFinite(u)?u:0));return _(s+b*f)}}}function pt(e,t,i){switch(i){case"ArrowRight":case"ArrowUp":return e.clamp(t+e.step);case"ArrowLeft":case"ArrowDown":return e.clamp(t-e.step);case"Home":return e.lowerBound;case"End":return e.upperBound;case"PageUp":return e.clamp(t+e.step*10);case"PageDown":return e.clamp(t-e.step*10);default:return}}var mt=120,B=300,me=14,fe=B+(360-B)/2;function ge(e){return Math.min(100,Math.max(0,Number.isFinite(e)?Number(e):me))}function _e(e,t,i){return i.replace("{value}",dt(e,t))}function X(e,t,i,r,h,s,l){let n=K(t,i,r),f=ge(h),_=50-f/2,u=2*Math.PI*_,b=B/360*u,v=n.clamp(e),R=ht(r,l);return{startAngle:mt,strokeWidth:f,radius:_,circumference:u,arcLength:b,progressLength:n.ratioFor(v)*b,valueText:_e(v,R,s)}}function H(e,t,i,r){if(i.width===0||i.height===0)return null;let s=(Math.atan2(t-(i.top+i.height/2),e-(i.left+i.width/2))*180/Math.PI-mt+360)%360,l=s<=B?s:s<=fe?B:0;return r.valueFromRatio(l/B)}var ft,gt,_t,bt,vt,Tt,yt,xt,wt,kt,Vt,Pt,At,Et,It,St,Rt,Nt,Mt,Lt,Dt,Ot,Kt,Bt,Ft,zt,Ct,Ut,jt,$t,Wt,Gt,Xt,Yt,qt,Jt,Qt,Zt,Ht,te,ee,ie,re,ne,ae,oe,se,le;function be(e,t,i,r,h,s){var l,n,f,_,u,b,v,R=Symbol.metadata||Symbol.for("Symbol.metadata"),U=Object.defineProperty,N=Object.create,M=[N(null),N(null)],d=t.length;function E(a,k,y){return function(o,c){k&&(c=o,o=e);for(var V=0;V<a.length;V++)c=a[V].apply(o,y?[c]:[]);return y?c:o}}function w(a,k,y,o){if(typeof a!="function"&&(o||a!==void 0))throw new TypeError(k+" must "+(y||"be")+" a function"+(o?"":" or undefined"));return a}function et(a,k,y,o,c,V,L,x,P,A,rt){function Y(m){if(!rt(m))throw new TypeError("Attempted to access private element on non-instance")}var q=[].concat(k[0]),nt=k[3],J=!L,F=c===1,at=c===3,ot=c===4,j=c===2;function $(m,O,ut){return function(G,ct){return O&&(ct=G,G=a),ut&&ut(G),p[m].call(G,ct)}}if(!J){var p={},Q=[],I=at?"get":ot||F?"set":"value";if(P?(A||F?p={get:ue(function(){return nt(this)},o,"get"),set:function(m){k[4](this,m)}}:p[I]=nt,A||ue(p[I],o,j?"":I)):A||(p=Object.getOwnPropertyDescriptor(a,o)),!A&&!P){if((n=M[+x][o])&&(n^c)!==7)throw Error("Decorating two elements with the same name ("+p[I].name+") is not supported yet");M[+x][o]=c<3?1:c}}for(var T=a,W=q.length-1;W>=0;W-=y?2:1){var st=w(q[W],"A decorator","be",!0),lt=y?q[W-1]:void 0,Z={},z={kind:["field","accessor","method","getter","setter","class"][c],name:o,metadata:l,addInitializer:function(m,O){if(m.v)throw new TypeError("attempted to call addInitializer after decoration was finished");w(O,"An initializer","be",!0),V.push(O)}.bind(null,Z)};if(J)n=st.call(lt,T,z),Z.v=1,w(n,"class decorators","return")&&(T=n);else if(z.static=x,z.private=P,n=z.access={has:P?rt.bind():function(m){return o in m}},ot||(n.get=P?j?function(m){return Y(m),p.value}:$("get",0,Y):function(m){return m[o]}),j||at||(n.set=P?$("set",0,Y):function(m,O){m[o]=O}),T=st.call(lt,F?{get:p.get,set:p.set}:p[I],z),Z.v=1,F){if(typeof T=="object"&&T)(n=w(T.get,"accessor.get"))&&(p.get=n),(n=w(T.set,"accessor.set"))&&(p.set=n),(n=w(T.init,"accessor.init"))&&Q.unshift(n);else if(T!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else w(T,(A?"field":"method")+" decorators","return")&&(A?Q.unshift(T):p[I]=T)}return c<2&&L.push(E(Q,x,1),E(V,x,0)),A||J||(P?F?L.splice(-1,0,$("get",x),$("set",x)):L.push(j?p[I]:w.call.bind(p[I])):U(a,o,p)),T}function it(a){return U(a,R,{configurable:!0,enumerable:!0,value:l})}return s!==void 0&&(l=s[R]),l=N(l??null),u=[],b=function(a){a&&u.push(E(a))},v=function(a,k){for(var y=0;y<i.length;y++){var o=i[y],c=o[1],V=7&c;if((8&c)==a&&!V==k){var L=o[2],x=!!o[3],P=16&c;et(a?e:e.prototype,o,P,x?"#"+L:ve(L),V,V<2?[]:a?_=_||[]:f=f||[],u,!!a,x,k,a&&x?function(A){return ye(A)===e}:h)}}},v(8,0),v(0,0),v(8,1),v(0,1),b(f),b(_),n=u,d||it(e),{e:n,get c(){var a=[];return d&&[it(e=et(e,[t],r,e.name,5,a)),E(a,1)]}}}function ve(e){var t=Te(e,"string");return typeof t=="symbol"?t:t+""}function Te(e,t){if(typeof e!="object"||!e)return e;var i=e[Symbol.toPrimitive];if(i!==void 0){var r=i.call(e,t||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function ue(e,t,i){typeof t=="symbol"&&(t=(t=t.description)?"["+t+"]":"");try{Object.defineProperty(e,"name",{configurable:!0,value:i?i+" "+t:t})}catch{}return e}function ye(e){if(Object(e)!==e)throw TypeError("right-hand side of 'in' should be an object, got "+(e!==null?typeof e:"null"));return e}var de,he=class extends ce{static{({e:[_t,bt,vt,Tt,yt,xt,wt,kt,Vt,Pt,At,Et,It,St,Rt,Nt,Mt,Lt,Dt,Ot,Kt,Bt,Ft,zt,Ct,Ut,jt,$t,Wt,Gt,Xt,Yt,qt,Jt,Qt,Zt,Ht,te,ee,ie,re,ne,ae,oe,se,le,ft],c:[de,gt]}=be(this,[xe("rui-knob")],[[g({type:Number,reflect:!0,defaultValue:50}),0,"value"],[g({type:Number,defaultValue:0}),0,"min"],[g({type:Number,defaultValue:100}),0,"max"],[g({type:Number,defaultValue:1}),0,"step"],[g({type:Number,attribute:"value-precision",defaultValue:Number.NaN}),0,"valuePrecision"],[g({type:Boolean,reflect:!0,defaultValue:!1}),0,"disabled"],[g({type:Boolean,attribute:"read-only",reflect:!0,defaultValue:!1}),0,"readOnly"],[g({type:String,defaultValue:""}),0,"label"],[g({type:String,defaultValue:""}),0,"name"],[g({type:Number}),0,"size"],[g({type:Number,attribute:"stroke-width",defaultValue:14}),0,"strokeWidth"],[g({type:Boolean,attribute:"show-value",defaultValue:!0}),0,"showValue"],[g({type:String,attribute:"value-position",defaultValue:"center"}),0,"valuePosition"],[g({type:String,attribute:"value-template",defaultValue:"{value}"}),0,"valueTemplate"],[we({name:"rui-change",bubbles:!0,composed:!0}),0,"changeEvent"],[S({ref:"root"}),0,"rootTarget"],[S({ref:"label"}),0,"labelTarget"],[S({ref:"control"}),0,"controlTarget"],[S({ref:"track"}),0,"trackTarget"],[S({ref:"progress"}),0,"progressTarget"],[S({ref:"centerValue"}),0,"centerValueTarget"],[S({ref:"belowValue"}),0,"belowValueTarget"],[S({ref:"input"}),0,"inputTarget"],[ke(["value","min","max","step","valuePrecision","disabled","readOnly","name","label","size","strokeWidth","showValue","valuePosition","valueTemplate"]),2,"onPropsUpdated"],[C({ref:"control",type:"pointerdown"}),2,"onPointerDown"],[C({ref:"control",type:"pointermove"}),2,"onPointerMove"],[C({ref:"control",type:"pointerup"}),2,"onPointerUp"],[C({ref:"control",type:"pointercancel"}),2,"onPointerCancel"],[C({ref:"control",type:"keydown"}),2,"onKeydown"]],0,void 0,ce))}value=(ft(this),_t(this));min=(bt(this),vt(this));max=(Tt(this),yt(this));step=(xt(this),wt(this));valuePrecision=(kt(this),Vt(this));disabled=(Pt(this),At(this));readOnly=(Et(this),It(this));label=(St(this),Rt(this));name=(Nt(this),Mt(this));size=(Lt(this),Dt(this));strokeWidth=(Ot(this),Kt(this));showValue=(Bt(this),Ft(this));valuePosition=(zt(this),Ct(this));valueTemplate=(Ut(this),jt(this));changeEvent=($t(this),Wt(this));rootTarget=(Gt(this),Xt(this));labelTarget=(Yt(this),qt(this));controlTarget=(Jt(this),Qt(this));trackTarget=(Zt(this),Ht(this));progressTarget=(te(this),ee(this));centerValueTarget=(ie(this),re(this));belowValueTarget=(ne(this),ae(this));inputTarget=(oe(this),se(this));activePointerId=(le(this),null);lastEmitted=null;onConnected(){this.syncPresentation()}onPropsUpdated(){this.syncPresentation()}get numericRange(){return K(this.min,this.max,this.step)}get resolvedSize(){return typeof this.size=="number"&&Number.isFinite(this.size)&&this.size>0?this.size:void 0}get resolvedValuePosition(){return this.valuePosition==="below"?"below":"center"}paint(t){let i=X(t,this.min,this.max,this.step,this.strokeWidth,this.valueTemplate,this.valuePrecision),r=this.resolvedValuePosition;this.rootTarget?.classList.toggle("rui-knob--value-below",r==="below"),this.labelTarget?.toggleAttribute("hidden",!this.label),this.labelTarget&&(this.labelTarget.textContent=this.label),this.resolvedSize?this.style.setProperty("--rui-knob-size",`${this.resolvedSize}px`):this.style.removeProperty("--rui-knob-size"),this.controlTarget&&(this.controlTarget.setAttribute("aria-valuemin",String(this.numericRange.lowerBound)),this.controlTarget.setAttribute("aria-valuemax",String(this.numericRange.upperBound)),this.controlTarget.setAttribute("aria-valuenow",String(t)),this.controlTarget.setAttribute("aria-valuetext",i.valueText),this.label?this.controlTarget.setAttribute("aria-label",this.label):this.controlTarget.removeAttribute("aria-label"),this.controlTarget.setAttribute("aria-readonly",String(this.readOnly)),this.controlTarget.disabled=this.disabled);for(let h of[this.trackTarget,this.progressTarget])h?.setAttribute("r",String(i.radius)),h?.setAttribute("stroke-width",String(i.strokeWidth));this.trackTarget?.setAttribute("stroke-dasharray",`${i.arcLength} ${i.circumference}`),this.progressTarget?.setAttribute("stroke-dasharray",`${i.progressLength} ${i.circumference}`);for(let[h,s]of[[this.centerValueTarget,this.showValue&&r==="center"],[this.belowValueTarget,this.showValue&&r==="below"]])h&&(h.textContent=i.valueText,h.toggleAttribute("hidden",!s));this.inputTarget&&(this.inputTarget.value=String(t),this.name?this.inputTarget.name=this.name:this.inputTarget.removeAttribute("name"),this.inputTarget.disabled=this.disabled)}syncPresentation(){let t=this.numericRange.clamp(this.value);this.paint(t),this.value!==t&&(this.value=t)}commitValue(t){if(this.disabled||this.readOnly)return;let i=this.numericRange.clamp(t);this.paint(i),i!==this.value&&(this.value=i,this.lastEmitted!==i&&(this.lastEmitted=i,this.changeEvent.emit({value:i})))}onPointerDown(t){if(t.button!==0||this.disabled||this.readOnly)return;this.activePointerId=t.pointerId,this.lastEmitted=this.value,this.controlTarget.setPointerCapture(t.pointerId);let i=this.controlTarget.getBoundingClientRect(),r=H(t.clientX,t.clientY,i,this.numericRange);r!=null&&this.commitValue(r),t.preventDefault()}onPointerMove(t){if(t.pointerId!==this.activePointerId)return;let i=this.controlTarget.getBoundingClientRect(),r=H(t.clientX,t.clientY,i,this.numericRange);r!=null&&this.commitValue(r)}onPointerUp(t){t.pointerId===this.activePointerId&&(this.controlTarget.releasePointerCapture(t.pointerId),this.activePointerId=null)}onPointerCancel(t){t.pointerId===this.activePointerId&&(this.controlTarget.hasPointerCapture(t.pointerId)&&this.controlTarget.releasePointerCapture(t.pointerId),this.activePointerId=null)}onKeydown(t){if(this.disabled||this.readOnly)return;let i=pt(this.numericRange,this.value,t.key);i!=null&&(t.preventDefault(),this.lastEmitted=this.value,this.commitValue(i))}static{gt()}};import{jsx as D,jsxs as tt}from"@ecopages/jsx/jsx-runtime";function Ve({value:e=50,min:t=0,max:i=100,step:r=1,disabled:h=!1,readOnly:s=!1,label:l,name:n,size:f,strokeWidth:_=14,showValue:u=!0,valuePosition:b="center",valueTemplate:v="{value}",valuePrecision:R,...U}){let N=K(t,i,r),M=N.clamp(e),d=X(M,t,i,r,_,v,R),E=b==="below",w=f?{"--rui-knob-size":`${f}px`}:void 0;return D("rui-knob",{...U,value:M,min:t,max:i,step:r,disabled:h,"prop:readOnly":s,label:l,name:n,size:f,strokeWidth:_,showValue:u,valuePosition:b,valueTemplate:v,valuePrecision:R,style:w,children:tt("div",{class:E?"rui-knob rui-knob--value-below":"rui-knob","data-ref":"root",children:[D("span",{class:"rui-knob__label","data-ref":"label",hidden:!l,children:l}),tt("button",{type:"button",class:"rui-knob__control","data-ref":"control","data-knob-control":!0,role:"slider","aria-label":l||void 0,"aria-valuemin":N.lowerBound,"aria-valuemax":N.upperBound,"aria-valuenow":M,"aria-valuetext":d.valueText,"aria-readonly":s,disabled:h,children:[tt("svg",{class:"rui-knob__svg",viewBox:"0 0 100 100","aria-hidden":"true",children:[D("circle",{class:"rui-knob__track","data-ref":"track",cx:"50",cy:"50",r:d.radius,fill:"none","stroke-width":d.strokeWidth,"stroke-dasharray":`${d.arcLength} ${d.circumference}`,transform:`rotate(${d.startAngle} 50 50)`}),D("circle",{class:"rui-knob__progress","data-ref":"progress",cx:"50",cy:"50",r:d.radius,fill:"none","stroke-width":d.strokeWidth,"stroke-dasharray":`${d.progressLength} ${d.circumference}`,transform:`rotate(${d.startAngle} 50 50)`})]}),D("span",{class:"rui-knob__value","data-ref":"centerValue","aria-hidden":"true",hidden:!u||E,children:d.valueText})]}),D("span",{class:"rui-knob__value rui-knob__value--below","data-ref":"belowValue","aria-hidden":"true",hidden:!u||!E,children:d.valueText}),D("input",{"data-ref":"input",type:"hidden",name:n||void 0,value:M})]})})}export{Ve as RuiKnob,de as RuiKnobElement};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/ui/knob/knob.script.tsx", "../../../../src/components/ui/shared/numeric-range.ts", "../../../../src/components/ui/knob/knob-geometry.ts", "../../../../src/components/ui/knob/knob.tsx"],
4
- "sourcesContent": ["let _initProto, _initClass, _init_value, _init_extra_value, _init_min, _init_extra_min, _init_max, _init_extra_max, _init_step, _init_extra_step, _init_disabled, _init_extra_disabled, _init_readOnly, _init_extra_readOnly, _init_label, _init_extra_label, _init_name, _init_extra_name, _init_size, _init_extra_size, _init_strokeWidth, _init_extra_strokeWidth, _init_showValue, _init_extra_showValue, _init_valuePosition, _init_extra_valuePosition, _init_valueTemplate, _init_extra_valueTemplate, _init_changeEvent, _init_extra_changeEvent, _init_rootTarget, _init_extra_rootTarget, _init_labelTarget, _init_extra_labelTarget, _init_controlTarget, _init_extra_controlTarget, _init_trackTarget, _init_extra_trackTarget, _init_progressTarget, _init_extra_progressTarget, _init_centerValueTarget, _init_extra_centerValueTarget, _init_belowValueTarget, _init_extra_belowValueTarget, _init_inputTarget, _init_extra_inputTarget;\nfunction _applyDecs(e, t, n, r, o, i) { var a, c, u, s, f, l, p, d = Symbol.metadata || Symbol.for(\"Symbol.metadata\"), m = Object.defineProperty, h = Object.create, y = [h(null), h(null)], v = t.length; function g(t, n, r) { return function (o, i) { n && (i = o, o = e); for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []); return r ? i : o; }; } function b(e, t, n, r) { if (\"function\" != typeof e && (r || void 0 !== e)) throw new TypeError(t + \" must \" + (n || \"be\") + \" a function\" + (r ? \"\" : \" or undefined\")); return e; } function applyDec(e, t, n, r, o, i, u, s, f, l, p) { function d(e) { if (!p(e)) throw new TypeError(\"Attempted to access private element on non-instance\"); } var h = [].concat(t[0]), v = t[3], w = !u, D = 1 === o, S = 3 === o, j = 4 === o, E = 2 === o; function I(t, n, r) { return function (o, i) { return n && (i = o, o = e), r && r(o), P[t].call(o, i); }; } if (!w) { var P = {}, k = [], F = S ? \"get\" : j || D ? \"set\" : \"value\"; if (f ? (l || D ? P = { get: _setFunctionName(function () { return v(this); }, r, \"get\"), set: function (e) { t[4](this, e); } } : P[F] = v, l || _setFunctionName(P[F], r, E ? \"\" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) { if ((c = y[+s][r]) && 7 !== (c ^ o)) throw Error(\"Decorating two elements with the same name (\" + P[F].name + \") is not supported yet\"); y[+s][r] = o < 3 ? 1 : o; } } for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) { var T = b(h[O], \"A decorator\", \"be\", !0), z = n ? h[O - 1] : void 0, A = {}, H = { kind: [\"field\", \"accessor\", \"method\", \"getter\", \"setter\", \"class\"][o], name: r, metadata: a, addInitializer: function (e, t) { if (e.v) throw new TypeError(\"attempted to call addInitializer after decoration was finished\"); b(t, \"An initializer\", \"be\", !0), i.push(t); }.bind(null, A) }; if (w) c = T.call(z, N, H), A.v = 1, b(c, \"class decorators\", \"return\") && (N = c);else if (H.static = s, H.private = f, c = H.access = { has: f ? p.bind() : function (e) { return r in e; } }, j || (c.get = f ? E ? function (e) { return d(e), P.value; } : I(\"get\", 0, d) : function (e) { return e[r]; }), E || S || (c.set = f ? I(\"set\", 0, d) : function (e, t) { e[r] = t; }), N = T.call(z, D ? { get: P.get, set: P.set } : P[F], H), A.v = 1, D) { if (\"object\" == typeof N && N) (c = b(N.get, \"accessor.get\")) && (P.get = c), (c = b(N.set, \"accessor.set\")) && (P.set = c), (c = b(N.init, \"accessor.init\")) && k.unshift(c);else if (void 0 !== N) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or undefined\"); } else b(N, (l ? \"field\" : \"method\") + \" decorators\", \"return\") && (l ? k.unshift(N) : P[F] = N); } return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I(\"get\", s), I(\"set\", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N; } function w(e) { return m(e, d, { configurable: !0, enumerable: !0, value: a }); } return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function (e) { e && f.push(g(e)); }, p = function (t, r) { for (var i = 0; i < n.length; i++) { var a = n[i], c = a[1], l = 7 & c; if ((8 & c) == t && !l == r) { var p = a[2], d = !!a[3], m = 16 & c; applyDec(t ? e : e.prototype, a, m, d ? \"#\" + p : _toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) { return _checkInRHS(t) === e; } : o); } } }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), { e: c, get c() { var n = []; return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)]; } }; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _setFunctionName(e, t, n) { \"symbol\" == typeof t && (t = (t = t.description) ? \"[\" + t + \"]\" : \"\"); try { Object.defineProperty(e, \"name\", { configurable: !0, value: n ? n + \" \" + t : t }); } catch (e) {} return e; }\nfunction _checkInRHS(e) { if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? typeof e : \"null\")); return e; }\nimport { RadiantElement, customElement, event, onEvent, onUpdated, prop, query } from \"@ecopages/radiant\";\nimport { createNumericRange, valueFromSliderKey } from \"../shared/numeric-range\";\nimport { createKnobRing, knobValueFromPointer } from \"./knob-geometry\";\nlet _RuiKnob;\nclass RuiKnob extends RadiantElement {\n static {\n ({\n e: [_init_value, _init_extra_value, _init_min, _init_extra_min, _init_max, _init_extra_max, _init_step, _init_extra_step, _init_disabled, _init_extra_disabled, _init_readOnly, _init_extra_readOnly, _init_label, _init_extra_label, _init_name, _init_extra_name, _init_size, _init_extra_size, _init_strokeWidth, _init_extra_strokeWidth, _init_showValue, _init_extra_showValue, _init_valuePosition, _init_extra_valuePosition, _init_valueTemplate, _init_extra_valueTemplate, _init_changeEvent, _init_extra_changeEvent, _init_rootTarget, _init_extra_rootTarget, _init_labelTarget, _init_extra_labelTarget, _init_controlTarget, _init_extra_controlTarget, _init_trackTarget, _init_extra_trackTarget, _init_progressTarget, _init_extra_progressTarget, _init_centerValueTarget, _init_extra_centerValueTarget, _init_belowValueTarget, _init_extra_belowValueTarget, _init_inputTarget, _init_extra_inputTarget, _initProto],\n c: [_RuiKnob, _initClass]\n } = _applyDecs(this, [customElement(\"rui-knob\")], [[prop({\n type: Number,\n reflect: true,\n defaultValue: 50\n }), 0, \"value\"], [prop({\n type: Number,\n defaultValue: 0\n }), 0, \"min\"], [prop({\n type: Number,\n defaultValue: 100\n }), 0, \"max\"], [prop({\n type: Number,\n defaultValue: 1\n }), 0, \"step\"], [prop({\n type: Boolean,\n reflect: true,\n defaultValue: false\n }), 0, \"disabled\"], [prop({\n type: Boolean,\n attribute: \"read-only\",\n reflect: true,\n defaultValue: false\n }), 0, \"readOnly\"], [prop({\n type: String,\n defaultValue: \"\"\n }), 0, \"label\"], [prop({\n type: String,\n defaultValue: \"\"\n }), 0, \"name\"], [prop({\n type: Number\n }), 0, \"size\"], [prop({\n type: Number,\n attribute: \"stroke-width\",\n defaultValue: 14\n }), 0, \"strokeWidth\"], [prop({\n type: Boolean,\n attribute: \"show-value\",\n defaultValue: true\n }), 0, \"showValue\"], [prop({\n type: String,\n attribute: \"value-position\",\n defaultValue: \"center\"\n }), 0, \"valuePosition\"], [prop({\n type: String,\n attribute: \"value-template\",\n defaultValue: \"{value}\"\n }), 0, \"valueTemplate\"], [event({\n name: \"rui-change\",\n bubbles: true,\n composed: true\n }), 0, \"changeEvent\"], [query({\n ref: \"root\"\n }), 0, \"rootTarget\"], [query({\n ref: \"label\"\n }), 0, \"labelTarget\"], [query({\n ref: \"control\"\n }), 0, \"controlTarget\"], [query({\n ref: \"track\"\n }), 0, \"trackTarget\"], [query({\n ref: \"progress\"\n }), 0, \"progressTarget\"], [query({\n ref: \"centerValue\"\n }), 0, \"centerValueTarget\"], [query({\n ref: \"belowValue\"\n }), 0, \"belowValueTarget\"], [query({\n ref: \"input\"\n }), 0, \"inputTarget\"], [onUpdated([\"value\", \"min\", \"max\", \"step\", \"disabled\", \"readOnly\", \"name\", \"label\", \"size\", \"strokeWidth\", \"showValue\", \"valuePosition\", \"valueTemplate\"]), 2, \"onPropsUpdated\"], [onEvent({\n ref: \"control\",\n type: \"pointerdown\"\n }), 2, \"onPointerDown\"], [onEvent({\n ref: \"control\",\n type: \"pointermove\"\n }), 2, \"onPointerMove\"], [onEvent({\n ref: \"control\",\n type: \"pointerup\"\n }), 2, \"onPointerUp\"], [onEvent({\n ref: \"control\",\n type: \"pointercancel\"\n }), 2, \"onPointerCancel\"], [onEvent({\n ref: \"control\",\n type: \"keydown\"\n }), 2, \"onKeydown\"]], 0, void 0, RadiantElement));\n }\n value = (_initProto(this), _init_value(this));\n min = (_init_extra_value(this), _init_min(this));\n max = (_init_extra_min(this), _init_max(this));\n step = (_init_extra_max(this), _init_step(this));\n disabled = (_init_extra_step(this), _init_disabled(this));\n readOnly = (_init_extra_disabled(this), _init_readOnly(this));\n label = (_init_extra_readOnly(this), _init_label(this));\n name = (_init_extra_label(this), _init_name(this));\n size = (_init_extra_name(this), _init_size(this));\n strokeWidth = (_init_extra_size(this), _init_strokeWidth(this));\n showValue = (_init_extra_strokeWidth(this), _init_showValue(this));\n valuePosition = (_init_extra_showValue(this), _init_valuePosition(this));\n valueTemplate = (_init_extra_valuePosition(this), _init_valueTemplate(this));\n changeEvent = (_init_extra_valueTemplate(this), _init_changeEvent(this));\n rootTarget = (_init_extra_changeEvent(this), _init_rootTarget(this));\n labelTarget = (_init_extra_rootTarget(this), _init_labelTarget(this));\n controlTarget = (_init_extra_labelTarget(this), _init_controlTarget(this));\n trackTarget = (_init_extra_controlTarget(this), _init_trackTarget(this));\n progressTarget = (_init_extra_trackTarget(this), _init_progressTarget(this));\n centerValueTarget = (_init_extra_progressTarget(this), _init_centerValueTarget(this));\n belowValueTarget = (_init_extra_centerValueTarget(this), _init_belowValueTarget(this));\n inputTarget = (_init_extra_belowValueTarget(this), _init_inputTarget(this));\n activePointerId = (_init_extra_inputTarget(this), null);\n lastEmitted = null;\n onConnected() {\n this.syncPresentation();\n }\n onPropsUpdated() {\n this.syncPresentation();\n }\n get numericRange() {\n return createNumericRange(this.min, this.max, this.step);\n }\n get resolvedSize() {\n return typeof this.size === \"number\" && Number.isFinite(this.size) && this.size > 0 ? this.size : void 0;\n }\n get resolvedValuePosition() {\n return this.valuePosition === \"below\" ? \"below\" : \"center\";\n }\n paint(value) {\n const ring = createKnobRing(value, this.min, this.max, this.step, this.strokeWidth, this.valueTemplate);\n const valuePosition = this.resolvedValuePosition;\n this.rootTarget?.classList.toggle(\"rui-knob--value-below\", valuePosition === \"below\");\n this.labelTarget?.toggleAttribute(\"hidden\", !this.label);\n if (this.labelTarget) {\n this.labelTarget.textContent = this.label;\n }\n if (this.resolvedSize) {\n this.style.setProperty(\"--rui-knob-size\", `${this.resolvedSize}px`);\n } else {\n this.style.removeProperty(\"--rui-knob-size\");\n }\n if (this.controlTarget) {\n this.controlTarget.setAttribute(\"aria-valuemin\", String(this.numericRange.lowerBound));\n this.controlTarget.setAttribute(\"aria-valuemax\", String(this.numericRange.upperBound));\n this.controlTarget.setAttribute(\"aria-valuenow\", String(value));\n this.controlTarget.setAttribute(\"aria-valuetext\", ring.valueText);\n if (this.label) {\n this.controlTarget.setAttribute(\"aria-label\", this.label);\n } else {\n this.controlTarget.removeAttribute(\"aria-label\");\n }\n this.controlTarget.setAttribute(\"aria-readonly\", String(this.readOnly));\n this.controlTarget.disabled = this.disabled;\n }\n for (const circle of [this.trackTarget, this.progressTarget]) {\n circle?.setAttribute(\"r\", String(ring.radius));\n circle?.setAttribute(\"stroke-width\", String(ring.strokeWidth));\n }\n this.trackTarget?.setAttribute(\"stroke-dasharray\", `${ring.arcLength} ${ring.circumference}`);\n this.progressTarget?.setAttribute(\"stroke-dasharray\", `${ring.progressLength} ${ring.circumference}`);\n for (const [target, visible] of [[this.centerValueTarget, this.showValue && valuePosition === \"center\"], [this.belowValueTarget, this.showValue && valuePosition === \"below\"]]) {\n if (!target) {\n continue;\n }\n target.textContent = ring.valueText;\n target.toggleAttribute(\"hidden\", !visible);\n }\n if (this.inputTarget) {\n this.inputTarget.value = String(value);\n if (this.name) {\n this.inputTarget.name = this.name;\n } else {\n this.inputTarget.removeAttribute(\"name\");\n }\n this.inputTarget.disabled = this.disabled;\n }\n }\n syncPresentation() {\n const value = this.numericRange.clamp(this.value);\n this.paint(value);\n if (this.value !== value) {\n this.value = value;\n }\n }\n commitValue(next) {\n if (this.disabled || this.readOnly) {\n return;\n }\n const value = this.numericRange.clamp(next);\n this.paint(value);\n if (value === this.value) {\n return;\n }\n this.value = value;\n if (this.lastEmitted !== value) {\n this.lastEmitted = value;\n this.changeEvent.emit({\n value\n });\n }\n }\n onPointerDown(event2) {\n if (event2.button !== 0 || this.disabled || this.readOnly) {\n return;\n }\n this.activePointerId = event2.pointerId;\n this.lastEmitted = this.value;\n this.controlTarget.setPointerCapture(event2.pointerId);\n const rect = this.controlTarget.getBoundingClientRect();\n const value = knobValueFromPointer(event2.clientX, event2.clientY, rect, this.numericRange);\n if (value != null) {\n this.commitValue(value);\n }\n event2.preventDefault();\n }\n onPointerMove(event2) {\n if (event2.pointerId !== this.activePointerId) {\n return;\n }\n const rect = this.controlTarget.getBoundingClientRect();\n const value = knobValueFromPointer(event2.clientX, event2.clientY, rect, this.numericRange);\n if (value != null) {\n this.commitValue(value);\n }\n }\n onPointerUp(event2) {\n if (event2.pointerId !== this.activePointerId) {\n return;\n }\n this.controlTarget.releasePointerCapture(event2.pointerId);\n this.activePointerId = null;\n }\n onPointerCancel(event2) {\n if (event2.pointerId !== this.activePointerId) {\n return;\n }\n if (this.controlTarget.hasPointerCapture(event2.pointerId)) {\n this.controlTarget.releasePointerCapture(event2.pointerId);\n }\n this.activePointerId = null;\n }\n onKeydown(event2) {\n if (this.disabled || this.readOnly) {\n return;\n }\n const next = valueFromSliderKey(this.numericRange, this.value, event2.key);\n if (next == null) {\n return;\n }\n event2.preventDefault();\n this.lastEmitted = this.value;\n this.commitValue(next);\n }\n static {\n _initClass();\n }\n}\nexport { _RuiKnob as RuiKnob };", "export const SLIDER_PAGE_STEP_MULTIPLIER = 10;\nexport function createNumericRange(min, max, step) {\n const resolvedMin = Number.isFinite(min) ? min : 0;\n const resolvedMax = Number.isFinite(max) ? max : 100;\n const lowerBound = Math.min(resolvedMin, resolvedMax);\n const upperBound = Math.max(resolvedMin, resolvedMax);\n const resolvedStep = Number.isFinite(step) && step > 0 ? step : 1;\n const span = upperBound - lowerBound;\n const clamp = value => {\n const candidate = Number.isFinite(value) ? value : lowerBound;\n const stepped = lowerBound + Math.round((candidate - lowerBound) / resolvedStep) * resolvedStep;\n return Math.min(upperBound, Math.max(lowerBound, stepped));\n };\n return {\n lowerBound,\n upperBound,\n step: resolvedStep,\n clamp,\n ratioFor: value => span === 0 ? 0 : (clamp(value) - lowerBound) / span,\n valueFromRatio: ratio => {\n const unit = Math.min(1, Math.max(0, Number.isFinite(ratio) ? ratio : 0));\n return clamp(lowerBound + unit * span);\n }\n };\n}\nexport function valueFromSliderKey(range, current, key) {\n switch (key) {\n case \"ArrowRight\":\n case \"ArrowUp\":\n return range.clamp(current + range.step);\n case \"ArrowLeft\":\n case \"ArrowDown\":\n return range.clamp(current - range.step);\n case \"Home\":\n return range.lowerBound;\n case \"End\":\n return range.upperBound;\n case \"PageUp\":\n return range.clamp(current + range.step * SLIDER_PAGE_STEP_MULTIPLIER);\n case \"PageDown\":\n return range.clamp(current - range.step * SLIDER_PAGE_STEP_MULTIPLIER);\n default:\n return void 0;\n }\n}", "import { createNumericRange } from \"../shared/numeric-range\";\nexport const KNOB_START_ANGLE = 120;\nexport const KNOB_ARC_ANGLE = 300;\nexport const KNOB_DEFAULT_STROKE_WIDTH = 14;\nconst KNOB_GAP_MIDPOINT = KNOB_ARC_ANGLE + (360 - KNOB_ARC_ANGLE) / 2;\nexport function resolveKnobStrokeWidth(strokeWidth) {\n return Math.min(100, Math.max(0, Number.isFinite(strokeWidth) ? Number(strokeWidth) : KNOB_DEFAULT_STROKE_WIDTH));\n}\nexport function formatKnobValue(value, step, template) {\n return template.replace(\"{value}\", value.toFixed(step < 1 ? 2 : 0));\n}\nexport function createKnobRing(value, min, max, step, strokeWidth, valueTemplate) {\n const range = createNumericRange(min, max, step);\n const resolvedStrokeWidth = resolveKnobStrokeWidth(strokeWidth);\n const radius = 50 - resolvedStrokeWidth / 2;\n const circumference = 2 * Math.PI * radius;\n const arcLength = KNOB_ARC_ANGLE / 360 * circumference;\n const clamped = range.clamp(value);\n return {\n startAngle: KNOB_START_ANGLE,\n strokeWidth: resolvedStrokeWidth,\n radius,\n circumference,\n arcLength,\n progressLength: range.ratioFor(clamped) * arcLength,\n valueText: formatKnobValue(clamped, range.step, valueTemplate)\n };\n}\nexport function knobValueFromPointer(clientX, clientY, rect, range) {\n if (rect.width === 0 || rect.height === 0) {\n return null;\n }\n const pointerAngle = Math.atan2(clientY - (rect.top + rect.height / 2), clientX - (rect.left + rect.width / 2)) * 180 / Math.PI;\n const alongArc = (pointerAngle - KNOB_START_ANGLE + 360) % 360;\n const clampedAlong = alongArc <= KNOB_ARC_ANGLE ? alongArc : alongArc <= KNOB_GAP_MIDPOINT ? KNOB_ARC_ANGLE : 0;\n return range.valueFromRatio(clampedAlong / KNOB_ARC_ANGLE);\n}", "import { jsx, jsxs } from \"@ecopages/jsx/jsx-runtime\";\nimport { createNumericRange } from \"../shared/numeric-range\";\nimport { createKnobRing } from \"./knob-geometry\";\nimport \"./knob.script\";\nexport function RuiKnob({\n value = 50,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n readOnly = false,\n label,\n name,\n size,\n strokeWidth = 14,\n showValue = true,\n valuePosition = \"center\",\n valueTemplate = \"{value}\",\n ...props\n}) {\n const range = createNumericRange(min, max, step);\n const resolvedValue = range.clamp(value);\n const ring = createKnobRing(resolvedValue, min, max, step, strokeWidth, valueTemplate);\n const valueBelow = valuePosition === \"below\";\n const sizeStyle = size ? {\n \"--rui-knob-size\": `${size}px`\n } : void 0;\n return /* @__PURE__ */jsx(\"rui-knob\", {\n ...props,\n value: resolvedValue,\n min,\n max,\n step,\n disabled,\n \"prop:readOnly\": readOnly,\n label,\n name,\n size,\n strokeWidth,\n showValue,\n valuePosition,\n valueTemplate,\n style: sizeStyle,\n children: /* @__PURE__ */jsxs(\"div\", {\n class: valueBelow ? \"rui-knob rui-knob--value-below\" : \"rui-knob\",\n \"data-ref\": \"root\",\n children: [/* @__PURE__ */jsx(\"span\", {\n class: \"rui-knob__label\",\n \"data-ref\": \"label\",\n hidden: !label,\n children: label\n }), /* @__PURE__ */jsxs(\"button\", {\n type: \"button\",\n class: \"rui-knob__control\",\n \"data-ref\": \"control\",\n \"data-knob-control\": true,\n role: \"slider\",\n \"aria-label\": label || void 0,\n \"aria-valuemin\": range.lowerBound,\n \"aria-valuemax\": range.upperBound,\n \"aria-valuenow\": resolvedValue,\n \"aria-valuetext\": ring.valueText,\n \"aria-readonly\": readOnly,\n disabled,\n children: [/* @__PURE__ */jsxs(\"svg\", {\n class: \"rui-knob__svg\",\n viewBox: \"0 0 100 100\",\n \"aria-hidden\": \"true\",\n children: [/* @__PURE__ */jsx(\"circle\", {\n class: \"rui-knob__track\",\n \"data-ref\": \"track\",\n cx: \"50\",\n cy: \"50\",\n r: ring.radius,\n fill: \"none\",\n \"stroke-width\": ring.strokeWidth,\n \"stroke-dasharray\": `${ring.arcLength} ${ring.circumference}`,\n transform: `rotate(${ring.startAngle} 50 50)`\n }), /* @__PURE__ */jsx(\"circle\", {\n class: \"rui-knob__progress\",\n \"data-ref\": \"progress\",\n cx: \"50\",\n cy: \"50\",\n r: ring.radius,\n fill: \"none\",\n \"stroke-width\": ring.strokeWidth,\n \"stroke-dasharray\": `${ring.progressLength} ${ring.circumference}`,\n transform: `rotate(${ring.startAngle} 50 50)`\n })]\n }), /* @__PURE__ */jsx(\"span\", {\n class: \"rui-knob__value\",\n \"data-ref\": \"centerValue\",\n \"aria-hidden\": \"true\",\n hidden: !showValue || valueBelow,\n children: ring.valueText\n })]\n }), /* @__PURE__ */jsx(\"span\", {\n class: \"rui-knob__value rui-knob__value--below\",\n \"data-ref\": \"belowValue\",\n \"aria-hidden\": \"true\",\n hidden: !showValue || !valueBelow,\n children: ring.valueText\n }), /* @__PURE__ */jsx(\"input\", {\n \"data-ref\": \"input\",\n type: \"hidden\",\n name: name || void 0,\n value: resolvedValue\n })]\n })\n });\n}"],
5
- "mappings": "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",
6
- "names": ["RadiantElement", "customElement", "event", "onEvent", "onUpdated", "prop", "query", "createNumericRange", "min", "max", "step", "resolvedMin", "resolvedMax", "lowerBound", "upperBound", "resolvedStep", "span", "clamp", "value", "candidate", "stepped", "ratio", "unit", "valueFromSliderKey", "range", "current", "key", "KNOB_START_ANGLE", "KNOB_ARC_ANGLE", "KNOB_DEFAULT_STROKE_WIDTH", "KNOB_GAP_MIDPOINT", "resolveKnobStrokeWidth", "strokeWidth", "formatKnobValue", "value", "step", "template", "createKnobRing", "min", "max", "valueTemplate", "range", "createNumericRange", "resolvedStrokeWidth", "radius", "circumference", "arcLength", "clamped", "knobValueFromPointer", "clientX", "clientY", "rect", "alongArc", "clampedAlong", "_initProto", "_initClass", "_init_value", "_init_extra_value", "_init_min", "_init_extra_min", "_init_max", "_init_extra_max", "_init_step", "_init_extra_step", "_init_disabled", "_init_extra_disabled", "_init_readOnly", "_init_extra_readOnly", "_init_label", "_init_extra_label", "_init_name", "_init_extra_name", "_init_size", "_init_extra_size", "_init_strokeWidth", "_init_extra_strokeWidth", "_init_showValue", "_init_extra_showValue", "_init_valuePosition", "_init_extra_valuePosition", "_init_valueTemplate", "_init_extra_valueTemplate", "_init_changeEvent", "_init_extra_changeEvent", "_init_rootTarget", "_init_extra_rootTarget", "_init_labelTarget", "_init_extra_labelTarget", "_init_controlTarget", "_init_extra_controlTarget", "_init_trackTarget", "_init_extra_trackTarget", "_init_progressTarget", "_init_extra_progressTarget", "_init_centerValueTarget", "_init_extra_centerValueTarget", "_init_belowValueTarget", "_init_extra_belowValueTarget", "_init_inputTarget", "_init_extra_inputTarget", "_applyDecs", "n", "o", "i", "a", "c", "u", "s", "f", "l", "p", "d", "m", "h", "y", "v", "g", "t", "r", "b", "e", "applyDec", "w", "D", "S", "j", "E", "I", "P", "k", "F", "_setFunctionName", "N", "O", "T", "z", "A", "H", "_toPropertyKey", "_checkInRHS", "_toPrimitive", "_RuiKnob", "RuiKnob", "RadiantElement", "customElement", "prop", "event", "query", "onUpdated", "onEvent", "createNumericRange", "value", "ring", "createKnobRing", "valuePosition", "circle", "target", "visible", "next", "event2", "rect", "knobValueFromPointer", "valueFromSliderKey", "jsx", "jsxs", "RuiKnob", "value", "min", "max", "step", "disabled", "readOnly", "label", "name", "size", "strokeWidth", "showValue", "valuePosition", "valueTemplate", "props", "range", "createNumericRange", "resolvedValue", "ring", "createKnobRing", "valueBelow", "sizeStyle", "jsx", "jsxs"]
4
+ "sourcesContent": ["let _initProto, _initClass, _init_value, _init_extra_value, _init_min, _init_extra_min, _init_max, _init_extra_max, _init_step, _init_extra_step, _init_valuePrecision, _init_extra_valuePrecision, _init_disabled, _init_extra_disabled, _init_readOnly, _init_extra_readOnly, _init_label, _init_extra_label, _init_name, _init_extra_name, _init_size, _init_extra_size, _init_strokeWidth, _init_extra_strokeWidth, _init_showValue, _init_extra_showValue, _init_valuePosition, _init_extra_valuePosition, _init_valueTemplate, _init_extra_valueTemplate, _init_changeEvent, _init_extra_changeEvent, _init_rootTarget, _init_extra_rootTarget, _init_labelTarget, _init_extra_labelTarget, _init_controlTarget, _init_extra_controlTarget, _init_trackTarget, _init_extra_trackTarget, _init_progressTarget, _init_extra_progressTarget, _init_centerValueTarget, _init_extra_centerValueTarget, _init_belowValueTarget, _init_extra_belowValueTarget, _init_inputTarget, _init_extra_inputTarget;\nfunction _applyDecs(e, t, n, r, o, i) { var a, c, u, s, f, l, p, d = Symbol.metadata || Symbol.for(\"Symbol.metadata\"), m = Object.defineProperty, h = Object.create, y = [h(null), h(null)], v = t.length; function g(t, n, r) { return function (o, i) { n && (i = o, o = e); for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []); return r ? i : o; }; } function b(e, t, n, r) { if (\"function\" != typeof e && (r || void 0 !== e)) throw new TypeError(t + \" must \" + (n || \"be\") + \" a function\" + (r ? \"\" : \" or undefined\")); return e; } function applyDec(e, t, n, r, o, i, u, s, f, l, p) { function d(e) { if (!p(e)) throw new TypeError(\"Attempted to access private element on non-instance\"); } var h = [].concat(t[0]), v = t[3], w = !u, D = 1 === o, S = 3 === o, j = 4 === o, E = 2 === o; function I(t, n, r) { return function (o, i) { return n && (i = o, o = e), r && r(o), P[t].call(o, i); }; } if (!w) { var P = {}, k = [], F = S ? \"get\" : j || D ? \"set\" : \"value\"; if (f ? (l || D ? P = { get: _setFunctionName(function () { return v(this); }, r, \"get\"), set: function (e) { t[4](this, e); } } : P[F] = v, l || _setFunctionName(P[F], r, E ? \"\" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) { if ((c = y[+s][r]) && 7 !== (c ^ o)) throw Error(\"Decorating two elements with the same name (\" + P[F].name + \") is not supported yet\"); y[+s][r] = o < 3 ? 1 : o; } } for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) { var T = b(h[O], \"A decorator\", \"be\", !0), z = n ? h[O - 1] : void 0, A = {}, H = { kind: [\"field\", \"accessor\", \"method\", \"getter\", \"setter\", \"class\"][o], name: r, metadata: a, addInitializer: function (e, t) { if (e.v) throw new TypeError(\"attempted to call addInitializer after decoration was finished\"); b(t, \"An initializer\", \"be\", !0), i.push(t); }.bind(null, A) }; if (w) c = T.call(z, N, H), A.v = 1, b(c, \"class decorators\", \"return\") && (N = c);else if (H.static = s, H.private = f, c = H.access = { has: f ? p.bind() : function (e) { return r in e; } }, j || (c.get = f ? E ? function (e) { return d(e), P.value; } : I(\"get\", 0, d) : function (e) { return e[r]; }), E || S || (c.set = f ? I(\"set\", 0, d) : function (e, t) { e[r] = t; }), N = T.call(z, D ? { get: P.get, set: P.set } : P[F], H), A.v = 1, D) { if (\"object\" == typeof N && N) (c = b(N.get, \"accessor.get\")) && (P.get = c), (c = b(N.set, \"accessor.set\")) && (P.set = c), (c = b(N.init, \"accessor.init\")) && k.unshift(c);else if (void 0 !== N) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or undefined\"); } else b(N, (l ? \"field\" : \"method\") + \" decorators\", \"return\") && (l ? k.unshift(N) : P[F] = N); } return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I(\"get\", s), I(\"set\", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N; } function w(e) { return m(e, d, { configurable: !0, enumerable: !0, value: a }); } return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function (e) { e && f.push(g(e)); }, p = function (t, r) { for (var i = 0; i < n.length; i++) { var a = n[i], c = a[1], l = 7 & c; if ((8 & c) == t && !l == r) { var p = a[2], d = !!a[3], m = 16 & c; applyDec(t ? e : e.prototype, a, m, d ? \"#\" + p : _toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) { return _checkInRHS(t) === e; } : o); } } }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), { e: c, get c() { var n = []; return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)]; } }; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _setFunctionName(e, t, n) { \"symbol\" == typeof t && (t = (t = t.description) ? \"[\" + t + \"]\" : \"\"); try { Object.defineProperty(e, \"name\", { configurable: !0, value: n ? n + \" \" + t : t }); } catch (e) {} return e; }\nfunction _checkInRHS(e) { if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? typeof e : \"null\")); return e; }\nimport { RadiantElement, customElement, event, onEvent, onUpdated, prop, query } from \"@ecopages/radiant\";\nimport { createNumericRange, valueFromSliderKey } from \"../shared/numeric-range\";\nimport { createKnobRing, knobValueFromPointer } from \"./knob-geometry\";\nlet _RuiKnob;\nclass RuiKnob extends RadiantElement {\n static {\n ({\n e: [_init_value, _init_extra_value, _init_min, _init_extra_min, _init_max, _init_extra_max, _init_step, _init_extra_step, _init_valuePrecision, _init_extra_valuePrecision, _init_disabled, _init_extra_disabled, _init_readOnly, _init_extra_readOnly, _init_label, _init_extra_label, _init_name, _init_extra_name, _init_size, _init_extra_size, _init_strokeWidth, _init_extra_strokeWidth, _init_showValue, _init_extra_showValue, _init_valuePosition, _init_extra_valuePosition, _init_valueTemplate, _init_extra_valueTemplate, _init_changeEvent, _init_extra_changeEvent, _init_rootTarget, _init_extra_rootTarget, _init_labelTarget, _init_extra_labelTarget, _init_controlTarget, _init_extra_controlTarget, _init_trackTarget, _init_extra_trackTarget, _init_progressTarget, _init_extra_progressTarget, _init_centerValueTarget, _init_extra_centerValueTarget, _init_belowValueTarget, _init_extra_belowValueTarget, _init_inputTarget, _init_extra_inputTarget, _initProto],\n c: [_RuiKnob, _initClass]\n } = _applyDecs(this, [customElement(\"rui-knob\")], [[prop({\n type: Number,\n reflect: true,\n defaultValue: 50\n }), 0, \"value\"], [prop({\n type: Number,\n defaultValue: 0\n }), 0, \"min\"], [prop({\n type: Number,\n defaultValue: 100\n }), 0, \"max\"], [prop({\n type: Number,\n defaultValue: 1\n }), 0, \"step\"], [prop({\n type: Number,\n attribute: \"value-precision\",\n defaultValue: Number.NaN\n }), 0, \"valuePrecision\"], [prop({\n type: Boolean,\n reflect: true,\n defaultValue: false\n }), 0, \"disabled\"], [prop({\n type: Boolean,\n attribute: \"read-only\",\n reflect: true,\n defaultValue: false\n }), 0, \"readOnly\"], [prop({\n type: String,\n defaultValue: \"\"\n }), 0, \"label\"], [prop({\n type: String,\n defaultValue: \"\"\n }), 0, \"name\"], [prop({\n type: Number\n }), 0, \"size\"], [prop({\n type: Number,\n attribute: \"stroke-width\",\n defaultValue: 14\n }), 0, \"strokeWidth\"], [prop({\n type: Boolean,\n attribute: \"show-value\",\n defaultValue: true\n }), 0, \"showValue\"], [prop({\n type: String,\n attribute: \"value-position\",\n defaultValue: \"center\"\n }), 0, \"valuePosition\"], [prop({\n type: String,\n attribute: \"value-template\",\n defaultValue: \"{value}\"\n }), 0, \"valueTemplate\"], [event({\n name: \"rui-change\",\n bubbles: true,\n composed: true\n }), 0, \"changeEvent\"], [query({\n ref: \"root\"\n }), 0, \"rootTarget\"], [query({\n ref: \"label\"\n }), 0, \"labelTarget\"], [query({\n ref: \"control\"\n }), 0, \"controlTarget\"], [query({\n ref: \"track\"\n }), 0, \"trackTarget\"], [query({\n ref: \"progress\"\n }), 0, \"progressTarget\"], [query({\n ref: \"centerValue\"\n }), 0, \"centerValueTarget\"], [query({\n ref: \"belowValue\"\n }), 0, \"belowValueTarget\"], [query({\n ref: \"input\"\n }), 0, \"inputTarget\"], [onUpdated([\"value\", \"min\", \"max\", \"step\", \"valuePrecision\", \"disabled\", \"readOnly\", \"name\", \"label\", \"size\", \"strokeWidth\", \"showValue\", \"valuePosition\", \"valueTemplate\"]), 2, \"onPropsUpdated\"], [onEvent({\n ref: \"control\",\n type: \"pointerdown\"\n }), 2, \"onPointerDown\"], [onEvent({\n ref: \"control\",\n type: \"pointermove\"\n }), 2, \"onPointerMove\"], [onEvent({\n ref: \"control\",\n type: \"pointerup\"\n }), 2, \"onPointerUp\"], [onEvent({\n ref: \"control\",\n type: \"pointercancel\"\n }), 2, \"onPointerCancel\"], [onEvent({\n ref: \"control\",\n type: \"keydown\"\n }), 2, \"onKeydown\"]], 0, void 0, RadiantElement));\n }\n value = (_initProto(this), _init_value(this));\n min = (_init_extra_value(this), _init_min(this));\n max = (_init_extra_min(this), _init_max(this));\n step = (_init_extra_max(this), _init_step(this));\n valuePrecision = (_init_extra_step(this), _init_valuePrecision(this));\n disabled = (_init_extra_valuePrecision(this), _init_disabled(this));\n readOnly = (_init_extra_disabled(this), _init_readOnly(this));\n label = (_init_extra_readOnly(this), _init_label(this));\n name = (_init_extra_label(this), _init_name(this));\n size = (_init_extra_name(this), _init_size(this));\n strokeWidth = (_init_extra_size(this), _init_strokeWidth(this));\n showValue = (_init_extra_strokeWidth(this), _init_showValue(this));\n valuePosition = (_init_extra_showValue(this), _init_valuePosition(this));\n valueTemplate = (_init_extra_valuePosition(this), _init_valueTemplate(this));\n changeEvent = (_init_extra_valueTemplate(this), _init_changeEvent(this));\n rootTarget = (_init_extra_changeEvent(this), _init_rootTarget(this));\n labelTarget = (_init_extra_rootTarget(this), _init_labelTarget(this));\n controlTarget = (_init_extra_labelTarget(this), _init_controlTarget(this));\n trackTarget = (_init_extra_controlTarget(this), _init_trackTarget(this));\n progressTarget = (_init_extra_trackTarget(this), _init_progressTarget(this));\n centerValueTarget = (_init_extra_progressTarget(this), _init_centerValueTarget(this));\n belowValueTarget = (_init_extra_centerValueTarget(this), _init_belowValueTarget(this));\n inputTarget = (_init_extra_belowValueTarget(this), _init_inputTarget(this));\n activePointerId = (_init_extra_inputTarget(this), null);\n lastEmitted = null;\n onConnected() {\n this.syncPresentation();\n }\n onPropsUpdated() {\n this.syncPresentation();\n }\n get numericRange() {\n return createNumericRange(this.min, this.max, this.step);\n }\n get resolvedSize() {\n return typeof this.size === \"number\" && Number.isFinite(this.size) && this.size > 0 ? this.size : void 0;\n }\n get resolvedValuePosition() {\n return this.valuePosition === \"below\" ? \"below\" : \"center\";\n }\n paint(value) {\n const ring = createKnobRing(value, this.min, this.max, this.step, this.strokeWidth, this.valueTemplate, this.valuePrecision);\n const valuePosition = this.resolvedValuePosition;\n this.rootTarget?.classList.toggle(\"rui-knob--value-below\", valuePosition === \"below\");\n this.labelTarget?.toggleAttribute(\"hidden\", !this.label);\n if (this.labelTarget) {\n this.labelTarget.textContent = this.label;\n }\n if (this.resolvedSize) {\n this.style.setProperty(\"--rui-knob-size\", `${this.resolvedSize}px`);\n } else {\n this.style.removeProperty(\"--rui-knob-size\");\n }\n if (this.controlTarget) {\n this.controlTarget.setAttribute(\"aria-valuemin\", String(this.numericRange.lowerBound));\n this.controlTarget.setAttribute(\"aria-valuemax\", String(this.numericRange.upperBound));\n this.controlTarget.setAttribute(\"aria-valuenow\", String(value));\n this.controlTarget.setAttribute(\"aria-valuetext\", ring.valueText);\n if (this.label) {\n this.controlTarget.setAttribute(\"aria-label\", this.label);\n } else {\n this.controlTarget.removeAttribute(\"aria-label\");\n }\n this.controlTarget.setAttribute(\"aria-readonly\", String(this.readOnly));\n this.controlTarget.disabled = this.disabled;\n }\n for (const circle of [this.trackTarget, this.progressTarget]) {\n circle?.setAttribute(\"r\", String(ring.radius));\n circle?.setAttribute(\"stroke-width\", String(ring.strokeWidth));\n }\n this.trackTarget?.setAttribute(\"stroke-dasharray\", `${ring.arcLength} ${ring.circumference}`);\n this.progressTarget?.setAttribute(\"stroke-dasharray\", `${ring.progressLength} ${ring.circumference}`);\n for (const [target, visible] of [[this.centerValueTarget, this.showValue && valuePosition === \"center\"], [this.belowValueTarget, this.showValue && valuePosition === \"below\"]]) {\n if (!target) {\n continue;\n }\n target.textContent = ring.valueText;\n target.toggleAttribute(\"hidden\", !visible);\n }\n if (this.inputTarget) {\n this.inputTarget.value = String(value);\n if (this.name) {\n this.inputTarget.name = this.name;\n } else {\n this.inputTarget.removeAttribute(\"name\");\n }\n this.inputTarget.disabled = this.disabled;\n }\n }\n syncPresentation() {\n const value = this.numericRange.clamp(this.value);\n this.paint(value);\n if (this.value !== value) {\n this.value = value;\n }\n }\n commitValue(next) {\n if (this.disabled || this.readOnly) {\n return;\n }\n const value = this.numericRange.clamp(next);\n this.paint(value);\n if (value === this.value) {\n return;\n }\n this.value = value;\n if (this.lastEmitted !== value) {\n this.lastEmitted = value;\n this.changeEvent.emit({\n value\n });\n }\n }\n onPointerDown(event2) {\n if (event2.button !== 0 || this.disabled || this.readOnly) {\n return;\n }\n this.activePointerId = event2.pointerId;\n this.lastEmitted = this.value;\n this.controlTarget.setPointerCapture(event2.pointerId);\n const rect = this.controlTarget.getBoundingClientRect();\n const value = knobValueFromPointer(event2.clientX, event2.clientY, rect, this.numericRange);\n if (value != null) {\n this.commitValue(value);\n }\n event2.preventDefault();\n }\n onPointerMove(event2) {\n if (event2.pointerId !== this.activePointerId) {\n return;\n }\n const rect = this.controlTarget.getBoundingClientRect();\n const value = knobValueFromPointer(event2.clientX, event2.clientY, rect, this.numericRange);\n if (value != null) {\n this.commitValue(value);\n }\n }\n onPointerUp(event2) {\n if (event2.pointerId !== this.activePointerId) {\n return;\n }\n this.controlTarget.releasePointerCapture(event2.pointerId);\n this.activePointerId = null;\n }\n onPointerCancel(event2) {\n if (event2.pointerId !== this.activePointerId) {\n return;\n }\n if (this.controlTarget.hasPointerCapture(event2.pointerId)) {\n this.controlTarget.releasePointerCapture(event2.pointerId);\n }\n this.activePointerId = null;\n }\n onKeydown(event2) {\n if (this.disabled || this.readOnly) {\n return;\n }\n const next = valueFromSliderKey(this.numericRange, this.value, event2.key);\n if (next == null) {\n return;\n }\n event2.preventDefault();\n this.lastEmitted = this.value;\n this.commitValue(next);\n }\n static {\n _initClass();\n }\n}\nexport { _RuiKnob as RuiKnob };", "export const SLIDER_PAGE_STEP_MULTIPLIER = 10;\nexport const MAX_VALUE_FRACTION_DIGITS = 15;\nexport function fractionDigitsFromStep(step) {\n if (!Number.isFinite(step) || step <= 0) {\n return 0;\n }\n const match = step.toString().match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\n if (!match) {\n return 0;\n }\n const decimals = match[1]?.length ?? 0;\n const exponent = match[2] ? Number(match[2]) : 0;\n return Math.min(MAX_VALUE_FRACTION_DIGITS, Math.max(0, decimals - exponent));\n}\nexport function resolveValuePrecision(step, valuePrecision) {\n if (typeof valuePrecision === \"number\" && Number.isFinite(valuePrecision) && valuePrecision >= 0) {\n return Math.min(MAX_VALUE_FRACTION_DIGITS, Math.round(valuePrecision));\n }\n return fractionDigitsFromStep(step);\n}\nexport function formatNumericValue(value, valuePrecision) {\n return Number.isFinite(value) ? value.toFixed(valuePrecision) : \"\";\n}\nexport function createNumericRange(min, max, step) {\n const resolvedMin = Number.isFinite(min) ? min : 0;\n const resolvedMax = Number.isFinite(max) ? max : 100;\n const lowerBound = Math.min(resolvedMin, resolvedMax);\n const upperBound = Math.max(resolvedMin, resolvedMax);\n const resolvedStep = Number.isFinite(step) && step > 0 ? step : 1;\n const span = upperBound - lowerBound;\n const clamp = value => {\n const candidate = Number.isFinite(value) ? value : lowerBound;\n const stepped = lowerBound + Math.round((candidate - lowerBound) / resolvedStep) * resolvedStep;\n return Math.min(upperBound, Math.max(lowerBound, stepped));\n };\n return {\n lowerBound,\n upperBound,\n step: resolvedStep,\n clamp,\n ratioFor: value => span === 0 ? 0 : (clamp(value) - lowerBound) / span,\n valueFromRatio: ratio => {\n const unit = Math.min(1, Math.max(0, Number.isFinite(ratio) ? ratio : 0));\n return clamp(lowerBound + unit * span);\n }\n };\n}\nexport function valueFromSliderKey(range, current, key) {\n switch (key) {\n case \"ArrowRight\":\n case \"ArrowUp\":\n return range.clamp(current + range.step);\n case \"ArrowLeft\":\n case \"ArrowDown\":\n return range.clamp(current - range.step);\n case \"Home\":\n return range.lowerBound;\n case \"End\":\n return range.upperBound;\n case \"PageUp\":\n return range.clamp(current + range.step * SLIDER_PAGE_STEP_MULTIPLIER);\n case \"PageDown\":\n return range.clamp(current - range.step * SLIDER_PAGE_STEP_MULTIPLIER);\n default:\n return void 0;\n }\n}", "import { createNumericRange, formatNumericValue, resolveValuePrecision } from \"../shared/numeric-range\";\nexport const KNOB_START_ANGLE = 120;\nexport const KNOB_ARC_ANGLE = 300;\nexport const KNOB_DEFAULT_STROKE_WIDTH = 14;\nconst KNOB_GAP_MIDPOINT = KNOB_ARC_ANGLE + (360 - KNOB_ARC_ANGLE) / 2;\nexport function resolveKnobStrokeWidth(strokeWidth) {\n return Math.min(100, Math.max(0, Number.isFinite(strokeWidth) ? Number(strokeWidth) : KNOB_DEFAULT_STROKE_WIDTH));\n}\nexport function formatKnobValue(value, valuePrecision, template) {\n return template.replace(\"{value}\", formatNumericValue(value, valuePrecision));\n}\nexport function createKnobRing(value, min, max, step, strokeWidth, valueTemplate, valuePrecision) {\n const range = createNumericRange(min, max, step);\n const resolvedStrokeWidth = resolveKnobStrokeWidth(strokeWidth);\n const radius = 50 - resolvedStrokeWidth / 2;\n const circumference = 2 * Math.PI * radius;\n const arcLength = KNOB_ARC_ANGLE / 360 * circumference;\n const clamped = range.clamp(value);\n const precision = resolveValuePrecision(step, valuePrecision);\n return {\n startAngle: KNOB_START_ANGLE,\n strokeWidth: resolvedStrokeWidth,\n radius,\n circumference,\n arcLength,\n progressLength: range.ratioFor(clamped) * arcLength,\n valueText: formatKnobValue(clamped, precision, valueTemplate)\n };\n}\nexport function knobValueFromPointer(clientX, clientY, rect, range) {\n if (rect.width === 0 || rect.height === 0) {\n return null;\n }\n const pointerAngle = Math.atan2(clientY - (rect.top + rect.height / 2), clientX - (rect.left + rect.width / 2)) * 180 / Math.PI;\n const alongArc = (pointerAngle - KNOB_START_ANGLE + 360) % 360;\n const clampedAlong = alongArc <= KNOB_ARC_ANGLE ? alongArc : alongArc <= KNOB_GAP_MIDPOINT ? KNOB_ARC_ANGLE : 0;\n return range.valueFromRatio(clampedAlong / KNOB_ARC_ANGLE);\n}", "import { jsx, jsxs } from \"@ecopages/jsx/jsx-runtime\";\nimport { createNumericRange } from \"../shared/numeric-range\";\nimport { createKnobRing } from \"./knob-geometry\";\nimport \"./knob.script\";\nexport function RuiKnob({\n value = 50,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n readOnly = false,\n label,\n name,\n size,\n strokeWidth = 14,\n showValue = true,\n valuePosition = \"center\",\n valueTemplate = \"{value}\",\n valuePrecision,\n ...props\n}) {\n const range = createNumericRange(min, max, step);\n const resolvedValue = range.clamp(value);\n const ring = createKnobRing(resolvedValue, min, max, step, strokeWidth, valueTemplate, valuePrecision);\n const valueBelow = valuePosition === \"below\";\n const sizeStyle = size ? {\n \"--rui-knob-size\": `${size}px`\n } : void 0;\n return /* @__PURE__ */jsx(\"rui-knob\", {\n ...props,\n value: resolvedValue,\n min,\n max,\n step,\n disabled,\n \"prop:readOnly\": readOnly,\n label,\n name,\n size,\n strokeWidth,\n showValue,\n valuePosition,\n valueTemplate,\n valuePrecision,\n style: sizeStyle,\n children: /* @__PURE__ */jsxs(\"div\", {\n class: valueBelow ? \"rui-knob rui-knob--value-below\" : \"rui-knob\",\n \"data-ref\": \"root\",\n children: [/* @__PURE__ */jsx(\"span\", {\n class: \"rui-knob__label\",\n \"data-ref\": \"label\",\n hidden: !label,\n children: label\n }), /* @__PURE__ */jsxs(\"button\", {\n type: \"button\",\n class: \"rui-knob__control\",\n \"data-ref\": \"control\",\n \"data-knob-control\": true,\n role: \"slider\",\n \"aria-label\": label || void 0,\n \"aria-valuemin\": range.lowerBound,\n \"aria-valuemax\": range.upperBound,\n \"aria-valuenow\": resolvedValue,\n \"aria-valuetext\": ring.valueText,\n \"aria-readonly\": readOnly,\n disabled,\n children: [/* @__PURE__ */jsxs(\"svg\", {\n class: \"rui-knob__svg\",\n viewBox: \"0 0 100 100\",\n \"aria-hidden\": \"true\",\n children: [/* @__PURE__ */jsx(\"circle\", {\n class: \"rui-knob__track\",\n \"data-ref\": \"track\",\n cx: \"50\",\n cy: \"50\",\n r: ring.radius,\n fill: \"none\",\n \"stroke-width\": ring.strokeWidth,\n \"stroke-dasharray\": `${ring.arcLength} ${ring.circumference}`,\n transform: `rotate(${ring.startAngle} 50 50)`\n }), /* @__PURE__ */jsx(\"circle\", {\n class: \"rui-knob__progress\",\n \"data-ref\": \"progress\",\n cx: \"50\",\n cy: \"50\",\n r: ring.radius,\n fill: \"none\",\n \"stroke-width\": ring.strokeWidth,\n \"stroke-dasharray\": `${ring.progressLength} ${ring.circumference}`,\n transform: `rotate(${ring.startAngle} 50 50)`\n })]\n }), /* @__PURE__ */jsx(\"span\", {\n class: \"rui-knob__value\",\n \"data-ref\": \"centerValue\",\n \"aria-hidden\": \"true\",\n hidden: !showValue || valueBelow,\n children: ring.valueText\n })]\n }), /* @__PURE__ */jsx(\"span\", {\n class: \"rui-knob__value rui-knob__value--below\",\n \"data-ref\": \"belowValue\",\n \"aria-hidden\": \"true\",\n hidden: !showValue || !valueBelow,\n children: ring.valueText\n }), /* @__PURE__ */jsx(\"input\", {\n \"data-ref\": \"input\",\n type: \"hidden\",\n name: name || void 0,\n value: resolvedValue\n })]\n })\n });\n}"],
5
+ "mappings": "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",
6
+ "names": ["RadiantElement", "customElement", "event", "onEvent", "onUpdated", "prop", "query", "fractionDigitsFromStep", "step", "match", "decimals", "exponent", "resolveValuePrecision", "valuePrecision", "formatNumericValue", "value", "createNumericRange", "min", "max", "resolvedMin", "resolvedMax", "lowerBound", "upperBound", "resolvedStep", "span", "clamp", "candidate", "stepped", "ratio", "unit", "valueFromSliderKey", "range", "current", "key", "KNOB_START_ANGLE", "KNOB_ARC_ANGLE", "KNOB_DEFAULT_STROKE_WIDTH", "KNOB_GAP_MIDPOINT", "resolveKnobStrokeWidth", "strokeWidth", "formatKnobValue", "value", "valuePrecision", "template", "formatNumericValue", "createKnobRing", "min", "max", "step", "valueTemplate", "range", "createNumericRange", "resolvedStrokeWidth", "radius", "circumference", "arcLength", "clamped", "precision", "resolveValuePrecision", "knobValueFromPointer", "clientX", "clientY", "rect", "alongArc", "clampedAlong", "_initProto", "_initClass", "_init_value", "_init_extra_value", "_init_min", "_init_extra_min", "_init_max", "_init_extra_max", "_init_step", "_init_extra_step", "_init_valuePrecision", "_init_extra_valuePrecision", "_init_disabled", "_init_extra_disabled", "_init_readOnly", "_init_extra_readOnly", "_init_label", "_init_extra_label", "_init_name", "_init_extra_name", "_init_size", "_init_extra_size", "_init_strokeWidth", "_init_extra_strokeWidth", "_init_showValue", "_init_extra_showValue", "_init_valuePosition", "_init_extra_valuePosition", "_init_valueTemplate", "_init_extra_valueTemplate", "_init_changeEvent", "_init_extra_changeEvent", "_init_rootTarget", "_init_extra_rootTarget", "_init_labelTarget", "_init_extra_labelTarget", "_init_controlTarget", "_init_extra_controlTarget", "_init_trackTarget", "_init_extra_trackTarget", "_init_progressTarget", "_init_extra_progressTarget", "_init_centerValueTarget", "_init_extra_centerValueTarget", "_init_belowValueTarget", "_init_extra_belowValueTarget", "_init_inputTarget", "_init_extra_inputTarget", "_applyDecs", "n", "o", "i", "a", "c", "u", "s", "f", "l", "p", "d", "m", "h", "y", "v", "g", "t", "r", "b", "e", "applyDec", "w", "D", "S", "j", "E", "I", "P", "k", "F", "_setFunctionName", "N", "O", "T", "z", "A", "H", "_toPropertyKey", "_checkInRHS", "_toPrimitive", "_RuiKnob", "RuiKnob", "RadiantElement", "customElement", "prop", "event", "query", "onUpdated", "onEvent", "createNumericRange", "value", "ring", "createKnobRing", "valuePosition", "circle", "target", "visible", "next", "event2", "rect", "knobValueFromPointer", "valueFromSliderKey", "jsx", "jsxs", "RuiKnob", "value", "min", "max", "step", "disabled", "readOnly", "label", "name", "size", "strokeWidth", "showValue", "valuePosition", "valueTemplate", "valuePrecision", "props", "range", "createNumericRange", "resolvedValue", "ring", "createKnobRing", "valueBelow", "sizeStyle", "jsx", "jsxs"]
7
7
  }
@@ -12,8 +12,8 @@ export type KnobRingGeometry = {
12
12
  valueText: string;
13
13
  };
14
14
  export declare function resolveKnobStrokeWidth(strokeWidth: number | undefined): number;
15
- export declare function formatKnobValue(value: number, step: number, template: string): string;
16
- export declare function createKnobRing(value: number, min: number, max: number, step: number, strokeWidth: number | undefined, valueTemplate: string): KnobRingGeometry;
15
+ export declare function formatKnobValue(value: number, valuePrecision: number, template: string): string;
16
+ export declare function createKnobRing(value: number, min: number, max: number, step: number, strokeWidth: number | undefined, valueTemplate: string, valuePrecision?: number): KnobRingGeometry;
17
17
  /**
18
18
  * @remarks The inactive gap snaps to the nearest endpoint so pointer travel
19
19
  * through the gap cannot jump across the value range.
@@ -13,4 +13,4 @@ import './knob.script';
13
13
  * @cssclass rui-knob__progress - Filled range arc.
14
14
  * @cssclass rui-knob__value - Value readout inside the ring.
15
15
  */
16
- export declare function RuiKnob({ value, min, max, step, disabled, readOnly, label, name, size, strokeWidth, showValue, valuePosition, valueTemplate, ...props }: JsxCustomElementAttributes<RuiKnobElement, RuiKnobProps>): import("@ecopages/jsx").JsxRenderable;
16
+ export declare function RuiKnob({ value, min, max, step, disabled, readOnly, label, name, size, strokeWidth, showValue, valuePosition, valueTemplate, valuePrecision, ...props }: JsxCustomElementAttributes<RuiKnobElement, RuiKnobProps>): import("@ecopages/jsx").JsxRenderable;
@@ -6,6 +6,11 @@ export type RuiKnobProps = {
6
6
  min?: number;
7
7
  max?: number;
8
8
  step?: number;
9
+ /**
10
+ * Maximum fraction digits in the value readout and `aria-valuetext`.
11
+ * Defaults to the decimal places in `step`.
12
+ */
13
+ valuePrecision?: number;
9
14
  disabled?: boolean;
10
15
  readOnly?: boolean;
11
16
  label?: string;
@@ -19,7 +24,6 @@ export type RuiKnobProps = {
19
24
  export type RuiKnobChangeDetail = {
20
25
  value: number;
21
26
  };
22
- type RuiKnobBindings = Record<string, never>;
23
27
  /**
24
28
  * `<rui-knob>` — select a numeric value with a rotary control.
25
29
  *
@@ -34,6 +38,7 @@ type RuiKnobBindings = Record<string, never>;
34
38
  * @attr {number} min - Range minimum. Default: `0`.
35
39
  * @attr {number} max - Range maximum. Default: `100`.
36
40
  * @attr {number} step - Pointer and keyboard snap interval. Default: `1`.
41
+ * @attr {number} value-precision - Maximum fraction digits in the value readout. Defaults to the decimal places in `step`.
37
42
  * @attr {boolean} disabled - Disables interaction. Default: `false`.
38
43
  * @attr {boolean} read-only - Blocks value changes while leaving the control focusable. Default: `false`.
39
44
  * @attr {string} label - Visible and accessible name. Default: `''`.
@@ -61,12 +66,17 @@ type RuiKnobBindings = Record<string, never>;
61
66
  * @cssclass rui-knob__track - Unfilled 300° range arc.
62
67
  * @cssclass rui-knob__progress - Filled range arc.
63
68
  * @cssclass rui-knob__value - Value readout inside the ring.
69
+ *
70
+ * @remarks
71
+ * `valuePrecision` formats the readout only. Committed values stay on the stepped model;
72
+ * round or transform them in application code when needed.
64
73
  */
65
- export declare class RuiKnob extends RadiantElement<RuiKnobBindings> {
74
+ export declare class RuiKnob extends RadiantElement {
66
75
  value: number;
67
76
  min: number;
68
77
  max: number;
69
78
  step: number;
79
+ valuePrecision: number;
70
80
  disabled: boolean;
71
81
  readOnly: boolean;
72
82
  label: string;
@@ -101,4 +111,3 @@ export declare class RuiKnob extends RadiantElement<RuiKnobBindings> {
101
111
  onPointerCancel(event: PointerEvent): void;
102
112
  onKeydown(event: KeyboardEvent): void;
103
113
  }
104
- export {};
@@ -6,9 +6,6 @@ export type RuiMenubarProps = {
6
6
  export type RuiMenubarChangeDetail = {
7
7
  value: string;
8
8
  };
9
- type RuiMenubarBindings = {
10
- label: string;
11
- };
12
9
  /**
13
10
  * `<rui-menubar>` — a horizontal menubar of menus.
14
11
  *
@@ -32,7 +29,7 @@ type RuiMenubarBindings = {
32
29
  * @fires rui-change - Emitted when a menu item is activated; `detail.value` is the item's `data-value` or text.
33
30
  * @cssclass rui-menubar - Menubar bar (`role="menubar"`).
34
31
  */
35
- export declare class RuiMenubar extends RadiantElement<RuiMenubarBindings> {
32
+ export declare class RuiMenubar extends RadiantElement {
36
33
  label: string;
37
34
  changeEvent: EventEmitter<RuiMenubarChangeDetail>;
38
35
  private openRoot;
@@ -60,4 +57,3 @@ export declare class RuiMenubar extends RadiantElement<RuiMenubarBindings> {
60
57
  onMenuItemClick(event: Event): void;
61
58
  private activateItem;
62
59
  }
63
- export {};
@@ -2,9 +2,6 @@ import { RadiantElement } from '@ecopages/radiant';
2
2
  export type RuiNavigationMenuProps = {
3
3
  label?: string;
4
4
  };
5
- type RuiNavigationMenuBindings = {
6
- label: string;
7
- };
8
5
  /**
9
6
  * `<rui-navigation-menu>` — a composition-first site navigation shell.
10
7
  *
@@ -22,7 +19,7 @@ type RuiNavigationMenuBindings = {
22
19
  * @cssclass rui-navigation-menu__bar - Top-level trigger / link bar.
23
20
  * @cssclass rui-navigation-menu__panels - Panel region (`aria-hidden` toggling).
24
21
  */
25
- export declare class RuiNavigationMenu extends RadiantElement<RuiNavigationMenuBindings> {
22
+ export declare class RuiNavigationMenu extends RadiantElement {
26
23
  label: string;
27
24
  private openValue;
28
25
  protected onConnected(): void;
@@ -47,4 +44,3 @@ export declare class RuiNavigationMenu extends RadiantElement<RuiNavigationMenuB
47
44
  onBarItemKeydown(event: KeyboardEvent): void;
48
45
  onPanelKeydown(event: KeyboardEvent): void;
49
46
  }
50
- export {};
@@ -27,15 +27,6 @@ export type RuiNumberFieldProps = {
27
27
  export type RuiNumberFieldChangeDetail = {
28
28
  value: number;
29
29
  };
30
- type RuiNumberFieldBindings = {
31
- value: number;
32
- disabled: boolean;
33
- readOnly: boolean;
34
- label: string;
35
- name: string;
36
- decreaseDisabled: boolean;
37
- increaseDisabled: boolean;
38
- };
39
30
  /**
40
31
  * `<rui-number-field>` — a locale-aware number input with optional stepper buttons.
41
32
  *
@@ -70,7 +61,7 @@ type RuiNumberFieldBindings = {
70
61
  *
71
62
  * @cssclass rui-number-field - Root field wrapper.
72
63
  */
73
- export declare class RuiNumberField extends RadiantElement<RuiNumberFieldBindings> {
64
+ export declare class RuiNumberField extends RadiantElement {
74
65
  value: number | undefined;
75
66
  defaultValue: number | undefined;
76
67
  minValue: number;
@@ -116,4 +107,3 @@ export declare class RuiNumberField extends RadiantElement<RuiNumberFieldBinding
116
107
  onKeydown(event: KeyboardEvent): void;
117
108
  onWheel(event: WheelEvent): void;
118
109
  }
119
- export {};