@tempots/beatui 0.68.0 → 0.69.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +2 -2
- package/dist/index.es.js +119 -116
- package/dist/json-schema/index.cjs.js +4 -4
- package/dist/json-schema/index.es.js +2495 -2507
- package/dist/types/components/json-schema/controls/generic-control.d.ts +2 -1
- package/dist/types/components/json-schema/controls/shared-utils.d.ts +17 -1
- package/dist/types/components/json-schema/index.d.ts +1 -0
- package/dist/types/components/json-schema/json-schema-form.d.ts +4 -1
- package/dist/types/components/json-schema/schema-context.d.ts +3 -0
- package/dist/types/components/json-schema/widgets/widget-customization.d.ts +55 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/widget-customization-BcbRhAAR.cjs +1 -0
- package/dist/widget-customization-D6Y_Qm7o.js +2788 -0
- package/package.json +1 -1
- package/dist/utils-7JQljUYX.js +0 -2554
- package/dist/utils-CPtkOy9f.cjs +0 -1
|
@@ -11,8 +11,9 @@ export declare function JSONSchemaGenericControl<T>({ ctx, controller, }: {
|
|
|
11
11
|
/**
|
|
12
12
|
* Main entry point for JSON Schema controls
|
|
13
13
|
*/
|
|
14
|
-
export declare function JSONSchemaControl<T>({ schema, controller, ajv, }: {
|
|
14
|
+
export declare function JSONSchemaControl<T>({ schema, controller, ajv, widgetRegistry, }: {
|
|
15
15
|
schema: JSONSchemaDefinition;
|
|
16
16
|
controller: Controller<T>;
|
|
17
17
|
ajv?: import('ajv').default;
|
|
18
|
+
widgetRegistry?: import('../widgets/widget-customization').WidgetRegistry;
|
|
18
19
|
}): Renderable;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { JSONSchema } from '../schema-context';
|
|
2
|
-
import type { InputWrapperOptions } from '../../form';
|
|
2
|
+
import type { InputWrapperOptions, Controller } from '../../form';
|
|
3
|
+
import type { Renderable } from '@tempots/dom';
|
|
4
|
+
import type { ResolvedWidget } from '../widgets/utils';
|
|
3
5
|
/**
|
|
4
6
|
* Convert schema definition to input wrapper options
|
|
5
7
|
*/
|
|
@@ -22,3 +24,17 @@ export declare function shouldHideWriteOnly(ctx: import('../schema-context').Sch
|
|
|
22
24
|
* Determine if a control should be disabled based on readOnly or deprecated status
|
|
23
25
|
*/
|
|
24
26
|
export declare function shouldDisableControl(ctx: import('../schema-context').SchemaContext): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Try to resolve and render a custom widget following the precedence order:
|
|
29
|
+
* 1. Explicit x:ui widget in custom registry (highest priority)
|
|
30
|
+
* 2. Explicit x:ui widget in global registry
|
|
31
|
+
* 3. Matcher-based custom widgets (by priority)
|
|
32
|
+
* 4. Matcher-based global widgets (lowest priority)
|
|
33
|
+
*
|
|
34
|
+
* Returns the rendered widget if found, or null if no custom widget matches
|
|
35
|
+
*/
|
|
36
|
+
export declare function tryResolveCustomWidget({ ctx, controller, resolved, }: {
|
|
37
|
+
ctx: import('../schema-context').SchemaContext;
|
|
38
|
+
controller: Controller<unknown>;
|
|
39
|
+
resolved: ResolvedWidget | null | undefined;
|
|
40
|
+
}): Renderable | null;
|
|
@@ -3,3 +3,4 @@ export * from './schema-context';
|
|
|
3
3
|
export * from './controls';
|
|
4
4
|
export * from './json-schema-form';
|
|
5
5
|
export * from './validator';
|
|
6
|
+
export { type CustomWidgets, type CustomWidgetRegistration, type WidgetFactory, forXUI, forFormat, forTypeAndFormat, } from './widgets/widget-customization';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type SchemaObject } from 'ajv';
|
|
2
2
|
import { Value, Renderable } from '@tempots/dom';
|
|
3
3
|
import { Controller, ControllerValidation } from '../form';
|
|
4
|
+
import { type CustomWidgets } from './widgets/widget-customization';
|
|
4
5
|
/**
|
|
5
6
|
* External reference resolver function type.
|
|
6
7
|
* Called when the form encounters external $ref URIs that need to be resolved.
|
|
@@ -71,8 +72,10 @@ export interface JSONSchemaFormProps<T> extends JSONSchemaFormExternalOptions {
|
|
|
71
72
|
/** Validation behavior */
|
|
72
73
|
validationMode?: 'onSubmit' | 'eager' | 'onTouched';
|
|
73
74
|
validateDebounceMs?: number;
|
|
75
|
+
/** Custom widgets for form-scoped widget overrides */
|
|
76
|
+
customWidgets?: CustomWidgets;
|
|
74
77
|
}
|
|
75
|
-
export declare function JSONSchemaForm<T>({ schema, initialValue, externalSchemas, refResolver, sanitizeAdditional, validationMode, validateDebounceMs, }: JSONSchemaFormProps<T>, fn: ({ Form, controller, setStatus, }: {
|
|
78
|
+
export declare function JSONSchemaForm<T>({ schema, initialValue, externalSchemas, refResolver, sanitizeAdditional, validationMode, validateDebounceMs, customWidgets, }: JSONSchemaFormProps<T>, fn: ({ Form, controller, setStatus, }: {
|
|
76
79
|
Form: Renderable;
|
|
77
80
|
controller: Controller<T>;
|
|
78
81
|
setStatus: (result: ControllerValidation) => void;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type Ajv from 'ajv';
|
|
2
2
|
import type { JSONSchemaDefinition, JSONSchemaType, SchemaConflict, NotViolation } from './schema-types';
|
|
3
|
+
import type { WidgetRegistry } from './widgets/widget-customization';
|
|
3
4
|
export type { JSONSchema, JSONSchemaDefinition, JSONSchemaType, SchemaConflict, AllOfMergeResult, NotViolation, } from './schema-types';
|
|
4
5
|
export { mergeAllOf } from './schema-merge';
|
|
5
6
|
export { evaluateNotViolation, composeEffectiveObjectSchema, evaluateIfThenElseOverlay, getEvaluatedProperties, } from './schema-conditionals';
|
|
@@ -13,6 +14,7 @@ export type SchemaContextOptions = {
|
|
|
13
14
|
suppressLabel?: boolean;
|
|
14
15
|
schemaConflicts?: readonly SchemaConflict[];
|
|
15
16
|
notViolations?: readonly NotViolation[];
|
|
17
|
+
widgetRegistry?: WidgetRegistry;
|
|
16
18
|
};
|
|
17
19
|
export declare class SchemaContext {
|
|
18
20
|
readonly schema: JSONSchemaDefinition;
|
|
@@ -24,6 +26,7 @@ export declare class SchemaContext {
|
|
|
24
26
|
readonly suppressLabel: boolean;
|
|
25
27
|
readonly schemaConflicts: readonly SchemaConflict[];
|
|
26
28
|
readonly notViolations: readonly NotViolation[];
|
|
29
|
+
readonly widgetRegistry: WidgetRegistry | undefined;
|
|
27
30
|
constructor(options: SchemaContextOptions);
|
|
28
31
|
readonly with: (options: Partial<SchemaContextOptions>) => SchemaContext;
|
|
29
32
|
readonly append: (segment: PropertyKey) => SchemaContext;
|
|
@@ -30,6 +30,8 @@ export interface WidgetRegistration<T = unknown> {
|
|
|
30
30
|
priority?: number;
|
|
31
31
|
/** Whether this widget can be used as a fallback */
|
|
32
32
|
canFallback?: boolean;
|
|
33
|
+
/** Custom matcher function for widget selection */
|
|
34
|
+
matcher?: (ctx: SchemaContext) => boolean;
|
|
33
35
|
}
|
|
34
36
|
/**
|
|
35
37
|
* Widget customization configuration from x:ui
|
|
@@ -59,6 +61,29 @@ export interface WidgetCustomization {
|
|
|
59
61
|
else?: WidgetCustomization;
|
|
60
62
|
};
|
|
61
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Custom widget registration for form-scoped widgets
|
|
66
|
+
*/
|
|
67
|
+
export interface CustomWidgetRegistration<T = unknown> {
|
|
68
|
+
/** Widget name */
|
|
69
|
+
name: string;
|
|
70
|
+
/** Widget factory function */
|
|
71
|
+
factory: WidgetFactory<T>;
|
|
72
|
+
/** Widget display name */
|
|
73
|
+
displayName?: string;
|
|
74
|
+
/** Widget description */
|
|
75
|
+
description?: string;
|
|
76
|
+
/** Supported JSON Schema types */
|
|
77
|
+
supportedTypes?: string[];
|
|
78
|
+
/** Widget priority (higher = preferred, default: 50) */
|
|
79
|
+
priority?: number;
|
|
80
|
+
/** Custom matcher function for widget selection */
|
|
81
|
+
matcher?: (ctx: SchemaContext) => boolean;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Array of custom widget registrations for the customWidgets option
|
|
85
|
+
*/
|
|
86
|
+
export type CustomWidgets = CustomWidgetRegistration[];
|
|
62
87
|
/**
|
|
63
88
|
* Widget registry for managing custom widgets
|
|
64
89
|
*/
|
|
@@ -118,3 +143,33 @@ export declare function registerEnhancedWidgets(registry?: WidgetRegistry): void
|
|
|
118
143
|
* Helper to register a simple widget
|
|
119
144
|
*/
|
|
120
145
|
export declare function registerWidget<T = unknown>(name: string, factory: WidgetFactory<T>, options?: Partial<WidgetRegistration<T>>, registry?: WidgetRegistry): void;
|
|
146
|
+
/**
|
|
147
|
+
* Create a custom widget registration that matches by explicit x:ui widget name
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* ```typescript
|
|
151
|
+
* forXUI('fancy-email', myEmailWidget)
|
|
152
|
+
* // Matches schema: { type: 'string', 'x:ui': 'fancy-email' }
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
155
|
+
export declare function forXUI<T = unknown>(widgetName: string, factory: WidgetFactory<T>, options?: Partial<Omit<CustomWidgetRegistration<T>, 'name' | 'factory' | 'matcher'>>): CustomWidgetRegistration<T>;
|
|
156
|
+
/**
|
|
157
|
+
* Create a custom widget registration that matches by schema format
|
|
158
|
+
*
|
|
159
|
+
* @example
|
|
160
|
+
* ```typescript
|
|
161
|
+
* forFormat('email', myEmailWidget)
|
|
162
|
+
* // Matches ANY schema with: { format: 'email' }
|
|
163
|
+
* ```
|
|
164
|
+
*/
|
|
165
|
+
export declare function forFormat<T = unknown>(format: string, factory: WidgetFactory<T>, options?: Partial<Omit<CustomWidgetRegistration<T>, 'factory' | 'matcher'>>): CustomWidgetRegistration<T>;
|
|
166
|
+
/**
|
|
167
|
+
* Create a custom widget registration that matches by type + format combination
|
|
168
|
+
*
|
|
169
|
+
* @example
|
|
170
|
+
* ```typescript
|
|
171
|
+
* forTypeAndFormat('string', 'uuid', myUuidWidget)
|
|
172
|
+
* // Matches schema: { type: 'string', format: 'uuid' }
|
|
173
|
+
* ```
|
|
174
|
+
*/
|
|
175
|
+
export declare function forTypeAndFormat<T = unknown>(type: string, format: string, factory: WidgetFactory<T>, options?: Partial<Omit<CustomWidgetRegistration<T>, 'factory' | 'matcher'>>): CustomWidgetRegistration<T>;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -18,3 +18,4 @@ export * from './tokens';
|
|
|
18
18
|
export * from './tailwind';
|
|
19
19
|
export * from './utils';
|
|
20
20
|
export * from './temporal';
|
|
21
|
+
export { type CustomWidgets, type CustomWidgetRegistration, type WidgetFactory, forXUI, forFormat, forTypeAndFormat, } from './components/json-schema/widgets/widget-customization';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const t=require("@tempots/dom"),qt=require("./colors-B9fcMxa_.cjs"),Yt=require("./timer-DK_yKNwE.cjs"),at=require("@tempots/ui"),I=require("./translations-hMQlZmD4.cjs"),E=require("./notice-CgT9ma2m.cjs");function st(e){if(typeof e!="string")return!1;const n=e.startsWith("#")?e.slice(1):e;return/^[0-9A-Fa-f]{3}$|^[0-9A-Fa-f]{6}$/.test(n)}function gt(e){if(typeof e!="string")return!1;const n=/^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/i,r=e.match(n);if(!r)return!1;const[,a,s,o]=r,l=parseInt(a,10),u=parseInt(s,10),i=parseInt(o,10);return l>=0&&l<=255&&u>=0&&u<=255&&i>=0&&i<=255}function ht(e){if(typeof e!="string")return!1;const n=/^rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(0|1|0?\.\d+)\s*\)$/i,r=e.match(n);if(!r)return!1;const[,a,s,o,l]=r,u=parseInt(a,10),i=parseInt(s,10),c=parseInt(o,10),p=parseFloat(l);return u>=0&&u<=255&&i>=0&&i<=255&&c>=0&&c<=255&&p>=0&&p<=1}function bt(e){if(typeof e!="string")return!1;const n=/^hsl\(\s*(\d{1,3})\s*,\s*(\d{1,3})%\s*,\s*(\d{1,3})%\s*\)$/i,r=e.match(n);if(!r)return!1;const[,a,s,o]=r,l=parseInt(a,10),u=parseInt(s,10),i=parseInt(o,10);return l>=0&&l<=360&&u>=0&&u<=100&&i>=0&&i<=100}function Gt(e){return st(e)||gt(e)||ht(e)||bt(e)}function yt(e){if(!st(e))return null;let n=e.startsWith("#")?e.slice(1):e;return n.length===3&&(n=n.split("").map(r=>r+r).join("")),`#${n.toLowerCase()}`}function G(e,n,r){const a=s=>{const o=Math.round(Math.max(0,Math.min(255,s))).toString(16);return o.length===1?"0"+o:o};return`#${a(e)}${a(n)}${a(r)}`}function z(e){const n=yt(e);if(!n)return null;const r=/^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n);return r?{r:parseInt(r[1],16),g:parseInt(r[2],16),b:parseInt(r[3],16)}:null}function Qt(e,n){const r=z(e),a=z(n);if(!r||!a)return null;const s=(c,p,f)=>{const[h,m,v]=[c,p,f].map(w=>(w=w/255,w<=.03928?w/12.92:Math.pow((w+.055)/1.055,2.4)));return .2126*h+.7152*m+.0722*v},o=s(r.r,r.g,r.b),l=s(a.r,a.g,a.b),u=Math.max(o,l),i=Math.min(o,l);return(u+.05)/(i+.05)}function vt(e){if(!e)return[0,0,0,1];const r=e.trim().match(/^#?([a-fA-F0-9]{3,4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/);if(r){const c=r[1];if(c.length===8){const p=parseInt(c.slice(0,2),16),f=parseInt(c.slice(2,4),16),h=parseInt(c.slice(4,6),16),m=parseInt(c.slice(6,8),16)/255;return[p,f,h,m]}if(c.length===6)return[parseInt(c.slice(0,2),16),parseInt(c.slice(2,4),16),parseInt(c.slice(4,6),16),1];if(c.length===4){const p=parseInt(c[0]+c[0],16),f=parseInt(c[1]+c[1],16),h=parseInt(c[2]+c[2],16),m=parseInt(c[3]+c[3],16)/255;return[p,f,h,m]}if(c.length===3){const p=parseInt(c[0]+c[0],16),f=parseInt(c[1]+c[1],16),h=parseInt(c[2]+c[2],16);return[p,f,h,1]}}const a=e.match(/^rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(0|1|0?\.\d+)\s*\)$/i);if(a)return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10),parseFloat(a[4])];const s=e.match(/^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/i);if(s)return[parseInt(s[1],10),parseInt(s[2],10),parseInt(s[3],10),1];const o=e.match(/^hsla?\(\s*([+-]?[\d.]+)(?:deg)?\s*[ ,]?\s*([\d.]+)%\s*[ ,]?\s*([\d.]+)%\s*(?:[/,]\s*(\d?(?:\.\d+)?))?\s*\)$/i);if(o){const c=parseFloat(o[1]),p=parseFloat(o[2]),f=parseFloat(o[3]),h=o[4]!=null?parseFloat(o[4]):1,[m,v,w]=lt(c,p/100,f/100);return[m,v,w,h]}const l=e.match(/^hwb\(\s*([+-]?[\d.]+)(?:deg)?\s*[, ]\s*([\d.]+)%\s*[, ]\s*([\d.]+)%\s*(?:[/]\s*(\d?(?:\.\d+)?))?\s*\)$/i);if(l){const c=parseFloat(l[1]),p=parseFloat(l[2])/100,f=parseFloat(l[3])/100,h=l[4]!=null?parseFloat(l[4]):1,[m,v,w]=It(c,p,f);return[m,v,w,h]}const u=e.match(/^oklch\(\s*([+-]?[\d.]+%?)\s+([\d.]+)\s+([+-]?[\d.]+)(?:deg)?(?:\s*\/\s*(\d?(?:\.\d+)?))?\s*\)$/i);if(u){const c=u[1],p=parseFloat(u[2]),f=parseFloat(u[3]),h=u[4]!=null?parseFloat(u[4]):1,m=c.endsWith("%")?Math.max(0,Math.min(1,parseFloat(c)/100)):Math.max(0,Math.min(1,parseFloat(c))),[v,w,x]=Ct(m,p,f);return[v,w,x,h]}const i=z(e);return i?[i.r,i.g,i.b,1]:[0,0,0,1]}function xt(e,n,r,a){return`rgba(${Math.round(e)}, ${Math.round(n)}, ${Math.round(r)}, ${Math.max(0,Math.min(1,Math.round(a*100)/100))})`}function wt(e){let n=e+1831565813;return function(){return n=Math.imul(n^n>>>15,n|1),n^=n+Math.imul(n^n>>>7,n|61),((n^n>>>14)>>>0)/4294967296}}function lt(e,n,r){e=(e%360+360)%360;const a=(1-Math.abs(2*r-1))*n,s=a*(1-Math.abs(e/60%2-1)),o=r-a/2;let l=0,u=0,i=0;return 0<=e&&e<60?[l,u,i]=[a,s,0]:60<=e&&e<120?[l,u,i]=[s,a,0]:120<=e&&e<180?[l,u,i]=[0,a,s]:180<=e&&e<240?[l,u,i]=[0,s,a]:240<=e&&e<300?[l,u,i]=[s,0,a]:[l,u,i]=[a,0,s],[Math.round((l+o)*255),Math.round((u+o)*255),Math.round((i+o)*255)]}function It(e,n,r){e=(e%360+360)%360;const a=n+r;a>1&&(n/=a,r/=a);const[s,o,l]=lt(e,1,.5).map(f=>f/255),u=1-n-r,i=s*u+n,c=o*u+n,p=l*u+n;return[Math.round(i*255),Math.round(c*255),Math.round(p*255)]}function Q(e,n,r){e/=255,n/=255,r/=255;const a=Math.max(e,n,r),s=Math.min(e,n,r);let o=0,l=0;const u=(a+s)/2,i=a-s;if(i!==0){switch(l=u>.5?i/(2-a-s):i/(a+s),a){case e:o=(n-r)/i+(n<r?6:0);break;case n:o=(r-e)/i+2;break;default:o=(e-n)/i+4}o*=60}return[Math.round(o),Math.round(l*100),Math.round(u*100)]}function Vt(e,n,r){const[a]=Q(e,n,r),s=e/255,o=n/255,l=r/255,u=Math.min(s,o,l),i=1-Math.max(s,o,l);return[a,Math.round(u*100),Math.round(i*100)]}function X(e){const n=e/255;return n<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function q(e){const n=e<=.0031308?12.92*e:1.055*Math.pow(e,.4166666666666667)-.055;return Math.round(Math.max(0,Math.min(1,n))*255)}function Ct(e,n,r){const a=r*Math.PI/180,s=Math.cos(a)*n,o=Math.sin(a)*n,l=e+.3963377774*s+.2158037573*o,u=e-.1055613458*s-.0638541728*o,i=e-.0894841775*s-1.291485548*o,c=l*l*l,p=u*u*u,f=i*i*i,h=4.0767416621*c-3.3077115913*p+.2309699292*f,m=-1.2684380046*c+2.6097574011*p-.3413193965*f,v=-.0041960863*c-.7034186147*p+1.707614701*f;return[q(h),q(m),q(v)]}function _t(e,n,r){const a=X(e),s=X(n),o=X(r),l=.4122214708*a+.5363325363*s+.0514459929*o,u=.2119034982*a+.6806995451*s+.1073969566*o,i=.0883024619*a+.2817188376*s+.6299787005*o,c=Math.cbrt(l),p=Math.cbrt(u),f=Math.cbrt(i),h=.2104542553*c+.793617785*p-.0040720468*f,m=1.9779984951*c-2.428592205*p+.4505937099*f,v=.0259040371*c+.7827717662*p-.808675766*f,w=Math.sqrt(m*m+v*v);let x=Math.atan2(v,m)*180/Math.PI;return x<0&&(x+=360),[h,w,x]}function R(e,n,r,a,s,o){switch(s){case"hex":if(o){const l=i=>i.toString(16).padStart(2,"0"),u=Math.max(0,Math.min(255,Math.round(a*255)));return`#${l(e)}${l(n)}${l(r)}${l(u)}`}return G(e,n,r);case"rgb":return`rgb(${e}, ${n}, ${r})`;case"rgba":return`rgba(${e}, ${n}, ${r}, ${Math.round(a*100)/100})`;case"hsl":{const[l,u,i]=Q(e,n,r);return`hsl(${l}, ${u}%, ${i}%)`}case"hsla":{const[l,u,i]=Q(e,n,r);return`hsla(${l}, ${u}%, ${i}%, ${Math.round(a*100)/100})`}case"hwb":{const[l,u,i]=Vt(e,n,r);return a<1?`hwb(${l} ${u}% ${i}% / ${Math.round(a*100)/100})`:`hwb(${l} ${u}% ${i}%)`}case"oklch":{const[l,u,i]=_t(e,n,r),c=(Math.round(l*1e3)/1e3).toFixed(3),p=(Math.round(u*1e3)/1e3).toFixed(3),f=(Math.round(i*10)/10).toFixed(1),h=Math.round(a*100)/100;return o||a<1?`oklch(${c} ${p} ${f} / ${h})`:`oklch(${c} ${p} ${f})`}}}function L(e,n){return n?e==="rgb"?"rgba":e==="hsl"?"hsla":e:e==="rgba"?"rgb":e==="hsla"?"hsl":e}class Jt extends Error{constructor(n="Missing implementation"){super(n),this.name="MissingImplementationError"}}const Kt=e=>te(e).split("_").join(" "),te=e=>(e=e.replace(/::/g,"/"),e=e.replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2"),e=e.replace(/([a-z\d])([A-Z])/g,"$1_$2"),e=e.replace(/-/g,"_"),e.toLowerCase()),ee=e=>e.substring(0,1).toUpperCase()+e.substring(1),ne=e=>{if(typeof Buffer<"u")return Buffer.from(e,"base64").toString("utf8");if(typeof atob<"u")return atob(e);throw new Jt("No implementation found for base64 decoding")};function Y({onChange:e,value:n,accept:r="*/*",enableClick:a=!0,content:s,disabled:o=!1,allowMultiple:l}){return t.Use(I.BeatUII18n,u=>{const i=t.Value.deriveProp(n??[]),c=t.prop(!1),p=b=>{b.preventDefault(),b.stopPropagation(),c.value=!0},f=b=>{b.preventDefault(),b.stopPropagation(),(!b.currentTarget||!b.currentTarget.contains(b.relatedTarget))&&(c.value=!1)},h=b=>{b.preventDefault(),b.stopPropagation(),c.value=!1;const d=Array.from(b.dataTransfer?.files||[]);d.length>0&&(i.value=d,e(d,"dragdrop"))},m=b=>{t.Value.get(a)&&b.currentTarget.querySelector('input[type="file"]')?.click()};let v=null;const w=()=>{if(v==null)return;const b=Array.from(v.files??[]);b.length>0&&(i.value=b,e(b,"click")),v.value=""},x=b=>{t.Value.get(a)&&(b.key==="Enter"||b.key===" ")&&(b.preventDefault(),m(b))};return t.html.div(t.attr.role("button"),t.attr.tabindex(t.Value.map(a,b=>b?0:-1)),t.attr.style("position: relative;"),t.on.dragover(p),t.on.dragleave(f),t.on.drop(h),t.on.click(m),t.on.keydown(x),t.html.input(t.attr.type("file"),t.attr.disabled(o),t.attr.accept(r),t.attr.multiple(l),t.attr.style("position: absolute; left: -9999px; opacity: 0; pointer-events: none;"),t.on.change(w),t.WithElement(b=>(v=b,i.on(d=>{const _=globalThis.DataTransfer;if(_!=null){const $=new _;d.forEach(k=>$.items.add(k)),b.files=$.files}}),t.Empty))),t.aria.label(t.bind(u.$.dropZoneInstructions)(a)),s({files:i,clear:()=>i.value=[],change:i.set}))})}function re(e,n){return e.length===n.length&&e.every((r,a)=>r===n[a])}function ae(e,n){const r=["bc-segmented-input",`bc-segmented-input--size-${e}`];return n&&r.push("bc-segmented-input--disabled"),r.join(" ")}function se({options:e,value:n,onChange:r,size:a="md",disabled:s=!1},...o){const l=qt.f(e).map(([u,i])=>({key:u,label:i}));return t.WithElement(()=>{const u=Object.fromEntries(l.map((c,p)=>[c.key,p])),i=t.prop(l.map(()=>({left:0,width:0})),re);return t.html.div(t.attr.class(t.computedOf(a,s)((c,p)=>ae(c??"md",p??!1))),t.html.div(t.attr.class("bc-segmented-input__container"),t.html.div(t.attr.class("bc-segmented-input__indicator"),t.style.width(t.computedOf(n,i)((c,p)=>{const{width:f}=p[u[c]??0];return`${f}px`})),t.style.left(t.computedOf(n,i)((c,p)=>{const{left:f}=p[u[c]??0];return`${f}px`}))),l.map(({label:c,key:p},f)=>t.html.button(t.attr.type("button"),t.on.click(h=>{h.preventDefault(),t.Value.get(s)||r?.(p)}),t.attr.disabled(s),t.attr.class("bc-segmented-input__segment"),t.attr.class(t.Value.map(n,h=>h===p?"bc-segmented-input__segment--active":"bc-segmented-input__segment--inactive")),at.ElementRect(h=>{function m(){i.update(w=>{const x=[...w];return x[f]={width:h.value.width,left:h.value.localLeft},x})}const v=Yt.g(m);return t.OnDispose(v,h.on(m))}),c))),...o)})}function le(e){const n=e.type.toLowerCase();return n.startsWith("image/")&&(n.includes("jpeg")||n.includes("jpg")||n.includes("png")||n.includes("gif")||n.includes("webp")||n.includes("svg"))}function oe(e){const n=e.type.toLowerCase();return n.startsWith("image/")?"vscode-icons:file-type-image":n.startsWith("video/")?"vscode-icons:file-type-video":n.startsWith("audio/")?"vscode-icons:file-type-audio":n.includes("pdf")?"vscode-icons:file-type-pdf2":n.includes("word")||n.includes("document")?"vscode-icons:file-type-word":n.includes("excel")||n.includes("spreadsheet")?"vscode-icons:file-type-excel":n.includes("powerpoint")||n.includes("presentation")?"vscode-icons:file-type-powerpoint":n.includes("zip")||n.includes("archive")?"vscode-icons:file-type-zip":n.includes("text")?"vscode-icons:file-type-text":n.includes("json")?"vscode-icons:file-type-json-official":n.includes("csv")?"vscode-icons:file-type-csv":n.includes("xml")?"vscode-icons:file-type-xml":n.includes("yaml")?"vscode-icons:file-type-yaml-official":"vscode-icons:file-type-binary"}function tt(e){return t.When(e.map(le),()=>{const n=t.prop(null);return e.on(r=>{n.value&&URL.revokeObjectURL(n.value);const a=URL.createObjectURL(r);n.value=a}),t.html.div(t.OnDispose(()=>{n.value&&URL.revokeObjectURL(n.value)}),t.attr.class("bc-file-input__thumbnail-container"),t.html.img(t.attr.src(n),t.attr.alt(e.map(r=>r.name)),t.attr.class("bc-file-input__thumbnail")))},()=>I.Icon({icon:e.map(oe)}))}const $t=(e,...n)=>{const{value:r=t.prop([]),accept:a="*/*",maxFiles:s,maxFileSize:o,onChange:l,onBlur:u,disabled:i,hasError:c,mode:p="default",showFileList:f=!0,...h}=e,m=r,v=t.Value.map(p,y=>y==="input"),w=t.Value.map(p,y=>y==="compact"),x=y=>{let g=y;if(s!=null){const V=t.Value.get(s);g=g.slice(0,V)}if(o){const V=t.Value.get(o);g=g.filter(M=>M.size<=V)}l?.(g)},b=y=>{const V=m.value.filter((M,T)=>T!==y);l?.(V)},d=()=>{l?.([])},_=({files:y,clear:g,change:V})=>t.Use(I.BeatUII18n,M=>t.html.div(t.attr.class("bc-file-input__drop-zone"),t.html.div(t.attr.class("bc-file-input__drop-zone-content bc-file-input__drop-zone-content--empty"),I.Icon({icon:"mdi:cloud-upload-outline",size:"xl"}),t.html.div(t.attr.class("bc-file-input__drop-zone-text"),t.bind(M.$.filesInputInstructions)(s,o,M.$.fileSizeUnits.value))))),$=({files:y})=>t.Use(I.BeatUII18n,g=>t.html.div(t.attr.class("bc-file-input__compact-drop-zone"),t.When(y.map(V=>V.length>0),()=>t.html.div(t.attr.class("bc-file-input__compact-file-list"),t.ForEach(y,(V,M)=>{const T=M.index;return t.html.div(t.attr.class("bc-file-input__compact-file-item"),t.html.div(t.attr.class("bc-file-input__compact-file-icon"),tt(V)),t.html.div(t.attr.class("bc-file-input__compact-file-info"),t.html.div(t.attr.class("bc-file-input__compact-file-name"),t.attr.title(V.$.name),V.$.name),t.html.div(t.attr.class("bc-file-input__compact-file-meta"),t.computedOf(V.$.size,g.$.fileSizeUnits)((C,A)=>I.formatFileSize(C,{units:A}))," • ",t.computedOf(V.$.type,g.$.unknownType)((C,A)=>C||A))),E.CloseButton({size:"sm",label:g.$.removeFile,disabled:i,onClick:()=>b(T)},t.attr.class("bc-file-input__compact-remove-button")))})),()=>t.html.div(t.attr.class("bc-file-input__compact-placeholder"),I.Icon({icon:"mdi:cloud-upload-outline",size:"lg"}),t.html.div(t.attr.class("bc-file-input__compact-placeholder-text"),t.bind(g.$.filesInputInstructions)(s,o,g.$.fileSizeUnits.value)))))),k=({files:y})=>t.Use(I.BeatUII18n,g=>t.html.div(t.attr.class("bc-file-input__compact-input"),t.When(y.map(V=>V.length>0),()=>t.html.span(t.attr.class("bc-file-input__compact-value"),t.ForEach(y,V=>t.html.span(t.attr.class("bc-file-input__compact-value-item"),tt(V),t.html.span(t.attr.class("bc-file-input__compact-value-item-name"),V.$.name)))),()=>t.html.span(t.attr.class("bc-file-input__compact-placeholder"),I.Icon({icon:"mdi:cloud-upload-outline",size:"md"})," ",t.bind(g.$.filesInputInstructions)(s,o,g.$.fileSizeUnits.value)))));return t.Use(I.BeatUII18n,y=>I.InputContainer({baseContainer:t.Value.map(v,g=>!g),disabled:i,hasError:c,after:t.When(v,()=>t.When(m.map(({length:g})=>g>0),()=>E.CloseButton({size:"sm",label:y.$.clearAllFiles,disabled:i,onClick:d},t.attr.class("bc-file-input__compact-clear")))),...h,input:t.When(v,()=>t.html.div(t.attr.class("bc-file-input bc-file-input--input"),Y({value:m,accept:a,enableClick:!0,allowMultiple:t.Value.map(s??1/0,g=>g>1),disabled:i,onChange:x,content:k})),()=>t.When(w,()=>t.html.div(t.attr.class("bc-file-input bc-file-input--compact"),Y({value:m,accept:a,enableClick:!0,allowMultiple:t.Value.map(s??1/0,g=>g>1),disabled:i,onChange:x,content:$})),()=>t.html.div(t.attr.class("bc-file-input"),Y({value:m,accept:a,enableClick:!0,allowMultiple:t.Value.map(s??1/0,g=>g>1),disabled:i,onChange:x,content:_}),t.When(f,()=>t.NotEmpty(m,()=>t.Fragment(t.html.div(t.attr.class("bc-file-input__file-list"),t.ForEach(m,(g,V)=>{const M=V.index;return t.html.div(t.attr.class("bc-file-input__file-item"),t.html.div(t.attr.class("bc-file-input__file-icon"),tt(g)),t.html.div(t.attr.class("bc-file-input__file-info"),t.html.div(t.attr.class("bc-file-input__file-name"),t.attr.title(g.$.name),g.$.name),t.html.div(t.attr.class("bc-file-input__file-meta"),t.computedOf(g.$.size,y.$.fileSizeUnits)((T,C)=>I.formatFileSize(T,{units:C}))," • ",t.computedOf(g.$.type,y.$.unknownType)((T,C)=>T||C))),E.CloseButton({size:"sm",label:y.$.removeFile,disabled:i,onClick:()=>b(M)},t.attr.class("bc-file-input__remove-button")))})),t.When(m.map(({length:g})=>g>1),()=>t.html.div(t.attr.class("bc-file-input__clear-all-button-container"),t.html.button(t.attr.type("button"),t.attr.class("bc-file-input__clear-all-button"),t.attr.disabled(i),y.$.clearAllFiles,t.on.click(g=>{g.preventDefault(),g.stopPropagation(),d()}))))))))))},...n))};async function kt(e){return new Promise((n,r)=>{const a=new FileReader;a.readAsDataURL(e),a.onload=()=>{const s=a.result;n(s.split(",")[1])},a.onerror=s=>r(s)})}function ie(e){return Promise.all(e.map(kt))}function ue(e){if(e.length>=4){if(e[0]===137&&e[1]===80&&e[2]===78&&e[3]===71)return"image/png";if(e[0]===255&&e[1]===216)return"image/jpeg";if(e[0]===71&&e[1]===73&&e[2]===70)return"image/gif";if(e[0]===82&&e[1]===73&&e[2]===70&&e[3]===70&&e.length>=12&&e[8]===87&&e[9]===69&&e[10]===66&&e[11]===80)return"image/webp"}try{if(new TextDecoder("utf-8").decode(e.slice(0,256)).includes("<svg"))return"image/svg+xml"}catch{}return"application/octet-stream"}function ce(e){const n=ne(e??""),r=n.length,a=new Uint8Array(r);for(let s=0;s<r;s++)a[s]=n.charCodeAt(s);return a}function Mt(e){const{value:n,onChange:r,onInput:a,...s}=e,o=new Map,l=t.Value.toSignal(n).map(p=>p.map((f,h)=>{const m=o.get(f),v=ce(f??""),w=m?.type||ue(v),x=m?.name??`file-${h}`,b=v.buffer.slice(v.byteOffset,v.byteOffset+v.byteLength),d=new Blob([b],{type:w});return new File([d],x,{type:w})})),u=p=>f=>{p&&ie(f).then(h=>{for(const[m,v]of h.entries())o.set(v,{name:f[m].name,type:f[m].type});p(h)})},i=u(r),c=u(a);return $t({...s,value:l,onChange:i,onInput:c})}function pe(e){const{value:n,onInput:r,onChange:a,...s}=e;return Mt({...s,maxFiles:1,value:t.Value.map(n,o=>o==null?[]:[o]),onChange:o=>{a?.(o[0])},onInput:o=>{r?.(o[0])}})}function me(e,n){const[r,a,s]=e,o=r<<16^a<<8^s,l=wt(o),u=6+Math.floor(l()*5),i=.18+l()*.06,c=[];for(let m=0;m<u;m++){const v=m/u*Math.PI*2,w=n*(1+(l()*2-1)*i),x=Math.cos(v)*w,b=Math.sin(v)*w;c.push({x,y:b})}const p=(c[0].x+c[u-1].x)/2,f=(c[0].y+c[u-1].y)/2;let h=`M ${p.toFixed(3)} ${f.toFixed(3)}`;for(let m=0;m<u;m++){const v=c[m],w=c[(m+1)%u],x=(v.x+w.x)/2,b=(v.y+w.y)/2;h+=` Q ${v.x.toFixed(3)} ${v.y.toFixed(3)} ${x.toFixed(3)} ${b.toFixed(3)}`}return h+=" Z",h}const de=e=>{const{value:n,onBlur:r,onChange:a,onInput:s,displayValue:o,size:l,withAlpha:u}=e,i=t.Value.map(l??32,y=>y),c=t.Value.map(n,y=>vt(y??"#000000")),p=t.Value.map(c,([y,g,V])=>[y,g,V]),f=t.Value.map(c,([,,,y])=>y),h=t.prop(t.Value.get(f)??1),m=t.Value.map(u??!1,y=>y),v=t.Value.map(e.colorTextFormat??"rgb",y=>y),w=t.computedOf(p,h,v,m)(([y,g,V],M,T,C)=>R(y,g,V,M??1,L(T,C),C)),x=t.Value.map(e.colorTextFormat??"hex",y=>y),b=t.Value.map(i,y=>`${-y/2} ${-y/2} ${y} ${y}`),d=t.computedOf(p,i)((y,g)=>me(y,g/2)),_=t.computedOf(p,h,m)(([y,g,V],M,T)=>T||M<1?xt(y,g,V,M):G(y,g,V)),$=t.html.div(t.attr.class("bc-color-swatch-input__control"),t.attr.class(t.Value.map(m,y=>y?"bc-color-swatch-input__control--alpha":"")),t.attr.style(t.computedOf(i)(y=>`min-width:${y+2}px;height:${y+2}px`)),t.svg.svg(t.attr.class("bc-color-swatch-input__svg"),t.svgAttr.viewBox(b),t.svg.path(t.svgAttr.d(d),t.svgAttr.fill(_))),t.html.input(t.attr.type("color"),I.CommonInputAttributes(e),t.attr.value(t.Value.map(p,([y,g,V])=>G(y,g,V))),t.attr.class("bc-input bc-color-swatch-input bc-color-swatch-input__native"),r!=null?t.on.blur(r):t.Empty,a!=null?t.on.change(y=>{const g=y.target.value;if(!a)return;const{r:V,g:M,b:T}=z(g)??{r:0,g:0,b:0},C=t.Value.get(h)??1,A=L(t.Value.get(x),t.Value.get(m)),S=R(V,M,T,C,A,t.Value.get(m));a(S)}):t.Empty,s!=null?t.on.input(y=>{const g=y.target.value;if(!s)return;const{r:V,g:M,b:T}=z(g)??{r:0,g:0,b:0},C=t.Value.get(h)??1,A=L(t.Value.get(x),t.Value.get(m)),S=R(V,M,T,C,A,t.Value.get(m));s(S)}):t.Empty)),k=t.When(m,()=>t.html.input(t.attr.type("range"),t.attr.class("bc-color-swatch-input__alpha"),t.attr.min(0),t.attr.max(1),t.attr.step(.01),t.attr.value(t.Value.map(h,y=>String(y??1))),t.attr.disabled(e.disabled),t.on.input(y=>{const g=parseFloat(y.target.value);h.set(g);const[V,M,T]=t.Value.get(p),C=L(t.Value.get(x),t.Value.get(m)),A=R(V,M,T,g,C,t.Value.get(m));s?.(A)}),t.on.change(y=>{const g=parseFloat(y.target.value);h.set(g);const[V,M,T]=t.Value.get(p),C=L(t.Value.get(x),t.Value.get(m)),A=R(V,M,T,g,C,t.Value.get(m));a?.(A)})));return I.InputContainer({baseContainer:!0,...e,growInput:!1,input:$,after:t.Fragment(t.When(o??!1,()=>t.html.span(t.attr.class("bc-color-swatch-input__rgb"),w)),k,e.after)})},ot="$$tts-exp-",Tt=(e,n)=>t.WithElement(r=>{const a=`${ot}${e}`;return t.OnDispose(t.Value.on(n,s=>Reflect.set(r,a,s)))}),fe=(e,n)=>{const r=`${ot}${e}`;return a=>{n(Reflect.get(a.target,r))}},At=(e,n)=>{const r=`${ot}${e}`;return a=>{const s=a.target,o=s.selectedIndex,l=s.options[o];n(Reflect.get(l,r))}};function ge(e,n,r){const a=["bc-card"];return e!=="default"&&a.push(`bc-card--${e}`),n!=="md"&&a.push(`bc-card--padding-${n}`),r!=="lg"&&a.push(`bc-card--rounded-${r}`),a.join(" ")}function he({variant:e="default",size:n="md",roundedness:r="lg"}={},...a){return t.html.div(t.attr.class(t.computedOf(e,n,r)((s,o,l)=>ge(s??"default",o??"md",l??"lg"))),...a)}function H(...e){return t.html.div(t.attr.class("bc-group"),...e)}const be=({startEditing:e,value:n,onChange:r,placeholder:a,disabled:s})=>{const o=t.Value.deriveProp(e??!1),l=t.prop(!1),u=t.Value.map(s??!1,i=>i);return t.html.div(t.attr.class("bc-editable-text"),t.attr.class(t.Value.map(u,i=>i?"bc-editable-text--disabled":"")),t.aria.disabled(u),t.When(o,()=>t.html.input(t.attr.placeholder(a),t.attr.value(n),t.attr.class("bc-editable-text__input"),at.AutoSelect(),t.on.keydown(i=>{i.key==="Enter"?o.set(!1):i.key==="Escape"&&(l.set(!0),o.set(!1))}),t.on.blur(t.emitValue(i=>{if(o.set(!1),l.value){l.set(!1);return}r(i)}))),()=>t.html.span(t.on.click(()=>{t.Value.get(u)||o.set(!0)}),t.attr.class("bc-editable-text__display"),t.When(t.Value.map(n,i=>i!=null&&i.trim()!==""),()=>t.html.span(t.attr.class("bc-editable-text__text"),n),()=>t.html.span(t.attr.class("bc-editable-text__placeholder"),a)),t.When(t.Value.map(u,i=>!i),()=>t.html.button(t.attr.type("button"),t.attr.class("bc-editable-text__edit-button"),t.Use(I.BeatUII18n,i=>t.aria.label(i.$.editLabel)),t.on.click(()=>o.set(!0)),I.Icon({icon:"line-md/pencil",color:"neutral"}))))))},Et=(e,n,r)=>t.Ensure(e,a=>t.OneOfType(a,{value:s=>{const o=t.computedOf(s,r)((l,u)=>n(l.value,u));return t.html.option(t.attr.selected(o),Tt("value",s.$.value),s.$.label)},group:s=>t.html.optgroup(t.attr.label(s.$.group),t.ForEach(s.$.options,o=>Et(o,n,r))),break:()=>t.html.hr()})),Ft=e=>{const{value:n,onBlur:r,onChange:a,options:s,unselectedLabel:o,equality:l=(c,p)=>c===p,after:u}=e;let i;return I.InputContainer({...e,after:t.Fragment(I.InputIcon({icon:"ph:caret-down-bold",color:"neutral",size:"sm"}),u),input:t.html.select(t.WithElement(c=>{i=c;const p=new MutationObserver(f=>{const{removedNodes:h}=f[0];h.length>0&&(i.selectedIndex=0)});return p.observe(c,{childList:!0}),t.OnDispose(()=>p.disconnect())}),I.CommonInputAttributes(e),t.attr.class("bc-native-select bc-input"),t.Use(I.BeatUII18n,c=>t.html.option(t.attr.hidden("hidden"),t.coalesce(o,c.$.selectOne))),t.ForEach(s,c=>Et(c,l,n)),r!=null?t.on.blur(r):t.Empty,a!=null?t.on.change(At("value",c=>a(c))):t.Empty)},t.on.click(()=>{i?.focus(),typeof i?.showPicker=="function"&&i.showPicker()}))};function St(e){const{controller:n,onChange:r,onBlur:a,...s}=e;return Ft({...s,value:n.signal,onChange:E.makeOnChangeHandler(n,r),onBlur:E.makeOnBlurHandler(n,a)})}function ye(e){return E.InputWrapper({...e,content:St(e)})}function Dt(e,n,r){const a=e.length.map(s=>s);return t.Fragment(t.Repeat(a,s=>{const o=e.item(s.index),l=[];return t.Fragment(t.OnDispose(()=>{l.forEach(u=>u())}),n({list:e,item:o,position:s,remove:()=>e.removeAt(s.index),move:u=>{switch(u){case"up":if(s.index===0)return;e.move(s.index,s.index-1);break;case"down":if(s.index===e.length.value-1)return;e.move(s.index,s.index+1);break;case"first":e.move(s.index,0);break;case"last":e.move(s.index,e.length.value-1)}},canMove:u=>{const i=(()=>{switch(u){case"up":return t.signal(s.index>0);case"down":return e.length.map(c=>s.index<c-1)}})();return l.push(()=>i.dispose()),i},cannotMove:u=>{const i=(()=>{switch(u){case"up":return t.signal(s.index===0);case"down":return e.length.map(c=>s.index===c-1)}})();return l.push(()=>i.dispose()),i}}))},r))}const pt={9:{pattern:/^[0-9]$/},A:{pattern:/^[A-Za-z]$/,transform:e=>e.toUpperCase()},"*":{pattern:/^.$/}},ve=e=>e instanceof RegExp;function Ut(e,n,r){if(e==null)return[];const a=r?{...pt,...n}:n??pt,s=(l,u)=>{const i=a[u];i?l.push({type:"pattern",name:u,...i}):l.push({type:"literal",char:u})},o=[];if(typeof e=="string"){for(const l of e)s(o,l);return o}for(const l of e)if(typeof l=="string")if(l.length<=1)s(o,l);else for(const u of l)s(o,u);else ve(l)?o.push({type:"pattern",pattern:l}):typeof l=="object"&&l&&o.push(l);return o}function xe(e,n){return r=>{switch(e){case"digits":return/[0-9]/.test(r);case"letters":return/[A-Za-z]/.test(r);case"alphanumeric":return/[A-Za-z0-9]/.test(r);case"custom":return n?.(r)??!0;default:return!0}}}function mt(e,n,r,a,s,o){const l={raw:e,previousConformed:n,cursor:s??e.length,completed:!1},u=a.definitions??{},i=typeof r=="function"?r(e,l):r,c=Ut(i,u,a.useDefaultDefinitions??!0),p=xe(a.allowMode,a.allow),f=new Set;for(const C of c)C.type==="literal"&&f.add(C.char);if(a.prefix)for(const C of a.prefix)f.add(C);if(a.suffix)for(const C of a.suffix)f.add(C);const h=Array.from(e).filter(C=>p(C)&&!f.has(C));if(h.length===0)return{value:"",cursor:0,completed:!1};const m=[],v=[];let w=0,x=0,b=0,d=-1;for(const C of c){if(C.type==="literal"){m.push(C.char),v.push({kind:"literal",filled:!0});continue}x+=C.optional?0:1;const A=h[w];if(A==null)break;if(C.type==="any"){b++,m.push(C.transform?C.transform(A):A),v.push({kind:"slot",filled:!0}),d=v.length-1,w++;continue}if(C.type==="pattern")if(C.pattern.test(A)){b++;const S=C.transform?C.transform(A):A;m.push(S),v.push({kind:"slot",filled:!0}),d=v.length-1,w++}else{w++;continue}}const _=m.join(""),$=(a.prefix??"")+_+(a.suffix??"");let y=(a.prefix??"").length;if(d>=0){let C=d+1;if((o?.policy??"smart")!=="sticky")for(;C<v.length&&v[C].kind==="literal";)C++;y+=C}const g=a.completion?.mode==="min"?(a.completion.minChars??0)<=b:a.completion?.mode==="custom"?!!a.completion.isComplete?.($):x>0&&b>=x,V=a.pipe?.($,{...l,completed:g});let M,T=y;return V===!1?(M=n,T=n.length):typeof V=="string"?(M=V,T=V.length):typeof V=="object"&&V?(M=V.value,T=V.cursor??V.value.length):M=$,{value:M,cursor:T,completed:g}}function we(e,n){const r=n?.strategy??"none";return r==="custom"&&n?.unmask?n.unmask(e):r==="strip"?e.replace(/[^A-Za-z0-9]/g,""):e}const it=e=>{const{value:n,onBlur:r,onChange:a,onInput:s,onAccept:o,onComplete:l,mask:u,definitions:i,useDefaultDefinitions:c,extraLiterals:p,prefix:f,suffix:h,autofix:m,pipe:v,completion:w,unmask:x,allowMode:b,allow:d,placeholder:_,placeholderOptions:$}=e,k=t.computedOf(n,u,i,c,p,f,h,m,w,x,b,_,$)((g,V,M,T,C,A,S,P,j,O,B,Z,D)=>V?mt(g??"","",V,{definitions:M??{},useDefaultDefinitions:T??!0,extraLiterals:C??[],autofix:P??"none",completion:j??{mode:"mask"},pipe:v??(F=>F),unmask:O??{strategy:"none"},allowMode:B??"all",allow:d,prefix:A,suffix:S}).value:g??""),y=(g,V)=>{const M=g.value??"",T=t.Value.get(n)??"",C=u!=null?t.Value.get(u):null,A=i!=null?t.Value.get(i):void 0,S=c!=null?t.Value.get(c):void 0,P=p!=null?t.Value.get(p):void 0,j=m!=null?t.Value.get(m):void 0,O=w!=null?t.Value.get(w):void 0,B=x!=null?t.Value.get(x):void 0,Z=b!=null?t.Value.get(b):void 0,D=f!=null?t.Value.get(f):void 0,F=h!=null?t.Value.get(h):void 0,{value:N,cursor:K,completed:ut}=C?mt(M,T,C,{definitions:A??{},useDefaultDefinitions:S??!0,extraLiterals:P??[],autofix:j??"none",completion:O??{mode:"mask"},pipe:v??(Xt=>Xt),unmask:B??{strategy:"none"},allowMode:Z??"all",allow:d,prefix:D,suffix:F},g.selectionStart??M.length,e.cursor?t.Value.get(e.cursor):void 0):{value:M,cursor:M.length,completed:!0};if(N!==M){g.value=N;try{g.setSelectionRange(K,K)}catch{}}const ct=we(N,B);o?.({raw:ct,conformed:N,completed:ut,cursor:K}),V==="input"?s?.(N):(a?.(N),ut&&l?.({raw:ct,conformed:N}))};return t.Fragment(I.InputContainer({...e,input:t.input.text(I.CommonInputAttributes(e),t.attr.value(k),t.attr.class("bc-input"),r!=null?t.on.blur(r):t.Empty,t.WithElement(g=>g instanceof HTMLInputElement?t.Fragment(t.on.input(()=>y(g,"input")),t.on.change(()=>y(g,"change")),t.on.keydown(V=>{if(V.key!=="Backspace"||!(e.cursor?t.Value.get(e.cursor)?.backspaceRubberBand??!0:!0))return;const T=g.selectionStart??0,C=g.selectionEnd??T;if(T!==C||T<=0)return;const A=g.value??"",S=u!=null?t.Value.get(u):null;if(!S)return;const P=i!=null?t.Value.get(i):void 0,j=c!=null?t.Value.get(c):!0,O=f!=null?t.Value.get(f):void 0,B=h!=null?t.Value.get(h):void 0,Z=Ut(typeof S=="function"?S(A,{raw:A,previousConformed:A,cursor:T,completed:!1}):S,P??{},j??!0),D=new Set;for(const F of Z)F.type==="literal"&&D.add(F.char);if(O)for(const F of O)D.add(F);if(B)for(const F of B)D.add(F);if(D.has(A[T-1])){let F=T-1;for(;F>=0&&D.has(A[F]);)F--;F>=0&&(V.preventDefault(),V.stopPropagation(),g.value=A.slice(0,F)+A.slice(F+1),y(g,"input"))}})):t.Empty))}))};function U(e,n,r){const a=t.Value.map(e,o=>o!=null),s=I.defaultMessages.clearValue;return t.Fragment(t.When(a,()=>t.html.button(t.attr.type("button"),t.attr.class("bc-input-container__reset"),t.aria.label(s),t.attr.title(s),t.attr.disabled(n??!1),I.Icon({icon:"mdi:close",size:"sm"}),t.on.click(o=>{o.stopPropagation(),r?.(null)}))))}const Ie=e=>{const{value:n,onBlur:r,onChange:a,onInput:s,after:o,disabled:l}=e,u=U(n,l,a??s);return I.InputContainer({...e,input:t.input.date(I.CommonInputAttributes(e),t.attr.valueAsDate(n),t.attr.class("bc-input"),r!=null?t.on.blur(t.emitValue(r)):t.Empty,a!=null?t.on.change(t.emitValueAsNullableDate(a)):t.Empty,s!=null?t.on.input(t.emitValueAsNullableDate(s)):t.Empty),after:o!=null?t.Fragment(u,o):u})},Ve=e=>{const n=e.getFullYear(),r=e.getMonth()+1,a=e.getDate(),s=e.getHours(),o=e.getMinutes(),l=e.getSeconds();return`${n}-${r.toString().padStart(2,"0")}-${a.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}:${l.toString().padStart(2,"0")}`},Ce=e=>{const{value:n,onBlur:r,onChange:a,onInput:s,after:o,disabled:l}=e,u=t.Value.map(n,c=>c!=null?Ve(c):null),i=U(n,l,a??s);return I.InputContainer({...e,input:t.input["datetime-local"](I.CommonInputAttributes(e),t.attr.value(t.Value.map(u,c=>c??null)),t.attr.class("bc-input"),r!=null?t.on.blur(t.emitValue(r)):t.Empty,a!=null?t.on.change(t.emitValueAsNullableDateTime(a)):t.Empty,s!=null?t.on.input(t.emitValueAsNullableDateTime(s)):t.Empty),after:o!=null?t.Fragment(i,o):i})},rt=e=>typeof e=="string"&&e.trim()===""?null:e,Bt=e=>e??"";function W(e){return n=>{const{value:r,onBlur:a,onChange:s,onInput:o,after:l,disabled:u,...i}=n,c=U(r,u,s??o);return e({...i,disabled:u,value:t.Value.map(r,Bt),onChange:s!=null?p=>s(rt(p)):void 0,onInput:o!=null?p=>o(rt(p)):void 0,onBlur:a,after:l!=null?t.Fragment(c,l):c})}}const _e=W(E.EmailInput),$e=W(I.TextInput),ke=W(E.PasswordInput),Nt=e=>{const{value:n,onBlur:r,onChange:a,onInput:s,rows:o}=e;return I.InputContainer({baseContainer:!0,...e,input:t.html.textarea(t.attr.class(t.computedOf(e.size??"md")(l=>I.generateInputContainerInputClasses(!1,l??"md"))),I.CommonInputAttributes(e),t.attr.rows(o??3),t.attr.value(n),t.attr.class("bc-input"),r!=null?t.on.blur(t.emitValue(r)):t.Empty,a!=null?t.on.change(t.emitValue(a)):t.Empty,s!=null?t.on.input(t.emitValue(s)):t.Empty)})},Me=W(Nt),Te=e=>{const{value:n,step:r,min:a,max:s,onBlur:o,onChange:l,onInput:u,after:i}=e,c=h=>{const m=a!=null?t.Value.get(a):void 0,v=s!=null?t.Value.get(s):void 0;return m!=null&&h<m?m:v!=null&&h>v?v:h},p=r!=null?t.Use(I.BeatUII18n,h=>{const m=t.computedOf(n,a)((b,d)=>d==null?!0:(b??0)>d),v=t.computedOf(n,s)((b,d)=>d==null?!0:(b??0)<d),w=b=>{const d=t.Value.get(n)??0,_=t.Value.get(r),$=b?.shiftKey?10:1,k=d-_*$,y=a!=null?t.Value.get(a):void 0;if(y!=null&&k<y)return;const g=c(k);g!==d&&l&&l(g)},x=b=>{const d=t.Value.get(n)??0,_=t.Value.get(r),$=b?.shiftKey?10:1,k=d+_*$,y=s!=null?t.Value.get(s):void 0;if(y!=null&&k>y)return;const g=c(k);g!==d&&l&&l(g)};return E.Stack(t.attr.class("bc-number-input-steppers"),t.html.button(t.attr.type("button"),t.attr.class("bc-button bc-number-input-steppers-button bc-number-input-steppers-button--increment"),t.attr.disabled(t.computedOf(v,e.disabled??!1)((b,d)=>!b||d)),t.on.click(b=>x(b)),t.aria.label(h.$.incrementValue),I.Icon({icon:"line-md:plus",size:"xs"})),t.html.button(t.attr.type("button"),t.attr.class("bc-button bc-number-input-steppers-button bc-number-input-steppers-button--decrement"),t.attr.disabled(t.computedOf(m,e.disabled??!1)((b,d)=>!b||d)),t.on.click(b=>w(b)),t.aria.label(h.$.decrementValue),I.Icon({icon:"line-md:minus",size:"xs"})))}):null,f=i!=null&&p!=null?t.Fragment(p,i):i??p;return I.InputContainer({...e,input:t.input.number(a!=null?t.Fragment(t.attr.min(a),t.OnDispose(t.Value.on(a,h=>{h<t.Value.get(n)}))):t.Empty,s!=null?t.Fragment(t.attr.max(s),t.OnDispose(t.Value.on(s,h=>{h>t.Value.get(n)}))):t.Empty,I.CommonInputAttributes(e),t.attr.valueAsNumber(n),t.attr.step(r),t.attr.class("bc-input bc-number-input"),o!=null?t.on.blur(t.emitValue(o)):t.Empty,l!=null?t.on.change(t.emitValueAsNumber(l)):t.Empty,u!=null?t.on.input(t.emitValueAsNumber(u)):t.Empty,r!=null?t.on.wheel(h=>{h.preventDefault();const m=t.Value.get(n)??0,v=t.Value.get(r),w=h.shiftKey?10:1,x=h.deltaY<0?v*w:-v*w,b=c(m+x);b!==m&&l&&l(b)}):t.Empty),after:f})},dt=e=>{if(e==null||e==="")return null;const n=Number(e);return Number.isNaN(n)?null:n},Ae=e=>{const{value:n,step:r,min:a,max:s,onBlur:o,onChange:l,onInput:u,after:i}=e,c=m=>{const v=a!=null?t.Value.get(a):void 0,w=s!=null?t.Value.get(s):void 0;return v!=null&&m<v?v:w!=null&&m>w?w:m},p=(()=>{if(r==null)return null;const m=t.computedOf(n,a)((d,_)=>{const $=d??0;return _==null?!0:$>_}),v=t.computedOf(n,s)((d,_)=>{const $=d??0;return _==null?!0:$<_}),w=d=>{const _=t.Value.get(n)??0,$=t.Value.get(r),k=d?.shiftKey?10:1,y=_-$*k,g=a!=null?t.Value.get(a):void 0;if(g!=null&&y<g)return;const V=c(y);V!==_&&l&&l(V)},x=d=>{const _=t.Value.get(n)??0,$=t.Value.get(r),k=d?.shiftKey?10:1,y=_+$*k,g=s!=null?t.Value.get(s):void 0;if(g!=null&&y>g)return;const V=c(y);V!==_&&l&&l(V)};return((d,_)=>E.Stack(t.attr.class("bc-number-input-steppers"),t.html.button(t.attr.type("button"),t.attr.class("bc-button bc-number-input-steppers-button bc-number-input-steppers-button--increment"),t.attr.disabled(t.computedOf(v,e.disabled??!1)(($,k)=>!$||k)),t.on.click($=>x($)),t.aria.label(d),I.Icon({icon:"line-md:plus",size:"xs"})),t.html.button(t.attr.type("button"),t.attr.class("bc-button bc-number-input-steppers-button bc-number-input-steppers-button--decrement"),t.attr.disabled(t.computedOf(m,e.disabled??!1)(($,k)=>!$||k)),t.on.click($=>w($)),t.aria.label(_),I.Icon({icon:"line-md:minus",size:"xs"}))))(I.defaultMessages.incrementValue,I.defaultMessages.decrementValue)})(),f=U(n,e.disabled,l??u),h=i!=null&&p!=null?t.Fragment(p,f,i):i!=null?t.Fragment(f,i):p!=null?t.Fragment(p,f):f;return I.InputContainer({...e,input:t.input.number(a!=null?t.attr.min(a):t.Empty,s!=null?t.attr.max(s):t.Empty,I.CommonInputAttributes(e),t.attr.value(t.Value.map(n,m=>m==null?"":String(m))),t.attr.step(r),t.attr.class("bc-input bc-number-input"),o!=null?t.on.blur(t.emitValue(o)):t.Empty,l!=null?t.on.change(t.emitValue(m=>{const v=dt(m);l(v)})):t.Empty,u!=null?t.on.input(t.emitValue(m=>{const v=dt(m);u(v)})):t.Empty,r!=null?t.on.wheel(m=>{m.preventDefault();const v=t.Value.get(n)??0,w=t.Value.get(r),x=m.shiftKey?10:1,b=m.deltaY<0?w*x:-w*x,d=c(v+b);d!==v&&l&&l(d)}):t.Empty),after:h})},Ee=({value:e,onChange:n,onInput:r,onBlur:a,offLabel:s,onLabel:o,disabled:l=!1,size:u="md",id:i,color:c="primary",tabIndex:p=0})=>{const f=i??E.sessionId("switch");function h(x,b){const d=["bc-switch",`bc-switch--size-${b}`,`bc-switch--${b}`];return x&&d.push("bc-switch--disabled"),d.join(" ")}function m(x){const b=x??"primary",d=new Map,_=I.backgroundValue(b,"solid","light"),$=I.backgroundValue(b,"solid","dark");return d.set("--switch-track-on-bg",_.backgroundColor),d.set("--switch-track-on-label",_.textColor),d.set("--switch-track-on-bg-dark",$.backgroundColor),d.set("--switch-track-on-label-dark",$.textColor),d.set("--switch-track-on-border-dark",I.borderColorValue(b,"dark")),Array.from(d.entries()).map(([k,y])=>`${k}: ${y}`).join("; ")}const v=()=>{t.Value.get(l)||(n?.(!t.Value.get(e)),r?.(!t.Value.get(e)))},w=x=>{t.Value.get(l)||(x.key===" "||x.key==="Enter")&&(x.preventDefault(),v())};return t.html.div(t.attr.class(t.computedOf(l??!1,u)((x,b)=>h(x??!1,b??"md"))),t.attr.style(t.computedOf(c)(x=>m(x))),t.attr.id(f),t.attr.role("switch"),t.attr.tabindex(t.computedOf(l??!1,p)((x,b)=>x?-1:b??0)),t.aria.checked(e),t.aria.disabled(l),t.on.click(v),t.on.keydown(w),a!=null?t.on.blur(a):null,t.html.div(t.attr.class("bc-switch__track"),t.attr.class(t.Value.map(e,x=>x?"bc-switch__track--on":"bc-switch__track--off")),s!=null?t.html.div(t.aria.hidden(!0),t.attr.class("bc-switch__track-label bc-switch__track-label--off"),t.attr.class(t.Value.map(e,x=>x?"bc-switch__track-label--hidden":"bc-switch__track-label--visible")),s):null,o!=null?t.html.div(t.attr.class("bc-switch__track-label bc-switch__track-label--on"),t.attr.class(t.Value.map(e,x=>x?"bc-switch__track-label--visible":"bc-switch__track-label--hidden")),o):null,at.ElementRect(x=>t.Use(I.Locale,({direction:b})=>t.html.div(t.attr.class("bc-switch__thumb"),t.attr.class(t.Value.map(e,d=>d?"bc-switch__thumb--on":"bc-switch__thumb--off")),t.style.transform(t.computedOf(e,x,u,b)((d,{width:_},$,k)=>{const y=(()=>{switch($){case"xs":return 5;case"sm":return 5.5;case"md":return 6;case"lg":return 7;case"xl":return 8}})(),g=k==="rtl"?`calc((var(--spacing-base) * ${y}) - ${_}px)`:`calc(${_}px - (var(--spacing-base) * ${y}))`;return d?`translateX(${g})`:"translateX(0)"})))))))},Ot=e=>{const n={type:"pattern",pattern:/[0-9A-Fa-f]/,transform:a=>a.toLowerCase()};return it({...e,mask:[n,n,n,n,n,n,n,n,"-",n,n,n,n,"-",n,n,n,n,"-",n,n,n,n,"-",n,n,n,n,n,n,n,n,n,n,n,n],placeholder:e.placeholder??"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"})},Fe=W(Ot),Se="line-md:star-alt-filled",De="line-md:star-alt",Rt=e=>{const{value:n,onChange:r,disabled:a,max:s=5,fullColor:o="yellow",emptyColor:l="neutral",fullIcon:u=Se,emptyIcon:i=De,size:c="md",onBlur:p,rounding:f=1}=e,h=()=>{const d=t.Value.get(f);return d>0?d:1},m=d=>Math.min(Math.max(d,0),t.Value.get(s)),v=(d,_)=>{if(t.Value.get(a??!1))return;const k=d.currentTarget.getBoundingClientRect(),y=(d.clientX-k.left)/k.width,g=_-1+y,V=h(),M=Math.ceil(g/V)*V,T=m(M);r?.(T)},w=d=>{if(t.Value.get(a??!1))return;const _=h(),$=t.Value.get(n)??0;let k;switch(d.key){case"ArrowRight":case"ArrowUp":k=m($+_);break;case"ArrowLeft":case"ArrowDown":k=m($-_);break;case"Home":k=0;break;case"End":k=t.Value.get(s);break;default:return}d.preventDefault(),r?.(k)},x=t.Value.map(c,d=>`bc-icon--${d}`),b=({index:d,counter:_})=>t.html.span(t.attr.class("bc-rating-input__icon-container"),t.attr.class(x),I.Icon({icon:i,size:c,color:l,tone:"soft"},t.attr.class("bc-rating-input__icon-empty")),t.html.span(t.attr.class("bc-rating-input__icon-clipper"),t.attr.class(x),t.style.width(t.Value.map(n,$=>{const k=Math.floor($);return k>d?"100%":k<d?"0%":`${($-d)*100}%`})),I.Icon({icon:u,size:c,color:o,tone:"soft"},t.attr.class("bc-rating-input__icon-full"))),t.on.click(t.emit($=>v($,_),{preventDefault:!0,stopPropagation:!0})));return I.InputContainer({baseContainer:!0,growInput:!1,focusableSelector:'[role="slider"]',...e,input:t.html.div(I.CommonInputAttributes(e),t.attr.class("bc-rating-input"),t.attr.role("slider"),t.attr.tabindex(t.Value.map(a??!1,d=>d?-1:0)),t.aria.disabled(a??!1),t.aria.valuemin(0),t.aria.valuemax(t.Value.map(s,d=>d??0)),t.aria.valuenow(t.Value.map(n,d=>d??0)),t.aria.valuetext(t.computedOf(n,s)((d,_)=>{const $=d??0,k=_??0;return`${String($)} / ${String(k)}`})),t.on.keydown(w),p!=null?t.on.blur(p):null,t.Repeat(s,b))})},Ue=e=>{const{value:n,onChange:r,onInput:a,onBlur:s,after:o,disabled:l,...u}=e,i=U(n,l,r??a);return Rt({...u,value:t.Value.map(n,c=>c??0),onChange:r,onInput:a,onBlur:s,after:o!=null?t.Fragment(i,o):i})},Be=e=>{const{value:n,step:r,min:a,max:s,onBlur:o,onChange:l,onInput:u}=e;return I.InputContainer({...e,focusableSelector:'input[type="range"]',input:t.html.input(t.attr.type("range"),I.CommonInputAttributes(e),t.attr.min(a),t.attr.max(s),t.attr.step(r),t.attr.valueAsNumber(n),t.attr.class("bc-input bc-slider-input"),o!=null?t.on.blur(t.emitValueAsNumber(o)):t.Empty,l!=null?t.on.change(t.emitValueAsNumber(l)):t.Empty,u!=null?t.on.input(t.emitValueAsNumber(u)):t.Empty)})},Ne=e=>{const{value:n,step:r,min:a,max:s,onBlur:o,onChange:l,onInput:u}=e,i=t.Value.map(n,p=>{if(p!=null)return p;const f=a!=null?t.Value.get(a):void 0;return typeof f=="number"?f:0}),c=U(n,e.disabled,l??u);return I.InputContainer({...e,focusableSelector:'input[type="range"]',after:c,input:t.html.input(t.attr.type("range"),I.CommonInputAttributes(e),t.attr.min(a),t.attr.max(s),t.attr.step(r),t.attr.valueAsNumber(i),t.attr.class("bc-input bc-slider-input"),o!=null?t.on.blur(t.emitValueAsNumber(o)):t.Empty,l!=null?t.on.change(t.emitValueAsNumber(p=>{l(p)})):t.Empty,u!=null?t.on.input(t.emitValueAsNumber(p=>{u(p)})):t.Empty)},t.Fragment())};let et=null;async function J(){const e=globalThis;return e.Temporal?e.Temporal:(et||(et=Promise.resolve().then(()=>require("./index.esm-DJRz9AE-.cjs")).then(n=>{const r=n.Temporal;return e.Temporal||(e.Temporal=r),r})),et)}const Lt=(e,n)=>n?t.Task(J,{then:e,pending:n.pending,error:n.error}):t.Task(J,e),Oe=/^P(\d+([YMWD]|$)){0,4}(T(\d+([HMS]|$)){0,3})?$/i,Re=/^P(?:(\d+Y)?(\d+M)?(\d+W)?(\d+D)?)(T(\d+H)?(\d+M)?(\d+S)?)?$/i;function zt(e){return{mask:null,allowMode:"custom",allow:n=>/[0-9ptwdhms]/i.test(n),pipe:n=>{const r=n.toUpperCase();return r.length===0?r:!r.startsWith("P")||!Oe.test(r)?!1:r},completion:{mode:"custom",isComplete:n=>{const r=n.toUpperCase();if(!Re.test(r))return!1;try{return e(r),!0}catch{return!1}}}}}const ft=(e,n)=>{if(e==null)return null;try{return e.Duration.from(n)}catch{return null}},Le=e=>{const{value:n,onChange:r,onInput:a,after:s,disabled:o,onBlur:l}=e,u=()=>{const p=U(n,o,r??a);return s!=null?t.Fragment(p,s):p},i=e.placeholder!=null?t.Empty:t.attr.placeholder("P0DT0H0M0S");return Lt(p=>it({...e,value:t.Value.map(n,f=>f?.toString()??""),onChange:r?f=>r(f===""?null:p.Duration.from(f)):void 0,onInput:void 0,...zt(p.Duration.from),placeholder:"P0DT0H0M0S",after:u()}),{pending:()=>{const p=f=>h=>{const v=h.currentTarget?.value??"";if(v===""){f(null);return}const w=globalThis.Temporal,x=ft(w,v);if(x!=null){f(x);return}J().then(b=>{const d=ft(b,v);d!=null&&f(d)}).catch(()=>{})};return I.InputContainer({...e,input:t.input.text(I.CommonInputAttributes(e),t.attr.value(t.Value.map(n,f=>f?.toString()??"")),t.attr.class("bc-input"),i,l!=null?t.on.blur(()=>l()):t.Empty,r!=null?t.on.change(p(r)):t.Empty,a!=null?t.on.input(p(a)):t.Empty),after:u()})}})},Wt=e=>{const{value:n,onBlur:r,onChange:a,onInput:s}=e;return I.InputContainer({...e,input:t.input.url(I.CommonInputAttributes(e),t.attr.value(n),t.attr.class("bc-input"),r!=null?t.on.blur(t.emitValue(r)):t.Empty,a!=null?t.on.change(t.emitValue(a)):t.Empty,s!=null?t.on.input(t.emitValue(s)):t.Empty)})},ze=W(Wt),Pt=e=>{const{controller:n,element:r,separator:a,showMove:s=!0,showRemove:o=!0,showAdd:l=!0,createItem:u,addLabel:i,controlsLayout:c="aside",removeDisabled:p,addDisabled:f}=e,h=t.Value.toSignal(c).map(w=>w==="aside"),m=w=>{const x=t.When(s??!1,()=>t.html.div(t.attr.class("bc-group--align-center"),t.attr.class(h.map(d=>d?"bc-group--direction-column bc-group--gap-1":"bc-group--direction-row bc-group--gap-1")),I.Button({size:"xs",roundedness:"full",variant:"text",onClick:()=>w.move("up"),disabled:w.cannotMove("up")},t.Use(I.BeatUII18n,d=>I.Icon({size:"xs",icon:"line-md:arrow-up",title:d.$.incrementValue}))),I.Button({size:"xs",roundedness:"full",variant:"text",onClick:()=>w.move("down"),disabled:w.cannotMove("down")},t.Use(I.BeatUII18n,d=>I.Icon({size:"xs",icon:"line-md:arrow-down",title:d.$.decrementValue}))))),b=t.When(o,()=>t.Use(I.BeatUII18n,d=>E.CloseButton({size:"xs",label:t.Value.map(d.$.removeItem,_=>_.toLowerCase()),color:"danger",disabled:p,onClick:w.remove})));return d=>t.When(h,()=>H(t.attr.class("bc-group--gap-1 bc-group--align-center"),E.Stack(t.attr.class("bc-stack--grow"),d),E.Stack(t.attr.class("bc-stack--align-center"),t.When(n.signal.map(_=>_.length>1),()=>x),b)),()=>E.Stack(t.attr.class("bc-stack--gap-2"),d,H(t.attr.class("bc-group--gap-2 bc-group--justify-between"),t.When(n.signal.map(_=>_.length>1),()=>x,()=>t.html.div()),b)))},v=t.When(t.computedOf(l,u)((w,x)=>w&&x!=null),()=>H(t.attr.class("bc-group--gap-2 bc-group--align-center bc-group--justify-center"),I.Button({size:"sm",variant:"filled",onClick:()=>n.push(u()),disabled:t.computedOf(n.disabled,f??!1)((w,x)=>w||x)},t.Use(I.BeatUII18n,w=>H(t.attr.class("bc-group--gap-2"),I.Icon({icon:"line-md:plus"}),i??w.$.addLabel)))));return t.Fragment(Dt(n,w=>m(w)(r(w)),a),v)},We=(e,...n)=>{const{controller:r,element:a,separator:s,showMove:o,showRemove:l,showAdd:u,createItem:i,addLabel:c,controlsLayout:p,removeDisabled:f,addDisabled:h,...m}=e;return E.InputWrapper({...m,content:Pt({controller:r,element:a,separator:s,showMove:o,showRemove:l,showAdd:u,createItem:i,addLabel:c,controlsLayout:p,removeDisabled:f,addDisabled:h})},...n)};class Pe extends E.Controller{branches;activeBranch;#e;#t=new Map;constructor(n,r,a,s,o,l,u=E.O){super(n,r,a,s,o,u),this.branches=l;const i=p=>{for(const f of l)if(f.detect(p))return f.key;return l[0]?.key??"unknown"};this.activeBranch=a.map(i,E.O);const c=p=>{if(this.#t.has(p))return this.#t.get(p);const f=l.find(m=>m.key===p);if(!f)throw new Error(`Unknown branch: ${p}`);const h=new E.Controller([...n,p],m=>{this.change(m)},this.signal.map(m=>f.detect(m)?m:f.defaultValue(),u),s.map(E.makeMapValidation([p])),{disabled:this.disabled,validationMode:this.parent.validationMode},u);return this.#t.set(p,h),h};this.#e=this.activeBranch.map(p=>c(p),E.O),this.onDispose(()=>{for(const p of this.#t.values())p.dispose();this.#t.clear(),this.activeBranch.dispose(),this.#e.dispose()})}get activeController(){return t.Value.get(this.#e)}getBranchController(n){const r=this.branches.find(s=>s.key===n);if(!r)throw new Error(`Unknown branch: ${n}`);if(this.#t.has(n))return this.#t.get(n);const a=new E.Controller([...this.path,n],s=>{this.change(s)},this.signal.map(s=>r.detect(s)?s:r.defaultValue(),E.O),this.status.map(E.makeMapValidation([n])),{disabled:this.disabled,validationMode:this.parent.validationMode},E.O);return this.#t.set(n,a),a}switchToBranch(n,r=!1){const a=this.branches.find(l=>l.key===n);if(!a)throw new Error(`Unknown branch: ${n}`);const s=t.Value.get(this.signal);if(a.detect(s))return!0;if(a.convert){const l=a.convert(s);if(l.ok)return this.change(l.value),!0}if(r&&typeof window=="object"&&typeof window.confirm=="function"&&!window.confirm("Changing type will clear the current value. Continue?"))return!1;const o=a.defaultValue();return this.change(o),!0}get activeBranchDefinition(){const n=t.Value.get(this.activeBranch);return this.branches.find(r=>r.key===n)}}function je(e){return e.transform(n=>n??null,n=>n??void 0)}function He(e){return e.transform(n=>n??"",n=>n===""?void 0:n)}function Ze(e){return e.transform(n=>n??void 0,n=>n??null)}const nt=["description","comment","notes","text"];function Xe(e){if(typeof e=="boolean")return nt;const n=e["x:ui"];return n&&Array.isArray(n.textAreaTriggers)?[...nt,...n.textAreaTriggers]:nt}function jt(e){if(typeof e=="boolean")return;const n=e["x:ui"];if(n!=null&&(typeof n=="string"||typeof n=="object"&&n!==null))return n}function Ht(e,n){if(typeof e=="boolean")return;const r=jt(e);if(typeof r=="object"&&typeof r.widget=="string")return{widget:r.widget,source:"explicit-widget",options:r};const a=typeof r=="string"?r:typeof r=="object"&&typeof r.format=="string"?r.format:void 0;if(a)return{widget:a,source:"explicit-format",options:typeof r=="object"?r:void 0};if(typeof e.format=="string")return{widget:{datetime:"date-time",base64:"binary",bytes:"binary",iri:"uri","iri-reference":"uri-reference","idn-hostname":"hostname"}[e.format]||e.format,source:"schema-format"};if(e.contentMediaType==="text/markdown")return{widget:"markdown",source:"schema-media"};if(e.contentMediaType!=null||e.contentEncoding==="base64")return{widget:"binary",source:"schema-media",options:{mediaType:e.contentMediaType,encoding:e.contentEncoding}};if(e.enum!=null)return{widget:"enum",source:"constraints"};if(e.const!=null)return{widget:"const",source:"constraints"};if((e.type==="number"||e.type==="integer"||Array.isArray(e.type)&&e.type.some(o=>o==="number"||o==="integer"))&&e.minimum!=null&&e.maximum!=null)return e.maximum-e.minimum<=5&&e.minimum>=0&&e.minimum<=1&&(e.multipleOf==null||e.multipleOf>=1)?{widget:"rating",source:"constraints",options:{max:e.maximum}}:{widget:"slider",source:"constraints",options:{min:e.minimum,max:e.maximum,step:e.multipleOf}};if(e.type==="string"){if(e.minLength!=null&&e.minLength>20||e.maxLength!=null&&e.maxLength>100)return{widget:"textarea",source:"heuristics"};if(n){const o=n.toLowerCase();if(o.includes("password")||o.includes("secret"))return{widget:"password",source:"heuristics"};if(o.includes("email"))return{widget:"email",source:"heuristics"};if(o.includes("url")||o.includes("link"))return{widget:"url",source:"heuristics"};if(o.includes("color"))return{widget:"color",source:"heuristics"};if(Xe(e).some(u=>o.includes(u.toLowerCase())))return{widget:"textarea",source:"heuristics"}}}}class Zt{widgets=new Map;typeMapping=new Map;register(n,r){if(this.widgets.set(n,r),r.supportedTypes)for(const a of r.supportedTypes)this.typeMapping.has(a)||this.typeMapping.set(a,[]),this.typeMapping.get(a).push(n),this.typeMapping.get(a).sort((s,o)=>{const l=this.widgets.get(s)?.priority||0;return(this.widgets.get(o)?.priority||0)-l})}unregister(n){const r=this.widgets.get(n);if(r&&(this.widgets.delete(n),r.supportedTypes))for(const a of r.supportedTypes){const s=this.typeMapping.get(a);if(s){const o=s.indexOf(n);o>=0&&s.splice(o,1),s.length===0&&this.typeMapping.delete(a)}}}get(n){return this.widgets.get(n)}getAll(){return new Map(this.widgets)}getForType(n){return(this.typeMapping.get(n)||[]).map(a=>this.widgets.get(a)).filter(Boolean)}findBestWidget(n){const r=Ht(n.definition,n.name);if(r?.widget){const s=this.widgets.get(r.widget);if(s)return{name:r.widget,registration:s,resolved:r}}const a=[];for(const[s,o]of this.widgets.entries())if(o.matcher)try{o.matcher(n)&&a.push({name:s,registration:o,priority:o.priority??0})}catch(l){console.warn(`Error in matcher for widget "${s}":`,l)}if(a.length>0){a.sort((o,l)=>l.priority-o.priority);const s=a[0];return{name:s.name,registration:s.registration,resolved:{widget:s.name,source:"heuristics"}}}if(typeof n.definition=="object"&&n.definition.type){const s=Array.isArray(n.definition.type)?n.definition.type[0]:n.definition.type,o=this.getForType(s);if(o.length>0){const l=this.typeMapping.get(s)[0];return{name:l,registration:o[0],resolved:{widget:l,source:"type-fallback"}}}}return null}}const qe=new Zt;function Ye(e,n,r){return{name:e,factory:n,displayName:r?.displayName||e,priority:r?.priority??100,...r}}function Ge(e,n,r){return{name:r?.name||`custom-${e}`,factory:n,displayName:r?.displayName||`${e} widget`,priority:r?.priority??75,matcher:a=>a.definition.format===e,...r}}function Qe(e,n,r,a){return{name:a?.name||`custom-${e}-${n}`,factory:r,displayName:a?.displayName||`${e}:${n} widget`,priority:a?.priority??80,matcher:s=>{const o=s.definition;return o.type===e&&o.format===n},...a}}exports.Base64Input=pe;exports.Base64sInput=Mt;exports.BaseListControl=Pt;exports.BaseNativeSelectControl=St;exports.Card=he;exports.ColorSwatchInput=de;exports.EditableText=be;exports.Expando=Tt;exports.FilesInput=$t;exports.Group=H;exports.ListControl=We;exports.ListInput=Dt;exports.MaskInput=it;exports.NativeSelect=Ft;exports.NativeSelectControl=ye;exports.NullableDateInput=Ie;exports.NullableDateTimeInput=Ce;exports.NullableDurationInput=Le;exports.NullableEmailInput=_e;exports.NullableNumberInput=Ae;exports.NullablePasswordInput=ke;exports.NullableRatingInput=Ue;exports.NullableResetAfter=U;exports.NullableSliderInput=Ne;exports.NullableTextArea=Me;exports.NullableTextInput=$e;exports.NullableUUIDInput=Fe;exports.NullableUrlInput=ze;exports.NumberInput=Te;exports.RatingInput=Rt;exports.SegmentedInput=se;exports.SliderInput=Be;exports.Switch=Ee;exports.TextArea=Nt;exports.UUIDInput=Ot;exports.UnionController=Pe;exports.UnstyledDropZone=Y;exports.UrlInput=Wt;exports.WidgetRegistry=Zt;exports.WithTemporal=Lt;exports._t=ee;exports.durationMaskConfig=zt;exports.emitExpando=fe;exports.emitOptionExpando=At;exports.emptyToNull=rt;exports.ensureTemporal=J;exports.fileToBase64=kt;exports.forFormat=Ge;exports.forTypeAndFormat=Qe;exports.forXUI=Ye;exports.formatColor=R;exports.getContrastRatio=Qt;exports.getXUIConfig=jt;exports.globalWidgetRegistry=qe;exports.gt=Kt;exports.hexToRgb=z;exports.hslToRgb=lt;exports.hwbToRgb=It;exports.isValidColor=Gt;exports.isValidHexColor=st;exports.isValidHslColor=bt;exports.isValidRgbColor=gt;exports.isValidRgbaColor=ht;exports.linearToSrgb=q;exports.mulberry32=wt;exports.normalizeHexColor=yt;exports.nullToEmpty=Bt;exports.oklchToRgb=Ct;exports.parseAnyColor=vt;exports.resolveEffectiveFormat=L;exports.resolveWidget=Ht;exports.rgbToHex=G;exports.rgbToHsl=Q;exports.rgbToHwb=Vt;exports.rgbToOklch=_t;exports.srgbToLinear=X;exports.toRgbaString=xt;exports.transformEmptyStringToUndefined=He;exports.transformNullToUndefined=je;exports.transformUndefinedToNull=Ze;
|