@helfy/helfy 0.0.7 → 0.0.9

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 (40) hide show
  1. package/README.md +477 -323
  2. package/babel-preset.js +2 -1
  3. package/dist/Helfy/Render/DOM.d.ts +2 -0
  4. package/dist/app/createApp.d.ts +3 -1
  5. package/dist/app/index.d.ts +1 -1
  6. package/dist/app/types.d.ts +10 -0
  7. package/dist/compiler/babel.js +20 -13
  8. package/dist/decorators/Context.decorator.d.ts +22 -5
  9. package/dist/decorators/Effect.decorator.d.ts +1 -1
  10. package/dist/decorators/Inject.decorator.d.ts +8 -3
  11. package/dist/decorators/InjectContainer.decorator.d.ts +16 -0
  12. package/dist/decorators/Store.decorator.d.ts +12 -3
  13. package/dist/decorators/UseCase.decorator.d.ts +21 -0
  14. package/dist/di/InjectParam.decorator.d.ts +0 -11
  15. package/dist/di/Injectable.decorator.d.ts +2 -0
  16. package/dist/di/createViewInstance.d.ts +4 -5
  17. package/dist/di/index.d.ts +3 -2
  18. package/dist/http/ApiClient.decorator.d.ts +19 -0
  19. package/dist/http/FetchHttpClient.d.ts +17 -0
  20. package/dist/http/HttpClient.types.d.ts +19 -0
  21. package/dist/http/Mutation.types.d.ts +22 -0
  22. package/dist/http/MutationBuilder.d.ts +17 -0
  23. package/dist/http/Query.types.d.ts +22 -0
  24. package/dist/http/QueryBuilder.d.ts +16 -0
  25. package/dist/http/QueryCache.d.ts +13 -0
  26. package/dist/http/index.d.ts +18 -0
  27. package/dist/http/mutationConfig.decorator.d.ts +19 -0
  28. package/dist/http/queryConfig.decorator.d.ts +9 -0
  29. package/dist/http/useInfiniteQuery.decorator.d.ts +45 -0
  30. package/dist/http/useMutation.decorator.d.ts +21 -0
  31. package/dist/http/useQuery.decorator.d.ts +25 -0
  32. package/dist/index.d.ts +6 -6
  33. package/dist/index.js +2 -2
  34. package/dist/router/core.d.ts +2 -2
  35. package/dist/router/decorators.d.ts +4 -4
  36. package/dist/router.js +1 -1
  37. package/dist/signals.d.ts +7 -1
  38. package/package.json +1 -1
  39. package/dist/decorators/Observe.decorator.d.ts +0 -1
  40. package/dist/decorators/Provide.decorator.d.ts +0 -22
@@ -0,0 +1,19 @@
1
+ import type { MutationBuilder } from "./MutationBuilder";
2
+ import type { MutationOptions } from "./Mutation.types";
3
+ export interface MutationConfigOptions<TData, TVariables> {
4
+ invalidateQueries?: readonly unknown[][];
5
+ optimisticFn?: MutationOptions<TData, TVariables>["optimisticFn"];
6
+ }
7
+ /**
8
+ * Decorator for ApiClient mutation methods.
9
+ * Merges options (invalidateQueries, optimisticFn) into the Mutation returned by the method.
10
+ *
11
+ * @example
12
+ * @mutationConfig({ invalidateQueries: [['todo']], optimisticFn: (dto) => ({ ... }) })
13
+ * create(dto: AddTodoDto) {
14
+ * return new MutationBuilder<TodoItem, AddTodoDto>()
15
+ * .fn((d) => this.http.post<TodoItem>('/todos', d))
16
+ * .build();
17
+ * }
18
+ */
19
+ export declare function mutationConfig<TData = unknown, TVariables = unknown>(options?: MutationConfigOptions<TData, TVariables>): <T extends (...args: any[]) => MutationBuilder<TData, TVariables>>(_target: object, _propertyKey: string, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T>;
@@ -0,0 +1,9 @@
1
+ declare const QUERY_CONFIG_KEY: unique symbol;
2
+ /**
3
+ * Decorator for ApiClient methods that return QueryBuilder or Query.
4
+ * If QueryBuilder, calls .build() and returns Query<T>.
5
+ *
6
+ * @param keyTemplate - Template for cache key (e.g. 'todos' or 'todo/:id'). Used for @useQuery resolution.
7
+ */
8
+ export declare function queryConfig(keyTemplate: string): (_target: object, _propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
9
+ export { QUERY_CONFIG_KEY };
@@ -0,0 +1,45 @@
1
+ export declare const USE_INFINITE_QUERY_FIELDS: unique symbol;
2
+ export interface InfiniteQueryKeyDescriptor {
3
+ /** Method name that accepts (page: number) and returns Query<T[]> */
4
+ method: string;
5
+ totalPages: number;
6
+ initialPage?: number;
7
+ }
8
+ /** @deprecated Use InfiniteQueryKeyDescriptor */
9
+ export interface UseInfiniteQueryConfig<TApi> extends InfiniteQueryKeyDescriptor {
10
+ methodName?: string;
11
+ }
12
+ export interface InfiniteQueryResult<T> {
13
+ /** Accumulated items from all loaded pages */
14
+ readonly data: T[];
15
+ readonly hasNextPage: boolean;
16
+ readonly hasPreviousPage: boolean;
17
+ readonly isFetchingNext: boolean;
18
+ readonly isFetchingPrevious: boolean;
19
+ readonly isLoading: boolean;
20
+ readonly isError: boolean;
21
+ readonly error: unknown;
22
+ loadMore(): void;
23
+ loadPrevious(): void;
24
+ }
25
+ export interface UseInfiniteQueryDescriptor {
26
+ propertyKey: string | symbol;
27
+ apiToken: symbol | (new (...args: any[]) => any);
28
+ config: InfiniteQueryKeyDescriptor | UseInfiniteQueryConfig<unknown>;
29
+ }
30
+ /**
31
+ * Injects InfiniteQueryResult for bidirectional infinite scroll.
32
+ * Supports loading next/previous pages and starting from the middle.
33
+ *
34
+ * @example
35
+ * @useInfiniteQuery<PublicApi>({
36
+ * methodName: "postsPage",
37
+ * totalPages: TOTAL_PAGES,
38
+ * initialPage: 10,
39
+ * })
40
+ * private postsQuery!: InfiniteQueryResult<Post[]>;
41
+ */
42
+ export declare function useInfiniteQuery<TApi = unknown>(keyOrConfig: InfiniteQueryKeyDescriptor | UseInfiniteQueryConfig<TApi>): (target: object, propertyKey: string | symbol) => void;
43
+ export declare function useInfiniteQuery<TApi = unknown>(apiToken: symbol | (new (...args: any[]) => any), keyOrConfig: InfiniteQueryKeyDescriptor | UseInfiniteQueryConfig<TApi>): (target: object, propertyKey: string | symbol) => void;
44
+ export declare function resolveUseInfiniteQuery(instance: object, descriptor: UseInfiniteQueryDescriptor): unknown;
45
+ export declare function setupUseInfiniteQuery(instance: object, subscriptions: (() => void)[]): void;
@@ -0,0 +1,21 @@
1
+ export declare const USE_MUTATION_FIELDS: unique symbol;
2
+ export interface UseMutationDescriptor {
3
+ propertyKey: string | symbol;
4
+ apiToken: symbol | (new (...args: any[]) => any);
5
+ methodName: string;
6
+ }
7
+ /**
8
+ * Injects Mutation<TData, TVariables> from ApiClient by method name.
9
+ * Use in View/Context for imperative mutations.
10
+ *
11
+ * @example
12
+ * @useMutation<TodoApi>('create')
13
+ * private createTodo!: Mutation<TodoItem, AddTodoDto>;
14
+ *
15
+ * // In handler:
16
+ * await this.createTodo.mutateAsync({ title: 'New task' });
17
+ *
18
+ * Babel plugin transforms to @useMutation(__DI__.TodoApi, 'create')
19
+ */
20
+ export declare function useMutation<TApi = unknown>(apiToken: symbol | (new (...args: any[]) => any), methodName: string): (target: object, propertyKey: string | symbol) => void;
21
+ export declare function resolveUseMutation(descriptor: UseMutationDescriptor): unknown;
@@ -0,0 +1,25 @@
1
+ export declare const USE_QUERY_FIELDS: unique symbol;
2
+ export type UseQueryKeyOrGetter<TApi> = string
3
+ /** Key getter: (self) => [methodName, ...args]. Reactive — tracks signals read inside. */
4
+ | ((self: unknown) => unknown);
5
+ export interface UseQueryDescriptor {
6
+ propertyKey: string | symbol;
7
+ apiToken: symbol | (new (...args: any[]) => any);
8
+ keyOrGetter: string | ((self: unknown) => unknown);
9
+ }
10
+ /**
11
+ * Injects Query<T> from ApiClient. Use in View/Context for declarative data loading.
12
+ *
13
+ * @example
14
+ * // String: method name, no params
15
+ * @useQuery<TodoApi>('todos')
16
+ * private todosQuery!: Query<TodoItem[]>;
17
+ *
18
+ * // Key getter: (self) => [methodName, ...args]. Reactive — re-runs when self.xxx changes.
19
+ * @useQuery<PublicApi>((self) => ['postsPage', self.currentPage])
20
+ * private postsQuery!: Query<Post[]>;
21
+ */
22
+ export declare function useQuery<TApi = unknown>(apiToken: symbol | (new (...args: any[]) => any), keyOrGetter: UseQueryKeyOrGetter<TApi>): (target: object, propertyKey: string | symbol) => void;
23
+ export declare function useQuery<TApi = unknown>(keyOrGetter: UseQueryKeyOrGetter<TApi>): (target: object, propertyKey: string | symbol) => void;
24
+ export declare function resolveUseQuery(instance: object, descriptor: UseQueryDescriptor): unknown;
25
+ export declare function setupUseQueryRefetchAndSubscribe(instance: object, subscriptions: (() => void)[]): void;
package/dist/index.d.ts CHANGED
@@ -2,18 +2,18 @@ import "reflect-metadata";
2
2
  import "./Helfy/jsx/jsx-namespace";
3
3
  export { Render as $ } from './Helfy/Render/Render';
4
4
  export { createApp, HelfyApp } from './app';
5
- export type { AppConfig, AppBuilder, CreateAppOptions, RegisterServicesFn, RouterOptions } from './app';
5
+ export type { AppConfig, AppBuilder, CreateAppOptions, RegisterServicesFn, RouterOptions, HttpConfig } from './app';
6
+ export { HttpClientToken, FetchHttpClient, ApiClient, queryConfig, mutationConfig, QueryBuilder, MutationBuilder, useQuery, useMutation, useInfiniteQuery, getOrCreateQueryCache, setQueryCacheMaxSize, QUERY_SUBSCRIBE, QUERY_CONFIG_KEY, USE_QUERY_FIELDS, USE_MUTATION_FIELDS, USE_INFINITE_QUERY_FIELDS, type HttpClient, type HttpRequestConfig, type FetchHttpClientConfig, type Query, type QueryOptions, type Mutation, type MutationOptions, type InfiniteQueryResult, type UseInfiniteQueryConfig, } from './http';
6
7
  export { View, type ViewInstance, type HelfyViewComponent } from './decorators/View.decorator';
7
- export { observe } from './decorators/Observe.decorator';
8
8
  export { state } from './decorators/State.decorator';
9
9
  export { Store } from './decorators/Store.decorator';
10
10
  export { observable } from './decorators/Observable.decorator';
11
11
  export { computed } from './decorators/Computed.decorator';
12
12
  export { effect } from './decorators/Effect.decorator';
13
13
  export { createSignal, createEffect, createComputed, createMemo, createReactiveChild, batch, onCleanup, type Signal, type SignalGetter, type SignalSetter, type EffectDisposer, type CreateComputedOptions, } from './signals';
14
- export { Context, isContextClass } from './decorators/Context.decorator';
15
- export { provide } from './decorators/Provide.decorator';
16
- export { ctx } from './decorators/Inject.decorator';
14
+ export { Context, isContextClass, type ContextComponent } from './decorators/Context.decorator';
15
+ export { useCtx } from './decorators/Inject.decorator';
16
+ export { inject, resolveInjectContainer } from './decorators/InjectContainer.decorator';
17
17
  export { logger, LoggerService, ConsoleTransport, ILoggerToken, } from './logger';
18
18
  export type { ILogger, ILogTransport, LogLevel } from './logger';
19
19
  export { ref } from './decorators/Ref.decorator';
@@ -21,7 +21,7 @@ export { expose } from './decorators/Expose.decorator';
21
21
  export { binded } from './decorators/Binded.decorator';
22
22
  export { Form, isFormClass, field, useForm } from './forms';
23
23
  export type { FieldState, FieldOptions } from './forms';
24
- export { Container, Injectable, inject, diParams, getScopeMetadata, createViewInstance, setRootContainer, getRootContainer, } from './di';
24
+ export { Container, Injectable, Service, UseCase, diParams, getScopeMetadata, createViewInstance, setRootContainer, getRootContainer, } from './di';
25
25
  export type { InjectionToken, ProviderOptions, ScopeType, } from './di';
26
26
  export { Store as StoreBase, Subscriber } from './store/Store';
27
27
  export type { TComponent } from './types';
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import"reflect-metadata";var ae=class{static _view(e,t){return{$_type:"_view",$_view:e,$_props:t!=null?t:void 0,$_ref:null}}static _forin(e,t){let o=[];return e.forEach((r,i,c)=>{let s=t(r,i,c);s!==null&&o.push(s)}),{$_type:"_forin",$_data:e,$_items:o}}static _if(e,t){return{$_type:"_if",$_node:e?t:null,$_condition:e}}static _ifelse(e,t,o){if(!t&&!o)throw new Error('Has no statements "if" or "else"');return{$_type:"_ifelse",$_condition:e,$_node:e?t:o}}static _rIf(e,t){return{$_type:"_rIf",$_condFn:e,$_bodyFn:t}}static _rIfElse(e,t,o){return{$_type:"_rIfElse",$_condFn:e,$_ifFn:t,$_elseFn:o}}static _rForin(e,t){return{$_type:"_rForin",$_listFn:e,$_mapFn:t}}static _slot(e,t){return{$_type:"_slot",$_name:e,$_render:t}}static _callSlot(e,t,o,r){var i,c;let s=(i=e.$slots)!==null&&i!==void 0?i:{},l=s&&s[t]||r;return l&&(c=l(o))!==null&&c!==void 0?c:null}static _bind(e,t){return{get:()=>e[t],set:o=>{e[t]=o}}}static _bindFn(e,t){return{get:e,set:t}}};import"reflect-metadata";var _e=Symbol.for("helfy:injectable"),it=Symbol.for("helfy:injectableToken"),st=Symbol.for("helfy:scope");function me(n,e){return function(t){return t[_e]=!0,n!==void 0&&(t[it]=n),e!==void 0&&(t[st]=e),t}}function fe(n){return n[st]}function Ae(n){return typeof n=="function"&&!!n[_e]}function ct(n){return n[it]}var I=Symbol.for("helfy:injectParamTokens");function lt(n){return function(e){return e[I]=n,e}}function ut(n){return function(e,t,o){var r;let i=typeof e=="function"?e:e.constructor;if(!i||typeof i!="function")return;let c=(r=i[I])!==null&&r!==void 0?r:{};c[o]=n,Object.defineProperty(i,I,{value:c,configurable:!0}),i.prototype&&i.prototype!==e&&Object.defineProperty(i.prototype,I,{value:c,configurable:!0})}}var at=null;function be(n){at=n}function T(){return at}var ye=Symbol.for("helfy:provideFields");function J(n){var e,t,o;let r=(e=n==null?void 0:n.reactive)!==null&&e!==void 0?e:!1,i=(t=n==null?void 0:n.computed)!==null&&t!==void 0?t:!1,c=(o=n==null?void 0:n.deps)!==null&&o!==void 0?o:[];return function(s,l,u){var a;let f=typeof s=="function"?s:s.constructor,d=(a=f[ye])!==null&&a!==void 0?a:[],h=d.find(p=>p.propertyKey===l);h?(h.reactive=r,h.computed=i,h.deps=c):d.push({propertyKey:l,reactive:r,computed:i,deps:c}),Object.defineProperty(f,ye,{value:d,configurable:!0})}}var ft="__helfy_signals_ctx__";function B(){let n=globalThis[ft];return n||(n={currentComputation:null,batchDepth:0,pendingComputations:new Set},globalThis[ft]=n),n}function dt(n){let e=B(),{currentComputation:t}=e;t&&(n.observers.add(t),t.deps.add(n))}function pt(n){let e=B();if(e.batchDepth>0){e.pendingComputations.add(n);return}ge(n)}function ge(n){n.deps.forEach(r=>{r.observers.delete(n)}),n.deps.clear(),n.cleanups.size&&(n.cleanups.forEach(r=>{try{r()}catch(i){}}),n.cleanups.clear());let e=B(),t=e.currentComputation;e.currentComputation=n;try{n.fn()}finally{e.currentComputation=t}let o=0;n.deps.forEach(r=>{r.level>o&&(o=r.level)}),n.level=o+1}function Jt(){let n=B();n.batchDepth++;try{for(;n.pendingComputations.size;){let e=Array.from(n.pendingComputations);n.pendingComputations.clear(),e.sort((t,o)=>t.level-o.level);for(let t of e)ge(t)}}finally{n.batchDepth--}}function Ve(n){let e=B();e.batchDepth++;try{n()}finally{e.batchDepth--,e.batchDepth===0&&Jt()}}function C(n){let e={value:n,observers:new Set,level:0};return[()=>(dt(e),e.value),r=>{let i=typeof r=="function"?r(e.value):r;if(Object.is(e.value,i)||(e.value=i,!e.observers.size))return;Array.from(e.observers).forEach(s=>{pt(s)})}]}function O(n){let e={fn:n,deps:new Set,cleanups:new Set,level:0};return ge(e),()=>{e.deps.forEach(t=>{t.observers.delete(e)}),e.deps.clear(),e.cleanups.size&&(e.cleanups.forEach(t=>{try{t()}catch(o){}}),e.cleanups.clear())}}function xe(n){let{currentComputation:e}=B();if(!e)throw new Error("onCleanup() can only be used inside a reactive computation");e.cleanups.add(n)}var je=Symbol.for("helfy:computedDispose"),Ee=Symbol.for("helfy:reactiveGetter");function D(n,e){var t;let o={value:void 0,observers:new Set,level:0},r=(t=e==null?void 0:e.equals)!==null&&t!==void 0?t:Object.is,i=()=>(dt(o),o.value);i[Ee]=!0;let c={fn:()=>{let s=n();if(!r(o.value,s)){if(o.value=s,!o.observers.size)return;Array.from(o.observers).forEach(u=>{pt(u)})}},deps:new Set,cleanups:new Set,level:0};return ge(c),o.level=c.level,i[je]=()=>{c.deps.forEach(s=>s.observers.delete(c)),c.deps.clear(),c.cleanups.forEach(s=>{try{s()}catch(l){}}),c.cleanups.clear()},i}var De=D,Y=Symbol.for("helfy:reactiveCache");function Ut(n,e,t){if(n==null)return De(t);n[Y]||Object.defineProperty(n,Y,{value:Object.create(null),writable:!1,configurable:!0});let r=n[Y];if(r[e])r[e].setHolder({fn:t});else{let[i,c]=C({fn:t}),s=De(()=>i().fn());r[e]={getter:s,setHolder:c}}return r[e].getter}var we=Symbol.for("helfy:context"),ht=Symbol.for("helfy:contextInjectKey");function Z(n){return typeof n=="function"&&!!n[we]}function Q(n){let e=n[ht];return e||(e=Symbol(n.name||"Context"),n[ht]=e),e}function de(n){return n[we]=!0,Q(n),Object.defineProperties(n.prototype,{updateProps:{value:function(e){}},subscribe:{value:function(e,t){let o=this,r=!0,i=O(()=>{let c=o[e];if(r){r=!1;return}t(c,()=>i())});return()=>i()}},unsubscribe:{value:function(e,t){}}}),class extends n{constructor(...e){var t,o;super(...e),this._injector=null,this._parentView=null,k(this);let r=e.length>0?e[e.length-1]:void 0;r&&typeof r=="object"&&(this.props=r);let i=r&&typeof r=="object"?r.value:void 0,c=(t=n[ye])!==null&&t!==void 0?t:[],s=this;s.__signals||Object.defineProperty(s,"__signals",{value:{},writable:!0,configurable:!0}),c.filter(h=>h.reactive&&!h.computed).forEach(({propertyKey:h})=>{let p=s[h];try{delete s[h]}catch(m){}let[_,v]=C(p);s.__signals[h]=[_,v],Object.defineProperty(s,h,{get(){let m=this.__signals[h];return m?m[0]():void 0},set(m){let w=this.__signals[h];w&&w[1](m)},configurable:!0,enumerable:!0})}),typeof s.__beforeComputedInit=="function"&&s.__beforeComputedInit();let u=(o=s.$_computedFields)!==null&&o!==void 0?o:[];u.length&&(u.forEach(h=>{let p=Object.getPrototypeOf(s),_;for(;p&&(_=Object.getOwnPropertyDescriptor(p,h),!_);)p=Object.getPrototypeOf(p);let v=_==null?void 0:_.get;if(typeof v!="function")return;let m=D(()=>v.call(s));Object.defineProperty(s,h,{get(){return m()},configurable:!0,enumerable:!0})}),delete s.$_computedFields);let a=c.filter(h=>h.computed);if(a.length){let h=Object.getPrototypeOf(s);a.forEach(({propertyKey:p})=>{let _=Object.getOwnPropertyDescriptor(h,p),v=_==null?void 0:_.get;if(typeof v!="function")return;let m=D(()=>v.call(this));Object.defineProperty(s,p,{get(){return m()},configurable:!0,enumerable:!0})})}let f=new Map,d=Q(n);i!=null?f.set(d,i):f.set(d,this),this._injector=f}}}var Le=Symbol.for("helfy:exposeMethods");function Wt(n,e,t){var o;let r=typeof n=="function"?n:n.constructor,i=(o=r[Le])!==null&&o!==void 0?o:[];return i.includes(String(e))||(i.push(String(e)),Object.defineProperty(r,Le,{value:i,configurable:!0})),t}function Ne(n){if(n==null||n instanceof Node||typeof n!="object")return n;let e=n.constructor,t=e==null?void 0:e[Le];return t!=null&&t.length?Kt(n,t):n}function Kt(n,e){return new Proxy(n,{get(t,o,r){if(typeof o=="string"&&e.includes(o)){let i=Reflect.get(t,o,t);return typeof i=="function"?i.bind(t):i}},has(t,o){return typeof o=="string"&&e.includes(o)}})}import"reflect-metadata";var Ce=Symbol.for("helfy:injectFields");function F(n,e,t){let o,r;typeof e=="string"?(o=e,r=t):e&&typeof e=="object"?r=e:r=t;let i=Q(n);return function(c,s){var l;let u=typeof c=="function"?c:c.constructor,a=(l=u[Ce])!==null&&l!==void 0?l:[];a.push({propertyKey:s,key:i,fieldName:o,options:r}),Object.defineProperty(u,Ce,{value:a,configurable:!0})}}function $e(n,e,t){var o,r,i;let c=n;for(;c;){let l=c._injector;if(l!=null&&l.has(e))return l.get(e);c=(o=c._parentView)!==null&&o!==void 0?o:null}if((t==null?void 0:t.optional)!==!1&&(t==null?void 0:t.defaultValue)!==void 0)return t.defaultValue;if(t!=null&&t.optional)return;let s=typeof e=="string"?e:typeof e=="symbol"?(r=e.description)!==null&&r!==void 0?r:String(e):(i=e==null?void 0:e.name)!==null&&i!==void 0?i:String(e);throw new Error(`[helfy] No provider for ${s}`)}function V(n,e,t,o){var r,i,c,s,l,u,a,f;let d=(r=Reflect.getMetadata("design:paramtypes",e))!==null&&r!==void 0?r:[],h=(a=(s=(i=e[I])!==null&&i!==void 0?i:(c=e.prototype)===null||c===void 0?void 0:c[I])!==null&&s!==void 0?s:(u=(l=e.prototype)===null||l===void 0?void 0:l.constructor)===null||u===void 0?void 0:u[I])!==null&&a!==void 0?a:{},p=Object.keys(h).map(Number),_=d.length>1?d.length-1:p.length>0?Math.max(...p)+1:e.length>1?e.length-1:0,v=[];for(let m=0;m<_;m++){let w=(f=h[m])!==null&&f!==void 0?f:d[m];if(w===void 0)throw new Error(`[helfy] Cannot resolve param ${m} of ${e.name}. Add babel-plugin-transform-typescript-metadata or use @inject(token) for interface/abstract dependencies.`);v.push(Xt(n,o,w))}return v.push(t),Reflect.construct(e,v)}function Xt(n,e,t){var o;let r=t;if(Z(r)){let i=Q(r);return $e(e!=null?e:{},i)}if(!n){let i=typeof t=="string"?t:(o=t==null?void 0:t.name)!==null&&o!==void 0?o:String(t);throw new Error(`[helfy] No provider for ${i}. Configure a Container or use @Context for tree-scoped values.`)}return n.get(t)}var vt="__evt_",_t="__attrEffectDisposes",mt="__attrGetterMap";function Me(n){return typeof n=="function"&&n.length===0}function bt(n,e=10){let t=n();for(let o=0;o<e&&Me(t);o++)t=t();return t}var q=class n{static setElementAttributes(e,t){let o=e,r=o[_t],i=o[mt];i||(i={},o[mt]=i),r||(r=[],o[_t]=r);let c=new Set(Object.keys(t||{}));return Object.entries(t||{}).forEach(([s,l])=>{if(s==="$_key"){e.setAttribute("key",String(l));return}if(s==="$_ref")return;if(s.startsWith("on")&&s.toLowerCase()in window){let a=s.toLowerCase().substring(2),f=o[vt+a];f&&e.removeEventListener(a,f),o[vt+a]=l,e.addEventListener(a,l);return}if(Me(l)){let a=i[s];if(a&&a.getter===l)return;a&&(a.dispose(),delete i[s]);let f=O(()=>{let d=bt(l);this.applyAttr(e,s,d)});i[s]={getter:l,dispose:f};return}let u=i[s];u&&(u.dispose(),delete i[s]),this.applyAttr(e,s,l)}),Object.keys(i).forEach(s=>{c.has(s)||(i[s].dispose(),delete i[s])}),e}static applyAttr(e,t,o){if(t==="html"){e.innerHTML=String(o!=null?o:"");return}if(t==="class"){if(typeof o=="string")e.className=o;else if(Array.isArray(o)){let r=[];o.forEach(i=>{if(Array.isArray(i)){let[c,s]=i;s&&r.push(c)}else r.push(String(i))}),e.className=r.join(" ")}return}if(t==="style"&&typeof o=="object"&&o!==null){let r=Object.entries(o).map(([i,c])=>c!=null?`${i.replace(/[A-Z]/g,s=>"-"+s.toLowerCase())}:${String(c)}`:"").filter(Boolean).join(";");e.setAttribute("style",r);return}if(t==="value"&&(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement)){e.value=o!=null?String(o):"";return}if(t==="checked"&&e instanceof HTMLInputElement){e.checked=!!o;return}if(t==="disabled"){let r=!!o;"disabled"in e?e.disabled=r:r?e.setAttribute("disabled",""):e.removeAttribute("disabled");return}o!=null&&e.setAttribute(t,String(o))}static createElement(e,t){if(e==="fragment")return document.createDocumentFragment();let o=document.createElement(e);return this.setElementAttributes(o,t),o}static createNode(e,t,o){if(!e)return null;let{tag:r,props:i,children:c}=e;if(e!=null&&e.$_type)return this._jsx(e,o);let s=this.createElement(r,i);return!t&&(c!=null&&c.length)&&c.forEach(l=>{if(l)if(l.$_type==="_view"){let u=n._jsx(l,o);u&&s.append(u)}else if(typeof l=="string"||typeof l=="number")s.append(document.createTextNode(typeof l=="number"?l.toString():l));else if(Me(l)){let u=document.createTextNode(""),a=O(()=>{u.textContent=String(bt(l))});u.__effectDispose=a,s.append(u)}else{let u=this._jsx(l,o);u!==null&&s.append(u)}}),s}static createNodesList(e,t){let o=document.createDocumentFragment(),r=T();return o.append(...e.map(i=>{var c,s,l;if(i.$_type==="_view"){let u=i,a=(c=u.$_view)!==null&&c!==void 0?c:u.tag,f=(s=u.$_props)!==null&&s!==void 0?s:u.props,d=V(r,a,f!=null?f:{},t!=null?t:null),h=(l=d.view)!==null&&l!==void 0?l:d;return h.__viewRef=d,h}return this.createNode(i,void 0,t)})),o}static _jsx(e,t){var o,r,i,c;if(typeof e=="string")return document.createTextNode(e);if(typeof e=="number")return document.createTextNode(e.toString());if(e!=null&&e.$_type){let s=null,{$_type:l,$_node:u,$_condition:a,$_items:f}=e;switch(l){case"_view":{let d=e;if(!d.$_ref){let h=(o=d.$_view)!==null&&o!==void 0?o:d.tag,p=(r=d.$_props)!==null&&r!==void 0?r:d.props,_=V(T(),h,p!=null?p:{},t!=null?t:(i=p==null?void 0:p._parentView)!==null&&i!==void 0?i:null);d.$_ref=_,s=(c=_.view)!==null&&c!==void 0?c:_,s.__viewRef=_}break}case"_if":a&&(s=this.createNode(u,void 0,t));break;case"_ifelse":s=this.createNode(u,void 0,t);break;case"_forin":s=this.createNodesList(f,t);break;default:break}return s}return this.createNode(e,void 0,t)}};var Ge="__viewRef";function ze(n){let e={},t=Object.assign({},n);for(let o of Object.keys(n))if(o.startsWith("$_bind_")){let r=o.slice(7);e[r]=n[o],delete t[o]}return{binds:e,cleanProps:t}}function yt(n,e){let{binds:t,cleanProps:o}=ze(n);return Object.assign(Object.assign(Object.assign({},o),{__binds:t}),e)}var U="__effectDispose",ke="__attrEffectDisposes",Yt="__attrGetterMap";function Bt(n){if(!n)return;let e=n;typeof e[U]=="function"&&(e[U](),e[U]=void 0),Array.isArray(e[ke])&&(e[ke].forEach(o=>o()),e[ke]=[]);let t=e[Yt];if(t&&typeof t=="object"){Object.values(t).forEach(o=>{var r;return(r=o.dispose)===null||r===void 0?void 0:r.call(o)});for(let o of Object.keys(t))delete t[o]}}function L(n){if(!n)return;n.childNodes.forEach(t=>L(t)),Bt(n);let e=n[Ge];e!=null&&e.destroy&&e.destroy()}function qe(n){return typeof n=="function"&&n.length===0}function gt(n,e=10){let t=n();for(let o=0;o<e&&qe(t);o++)t=t();return t}function H(n){if(!n)return;let e=n[Ge];e!=null&&e._setupReactiveEffects&&e._setupReactiveEffects(),e!=null&&e.onAttached&&e.onAttached(),n.childNodes.forEach(t=>H(t))}var W=class{static mount(e){var t,o,r,i,c;let s=e.render();if(e.DOM=s,this.isView(s)){let u=s,a=this.getViewConstructor(u);if(Z(a)){let f=u.children,{restChildren:d}=this.extractSlots(f),h=(t=this.getViewProps(u))!==null&&t!==void 0?t:{},p=V(T(),a,h,e);p._parentView=e,u.$_ref=p;let _=document.createDocumentFragment();this.mountChildren(_,(o=d!=null?d:f)!==null&&o!==void 0?o:[],p),e.el=_}else{let f=u.children,{slots:d,restChildren:h}=this.extractSlots(f);f&&h!==f&&(u.children=h);let p=this.getViewProps(u);Object.keys(d).length&&(p=Object.assign(Object.assign({},p),{$slots:d})),p=yt(p,{_parentView:e}),u.$_props=p;let _=q._jsx(s,e);if(_ instanceof Node){e.el=_;let v=u.$_ref;if(v&&typeof v=="object"){v._parentView=e;let m=p.$_ref;m&&typeof m=="string"&&(e[m]=Ne(v),v.__refOwner=e,v.__refName=m)}}}(r=e.onMount)===null||r===void 0||r.call(e);return}e.el=q.createElement(s.tag,s.props);let l=(i=s.props)===null||i===void 0?void 0:i.$_ref;l&&typeof l=="string"&&(e[l]=e.el),this.mountChildren(e.el,s.children,e),(c=e.onMount)===null||c===void 0||c.call(e)}static mountChildren(e,t,o){t!=null&&t.length&&t.forEach(r=>{var i,c,s;if(r!=null){if(typeof r=="string"||typeof r=="number"){e.append(document.createTextNode(r.toString()));return}if(qe(r)){let l=document.createTextNode(""),u=O(()=>{l.textContent=String(gt(r))});l[U]=u,e.append(l);return}if(this.isView(r)){let l=r,u=this.getViewConstructor(l);if(Z(u)){let m=l.children,{restChildren:w}=this.extractSlots(m),P=(i=this.getViewProps(l))!==null&&i!==void 0?i:{},X=V(T(),u,P,o!=null?o:null);X._parentView=o!=null?o:null,l.$_ref=X,this.mountChildren(e,(c=w!=null?w:m)!==null&&c!==void 0?c:[],X);return}let a=this.getViewConstructor(l),f=l.children,{slots:d,restChildren:h}=this.extractSlots(f);f&&h!==f&&(l.children=h);let p=this.getViewProps(l);Object.keys(d).length&&(p=Object.assign(Object.assign({},p),{$slots:d})),p=yt(p,{_parentView:o!=null?o:null});let _=V(T(),a,p,o!=null?o:null);l.$_ref=_,_.view[Ge]=_;let v=p.$_ref;v&&typeof v=="string"&&o&&(o[v]=Ne(_),_.__refOwner=o,_.__refName=v),e.append(_.view);return}if(this.isCondition(r)){let l=r;l.$_condition&&l.$_node&&this.mountChildren(e,[l.$_node],o);return}if(this.isElseCondition(r)){let l=r;this.mountChildren(e,[l.$_node],o);return}if(this.isReactiveIf(r)){this.mountReactiveIf(e,r,o);return}if(this.isReactiveForin(r)){this.mountReactiveForin(e,r,o);return}if(this.isForin(r)){let l=r;this.mountChildren(e,l.$_items,o);return}if(this.isJSX(r)){let l=r,u=(s=l.props)!==null&&s!==void 0?s:{},a=q.createElement(l.tag,u),f=u.$_ref;f&&typeof f=="string"&&o&&(o[f]=a),l.children&&this.mountChildren(a,l.children,o),e.append(a)}}})}static updateChildren(e,t,o){if(!(t!=null&&t.length)){e.childNodes.forEach(i=>L(i)),e.replaceChildren();return}let r=[];t.forEach(i=>{if(i==null)return;if(typeof i=="string"||typeof i=="number"){r.push(document.createTextNode(i.toString()));return}if(qe(i)){let s=document.createTextNode(""),l=O(()=>{s.textContent=String(gt(i))});s[U]=l,r.push(s);return}let c=q._jsx(i,o);c instanceof Node&&r.push(c)}),e.childNodes.forEach(i=>L(i)),e.replaceChildren(...r)}static updateDomNode(e,t,o,r){if(!e||!o)return;let i=o==null?void 0:o.tag;if(typeof i=="string"&&!(o!=null&&o.$_type)&&e.tagName.toLowerCase()===i){q.setElementAttributes(e,o.props),e.childNodes.forEach(l=>L(l)),e.replaceChildren();let s=o.children;s!=null&&s.length&&this.mountChildren(e,s,r);return}e.childNodes.forEach(s=>L(s)),e.replaceChildren(),this.mountChildren(e,[o],r)}static getViewConstructor(e){var t;return(t=e==null?void 0:e.$_view)!==null&&t!==void 0?t:e==null?void 0:e.tag}static getViewProps(e){var t,o;return(o=(t=e==null?void 0:e.$_props)!==null&&t!==void 0?t:e==null?void 0:e.props)!==null&&o!==void 0?o:{}}static getNodeType(e){return this.isView(e)?"view":this.isForin(e)?"forin":this.isCondition(e)?"condition":this.isElseCondition(e)?"elsecondition":this.isJSX(e)?"jsx":typeof e=="string"||typeof e=="number"?"text":"unknown"}static isSlot(e){return typeof e=="object"&&e!==null&&(e==null?void 0:e.$_type)==="_slot"}static extractSlots(e){let t={};if(!(e!=null&&e.length))return{slots:t,restChildren:e!=null?e:[]};let o=[];return e.forEach(r=>{this.isSlot(r)?t[r.$_name]=r.$_render:o.push(r)}),{slots:t,restChildren:o}}static isJSX(e){return typeof e=="object"&&e!==null&&!(e!=null&&e.$_type)}static isView(e){return typeof e=="object"&&e!==null&&((e==null?void 0:e.$_type)==="_view"||typeof(e==null?void 0:e.tag)=="function")}static isCondition(e){return typeof e=="object"&&e!==null&&(e==null?void 0:e.$_type)==="_if"}static isElseCondition(e){return typeof e=="object"&&e!==null&&(e==null?void 0:e.$_type)==="_ifelse"}static isForin(e){return typeof e=="object"&&e!==null&&(e==null?void 0:e.$_type)==="_forin"}static isReactiveIf(e){if(typeof e!="object"||e===null)return!1;let t=e==null?void 0:e.$_type;return t==="_rIf"||t==="_rIfElse"}static isReactiveForin(e){return typeof e=="object"&&e!==null&&(e==null?void 0:e.$_type)==="_rForin"}static mountReactiveIf(e,t,o){let r=document.createComment(t.$_type);e.append(r);let i=[],c=O(()=>{let s=t.$_condFn();xe(()=>{i.forEach(u=>{L(u),u.remove()}),i=[]});let l=null;if(s?l=t.$_type==="_rIfElse"?t.$_ifFn():t.$_bodyFn():t.$_type==="_rIfElse"&&(l=t.$_elseFn()),l!=null){let u=document.createDocumentFragment();this.mountChildren(u,[l],o);let a=Array.from(u.childNodes);r.after(u),i=a,a.forEach(f=>H(f))}});r[U]=c}static mountReactiveForin(e,t,o){let r=document.createComment("_rForin");e.append(r);let i=[],c=O(()=>{let s=t.$_listFn();if(xe(()=>{i.forEach(l=>{L(l),l.remove()}),i=[]}),s&&s.length>0){let l=[];s.forEach((f,d,h)=>{let p=t.$_mapFn(f,d,h);p!=null&&l.push(p)});let u=document.createDocumentFragment();this.mountChildren(u,l,o);let a=Array.from(u.childNodes);r.after(u),i=a,a.forEach(f=>H(f))}});r[U]=c}};var Re=Symbol.for("helfy:bindedFields");function Qt(n){return(e,t)=>{var o;let r=typeof e=="function"?e:e.constructor,i=(o=r[Re])!==null&&o!==void 0?o:[];i.push({bindName:n,fieldKey:String(t)}),Object.defineProperty(r,Re,{value:i,configurable:!0})}}var Oe=Symbol.for("helfy:viewEffects");function Zt(n,e,t){var o;if(typeof t.value!="function")throw new Error("@effect can only be applied to methods");let r=typeof n=="function"?n:n.constructor,i=(o=r[Oe])!==null&&o!==void 0?o:[];i.push(e),Object.defineProperty(r,Oe,{value:i,configurable:!0})}var Ue=Symbol.for("helfy:view"),Je=Symbol.for("helfy:propSignals");function Ht(n){let e={};for(let o of Object.keys(n))e[o]=C(n[o]);return new Proxy(Object.create(null),{get(o,r){if(r===Je)return e;if(typeof r=="symbol")return;let i=e[r];if(!i)return;let c=i[0]();for(;typeof c=="function"&&c[Ee];){let s=c;if(c=c(),c===s)break}return c},set(o,r,i){return typeof r=="symbol"||(e[r]?e[r][1](i):e[r]=C(i)),!0},has(o,r){return typeof r=="string"&&r in e},ownKeys(){return Object.keys(e)},getOwnPropertyDescriptor(o,r){if(typeof r=="string"&&r in e){let i=e[r][0]();for(;typeof i=="function"&&i[Ee];){let c=i;if(i=i(),i===c)break}return{configurable:!0,enumerable:!0,writable:!0,value:i}}}})}function eo(n){let e=Object.getPrototypeOf(n);e&&Object.getOwnPropertyNames(e).forEach(t=>{if(t==="constructor")return;let o=Object.getOwnPropertyDescriptor(e,t);!o||typeof o.value!="function"||Object.defineProperty(n,t,{value:o.value.bind(n),configurable:!0,writable:!0})})}function N(n){return n[Ue]=!0,Object.defineProperties(n.prototype,{_injector:{value:null,writable:!0},_parentView:{value:null,writable:!0},_dirty:{value:!1,writable:!0},_subscriptions:{value:void 0,writable:!0},DOM:{value:void 0,writable:!0},el:{value:void 0,writable:!0},$slots:{get(){var e;return(e=this.__slots)!==null&&e!==void 0?e:{}},set(e){this.__slots=e!=null?e:{}}},view:{get(){return this.el}},scheduleUpdate:{value:function(){this._dirty||(this._dirty=!0,queueMicrotask(()=>{this._dirty=!1,this.el&&this.el.isConnected&&this.update()}))}},update:{value:function(){var e,t,o,r,i,c,s;let l=this.render(),u=((e=this.DOM)===null||e===void 0?void 0:e.$_type)==="_view"||typeof((t=this.DOM)===null||t===void 0?void 0:t.tag)=="function",a=(l==null?void 0:l.$_type)==="_view"||typeof(l==null?void 0:l.tag)=="function";if(this.DOM&&l&&u&&a){let f=this.DOM,d=l,h=(o=f.tag)!==null&&o!==void 0?o:f.$_component,p=(r=d.tag)!==null&&r!==void 0?r:d.$_component;if(h&&p&&h===p){let v=f.$_ref;if(v&&typeof v.updateProps=="function"){let m=(c=(i=d.$_props)!==null&&i!==void 0?i:d.props)!==null&&c!==void 0?c:{},{binds:w,cleanProps:P}=ze(m);Object.keys(w).length&&(v.__binds=w),v.updateProps(P)}f.$_ref&&!d.$_ref&&(d.$_ref=f.$_ref),this.DOM=l;return}let _=(s=this.el)===null||s===void 0?void 0:s.parentNode;if(_){let v=document.createDocumentFragment();W.mountChildren(v,[l],this);let m=Array.from(v.childNodes);this.el instanceof Node&&(L(this.el),_.replaceChild(v,this.el)),this.el=m.length===1?m[0]:_,m.forEach(w=>H(w)),this.DOM=l;return}}W.updateDomNode(this.el,this.DOM,l,this),this.DOM=l}},updateProps:{value:function(e){var t;e&&typeof e=="object"&&"$slots"in e&&(this.$slots=e.$slots);let o=(t=this.props)===null||t===void 0?void 0:t[Je];o?Ve(()=>{for(let r of Object.keys(e))r!=="$slots"&&(o[r]?o[r][1](e[r]):o[r]=C(e[r]))}):(this.props=e,this.scheduleUpdate())}},mount:{value:function(){W.mount(this)}},attach:{value:function(e){var t;let o=this.view,r=o instanceof DocumentFragment,i=r?o.childNodes.length:1;e.append(o),this._setupReactiveEffects&&this._setupReactiveEffects(),(t=this.onAttached)===null||t===void 0||t.call(this),(r?Array.from(e.childNodes).slice(-i):[o]).forEach(s=>H(s))}},destroy:{value:function(){var e,t;(e=this._subscriptions)===null||e===void 0||e.forEach(r=>r()),this._subscriptions=[],this._effectsInitialized=!1;let o=this[Y];if(o){for(let r of Object.keys(o)){let i=o[r],c=i==null?void 0:i.getter;c&&typeof c[je]=="function"&&c[je]()}delete this[Y]}this.__refOwner&&this.__refName&&(this.__refOwner[this.__refName]=null),(t=this.onDestroy)===null||t===void 0||t.call(this)}}}),class extends n{constructor(...e){var t,o,r,i,c,s,l,u;let a=e.length-1,f=(t=e[a])!==null&&t!==void 0?t:{},d=(o=f.__binds)!==null&&o!==void 0?o:{},h=Object.assign({},f);delete h.__binds,e[a]=h,super(...e),this.__binds=d,this.props===void 0&&e[a]!=null&&(this.props=e[a]);let p=(r=this.props)!==null&&r!==void 0?r:e[a];p&&typeof p=="object"&&"_parentView"in p&&(this._parentView=p._parentView);let _=this.props;if(_&&typeof _=="object"&&!_[Je]&&(this.props=Ht(_)),eo(this),k(this),!((i=this.$_stateFields)===null||i===void 0)&&i.length){let b=this;b.__signals||Object.defineProperty(b,"__signals",{value:{},writable:!0,configurable:!0}),this.$_stateFields.forEach(j=>{let y=b[j];try{delete b[j]}catch(R){}let[g,x]=C(y);b.__signals[j]=[g,x],Object.defineProperty(b,j,{get(){let R=this.__signals[j];return R?R[0]():void 0},set(R){let z=this.__signals[j];z&&z[1](R)},configurable:!0,enumerable:!0})}),delete this.$_stateFields}if(!((c=this.$_observableFields)===null||c===void 0)&&c.length){let b=this;this.$_observableFields.forEach(({field:j,store:y,storeField:g})=>{try{delete b[j]}catch(x){}Object.defineProperty(b,j,{get(){return y[g]},set(x){y[g]=x},configurable:!0,enumerable:!0})}),delete this.$_observableFields}if(!((s=this.$_computedFields)===null||s===void 0)&&s.length){let b=this;((l=b.$_computedFields)!==null&&l!==void 0?l:[]).forEach(y=>{let g=Object.getPrototypeOf(this),x;for(;g&&g!==Object.prototype&&(x=Object.getOwnPropertyDescriptor(g,y),!x);)g=Object.getPrototypeOf(g);let R=x==null?void 0:x.get;if(typeof R!="function")return;let z=D(()=>R.call(this));Object.defineProperty(b,y,{get(){return z()},configurable:!0,enumerable:!0})}),delete b.$_computedFields}let v=this.constructor[Re];v!=null&&v.length&&v.forEach(({bindName:b,fieldKey:j})=>{try{delete this[j]}catch(y){}Object.defineProperty(this,j,{get(){var y;let g=(y=this.__binds)===null||y===void 0?void 0:y[b];return g&&typeof g.get=="function"?g.get():void 0},set(y){var g;let x=(g=this.__binds)===null||g===void 0?void 0:g[b];x&&typeof x.set=="function"&&x.set(y)},configurable:!0,enumerable:!0})});let m=this.constructor[Ce];if(m!=null&&m.length){let b=this;b._subscriptions=(u=b._subscriptions)!==null&&u!==void 0?u:[],m.forEach(({propertyKey:j,key:y,fieldName:g,options:x})=>{var R;try{delete b[j]}catch(pe){}let z=Symbol.for(`inject:sub:${String(j)}`),Pe=(R=x==null?void 0:x.subscribeField)!==null&&R!==void 0?R:g;Object.defineProperty(b,j,{configurable:!0,enumerable:!0,get(){var pe;let M=$e(this,y,x),he;g&&M&&typeof M=="object"&&g in M?he=M[g]:he=M;let Ie=M&&typeof M=="object"?M:null;if(Pe&&Ie&&Pe in Ie){let ve=Ie;if(typeof(ve==null?void 0:ve.subscribe)=="function"){this._injectSubs||(this._injectSubs=new Map);let ot=this._injectSubs;if(!ot.has(z)){let nt=ve.subscribe(Pe,()=>{var rt,Te;return(Te=(rt=this).scheduleUpdate)===null||Te===void 0?void 0:Te.call(rt)});ot.set(z,nt),(pe=this._subscriptions)===null||pe===void 0||pe.push(nt)}}}return x!=null&&x.access?x.access(he):he}})})}let w=this.props;w&&typeof w=="object"&&"$slots"in w&&(this.$slots=w.$slots),this.mount();let P=this,X=()=>{var b;if(P._effectsInitialized)return;P._effectsInitialized=!0;let j=P.constructor,y;for(;j&&j!==Function.prototype&&(y=j[Oe],!(y!=null&&y.length));)j=Object.getPrototypeOf(j);y!=null&&y.length&&(P._subscriptions=(b=P._subscriptions)!==null&&b!==void 0?b:[],y.forEach(g=>{let x=O(()=>{let R=P[g];typeof R=="function"&&R.call(P)});P._subscriptions.push(x)}))};P._setupReactiveEffects=X,X()}}}var We=Symbol.for("helfy:store");function to(n){return n[We]=!0,Object.defineProperties(n.prototype,{subscribe:{value:function(e,t){let o=this,r=!0,i=O(()=>{let c=o[e];if(r){r=!1;return}t(c,()=>i())});return()=>{i()}}},unsubscribe:{value:function(e,t){}}}),class extends n{constructor(...e){var t,o;super(...e),k(this);let r=(t=this.$_observableFields)!==null&&t!==void 0?t:[],i=(o=this.$_computedFields)!==null&&o!==void 0?o:[],c=this;if(c.__signals||Object.defineProperty(c,"__signals",{value:{},writable:!0,configurable:!0}),r.length&&(r.forEach(s=>{let l=c[s];try{delete c[s]}catch(f){}let[u,a]=C(l);c.__signals[s]=[u,a],Object.defineProperty(c,s,{get(){let f=this.__signals[s];return f?f[0]():void 0},set(f){let d=this.__signals[s];d&&d[1](f)},configurable:!0,enumerable:!0})}),delete c.$_observableFields),i.length){let s=Object.getPrototypeOf(this);i.forEach(l=>{let u=Object.getOwnPropertyDescriptor(s,l),a=u==null?void 0:u.get;if(typeof a!="function")return;let f=D(()=>a.call(this));Object.defineProperty(c,l,{get(){return f()},configurable:!0,enumerable:!0})}),delete c.$_computedFields}}}}function xt(n,e){let[t,o]=C(n),[r,i]=C(void 0),[c,s]=C(!1);return{get _initialValue(){return n},get value(){return t()},set value(u){t()!==u&&(o(u),e())},get isDirty(){return t()!==n},get isTouched(){return c()},set isTouched(u){c()!==u&&(s(u),e())},get error(){return r()},set error(u){r()!==u&&(i(u),e())},get isValid(){return!r()}}}var Ke=Symbol.for("helfy:fieldFields");function jt(n){return function(e,t){var o;let r=typeof e=="function"?e:e.constructor,i=(o=r[Ke])!==null&&o!==void 0?o:[];i.push({propertyKey:t,options:n}),Object.defineProperty(r,Ke,{value:i,configurable:!0})}}function Et(n,e){var t;let o=(t=e[Ke])!==null&&t!==void 0?t:[],r=()=>{var i;return(i=n._notifyFieldChange)===null||i===void 0?void 0:i.call(n)};o.forEach(({propertyKey:i,options:c})=>{var s;let l=String(i),u=(s=c==null?void 0:c.defaultValue)!==null&&s!==void 0?s:n[i],a=xt(u,r);delete n[i],Object.defineProperty(n,i,{configurable:!0,enumerable:!0,get:()=>a,set:()=>{throw new Error(`[helfy] @field "${l}" is read-only. Assign to .value instead.`)}})})}var Se=Symbol.for("helfy:form");function wt(n){let e=de(n);return e[Se]=!0,e.prototype.__beforeComputedInit=function(){Et(this,n)},class extends e{constructor(...t){var o;super(...t),this._formRev=0;let r=this,i=(o=r._formRev)!==null&&o!==void 0?o:0,[c,s]=C(i);r.__signals||Object.defineProperty(r,"__signals",{value:{},writable:!0,configurable:!0}),r.__signals._formRev=[c,s],Object.defineProperty(r,"_formRev",{configurable:!0,enumerable:!0,get(){return c()},set(l){s(l)}})}_notifyFieldChange(){this._formRev=this._formRev+1}}}function Ct(n){return typeof n=="function"&&!!n[Se]}var ee=Symbol.for("helfy:ILogger");var oo=["View","Service","Store","Context","Provider","Factory"];function Rt(n){let e=n;for(let t of oo)if(e.endsWith(t)){e=e.slice(0,-t.length);break}return e?no(e):n}function no(n){return n.replace(/([A-Z])/g,(e,t)=>`-${t.toLowerCase()}`).replace(/^-/,"")}var $t={debug:"\x1B[90m",info:"\x1B[36m",warn:"\x1B[33m",error:"\x1B[31m",reset:"\x1B[0m"};function Ot(n,e){let t=$t[n];return t?`${t}${e}${$t.reset}`:e}function St(n){if(!n||typeof n!="object")return"";try{let e=Object.keys(n);return e.length===0?"":` { ${e.map(o=>`${o}: ${ro(n[o])}`).join(", ")} }`}catch(e){return" { [object] }"}}function ro(n){if(n===null)return"null";if(n===void 0)return"undefined";if(typeof n=="string")return JSON.stringify(n);if(typeof n=="number"||typeof n=="boolean")return String(n);if(n instanceof Error)return`[Error: ${n.message}]`;try{return JSON.stringify(n)}catch(e){return String(n)}}var Ft=Symbol.for("helfy:loggerCache"),Xe=Symbol.for("helfy:loggerFields"),io=/^<[A-Za-z][A-Za-z0-9]*>$/,$={reset:"\x1B[0m",dim:"\x1B[2m",tag:"\x1B[36m",tagCustom:"\x1B[90m",tagView:"\x1B[96m",tagContext:"\x1B[93m",tagForm:"\x1B[94m",tagStore:"\x1B[92m",tagInjectable:"\x1B[95m",debug:"\x1B[90m",info:"\x1B[34m",warn:"\x1B[33m",error:"\x1B[31m"};function Pt(n){let e=n==null?void 0:n.constructor;for(;e;){if(e[_e])return"injectable";if(e[Se])return"form";if(e[we])return"context";if(e[We])return"store";if(e[Ue])return"view";e=Object.getPrototypeOf(e)}return"other"}function so(n){switch(n){case"view":return $.tagView;case"context":return $.tagContext;case"form":return $.tagForm;case"store":return $.tagStore;case"injectable":return $.tagInjectable;default:return $.tag}}function co(n){let e=n.match(/^<(.+)>$/);return e?e[1]:n}function lo(n,e){let t=co(n);switch(e){case"view":return`<${t}>`;case"injectable":return`${t}()`;case"context":return`{${t}}`;case"form":return`[${t}]`;case"store":return`${t}[]`;default:return n}}function Ye(n,e=$.tag){let t=r=>{switch(r){case"DEBUG":return $.debug;case"INFO":return $.info;case"WARN":return $.warn;case"ERROR":return $.error;default:return $.reset}},o=(r,i)=>{let c=t(r);return`${e}${n}${$.reset} ${c}${r}${$.reset} ${i}`};return{debug:(r,...i)=>console.log(o("DEBUG",r),...i),info:(r,...i)=>console.info(o("INFO",r),...i),warn:(r,...i)=>console.warn(o("WARN",r),...i),error:(r,i,c)=>{if(r instanceof Error){let s=i&&typeof i=="object"&&!(i instanceof Error)?i:void 0;s&&Object.keys(s).length>0?console.error(o("ERROR",r.message),s,r):console.error(o("ERROR",r.message),r)}else{let s=i!=null?i:c;s&&Object.keys(s).length>0?console.error(o("ERROR",r),s):console.error(o("ERROR",r))}},withContext:r=>Ye(`${n}:${r}`,e)}}function It(n,e,t){var o,r;let i=t[Ft];if(i||(t[Ft]=i=new Map),!i.has(n)){let c=T(),s=e!==void 0?e:Rt((r=(o=t.constructor)===null||o===void 0?void 0:o.name)!==null&&r!==void 0?r:"app"),l=!io.test(s),u=l?s:lo(s,Pt(t)),a=l?$.tagCustom:so(Pt(t)),f;try{let d=c==null?void 0:c.get(ee);if(d){let h=`${a}${u}${$.reset}`;f=d.withContext(h)}else f=Ye(u,a)}catch(d){f=Ye(u,a)}i.set(n,f)}return i.get(n)}function Tt(n){return function(e,t){var o;let r=typeof e=="function"?e:e.constructor,i=(o=r[Xe])!==null&&o!==void 0?o:[];i.push({propertyKey:t,prefix:n}),Object.defineProperty(r,Xe,{value:i,configurable:!0});try{delete e[t]}catch(c){}Object.defineProperty(e,t,{get(){return It(t,n,this)},configurable:!0,enumerable:!1})}}function k(n){let t=n.constructor,o=[];for(;t;){let r=t[Xe];Array.isArray(r)&&o.push(...r),t=Object.getPrototypeOf(t)}o.forEach(({propertyKey:r,prefix:i})=>{try{delete n[r]}catch(c){}Object.defineProperty(n,r,{get(){return It(r,i,this)},configurable:!0,enumerable:!1})})}function uo(n){var e,t;return typeof n=="string"?n:typeof n=="symbol"?(e=n.description)!==null&&e!==void 0?e:String(n):(t=n.name)!==null&&t!==void 0?t:"unknown"}var te=class n{constructor(e){this.bindings=new Map,this.instances=new Map,this.resolutionStack=new Set,this.parent=null,this.parent=e!=null?e:null,this.parent&&this.parent.bindings.forEach((t,o)=>this.bindings.set(o,t))}bind(e,t){let o=e;return this.bindings.set(o,{provider:t}),this}get(e){var t;let o=e,r=uo(e);if(this.resolutionStack.has(o))throw new Error(`[helfy] Circular dependency detected for ${r}. Check your constructor dependencies.`);let i=this.bindings.get(o);if(!i){if(this.parent)return this.parent.get(e);throw new Error(`[helfy] No provider for ${r}`)}this.resolutionStack.add(o);try{let{provider:c}=i;if("useValue"in c)return c.useValue;if(((t=c.scope)!==null&&t!==void 0?t:"useClass"in c&&fe(c.useClass)||"singleton")==="transient")return this.resolveProvider(c);let l=this.instances.get(o);if(l!==void 0)return l;let u=this.resolveProvider(c);return this.instances.set(o,u),u}finally{this.resolutionStack.delete(o)}}resolveProvider(e){var t,o,r,i;if("useValue"in e)return e.useValue;if("useFactory"in e)return e.useFactory(this);let{useClass:c}=e,s=(t=Reflect.getMetadata("design:paramtypes",c))!==null&&t!==void 0?t:[],l=(i=(o=c[I])!==null&&o!==void 0?o:(r=c.prototype)===null||r===void 0?void 0:r[I])!==null&&i!==void 0?i:{},u=s.map((f,d)=>{var h;let p=(h=l[d])!==null&&h!==void 0?h:f;if(p===void 0)throw new Error(`[helfy] Cannot resolve param ${d} of ${c.name}. Use @inject(token) or ensure DI plugin adds tokens for interface params.`);return this.get(p)}),a=Reflect.construct(c,u);return k(a),a}createScope(){return new n(this)}has(e){let t=e;return this.bindings.has(t)?!0:this.parent?this.parent.has(e):!1}autoRegister(e){var t;if(!Ae(e))throw new Error(`[helfy] ${e.name} is not @Injectable. Add @Injectable(token?) decorator.`);let o=(t=ct(e))!==null&&t!==void 0?t:e,r=fe(e),i={useClass:e};return r&&(i.scope=r),this.bind(o,i)}};function ao(n){return n.toUpperCase().padEnd(5)}var oe=class{log(e,t,o,r,i){let c=typeof process!="undefined"&&process.env&&process.env.NODE_ENV==="production";if(e==="debug"&&c)return;let s=ao(e),l=`[${t}] ${s} ${o}`,u=[];i&&u.push(`[Error: ${i.message}${i.stack?`
2
- ${i.stack}`:""}]`),r&&Object.keys(r).length>0&&u.push(St(r)),u.length>0&&(l+=" "+u.join(" "));let a=Ot(e,l);console[e==="error"?"error":e==="warn"?"warn":"log"](a)}};var fo=function(n,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var s=n.length-1;s>=0;s--)(c=n[s])&&(i=(r<3?c(i):r>3?c(e,t,i):c(e,t))||i);return r>3&&i&&Object.defineProperty(e,t,i),i},po=function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},Be,ne=Be=class{constructor(e){this.transports=e!=null?e:[new oe],this.prefix=""}emit(e,t,o,r){for(let i of this.transports)i.log(e,this.prefix||"app",t,o,r)}debug(e,t){this.emit("debug",e,t)}info(e,t){this.emit("info",e,t)}warn(e,t){this.emit("warn",e,t)}error(e,t,o){let r,i,c;e instanceof Error?(i=e,r=i.message,t&&!(t instanceof Error)&&(c=t)):(r=e,t instanceof Error?i=t:t&&(c=t),o&&(c=Object.assign(Object.assign({},c),o))),this.emit("error",r,c,i)}withContext(e){if(!e.trim())return this;let t=this.prefix?`${this.prefix}:${e}`:e,o=Object.create(Be.prototype);return o.transports=this.transports,o.prefix=t,o}};ne=Be=fo([me(ee,"singleton"),po("design:paramtypes",[Array])],ne);var ho=function(n,e){var t={};for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&e.indexOf(o)<0&&(t[o]=n[o]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,o=Object.getOwnPropertySymbols(n);r<o.length;r++)e.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(n,o[r])&&(t[o[r]]=n[o[r]]);return t};function S(n,e){let t=e!=null?e:{},{children:o}=t,r=ho(t,["children"]),i=o===void 0?[]:Array.isArray(o)?o:[o],c={tag:n,props:r,children:i};typeof n=="function"&&Object.defineProperty(c,"$_type",{value:"_view"});let s=r.$_key;return s!=null&&Object.defineProperty(c,"$_key",{value:String(s)}),c}var At=S;function A(n){if(!n)return"/";n.startsWith("/")||(n=`/${n}`);let e=n.indexOf("?"),t=n.indexOf("#");if(e!==-1||t!==-1){let o=[e,t].filter(r=>r!==-1).reduce((r,i)=>Math.min(r,i),n.length);n=n.slice(0,o)}return n=n.replace(/\/{2,}/g,"/"),n.length>1&&n.endsWith("/")&&(n=n.slice(0,-1)),n}function Fe(n,e){let t=A(n),o=A(e),r=t.split("/").filter(Boolean),i=o.split("/").filter(Boolean);if(r.length!==i.length)return null;let c={};for(let s=0;s<r.length;s++){let l=r[s],u=i[s];if(l.startsWith(":")){let a=l.slice(1);if(!a)return null;c[a]=decodeURIComponent(u)}else{if(l===u)continue;return null}}return{params:c}}function Qe(n){let e={};if(!n)return e;let t=n.startsWith("?")?n.slice(1):n;if(!t)return e;for(let o of t.split("&")){if(!o)continue;let[r,i=""]=o.split("=");r&&(e[decodeURIComponent(r)]=decodeURIComponent(i))}return e}function Dt(n){let e=Object.entries(n).filter(([,o])=>o!=null);return e.length?`?${e.map(([o,r])=>`${encodeURIComponent(o)}=${encodeURIComponent(String(r))}`).join("&")}`:""}function re(){var n;let{pathname:e,search:t,hash:o}=window.location,r=decodeURIComponent(e);if(r.includes("?")){let[c,s]=r.split("?",2);e=c,t=s?`?${s}`:t}let i=Qe(t);return{pathname:A(e),params:{},query:i,hash:o||void 0,state:(n=history.state)!==null&&n!==void 0?n:void 0}}var ie=class{constructor(e){this.routes=e,this.listeners=new Set,this.handlePopState=t=>{var o,r,i;let c=re(),s=this.match(c.pathname),l=Object.assign(Object.assign({},c),{params:(o=s==null?void 0:s.params)!==null&&o!==void 0?o:{},query:(r=s==null?void 0:s.query)!==null&&r!==void 0?r:c.query,state:(i=t.state)!==null&&i!==void 0?i:c.state});this.notify(l)},this._location=re()}get location(){return this._location}subscribe(e){return this.listeners.add(e),e(this._location),()=>{this.listeners.delete(e)}}notify(e){this._location=e,this.listeners.forEach(t=>t(this._location))}initFromCurrentLocation(){var e,t;let o=re(),r=this.match(o.pathname),i=Object.assign(Object.assign({},o),{params:(e=r==null?void 0:r.params)!==null&&e!==void 0?e:{},query:(t=r==null?void 0:r.query)!==null&&t!==void 0?t:o.query});(this._location.pathname!==i.pathname||JSON.stringify(this._location.params)!==JSON.stringify(i.params)||JSON.stringify(this._location.query)!==JSON.stringify(i.query))&&this.notify(i)}navigate(e,t){var o,r;let[i,c]=e.split("?",2),s,l="",u="";if(c!=null){s=i;let[v,m]=c.split("#",2);l=v!=null?v:"",u=m!=null?m:""}else{let[v,m]=i.split("#",2);s=v!=null?v:i,u=m!=null?m:""}let a=A(s),f=new URL(window.location.href);f.pathname=a,f.search=l?`?${l}`:"",u&&(f.hash=`#${u}`);let d=t==null?void 0:t.state;t!=null&&t.replace?window.history.replaceState(d!=null?d:null,"",f.toString()):window.history.pushState(d!=null?d:null,"",f.toString());let h=re(),p=this.match(h.pathname),_=Object.assign(Object.assign({},h),{params:(o=p==null?void 0:p.params)!==null&&o!==void 0?o:{},query:(r=p==null?void 0:p.query)!==null&&r!==void 0?r:h.query});this.notify(_)}match(e){let t=A(e);for(let o of this.routes){let r=this.matchRouteRecursive(o,t,"",{});if(r)return r}return null}matchRouteRecursive(e,t,o,r){let i=A(o?`${o}/${e.path}`:e.path),s=re().query,l=Fe(i,t);if(!l)return null;let u=Object.assign(Object.assign({},r),l.params);if(e.redirectTo){let a=A(e.redirectTo);return{route:e,params:u,query:s,pathname:a}}if(e.children&&e.children.length)for(let a of e.children){let f=this.matchRouteRecursive(a,t,i,u);if(f)return f}return{route:e,params:u,query:s,pathname:t}}};var se=function(n,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var s=n.length-1;s>=0;s--)(c=n[s])&&(i=(r<3?c(i):r>3?c(e,t,i):c(e,t))||i);return r>3&&i&&Object.defineProperty(e,t,i),i},ce=function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},E=class{constructor(e){var t;this.push=(o,r)=>{this.router.navigate(o,Object.assign({replace:!1},r))},this.replace=(o,r)=>{this.router.navigate(o,Object.assign({replace:!0},r))},this.back=()=>{window.history.back()},this.match=o=>this.router.match(o),this.router=new ie((t=e.routes)!==null&&t!==void 0?t:[]),this.location=this.router.location,this.router.subscribe(o=>{this.location=o}),this.router.initFromCurrentLocation(),window.addEventListener("popstate",this.router.handlePopState)}};se([J({reactive:!0}),ce("design:type",Object)],E.prototype,"location",void 0);se([J(),ce("design:type",Object)],E.prototype,"push",void 0);se([J(),ce("design:type",Object)],E.prototype,"replace",void 0);se([J(),ce("design:type",Object)],E.prototype,"back",void 0);se([J(),ce("design:type",Object)],E.prototype,"match",void 0);E=se([de,ce("design:paramtypes",[Object])],E);var vo=function(n,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var s=n.length-1;s>=0;s--)(c=n[s])&&(i=(r<3?c(i):r>3?c(e,t,i):c(e,t))||i);return r>3&&i&&Object.defineProperty(e,t,i),i},_o=function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},le=class{constructor(e){}render(){let{routes:e,app:t}=this.props;return S(E,{routes:e,children:S(t,{})})}};le=vo([N,_o("design:paramtypes",[Object])],le);function Vt(n){let e=[],t=n.container,o=[];return{container(r){return t=r,this},configureContainer(r){return o.push(r),this},useDI(r){return r&&o.push(r),this},router(r){return e=r.routes,this},mount(r){let i=t!=null?t:new te;i.autoRegister(ne),o.forEach(l=>l(i)),be(i);let c={root:n.root,routes:e,app:r},s=new le(c);return s.attach(c.root),s}}}function mo(n,e){return function(t,o){if(typeof n[e]=="function")throw new Error("Function cannot be decorated by @observe");t!=null&&t.$_observableFields||Object.defineProperty(t,"$_observableFields",{value:[]}),t.$_observableFields.push({field:o,store:n,storeField:e})}}function bo(n,e){if(typeof n[e]=="function")throw new Error("Function cannot be decorated by @state");n!=null&&n.$_stateFields||Object.defineProperty(n,"$_stateFields",{value:[]}),n.$_stateFields.push(e)}function yo(n,e){if(typeof n[e]=="function")throw new Error("Function cannot be decorated by @observable");n!=null&&n.$_observableFields||Object.defineProperty(n,"$_observableFields",{value:[]}),n.$_observableFields.push(e)}function go(n,e,t){if(typeof t.get!="function")throw new Error("@computed can only be applied to getters");n!=null&&n.$_computedFields||Object.defineProperty(n,"$_computedFields",{value:[],writable:!0,configurable:!0}),n.$_computedFields.push(e)}var Lt=Symbol.for("helfy:refFields");function xo(n,e){var t,o;let r=typeof n=="function"?n.prototype:n,i=typeof n=="function"?n:n.constructor;if(((t=i.$_stateFields)!==null&&t!==void 0?t:[]).includes(String(e)))throw new Error(`[helfy] @ref cannot be used with @state on the same field: ${String(e)}`);let s=(o=i[Lt])!==null&&o!==void 0?o:[];s.push(String(e)),Object.defineProperty(i,Lt,{value:s,configurable:!0})}function Nt(n){return F(n)}var Ze=class{};var He=function(n,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var s=n.length-1;s>=0;s--)(c=n[s])&&(i=(r<3?c(i):r>3?c(e,t,i):c(e,t))||i);return r>3&&i&&Object.defineProperty(e,t,i),i},et=function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},G=class{constructor(e){this.props=e}onClick(e){e.preventDefault();let{to:t,replace:o,state:r}=this.props;o?this.replaceNav(t,{state:r}):this.push(t,{state:r})}render(){var e;let{to:t,class:o,children:r,label:i}=this.props;return S("a",{href:t,class:o,onclick:this.onClick.bind(this),children:(e=r!=null?r:i)!==null&&e!==void 0?e:""})}};He([F(E,"push"),et("design:type",Function)],G.prototype,"push",void 0);He([F(E,"replace"),et("design:type",Function)],G.prototype,"replaceNav",void 0);G=He([N,et("design:paramtypes",[Object])],G);var jo=function(n,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var s=n.length-1;s>=0;s--)(c=n[s])&&(i=(r<3?c(i):r>3?c(e,t,i):c(e,t))||i);return r>3&&i&&Object.defineProperty(e,t,i),i},Eo=function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},K=class{constructor(e={}){this.props=e}render(){let{pathname:e=""}=this.props;return At("section",{style:{display:"flex",flexDirection:"column",flexGrow:1,alignItems:"center",justifyContent:"center",minHeight:"min(50vh, 320px)",padding:"2rem",textAlign:"center",gap:"10px",background:"azure"},children:[S("p",{style:{fontSize:"4rem",fontWeight:700,margin:0,lineHeight:1,letterSpacing:"-0.02em",opacity:.15},children:"404"}),S("h2",{style:{fontSize:"1.25rem",fontWeight:600,margin:"0.5rem 0 0.25rem"},children:"\u0421\u0442\u0440\u0430\u043D\u0438\u0446\u0430 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u0430"}),e&&S("p",{style:{fontSize:"0.875rem",opacity:.7,margin:0,fontFamily:"ui-monospace, monospace",wordBreak:"break-all"},children:e}),S(G,{to:"/",label:"\u041D\u0430 \u0433\u043B\u0430\u0432\u043D\u0443\u044E",class:"inline-block mt-6 px-4 py-2 text-sm rounded-md no-underline bg-indigo-100 dark:bg-indigo-900/40 text-indigo-700 dark:text-indigo-200 hover:bg-indigo-200 dark:hover:bg-indigo-800/60 transition-colors"})]})}};K=jo([N,Eo("design:paramtypes",[Object])],K);var tt=function(n,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var s=n.length-1;s>=0;s--)(c=n[s])&&(i=(r<3?c(i):r>3?c(e,t,i):c(e,t))||i);return r>3&&i&&Object.defineProperty(e,t,i),i},Mt=function(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)},ue=class{render(){var e;let t=this.location.pathname,o=this.match(t);if(!o)return(e=ae._callSlot(this,"notFound",{pathname:t,location:this.location},()=>S(K,{pathname:t})))!==null&&e!==void 0?e:S(K,{pathname:t});let r=o.route.component,i={params:o.params,query:o.query,location:this.location};return S(r,Object.assign({},i))}};tt([F(E,"location"),Mt("design:type",Object)],ue.prototype,"location",void 0);tt([F(E,"match"),Mt("design:type",Function)],ue.prototype,"match",void 0);ue=tt([N],ue);function kt(n){var e;let t=(e=n==null?void 0:n.defaultValue)!==null&&e!==void 0?e:"/";return F(E,"location",{access:o=>{var r;return(r=o&&typeof o=="object"&&"pathname"in o?o.pathname:null)!==null&&r!==void 0?r:t}})}function qt(n){var e;let t=(e=n==null?void 0:n.defaultValue)!==null&&e!==void 0?e:{};return F(E,"location",{access:o=>{var r;return(r=o&&typeof o=="object"&&"query"in o?o.query:null)!==null&&r!==void 0?r:t}})}function Gt(n){var e;let t=(e=n==null?void 0:n.defaultValue)!==null&&e!==void 0?e:{};return F(E,"location",{access:o=>{var r;return(r=o&&typeof o=="object"&&"params"in o?o.params:null)!==null&&r!==void 0?r:t}})}function zt(n){return F(E,void 0,{subscribeField:"location",access:e=>{if(!e||typeof e!="object"||!("push"in e))throw new Error("[helfy/router] RouterContext is not available in the tree");let t=e;return{get location(){return t.location},push:t.push,replace:t.replace,back:t.back}}})}export{ae as $,oe as ConsoleTransport,te as Container,de as Context,K as DefaultNotFound,wt as Form,le as HelfyApp,ee as ILoggerToken,me as Injectable,G as Link,ne as LoggerService,ie as Router,E as RouterContext,ue as RouterView,to as Store,Ze as StoreBase,N as View,Ve as batch,Qt as binded,go as computed,Vt as createApp,D as createComputed,O as createEffect,De as createMemo,Ut as createReactiveChild,C as createSignal,V as createViewInstance,F as ctx,lt as diParams,Zt as effect,Wt as expose,jt as field,T as getRootContainer,fe as getScopeMetadata,ut as inject,Z as isContextClass,Ct as isFormClass,Tt as logger,Fe as matchPath,A as normalizePath,yo as observable,mo as observe,xe as onCleanup,Gt as params,Qe as parseQuery,kt as path,J as provide,xo as ref,zt as router,qt as search,be as setRootContainer,bo as state,Dt as stringifyQuery,Nt as useForm};
1
+ import"reflect-metadata";var Pe=class{static _view(e,t){return{$_type:"_view",$_view:e,$_props:t!=null?t:void 0,$_ref:null}}static _forin(e,t){let n=[];return e.forEach((o,i,s)=>{let c=t(o,i,s);c!==null&&n.push(c)}),{$_type:"_forin",$_data:e,$_items:n}}static _if(e,t){return{$_type:"_if",$_node:e?t:null,$_condition:e}}static _ifelse(e,t,n){if(!t&&!n)throw new Error('Has no statements "if" or "else"');return{$_type:"_ifelse",$_condition:e,$_node:e?t:n}}static _rIf(e,t){return{$_type:"_rIf",$_condFn:e,$_bodyFn:t}}static _rIfElse(e,t,n){return{$_type:"_rIfElse",$_condFn:e,$_ifFn:t,$_elseFn:n}}static _rForin(e,t){return{$_type:"_rForin",$_listFn:e,$_mapFn:t}}static _slot(e,t){return{$_type:"_slot",$_name:e,$_render:t}}static _callSlot(e,t,n,o){var i,s;let c=(i=e.$slots)!==null&&i!==void 0?i:{},u=c&&c[t]||o;return u&&(s=u(n))!==null&&s!==void 0?s:null}static _bind(e,t){return{get:()=>e[t],set:n=>{e[t]=n}}}static _bindFn(e,t){return{get:e,set:t}}};import"reflect-metadata";var ne=Symbol.for("helfy:injectable"),_e=Symbol.for("helfy:injectableToken"),qe=Symbol.for("helfy:scope");function ue(r,e){return function(t){return t[ne]=!0,r!==void 0&&(t[_e]=r),e!==void 0&&(t[qe]=e),t}}function Ae(r){return r[qe]}function it(r){return typeof r=="function"&&!!r[ne]}function Dt(r){return r[_e]}var Nt=ue;var Qe=Symbol.for("helfy:injectParamTokens");function Vt(r){return function(e){return e[Qe]=r,e}}var Ut=null;function We(r){Ut=r}function q(){return Ut}var Mt="__helfy_signals_ctx__";function be(){let r=globalThis[Mt];return r||(r={currentComputation:null,batchDepth:0,pendingComputations:new Set,scheduleCounter:0},globalThis[Mt]=r),r}function qt(r){let e=be(),{currentComputation:t}=e;t&&(r.observers.add(t),t.deps.add(r))}function Qt(r){let e=be();if(e.batchDepth>0){let t=r;t.scheduleOrder=e.scheduleCounter++,t.skipWhenNoObservers&&t.node&&(t.observersWhenScheduled=t.node.observers.size),e.pendingComputations.add(t);return}ke(r)}function ke(r){var e;if(r.deps.forEach(i=>{i.observers.delete(r)}),r.deps.clear(),r.cleanups.size&&(r.cleanups.forEach(i=>{try{i()}catch(s){}}),r.cleanups.clear()),r.skipWhenNoObservers&&r.node&&((e=r.observersWhenScheduled)!==null&&e!==void 0?e:0)>0&&r.node.observers.size===0)return;let t=be(),n=t.currentComputation;t.currentComputation=r;try{r.fn()}finally{t.currentComputation=n}let o=0;r.deps.forEach(i=>{i.level>o&&(o=i.level)}),r.level=o+1}function Pn(){var r;let e=be();e.batchDepth++;try{for(;e.pendingComputations.size;){let t=Array.from(e.pendingComputations);e.pendingComputations.clear(),t.sort((n,o)=>{var i,s;return(n.structural?0:1)-(o.structural?0:1)||n.level-o.level||((i=n.scheduleOrder)!==null&&i!==void 0?i:0)-((s=o.scheduleOrder)!==null&&s!==void 0?s:0)});for(let n of t)n.skipWhenNoObservers&&n.node&&((r=n.observersWhenScheduled)!==null&&r!==void 0?r:0)>0&&n.node.observers.size===0||ke(n)}}finally{e.batchDepth--}}function U(r){let e=be();e.batchDepth===0&&(e.scheduleCounter=0),e.batchDepth++;try{r()}finally{e.batchDepth--,e.batchDepth===0&&Pn()}}function y(r){let e={value:r,observers:new Set,level:0};return[()=>(qt(e),e.value),o=>{let i=typeof o=="function"?o(e.value):o;if(Object.is(e.value,i)||(e.value=i,!e.observers.size))return;let s=Array.from(e.observers);U(()=>{s.forEach(c=>Qt(c))})}]}function j(r,e){let t={fn:r,deps:new Set,cleanups:new Set,level:0,structural:e==null?void 0:e.structural};return ke(t),()=>{t.deps.forEach(n=>{n.observers.delete(t)}),t.deps.clear(),t.cleanups.size&&(t.cleanups.forEach(n=>{try{n()}catch(o){}}),t.cleanups.clear())}}function G(r){let{currentComputation:e}=be();if(!e)throw new Error("onCleanup() can only be used inside a reactive computation");e.cleanups.add(r)}var Ke=Symbol.for("helfy:computedDispose"),ze=Symbol.for("helfy:reactiveGetter");function re(r,e){var t,n;let o={value:void 0,observers:new Set,level:0},i=(t=e==null?void 0:e.equals)!==null&&t!==void 0?t:Object.is,s=(n=e==null?void 0:e.skipWhenNoObservers)!==null&&n!==void 0?n:!1,c=()=>(qt(o),o.value);c[ze]=!0;let u={fn:()=>{let l=r();if(!i(o.value,l)){if(o.value=l,!o.observers.size)return;let a=Array.from(o.observers);U(()=>{a.forEach(f=>Qt(f))})}},deps:new Set,cleanups:new Set,level:0,node:o,skipWhenNoObservers:s};return ke(u),o.level=u.level,c[Ke]=()=>{u.deps.forEach(l=>l.observers.delete(u)),u.deps.clear(),u.cleanups.forEach(l=>{try{l()}catch(a){}}),u.cleanups.clear()},c}var st=re,me=Symbol.for("helfy:reactiveCache");function An(r,e){return()=>{try{return r()}catch(t){if(t instanceof TypeError&&/null|undefined/.test(String(t.message)))return console.warn("[Helfy] createReactiveChild: caught null/undefined access (race with @if unmount)",t),e;throw t}}}function Ln(r,e,t){let n=An(t,"");if(r==null)return st(n,{skipWhenNoObservers:!0});r[me]||Object.defineProperty(r,me,{value:Object.create(null),writable:!1,configurable:!0});let i=r[me];if(i[e])i[e].setHolder({fn:n});else{let[s,c]=y({fn:n}),u=st(()=>s().fn(),{skipWhenNoObservers:!0});i[e]={getter:u,setHolder:c}}return i[e].getter}var ge=Symbol.for("helfy:injectContainerFields");function Dn(r){if(r===void 0)throw new Error("[helfy] @inject<IX>() requires babel-plugin-helfy-di to transform. Ensure the plugin runs on your source.");return function(e,t){var n;let o=typeof e=="function"?e:e.constructor,i=(n=o[ge])!==null&&n!==void 0?n:[];i.push({token:r,propertyKey:t}),Object.defineProperty(o,ge,{value:i,configurable:!0})}}function K(r){var e,t;let n=q();if(!n){let o=typeof r=="symbol"?(e=r.description)!==null&&e!==void 0?e:String(r):(t=r==null?void 0:r.name)!==null&&t!==void 0?t:String(r);throw new Error(`[helfy] No container for @inject. Configure createApp().useDI(registerAllServices) or ensure Container is set. Missing: ${o}`)}return n.get(r)}var ye=Symbol.for("helfy:viewEffects");function Nn(r,e,t){var n;if(typeof t.value!="function")throw new Error("@effect can only be applied to methods");let o=typeof r=="function"?r:r.constructor,i=(n=o[ye])!==null&&n!==void 0?n:[];i.push(e),Object.defineProperty(o,ye,{value:i,configurable:!0})}var Je=Symbol.for("helfy:context"),Wt=Symbol.for("helfy:contextInjectKey"),Kt=Symbol.for("helfy:contextInterfaceToken");function Ye(r){return typeof r=="function"&&!!r[Je]}function Ge(r){let e=r[Wt];return e||(e=Symbol(r.name||"Context"),r[Wt]=e),e}function Le(r){if(r===void 0)return e=>ct(e);if(typeof r=="symbol"){let e=r;return function(t){return t[Kt]=e,ct(t)}}return ct(r)}function kt(r,e){let t=[],n=Object.getPrototypeOf(r);for(;n&&n!==Object.prototype;){let o=n[e];Array.isArray(o)&&t.push(...o),n=Object.getPrototypeOf(n)}return t}function ct(r){return r[Je]=!0,Ge(r),Object.defineProperties(r.prototype,{updateProps:{value:function(t){}},subscribe:{value:function(t,n){let o=this,i=!0,s=j(()=>{let c=o[t];if(i){i=!1;return}n(c,()=>s())});return()=>s()}},unsubscribe:{value:function(t,n){}}}),class extends r{constructor(...t){var n;super(...t),this._injector=null,this._parentView=null,oe(this);let o=this,i=o.constructor;for(;i&&i!==Function.prototype;){let v=i[ge];v!=null&&v.length&&v.forEach(({token:m,propertyKey:C})=>{try{delete o[C]}catch(A){}Object.defineProperty(o,C,{configurable:!0,enumerable:!0,get(){return K(m)}})}),i=Object.getPrototypeOf(i)}let s=t.length>0?t[t.length-1]:void 0;s&&typeof s=="object"&&(this.props=s);let c=s&&typeof s=="object"?s.value:void 0,u=kt(o,"$_stateFields");o.__signals||Object.defineProperty(o,"__signals",{value:{},writable:!0,configurable:!0}),u.forEach(v=>{let m=o[v];try{delete o[v]}catch(R){}let[C,A]=y(m);o.__signals[v]=[C,A],Object.defineProperty(o,v,{get(){let R=this.__signals[v];return R?R[0]():void 0},set(R){let B=this.__signals[v];B&&B[1](R)},configurable:!0,enumerable:!0})}),typeof o.__beforeComputedInit=="function"&&o.__beforeComputedInit();let l=kt(o,"$_computedFields");l.length&&(l.forEach(v=>{let m=Object.getPrototypeOf(o),C;for(;m&&(C=Object.getOwnPropertyDescriptor(m,v),!C);)m=Object.getPrototypeOf(m);let A=C==null?void 0:C.get;if(typeof A!="function")return;let R=re(()=>A.call(o));Object.defineProperty(o,v,{get(){return R()},configurable:!0,enumerable:!0})}),delete o.$_computedFields);let a=new Map,f=Ge(r),d=c!=null?c:this;a.set(f,d);let _=r[Kt];_&&a.set(_,d),this._injector=a;let p=o.constructor,h;for(;p&&p!==Function.prototype&&(h=p[ye],!(h!=null&&h.length));)p=Object.getPrototypeOf(p);h!=null&&h.length&&(o._subscriptions=(n=o._subscriptions)!==null&&n!==void 0?n:[],h.forEach(v=>{let m=j(()=>{let C=o[v];typeof C=="function"&&C.call(o)});o._subscriptions.push(m)}))}}}var ut=Symbol.for("helfy:exposeMethods");function Vn(r,e,t){var n;let o=typeof r=="function"?r:r.constructor,i=(n=o[ut])!==null&&n!==void 0?n:[];return i.includes(String(e))||(i.push(String(e)),Object.defineProperty(o,ut,{value:i,configurable:!0})),t}function lt(r){if(r==null||r instanceof Node||typeof r!="object")return r;let e=r.constructor,t=e==null?void 0:e[ut];return t!=null&&t.length?Un(r,t):r}function Un(r,e){return new Proxy(r,{get(t,n,o){if(typeof n=="string"&&e.includes(n)){let i=Reflect.get(t,n,t);return typeof i=="function"?i.bind(t):i}},has(t,n){return typeof n=="string"&&e.includes(n)}})}function H(r,e,t,n){return new e(t)}var zt="__evt_",Gt="__attrEffectDisposes",Jt="__attrGetterMap";function at(r){return typeof r=="function"&&r.length===0}function Yt(r,e=10){let t;try{t=r()}catch(n){if(n instanceof TypeError&&/null|undefined/.test(String(n.message)))return console.warn("[Helfy] resolveGetterValue: caught null/undefined access (race with @if unmount)",n),"";throw n}for(let n=0;n<e&&at(t);n++)try{t=t()}catch(o){if(o instanceof TypeError&&/null|undefined/.test(String(o.message)))return console.warn("[Helfy] resolveGetterValue: caught null/undefined access (race with @if unmount)",o),"";throw o}return t}var ie=class r{static setElementAttributes(e,t){let n=e,o=n[Gt],i=n[Jt];i||(i={},n[Jt]=i),o||(o=[],n[Gt]=o);let s=new Set(Object.keys(t||{}));return Object.entries(t||{}).forEach(([c,u])=>{if(c==="$_key"){e.setAttribute("key",String(u));return}if(c==="$_ref")return;if(c.startsWith("on")&&c.toLowerCase()in window){let a=c.toLowerCase().substring(2),f=n[zt+a];f&&e.removeEventListener(a,f),n[zt+a]=u,e.addEventListener(a,u);return}if(at(u)){let a=i[c];if(a&&a.getter===u)return;a&&(a.dispose(),delete i[c]);let f=j(()=>{let d=Yt(u);this.applyAttr(e,c,d)});i[c]={getter:u,dispose:f};return}let l=i[c];l&&(l.dispose(),delete i[c]),this.applyAttr(e,c,u)}),Object.keys(i).forEach(c=>{s.has(c)||(i[c].dispose(),delete i[c])}),e}static applyAttr(e,t,n){if(t==="html"){e.innerHTML=String(n!=null?n:"");return}if(t==="class"){if(typeof n=="string")e.className=n;else if(Array.isArray(n)){let o=[];n.forEach(i=>{if(Array.isArray(i)){let[s,c]=i;c&&o.push(s)}else o.push(String(i))}),e.className=o.join(" ")}return}if(t==="style"&&typeof n=="object"&&n!==null){let o=Object.entries(n).map(([i,s])=>s!=null?`${i.replace(/[A-Z]/g,c=>"-"+c.toLowerCase())}:${String(s)}`:"").filter(Boolean).join(";");e.setAttribute("style",o);return}if(t==="value"&&(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement)){e.value=n!=null?String(n):"";return}if(t==="checked"&&e instanceof HTMLInputElement){e.checked=!!n;return}if(t==="disabled"){let o=!!n;"disabled"in e?e.disabled=o:o?e.setAttribute("disabled",""):e.removeAttribute("disabled");return}n!=null&&e.setAttribute(t,String(n))}static createElement(e,t){if(e==="fragment")return document.createDocumentFragment();let n=document.createElement(e);return this.setElementAttributes(n,t),n}static createNode(e,t,n){if(!e)return null;let{tag:o,props:i,children:s}=e;if(e!=null&&e.$_type)return this._jsx(e,n);let c=this.createElement(o,i);return!t&&(s!=null&&s.length)&&s.forEach(u=>{if(u)if(u.$_type==="_view"){let l=r._jsx(u,n);l&&c.append(l)}else if(typeof u=="string"||typeof u=="number")c.append(document.createTextNode(typeof u=="number"?u.toString():u));else if(at(u)){let l=document.createTextNode(""),a=j(()=>{l.textContent=String(Yt(u))});l.__effectDispose=a,c.append(l)}else{let l=this._jsx(u,n);l!==null&&c.append(l)}}),c}static createNodesList(e,t){let n=document.createDocumentFragment(),o=q();return n.append(...e.map(i=>{var s,c,u;if(i.$_type==="_view"){let l=i,a=(s=l.$_view)!==null&&s!==void 0?s:l.tag,f=(c=l.$_props)!==null&&c!==void 0?c:l.props,d=H(o,a,f!=null?f:{},t!=null?t:null),_=(u=d.view)!==null&&u!==void 0?u:d;return _.__viewRef=d,_}return this.createNode(i,void 0,t)})),n}static _jsx(e,t){var n,o,i,s;if(typeof e=="string")return document.createTextNode(e);if(typeof e=="number")return document.createTextNode(e.toString());if(e!=null&&e.$_type){let c=null,{$_type:u,$_node:l,$_condition:a,$_items:f}=e;switch(u){case"_view":{let d=e;if(!d.$_ref){let _=(n=d.$_view)!==null&&n!==void 0?n:d.tag,p=(o=d.$_props)!==null&&o!==void 0?o:d.props,h=H(q(),_,p!=null?p:{},t!=null?t:(i=p==null?void 0:p._parentView)!==null&&i!==void 0?i:null);d.$_ref=h,c=(s=h.view)!==null&&s!==void 0?s:h,c.__viewRef=h}break}case"_if":a&&(c=this.createNode(l,void 0,t));break;case"_ifelse":c=this.createNode(l,void 0,t);break;case"_forin":c=this.createNodesList(f,t);break;default:break}return c}return this.createNode(e,void 0,t)}};var pt="__viewRef";function ht(r){let e={},t=Object.assign({},r);for(let n of Object.keys(r))if(n.startsWith("$_bind_")){let o=n.slice(7);e[o]=r[n],delete t[n]}return{binds:e,cleanProps:t}}function Xt(r,e){let{binds:t,cleanProps:n}=ht(r);return Object.assign(Object.assign(Object.assign({},n),{__binds:t}),e)}var le="__effectDispose",ft="__attrEffectDisposes",Mn="__attrGetterMap";function qn(r){if(!r)return;let e=r;typeof e[le]=="function"&&(e[le](),e[le]=void 0),Array.isArray(e[ft])&&(e[ft].forEach(n=>n()),e[ft]=[]);let t=e[Mn];if(t&&typeof t=="object"){Object.values(t).forEach(n=>{var o;return(o=n.dispose)===null||o===void 0?void 0:o.call(n)});for(let n of Object.keys(t))delete t[n]}}function z(r){if(!r)return;r.childNodes.forEach(t=>z(t)),qn(r);let e=r[pt];e!=null&&e.destroy&&e.destroy()}function dt(r){return typeof r=="function"&&r.length===0}function Bt(r,e=10){let t;try{t=r()}catch(n){if(n instanceof TypeError&&/null|undefined/.test(String(n.message)))return console.warn("[Helfy] resolveGetterValue: caught null/undefined access (race with @if unmount)",n),"";throw n}for(let n=0;n<e&&dt(t);n++)try{t=t()}catch(o){if(o instanceof TypeError&&/null|undefined/.test(String(o.message)))return console.warn("[Helfy] resolveGetterValue: caught null/undefined access (race with @if unmount)",o),"";throw o}return t}function Ee(r){if(!r)return;let e=r[pt];e!=null&&e._setupReactiveEffects&&e._setupReactiveEffects(),e!=null&&e.onAttached&&e.onAttached(),r.childNodes.forEach(t=>Ee(t))}var ae=class{static mount(e){var t,n,o,i,s;let c=e.render();if(e.DOM=c,this.isView(c)){let l=c,a=this.getViewConstructor(l);if(Ye(a)){let f=l.children,{restChildren:d}=this.extractSlots(f),_=(t=this.getViewProps(l))!==null&&t!==void 0?t:{},p=H(q(),a,_,e);p._parentView=e,l.$_ref=p;let h=document.createDocumentFragment();this.mountChildren(h,(n=d!=null?d:f)!==null&&n!==void 0?n:[],p),e.el=h}else{let f=l.children,{slots:d,restChildren:_}=this.extractSlots(f);f&&_!==f&&(l.children=_);let p=this.getViewProps(l);Object.keys(d).length&&(p=Object.assign(Object.assign({},p),{$slots:d})),p=Xt(p,{_parentView:e}),l.$_props=p;let h=ie._jsx(c,e);if(h instanceof Node){e.el=h;let v=l.$_ref;if(v&&typeof v=="object"){v._parentView=e;let m=p.$_ref;m&&typeof m=="string"&&(e[m]=lt(v),v.__refOwner=e,v.__refName=m)}}}(o=e.onMount)===null||o===void 0||o.call(e);return}e.el=ie.createElement(c.tag,c.props);let u=(i=c.props)===null||i===void 0?void 0:i.$_ref;u&&typeof u=="string"&&(e[u]=e.el),this.mountChildren(e.el,c.children,e),(s=e.onMount)===null||s===void 0||s.call(e)}static mountChildren(e,t,n){t!=null&&t.length&&t.forEach(o=>{var i,s,c;if(o!=null){if(typeof o=="string"||typeof o=="number"){e.append(document.createTextNode(o.toString()));return}if(dt(o)){let u=document.createTextNode(""),l=j(()=>{u.textContent=String(Bt(o))});u[le]=l,e.append(u);return}if(this.isView(o)){let u=o,l=this.getViewConstructor(u);if(Ye(l)){let m=u.children,{restChildren:C}=this.extractSlots(m),A=(i=this.getViewProps(u))!==null&&i!==void 0?i:{},R=H(q(),l,A,n!=null?n:null);R._parentView=n!=null?n:null,u.$_ref=R,this.mountChildren(e,(s=C!=null?C:m)!==null&&s!==void 0?s:[],R);return}let a=this.getViewConstructor(u),f=u.children,{slots:d,restChildren:_}=this.extractSlots(f);f&&_!==f&&(u.children=_);let p=this.getViewProps(u);Object.keys(d).length&&(p=Object.assign(Object.assign({},p),{$slots:d})),p=Xt(p,{_parentView:n!=null?n:null});let h=H(q(),a,p,n!=null?n:null);u.$_ref=h,h.view[pt]=h;let v=p.$_ref;v&&typeof v=="string"&&n&&(n[v]=lt(h),h.__refOwner=n,h.__refName=v),e.append(h.view);return}if(this.isCondition(o)){let u=o;u.$_condition&&u.$_node&&this.mountChildren(e,[u.$_node],n);return}if(this.isElseCondition(o)){let u=o;this.mountChildren(e,[u.$_node],n);return}if(this.isReactiveIf(o)){this.mountReactiveIf(e,o,n);return}if(this.isReactiveForin(o)){this.mountReactiveForin(e,o,n);return}if(this.isForin(o)){let u=o;this.mountChildren(e,u.$_items,n);return}if(this.isJSX(o)){let u=o,l=(c=u.props)!==null&&c!==void 0?c:{},a=ie.createElement(u.tag,l),f=l.$_ref;f&&typeof f=="string"&&n&&(n[f]=a),u.children&&this.mountChildren(a,u.children,n),e.append(a)}}})}static updateChildren(e,t,n){if(!(t!=null&&t.length)){e.childNodes.forEach(i=>z(i)),e.replaceChildren();return}let o=[];t.forEach(i=>{if(i==null)return;if(typeof i=="string"||typeof i=="number"){o.push(document.createTextNode(i.toString()));return}if(dt(i)){let c=document.createTextNode(""),u=j(()=>{c.textContent=String(Bt(i))});c[le]=u,o.push(c);return}let s=ie._jsx(i,n);s instanceof Node&&o.push(s)}),e.childNodes.forEach(i=>z(i)),e.replaceChildren(...o)}static updateDomNode(e,t,n,o){if(!e||!n)return;let i=n==null?void 0:n.tag;if(typeof i=="string"&&!(n!=null&&n.$_type)&&e.tagName.toLowerCase()===i){ie.setElementAttributes(e,n.props),e.childNodes.forEach(u=>z(u)),e.replaceChildren();let c=n.children;c!=null&&c.length&&this.mountChildren(e,c,o);return}e.childNodes.forEach(c=>z(c)),e.replaceChildren(),this.mountChildren(e,[n],o)}static getViewConstructor(e){var t;return(t=e==null?void 0:e.$_view)!==null&&t!==void 0?t:e==null?void 0:e.tag}static getViewProps(e){var t,n;return(n=(t=e==null?void 0:e.$_props)!==null&&t!==void 0?t:e==null?void 0:e.props)!==null&&n!==void 0?n:{}}static getNodeType(e){return this.isView(e)?"view":this.isForin(e)?"forin":this.isCondition(e)?"condition":this.isElseCondition(e)?"elsecondition":this.isJSX(e)?"jsx":typeof e=="string"||typeof e=="number"?"text":"unknown"}static isSlot(e){return typeof e=="object"&&e!==null&&(e==null?void 0:e.$_type)==="_slot"}static extractSlots(e){let t={};if(!(e!=null&&e.length))return{slots:t,restChildren:e!=null?e:[]};let n=[];return e.forEach(o=>{this.isSlot(o)?t[o.$_name]=o.$_render:n.push(o)}),{slots:t,restChildren:n}}static isJSX(e){return typeof e=="object"&&e!==null&&!(e!=null&&e.$_type)}static isView(e){return typeof e=="object"&&e!==null&&((e==null?void 0:e.$_type)==="_view"||typeof(e==null?void 0:e.tag)=="function")}static isCondition(e){return typeof e=="object"&&e!==null&&(e==null?void 0:e.$_type)==="_if"}static isElseCondition(e){return typeof e=="object"&&e!==null&&(e==null?void 0:e.$_type)==="_ifelse"}static isForin(e){return typeof e=="object"&&e!==null&&(e==null?void 0:e.$_type)==="_forin"}static isReactiveIf(e){if(typeof e!="object"||e===null)return!1;let t=e==null?void 0:e.$_type;return t==="_rIf"||t==="_rIfElse"}static isReactiveForin(e){return typeof e=="object"&&e!==null&&(e==null?void 0:e.$_type)==="_rForin"}static mountReactiveIf(e,t,n){let o=document.createComment(t.$_type);e.append(o);let i=[],s,c=!1,u=j(()=>{let a=t.$_condFn();if(G(()=>{if(c){i.forEach(_=>{z(_),_.remove()}),i=[];return}let d=t.$_condFn();s!==void 0&&s===d||(i.forEach(_=>{z(_),_.remove()}),i=[])}),s===a&&i.length>0)return;s=a,i.length>0&&(i.forEach(d=>{z(d),d.remove()}),i=[]);let f=null;if(a?f=t.$_type==="_rIfElse"?t.$_ifFn():t.$_bodyFn():t.$_type==="_rIfElse"&&(f=t.$_elseFn()),f!=null){let d=document.createDocumentFragment();this.mountChildren(d,[f],n);let _=Array.from(d.childNodes);o.after(d),i=_,_.forEach(p=>Ee(p))}else i=[]},{structural:!0}),l=()=>{c=!0,u()};o[le]=l}static mountReactiveForin(e,t,n){let o=document.createComment("_rForin");e.append(o);let i=[],s=j(()=>{let c=t.$_listFn();if(G(()=>{i.forEach(u=>{z(u),u.remove()}),i=[]}),c&&c.length>0){let u=[];c.forEach((f,d,_)=>{let p=t.$_mapFn(f,d,_);p!=null&&u.push(p)});let l=document.createDocumentFragment();this.mountChildren(l,u,n);let a=Array.from(l.childNodes);o.after(l),i=a,a.forEach(f=>Ee(f))}},{structural:!0});o[le]=s}};var Xe=Symbol.for("helfy:injectFields");function Qn(r){return typeof r=="symbol"?r:Ge(r)}function M(r,e,t){if(r===void 0)throw new Error("[helfy] @useCtx<IX>() requires babel-plugin-helfy-di to transform. Ensure the plugin runs on your source.");if(typeof r=="string")throw new Error('[helfy] @useCtx<IX>("field") requires babel-plugin-helfy-di to transform. Ensure the plugin runs on your source.');let n=r,o,i;typeof e=="string"?(o=e,i=t):e&&typeof e=="object"?i=e:i=t;let s=Qn(n);return function(c,u){var l;let a=typeof c=="function"?c:c.constructor,f=(l=a[Xe])!==null&&l!==void 0?l:[];f.push({propertyKey:u,key:s,fieldName:o,options:i}),Object.defineProperty(a,Xe,{value:f,configurable:!0})}}function Ht(r,e,t){var n,o,i;let s=r;for(;s;){let u=s._injector;if(u!=null&&u.has(e))return u.get(e);s=(n=s._parentView)!==null&&n!==void 0?n:null}if((t==null?void 0:t.optional)!==!1&&(t==null?void 0:t.defaultValue)!==void 0)return t.defaultValue;if(t!=null&&t.optional)return;let c=typeof e=="string"?e:typeof e=="symbol"?(o=e.description)!==null&&o!==void 0?o:String(e):(i=e==null?void 0:e.name)!==null&&i!==void 0?i:String(e);throw new Error(`[helfy] No provider for ${c}`)}var _t=function(r,e,t,n){function o(i){return i instanceof t?i:new t(function(s){s(i)})}return new(t||(t=Promise))(function(i,s){function c(a){try{l(n.next(a))}catch(f){s(f)}}function u(a){try{l(n.throw(a))}catch(f){s(f)}}function l(a){a.done?i(a.value):o(a.value).then(c,u)}l((n=n.apply(r,e||[])).next())})},Wn=0,kn=5*60*1e3,Kn=100;function Be(r){return JSON.stringify(r)}var mt=Kn,J=new Map,Z=[];function De(r){let e=Z.indexOf(r);e>=0&&Z.splice(e,1),Z.push(r)}function zn(){var r,e;let t=Date.now();for(let n=0;n<Z.length;n++){let o=Z[n],i=J.get(o);if(!i)return Z.splice(n,1),!0;if(!(i.subscribers>0||!(t-i.lastAccess>i.gcTime)))return i.focusListener&&typeof window!="undefined"&&((r=window.removeEventListener)===null||r===void 0||r.call(window,"focus",i.focusListener)),i.reconnectListener&&typeof window!="undefined"&&((e=window.removeEventListener)===null||e===void 0||e.call(window,"online",i.reconnectListener)),J.delete(o),Z.splice(n,1),!0}return!1}function He(r){mt=r}function Gn(){for(;J.size>=mt&&Z.length>0&&!(!zn()||J.size<mt););}var Y=Symbol.for("helfy:querySubscribe");function Jn(r,e,t){let n=()=>e.dataSignal[0](),o=()=>e.isLoadingSignal[0](),i=()=>e.isFetchingSignal[0](),s=()=>e.errorSignal[0](),c={get data(){return e.lastAccess=Date.now(),De(r),n()},get isLoading(){return e.lastAccess=Date.now(),De(r),o()},get isFetching(){return e.lastAccess=Date.now(),De(r),i()},get isError(){return s()!==void 0&&s()!==null},get error(){return s()},refetch:()=>_t(this,void 0,void 0,function*(){e.lastAccess=Date.now(),De(r),yield Ne(r,e)})};return Object.defineProperty(c,Y,{value:()=>t.subscribe(r),enumerable:!1}),c}function Ne(r,e){return _t(this,void 0,void 0,function*(){if(e.fetchPromise){yield e.fetchPromise;return}e.status="loading",e.isLoadingSignal[1](!0),e.isFetchingSignal[1](!0),e.errorSignal[1](void 0);let t=()=>_t(this,void 0,void 0,function*(){try{let n=yield e.queryFn();U(()=>{e.dataSignal[1](n),e.errorSignal[1](void 0),e.status="success",e.lastFetchAt=Date.now(),e.isLoadingSignal[1](!1),e.isFetchingSignal[1](!1)})}catch(n){U(()=>{e.errorSignal[1](n),e.status="error",e.isLoadingSignal[1](!1),e.isFetchingSignal[1](!1)})}finally{e.fetchPromise=null}});e.fetchPromise=t(),yield e.fetchPromise})}function Yn(){let r={getOrCreate(e,t){var n,o,i,s;let c=Be(e),u=J.get(c);if(!u){Gn();let a=(n=t.staleTime)!==null&&n!==void 0?n:Wn,f=(o=t.gcTime)!==null&&o!==void 0?o:kn,d=(i=t.refetchOnWindowFocus)!==null&&i!==void 0?i:!1,_=(s=t.refetchOnReconnect)!==null&&s!==void 0?s:!0;if(u={queryKey:e,queryFn:t.queryFn,staleTime:a,gcTime:f,refetchOnWindowFocus:d,refetchOnReconnect:_,dataSignal:y(void 0),isLoadingSignal:y(!1),isFetchingSignal:y(!1),errorSignal:y(void 0),fetchPromise:null,lastFetchAt:0,lastAccess:Date.now(),subscribers:0,status:"idle",focusListener:null,reconnectListener:null},J.set(c,u),Z.push(c),typeof window!="undefined"){if(d){let p=()=>{u.subscribers>0&&Date.now()-u.lastFetchAt>u.staleTime&&Ne(c,u)};u.focusListener=p,window.addEventListener("focus",p)}if(_){let p=()=>{u.subscribers>0&&Ne(c,u)};u.reconnectListener=p,window.addEventListener("online",p)}}}return u.lastAccess=Date.now(),De(c),(u.status==="idle"||u.status==="success"&&Date.now()-u.lastFetchAt>u.staleTime||u.status==="error")&&Ne(c,u),Jn(c,u,r)},subscribe(e){let t=J.get(e);return t?(t.subscribers++,()=>{t.subscribers--}):()=>{}},invalidate(e){let t=Be(e),n=J.get(t);n&&(n.fetchPromise=null,n.lastFetchAt=0,Ne(t,n))},set(e,t){let n=Be(e),o=J.get(n);o&&(o.dataSignal[1](t),o.errorSignal[1](void 0),o.status="success",o.lastFetchAt=Date.now(),o.isLoadingSignal[1](!1),o.isFetchingSignal[1](!1))},setWithUpdater(e,t){let n=Be(e),o=J.get(n);if(!o)return;let i=o.dataSignal[0](),s=t(i);o.dataSignal[1](s),o.status="success",o.lastFetchAt=Date.now()}};return r}var vt=null;function xe(){return vt||(vt=Yn()),vt}var se=Symbol.for("helfy:useQueryFields");function Zt(r,e){let t=e!==void 0?r:void 0,n=e!=null?e:r;if(t===void 0)throw new Error("[helfy] @useQuery<IX>(key) requires babel-plugin-helfy-di to transform. Ensure the plugin runs on your source.");return function(o,i){var s;let c=typeof o=="function"?o:o.constructor,u=(s=c[se])!==null&&s!==void 0?s:[];u.push({propertyKey:i,apiToken:t,keyOrGetter:n}),Object.defineProperty(c,se,{value:u,configurable:!0})}}function Xn(r){return Array.isArray(r)&&r.length>0}function Ve(r,e){let t=K(e.apiToken),{keyOrGetter:n}=e;if(typeof n=="string"){let i=t[n];return typeof i=="function"?i.call(t):t[n]}let o=n.call(r,r);if(Xn(o)){let[i,...s]=o,c=t[String(i)];if(typeof c=="function")return c.apply(t,s)}}function Bn(r,e,t){let n=j(()=>{var o,i;let s=Ve(r,e);if(s&&typeof s=="object"){let c=s;c.refetch&&(c.data===void 0||c.data===null)&&c.refetch();let u=c[Y];if(typeof u=="function"){let l=u();G(()=>{typeof l=="function"&&l()})}c.data,c.isLoading,c.isFetching}(i=(o=r).scheduleUpdate)===null||i===void 0||i.call(o)});t.push(n)}function bt(r,e){let n=r.constructor[se];n!=null&&n.length&&n.forEach(o=>{if(typeof o.keyOrGetter=="function")Bn(r,o,e);else try{let i=Ve(r,o);if(i&&typeof i=="object"){let s=i;s.refetch&&(s.data===void 0||s.data===null)&&s.refetch();let c=s[Y];if(typeof c=="function"){let u=c();typeof u=="function"&&e.push(u)}}}catch(i){}})}var fe=Symbol.for("helfy:useInfiniteQueryFields");function Hn(r,e,t,n){var o,i;let s="__infiniteQuery",c=r[s];if(c)return c;let u=K(e),l=(o=t.method)!==null&&o!==void 0?o:t.methodName;if(!l)throw new Error("[helfy] useInfiniteQuery: key descriptor must have 'method'");let a=u[l];if(typeof a!="function")throw new Error(`[helfy] useInfiniteQuery: API has no method "${l}"`);let f=t.totalPages,d=(i=t.initialPage)!==null&&i!==void 0?i:Math.max(1,Math.ceil(f/2)),[_,p]=y([]),[h,v]=y(d),[m,C]=y(d),[A,R]=y(d),[B,pe]=y(d),[he,D]=y(!1),[Me,b]=y(!1),[x,S]=y(!0),[E,w]=y(void 0),P={get data(){return _()},get hasNextPage(){return m()<f},get hasPreviousPage(){return h()>1},get isFetchingNext(){return he()},get isFetchingPrevious(){return Me()},get isLoading(){return x()},get isError(){return E()!=null},get error(){return E()},loadMore(){let F=m();F>=f||a(F+1).isFetching||C(F+1)},loadPrevious(){let F=h();F<=1||a(F-1).isFetching||v(F-1)}},Q=j(()=>{var F,$;let N=m(),W=B();if(N<=W)return;let g=a(N);g.data,g.isFetching,g.isError;let k=g[Y];if(typeof k=="function"){let I=k();G(()=>{typeof I=="function"&&I()})}D(g.isFetching),g.isError?w(g.error):w(void 0);let O=g.data;O!=null&&O.length&&(S(!1),U(()=>{p(I=>I.length===0?[...O]:[...I,...O]),pe(N)}),($=(F=r).scheduleUpdate)===null||$===void 0||$.call(F))}),te=j(()=>{var F,$;let N=h(),W=A();if(N>=W)return;let g=a(N);g.data,g.isFetching,g.isError;let k=g[Y];if(typeof k=="function"){let I=k();G(()=>{typeof I=="function"&&I()})}b(g.isFetching),g.isError&&w(g.error);let O=g.data;O!=null&&O.length&&(S(!1),U(()=>{p(I=>I.length===0?[...O]:[...O,...I]),R(N)}),($=(F=r).scheduleUpdate)===null||$===void 0||$.call(F))}),ve=j(()=>{var F,$;let N=h(),W=m();if(N!==W)return;let g=a(N);g.refetch&&(g.data===void 0||g.data===null)&&g.refetch(),g.data,g.isLoading,g.isFetching,g.error;let k=g[Y];if(typeof k=="function"){let I=k();G(()=>{typeof I=="function"&&I()})}S(g.isLoading),D(g.isFetching),b(!1),g.isError?w(g.error):w(void 0);let O=g.data;O!=null&&O.length&&(p([...O]),R(N),pe(W)),($=(F=r).scheduleUpdate)===null||$===void 0||$.call(F)});return n.push(Q,te,ve),r[s]=P,P}function en(r,e){let t=e!==void 0?r:void 0,n=e!=null?e:r;if(t===void 0)throw new Error("[helfy] @useInfiniteQuery<IX>(config) requires babel-plugin-helfy-di to transform.");return function(o,i){var s;let c=typeof o=="function"?o:o.constructor,u=(s=c[fe])!==null&&s!==void 0?s:[];u.push({propertyKey:i,apiToken:t,config:n}),Object.defineProperty(c,fe,{value:u,configurable:!0})}}function tn(r,e){var t;let n=(t=r._subscriptions)!==null&&t!==void 0?t:[];return Hn(r,e.apiToken,e.config,n)}function gt(r,e){var t;let o=r.constructor[fe];o!=null&&o.length&&(r._subscriptions=(t=r._subscriptions)!==null&&t!==void 0?t:e,o.forEach(i=>{try{delete r[i.propertyKey]}catch(s){}Object.defineProperty(r,i.propertyKey,{configurable:!0,enumerable:!0,get(){return tn(this,i)}})}))}var we=Symbol.for("helfy:useMutationFields");function nn(r,e){return function(t,n){var o;let i=typeof t=="function"?t:t.constructor,s=(o=i[we])!==null&&o!==void 0?o:[];s.push({propertyKey:n,apiToken:r,methodName:e}),Object.defineProperty(i,we,{value:s,configurable:!0})}}function yt(r){let e=K(r.apiToken),t=e[r.methodName];return typeof t=="function"?t.call(e):t}var Ze=Symbol.for("helfy:bindedFields");function Zn(r){return(e,t)=>{var n;let o=typeof e=="function"?e:e.constructor,i=(n=o[Ze])!==null&&n!==void 0?n:[];i.push({bindName:r,fieldKey:String(t)}),Object.defineProperty(o,Ze,{value:i,configurable:!0})}}var xt=Symbol.for("helfy:view"),Et=Symbol.for("helfy:propSignals");function Ue(r){return r.startsWith("$")}function er(r){let e={},t={};for(let o of Object.keys(r))Ue(o)?t[o]=r[o]:e[o]=y(r[o]);let n=new Proxy(Object.create(null),{get(o,i){if(i===Et)return e;if(typeof i=="symbol")return;if(typeof i=="string"&&Ue(i)&&i in t)return t[i];let s=e[i];if(!s)return;let c=s[0]();for(;typeof c=="function"&&c[ze];){let u=c;if(c=c(),c===u)break}return c},set(o,i,s){return typeof i=="symbol"?!0:typeof i=="string"&&Ue(i)?(t[i]=s,!0):(e[i]?e[i][1](s):e[i]=y(s),!0)},has(o,i){return typeof i=="string"&&(i in e||i in t)},ownKeys(){return[...Object.keys(e),...Object.keys(t)]},getOwnPropertyDescriptor(o,i){if(typeof i=="string"){if(Ue(i)&&i in t)return{configurable:!0,enumerable:!0,writable:!0,value:t[i]};if(i in e){let s=e[i][0]();for(;typeof s=="function"&&s[ze];){let c=s;if(s=s(),s===c)break}return{configurable:!0,enumerable:!0,writable:!0,value:s}}}}});return n.__passthrough=t,n}function tr(r){let e=Object.getPrototypeOf(r);e&&Object.getOwnPropertyNames(e).forEach(t=>{if(t==="constructor")return;let n=Object.getOwnPropertyDescriptor(e,t);!n||typeof n.value!="function"||Object.defineProperty(r,t,{value:n.value.bind(r),configurable:!0,writable:!0})})}function ee(r){return r[xt]=!0,Object.defineProperties(r.prototype,{_injector:{value:null,writable:!0},_parentView:{value:null,writable:!0},_dirty:{value:!1,writable:!0},_subscriptions:{value:void 0,writable:!0},DOM:{value:void 0,writable:!0},el:{value:void 0,writable:!0},$slots:{get(){var e;return(e=this.__slots)!==null&&e!==void 0?e:{}},set(e){this.__slots=e!=null?e:{}}},view:{get(){return this.el}},scheduleUpdate:{value:function(){this._dirty||(this._dirty=!0,queueMicrotask(()=>{this._dirty=!1,this.el&&this.el.isConnected&&this.update()}))}},update:{value:function(){var e,t,n,o,i,s,c;let u=this.render(),l=((e=this.DOM)===null||e===void 0?void 0:e.$_type)==="_view"||typeof((t=this.DOM)===null||t===void 0?void 0:t.tag)=="function",a=(u==null?void 0:u.$_type)==="_view"||typeof(u==null?void 0:u.tag)=="function";if(this.DOM&&u&&l&&a){let f=this.DOM,d=u,_=(n=f.tag)!==null&&n!==void 0?n:f.$_component,p=(o=d.tag)!==null&&o!==void 0?o:d.$_component;if(_&&p&&_===p){let v=f.$_ref;if(v&&typeof v.updateProps=="function"){let m=(s=(i=d.$_props)!==null&&i!==void 0?i:d.props)!==null&&s!==void 0?s:{},{binds:C,cleanProps:A}=ht(m);Object.keys(C).length&&(v.__binds=C),v.updateProps(A)}f.$_ref&&!d.$_ref&&(d.$_ref=f.$_ref),this.DOM=u;return}let h=(c=this.el)===null||c===void 0?void 0:c.parentNode;if(h){let v=document.createDocumentFragment();ae.mountChildren(v,[u],this);let m=Array.from(v.childNodes);this.el instanceof Node&&(z(this.el),h.replaceChild(v,this.el)),this.el=m.length===1?m[0]:h,m.forEach(C=>Ee(C)),this.DOM=u;return}}ae.updateDomNode(this.el,this.DOM,u,this),this.DOM=u}},updateProps:{value:function(e){var t,n;e&&typeof e=="object"&&"$slots"in e&&(this.$slots=e.$slots);let o=(t=this.props)===null||t===void 0?void 0:t[Et],i=(n=this.props)===null||n===void 0?void 0:n.__passthrough;o||i?U(()=>{for(let s of Object.keys(e))s!=="$slots"&&(typeof s=="string"&&Ue(s)&&i?i[s]=e[s]:o&&(o[s]?o[s][1](e[s]):o[s]=y(e[s])))}):(this.props=e,this.scheduleUpdate())}},mount:{value:function(){ae.mount(this)}},attach:{value:function(e){var t;let n=this.view,o=n instanceof DocumentFragment,i=o?n.childNodes.length:1;e.append(n),this._setupReactiveEffects&&this._setupReactiveEffects(),(t=this.onAttached)===null||t===void 0||t.call(this),(o?Array.from(e.childNodes).slice(-i):[n]).forEach(c=>Ee(c))}},destroy:{value:function(){var e,t;(e=this._subscriptions)===null||e===void 0||e.forEach(o=>o()),this._subscriptions=[],this._effectsInitialized=!1;let n=this[me];if(n){for(let o of Object.keys(n)){let i=n[o],s=i==null?void 0:i.getter;s&&typeof s[Ke]=="function"&&s[Ke]()}delete this[me]}this.__refOwner&&this.__refName&&(this.__refOwner[this.__refName]=null),(t=this.onDestroy)===null||t===void 0||t.call(this)}}}),class extends r{constructor(...e){var t,n,o,i,s,c,u,l,a;let f=e.length-1,d=(t=e[f])!==null&&t!==void 0?t:{},_=(n=d.__binds)!==null&&n!==void 0?n:{},p=Object.assign({},d);delete p.__binds,e[f]=p,super(...e),this.__binds=_,this.props===void 0&&e[f]!=null&&(this.props=e[f]);let h=(o=this.props)!==null&&o!==void 0?o:e[f];h&&typeof h=="object"&&"_parentView"in h&&(this._parentView=h._parentView);let v=this.props;if(v&&typeof v=="object"&&!v[Et]&&(this.props=er(v)),tr(this),oe(this),!((i=this.$_stateFields)===null||i===void 0)&&i.length){let b=this;b.__signals||Object.defineProperty(b,"__signals",{value:{},writable:!0,configurable:!0}),this.$_stateFields.forEach(x=>{let S=b[x];try{delete b[x]}catch(P){}let[E,w]=y(S);b.__signals[x]=[E,w],Object.defineProperty(b,x,{get(){let P=this.__signals[x];return P?P[0]():void 0},set(P){let Q=this.__signals[x];Q&&Q[1](P)},configurable:!0,enumerable:!0})}),delete this.$_stateFields}if(!((s=this.$_computedFields)===null||s===void 0)&&s.length){let b=this;((c=b.$_computedFields)!==null&&c!==void 0?c:[]).forEach(S=>{let E=Object.getPrototypeOf(this),w;for(;E&&E!==Object.prototype&&(w=Object.getOwnPropertyDescriptor(E,S),!w);)E=Object.getPrototypeOf(E);let P=w==null?void 0:w.get;if(typeof P!="function")return;let Q=re(()=>P.call(this));Object.defineProperty(b,S,{get(){return Q()},configurable:!0,enumerable:!0})}),delete b.$_computedFields}let m=this.constructor[Ze];m!=null&&m.length&&m.forEach(({bindName:b,fieldKey:x})=>{try{delete this[x]}catch(S){}Object.defineProperty(this,x,{get(){var S;let E=(S=this.__binds)===null||S===void 0?void 0:S[b];return E&&typeof E.get=="function"?E.get():void 0},set(S){var E;let w=(E=this.__binds)===null||E===void 0?void 0:E[b];w&&typeof w.set=="function"&&w.set(S)},configurable:!0,enumerable:!0})});let C=this.constructor[ge];if(C!=null&&C.length){let b=this;C.forEach(({token:x,propertyKey:S})=>{try{delete b[S]}catch(E){}Object.defineProperty(b,S,{configurable:!0,enumerable:!0,get(){return K(x)}})})}let A=this.constructor[Xe];if(A!=null&&A.length){let b=this;b._subscriptions=(u=b._subscriptions)!==null&&u!==void 0?u:[],A.forEach(({propertyKey:x,key:S,fieldName:E,options:w})=>{var P;try{delete b[x]}catch(ve){}let Q=Symbol.for(`inject:sub:${String(x)}`),te=(P=w==null?void 0:w.subscribeField)!==null&&P!==void 0?P:E;Object.defineProperty(b,x,{configurable:!0,enumerable:!0,get(){var ve;let F=Ht(this,S,w),$;E&&F&&typeof F=="object"&&E in F?$=F[E]:$=F;let N=F&&typeof F=="object"?F:null;if(te&&N&&te in N){let W=N;if(typeof(W==null?void 0:W.subscribe)=="function"){this._injectSubs||(this._injectSubs=new Map);let g=this._injectSubs;if(!g.has(Q)){let k=W.subscribe(te,()=>{var O,I;return(I=(O=this).scheduleUpdate)===null||I===void 0?void 0:I.call(O)});g.set(Q,k),(ve=this._subscriptions)===null||ve===void 0||ve.push(k)}}}return w!=null&&w.access?w.access($):$}})})}let R=this.constructor[se];if(R!=null&&R.length){let b=this;b._subscriptions=(l=b._subscriptions)!==null&&l!==void 0?l:[],R.forEach(x=>{try{delete b[x.propertyKey]}catch(S){}Object.defineProperty(b,x.propertyKey,{configurable:!0,enumerable:!0,get(){return Ve(this,x)}})})}let B=this.constructor[we];if(B!=null&&B.length){let b=this;B.forEach(x=>{try{delete b[x.propertyKey]}catch(S){}Object.defineProperty(b,x.propertyKey,{configurable:!0,enumerable:!0,get(){return yt(x)}})})}let pe=this.constructor[fe];if(pe!=null&&pe.length){let b=this;b._subscriptions=(a=b._subscriptions)!==null&&a!==void 0?a:[],gt(b,b._subscriptions)}let he=this.props;he&&typeof he=="object"&&"$slots"in he&&(this.$slots=he.$slots),this.mount();let D=this,Me=()=>{var b,x;if(D._effectsInitialized)return;D._effectsInitialized=!0;let S=D.constructor,E;for(;S&&S!==Function.prototype&&(E=S[ye],!(E!=null&&E.length));)S=Object.getPrototypeOf(S);let w=D.constructor[se];w!=null&&w.length&&bt(D,(b=D._subscriptions)!==null&&b!==void 0?b:[]),E!=null&&E.length&&(D._subscriptions=(x=D._subscriptions)!==null&&x!==void 0?x:[],E.forEach(P=>{let Q=j(()=>{let te=D[P];typeof te=="function"&&te.call(D)});D._subscriptions.push(Q)}))};D._setupReactiveEffects=Me,Me()}}}var wt=Symbol.for("helfy:store");function nr(r){return function(e){return e[wt]=!0,e[ne]=!0,e[_e]=r!=null?r:e,Object.defineProperties(e.prototype,{subscribe:{value:function(t,n){let o=this,i=!0,s=j(()=>{let c=o[t];if(i){i=!1;return}n(c,()=>s())});return()=>{s()}}},unsubscribe:{value:function(t,n){}}}),class extends e{constructor(...t){var n,o,i;if(t.length>0)throw new Error(`[helfy] @Store classes must have an empty constructor. ${e.name} received ${t.length} argument(s).`);super(...t),oe(this);let s=(n=this.$_stateFields)!==null&&n!==void 0?n:[],c=(o=this.$_observableFields)!==null&&o!==void 0?o:[],u=(i=this.$_computedFields)!==null&&i!==void 0?i:[],l=this;l.__signals||Object.defineProperty(l,"__signals",{value:{},writable:!0,configurable:!0});let a=[...new Set([...s,...c])];if(a.length&&(a.forEach(f=>{let d=l[f];try{delete l[f]}catch(h){}let[_,p]=y(d);l.__signals[f]=[_,p],Object.defineProperty(l,f,{get(){let h=this.__signals[f];return h?h[0]():void 0},set(h){let v=this.__signals[f];v&&v[1](h)},configurable:!0,enumerable:!0})}),delete l.$_stateFields,delete l.$_observableFields),u.length){let f=Object.getPrototypeOf(this);u.forEach(d=>{let _=Object.getOwnPropertyDescriptor(f,d),p=_==null?void 0:_.get;if(typeof p!="function")return;let h=re(()=>p.call(this));Object.defineProperty(l,d,{get(){return h()},configurable:!0,enumerable:!0})}),delete l.$_computedFields}}}}}function rn(r,e){let[t,n]=y(r),[o,i]=y(void 0),[s,c]=y(!1);return{get _initialValue(){return r},get value(){return t()},set value(l){t()!==l&&(n(l),e())},get isDirty(){return t()!==r},get isTouched(){return s()},set isTouched(l){s()!==l&&(c(l),e())},get error(){return o()},set error(l){o()!==l&&(i(l),e())},get isValid(){return!o()}}}var Ct=Symbol.for("helfy:fieldFields");function on(r){return function(e,t){var n;let o=typeof e=="function"?e:e.constructor,i=(n=o[Ct])!==null&&n!==void 0?n:[];i.push({propertyKey:t,options:r}),Object.defineProperty(o,Ct,{value:i,configurable:!0})}}function sn(r,e){var t;let n=(t=e[Ct])!==null&&t!==void 0?t:[],o=()=>{var i;return(i=r._notifyFieldChange)===null||i===void 0?void 0:i.call(r)};n.forEach(({propertyKey:i,options:s})=>{var c;let u=String(i),l=(c=s==null?void 0:s.defaultValue)!==null&&c!==void 0?c:r[i],a=rn(l,o);delete r[i],Object.defineProperty(r,i,{configurable:!0,enumerable:!0,get:()=>a,set:()=>{throw new Error(`[helfy] @field "${u}" is read-only. Assign to .value instead.`)}})})}var et=Symbol.for("helfy:form");function cn(r){let e=Le(r);return e[et]=!0,e.prototype.__beforeComputedInit=function(){sn(this,r)},class extends e{constructor(...t){var n;super(...t),this._formRev=0;let o=this,i=(n=o._formRev)!==null&&n!==void 0?n:0,[s,c]=y(i);o.__signals||Object.defineProperty(o,"__signals",{value:{},writable:!0,configurable:!0}),o.__signals._formRev=[s,c],Object.defineProperty(o,"_formRev",{configurable:!0,enumerable:!0,get(){return s()},set(u){c(u)}})}_notifyFieldChange(){this._formRev=this._formRev+1}}}function un(r){return typeof r=="function"&&!!r[et]}var Ce=Symbol.for("helfy:ILogger");var rr=["View","Service","Store","Context","Provider","Factory"];function an(r){let e=r;for(let t of rr)if(e.endsWith(t)){e=e.slice(0,-t.length);break}return e?or(e):r}function or(r){return r.replace(/([A-Z])/g,(e,t)=>`-${t.toLowerCase()}`).replace(/^-/,"")}var ln={debug:"\x1B[90m",info:"\x1B[36m",warn:"\x1B[33m",error:"\x1B[31m",reset:"\x1B[0m"};function fn(r,e){let t=ln[r];return t?`${t}${e}${ln.reset}`:e}function dn(r){if(!r||typeof r!="object")return"";try{let e=Object.keys(r);return e.length===0?"":` { ${e.map(n=>`${n}: ${ir(r[n])}`).join(", ")} }`}catch(e){return" { [object] }"}}function ir(r){if(r===null)return"null";if(r===void 0)return"undefined";if(typeof r=="string")return JSON.stringify(r);if(typeof r=="number"||typeof r=="boolean")return String(r);if(r instanceof Error)return`[Error: ${r.message}]`;try{return JSON.stringify(r)}catch(e){return String(r)}}var pn=Symbol.for("helfy:loggerCache"),St=Symbol.for("helfy:loggerFields"),sr=/^<[A-Za-z][A-Za-z0-9]*>$/,L={reset:"\x1B[0m",dim:"\x1B[2m",tag:"\x1B[36m",tagCustom:"\x1B[90m",tagView:"\x1B[96m",tagContext:"\x1B[93m",tagForm:"\x1B[94m",tagStore:"\x1B[92m",tagInjectable:"\x1B[95m",debug:"\x1B[90m",info:"\x1B[34m",warn:"\x1B[33m",error:"\x1B[31m"};function hn(r){let e=r==null?void 0:r.constructor;for(;e;){if(e[ne])return"injectable";if(e[et])return"form";if(e[Je])return"context";if(e[wt])return"store";if(e[xt])return"view";e=Object.getPrototypeOf(e)}return"other"}function cr(r){switch(r){case"view":return L.tagView;case"context":return L.tagContext;case"form":return L.tagForm;case"store":return L.tagStore;case"injectable":return L.tagInjectable;default:return L.tag}}function ur(r){let e=r.match(/^<(.+)>$/);return e?e[1]:r}function lr(r,e){let t=ur(r);switch(e){case"view":return`<${t}>`;case"injectable":return`${t}()`;case"context":return`{${t}}`;case"form":return`[${t}]`;case"store":return`${t}[]`;default:return r}}function Ft(r,e=L.tag){let t=o=>{switch(o){case"DEBUG":return L.debug;case"INFO":return L.info;case"WARN":return L.warn;case"ERROR":return L.error;default:return L.reset}},n=(o,i)=>{let s=t(o);return`${e}${r}${L.reset} ${s}${o}${L.reset} ${i}`};return{debug:(o,...i)=>console.log(n("DEBUG",o),...i),info:(o,...i)=>console.info(n("INFO",o),...i),warn:(o,...i)=>console.warn(n("WARN",o),...i),error:(o,i,s)=>{if(o instanceof Error){let c=i&&typeof i=="object"&&!(i instanceof Error)?i:void 0;c&&Object.keys(c).length>0?console.error(n("ERROR",o.message),c,o):console.error(n("ERROR",o.message),o)}else{let c=i!=null?i:s;c&&Object.keys(c).length>0?console.error(n("ERROR",o),c):console.error(n("ERROR",o))}},withContext:o=>Ft(`${r}:${o}`,e)}}function vn(r,e,t){var n,o;let i=t[pn];if(i||(t[pn]=i=new Map),!i.has(r)){let s=q(),c=e!==void 0?e:an((o=(n=t.constructor)===null||n===void 0?void 0:n.name)!==null&&o!==void 0?o:"app"),u=!sr.test(c),l=u?c:lr(c,hn(t)),a=u?L.tagCustom:cr(hn(t)),f;try{let d=s==null?void 0:s.get(Ce);if(d){let _=`${a}${l}${L.reset}`;f=d.withContext(_)}else f=Ft(l,a)}catch(d){f=Ft(l,a)}i.set(r,f)}return i.get(r)}function _n(r){return function(e,t){var n;let o=typeof e=="function"?e:e.constructor,i=(n=o[St])!==null&&n!==void 0?n:[];i.push({propertyKey:t,prefix:r}),Object.defineProperty(o,St,{value:i,configurable:!0});try{delete e[t]}catch(s){}Object.defineProperty(e,t,{get(){return vn(t,r,this)},configurable:!0,enumerable:!1})}}function oe(r){let t=r.constructor,n=[];for(;t;){let o=t[St];Array.isArray(o)&&n.push(...o),t=Object.getPrototypeOf(t)}n.forEach(({propertyKey:o,prefix:i})=>{try{delete r[o]}catch(s){}Object.defineProperty(r,o,{get(){return vn(o,i,this)},configurable:!0,enumerable:!1})})}function ar(r){var e,t;return typeof r=="string"?r:typeof r=="symbol"?(e=r.description)!==null&&e!==void 0?e:String(r):(t=r.name)!==null&&t!==void 0?t:"unknown"}var Se=class r{constructor(e){this.bindings=new Map,this.instances=new Map,this.resolutionStack=new Set,this.parent=null,this.parent=e!=null?e:null,this.parent&&this.parent.bindings.forEach((t,n)=>this.bindings.set(n,t))}bind(e,t){let n=e;return this.bindings.set(n,{provider:t}),this}get(e){var t;let n=e,o=ar(e);if(this.resolutionStack.has(n))throw new Error(`[helfy] Circular dependency detected for ${o}. Check your constructor dependencies.`);let i=this.bindings.get(n);if(!i){if(this.parent)return this.parent.get(e);throw new Error(`[helfy] No provider for ${o}`)}this.resolutionStack.add(n);try{let{provider:s}=i;if("useValue"in s)return s.useValue;if(((t=s.scope)!==null&&t!==void 0?t:"useClass"in s&&Ae(s.useClass)||"singleton")==="transient")return this.resolveProvider(s);let u=this.instances.get(n);if(u!==void 0)return u;let l=this.resolveProvider(s);return this.instances.set(n,l),l}finally{this.resolutionStack.delete(n)}}resolveProvider(e){var t,n,o,i;if("useValue"in e)return e.useValue;if("useFactory"in e)return e.useFactory(this);let{useClass:s}=e,c=(t=Reflect.getMetadata("design:paramtypes",s))!==null&&t!==void 0?t:[],u=(i=(n=s[Qe])!==null&&n!==void 0?n:(o=s.prototype)===null||o===void 0?void 0:o[Qe])!==null&&i!==void 0?i:{},l=c.map((f,d)=>{var _;let p=(_=u[d])!==null&&_!==void 0?_:f;if(p===void 0)throw new Error(`[helfy] Cannot resolve param ${d} of ${s.name}. Ensure DI plugin adds tokens for interface params.`);return this.get(p)}),a=Reflect.construct(s,l);return oe(a),a}createScope(){return new r(this)}has(e){let t=e;return this.bindings.has(t)?!0:this.parent?this.parent.has(e):!1}autoRegister(e){var t;if(!it(e))throw new Error(`[helfy] ${e.name} is not @Injectable. Add @Injectable(token?) decorator.`);let n=(t=Dt(e))!==null&&t!==void 0?t:e,o=Ae(e),i={useClass:e};return o&&(i.scope=o),this.bind(n,i)}};function fr(r){return r.toUpperCase().padEnd(5)}var Fe=class{log(e,t,n,o,i){let s=typeof process!="undefined"&&process.env&&process.env.NODE_ENV==="production";if(e==="debug"&&s)return;let c=fr(e),u=`[${t}] ${c} ${n}`,l=[];i&&l.push(`[Error: ${i.message}${i.stack?`
2
+ ${i.stack}`:""}]`),o&&Object.keys(o).length>0&&l.push(dn(o)),l.length>0&&(u+=" "+l.join(" "));let a=fn(e,u);console[e==="error"?"error":e==="warn"?"warn":"log"](a)}};var dr=function(r,e,t,n){var o=arguments.length,i=o<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,t):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,n);else for(var c=r.length-1;c>=0;c--)(s=r[c])&&(i=(o<3?s(i):o>3?s(e,t,i):s(e,t))||i);return o>3&&i&&Object.defineProperty(e,t,i),i},pr=function(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)},jt,je=jt=class{constructor(e){this.transports=e!=null?e:[new Fe],this.prefix=""}emit(e,t,n,o){for(let i of this.transports)i.log(e,this.prefix||"app",t,n,o)}debug(e,t){this.emit("debug",e,t)}info(e,t){this.emit("info",e,t)}warn(e,t){this.emit("warn",e,t)}error(e,t,n){let o,i,s;e instanceof Error?(i=e,o=i.message,t&&!(t instanceof Error)&&(s=t)):(o=e,t instanceof Error?i=t:t&&(s=t),n&&(s=Object.assign(Object.assign({},s),n))),this.emit("error",o,s,i)}withContext(e){if(!e.trim())return this;let t=this.prefix?`${this.prefix}:${e}`:e,n=Object.create(jt.prototype);return n.transports=this.transports,n.prefix=t,n}};je=jt=dr([ue(Ce,"singleton"),pr("design:paramtypes",[Array])],je);var hr=function(r,e){var t={};for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&typeof Object.getOwnPropertySymbols=="function")for(var o=0,n=Object.getOwnPropertySymbols(r);o<n.length;o++)e.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(r,n[o])&&(t[n[o]]=r[n[o]]);return t};function V(r,e){let t=e!=null?e:{},{children:n}=t,o=hr(t,["children"]),i=n===void 0?[]:Array.isArray(n)?n:[n],s={tag:r,props:o,children:i};typeof r=="function"&&Object.defineProperty(s,"$_type",{value:"_view"});let c=o.$_key;return c!=null&&Object.defineProperty(s,"$_key",{value:String(c)}),s}var mn=V;function Rt(r,e){if(typeof r[e]=="function")throw new Error("Function cannot be decorated by @state");r!=null&&r.$_stateFields||Object.defineProperty(r,"$_stateFields",{value:[]}),r.$_stateFields.push(e)}function X(r){if(!r)return"/";r.startsWith("/")||(r=`/${r}`);let e=r.indexOf("?"),t=r.indexOf("#");if(e!==-1||t!==-1){let n=[e,t].filter(o=>o!==-1).reduce((o,i)=>Math.min(o,i),r.length);r=r.slice(0,n)}return r=r.replace(/\/{2,}/g,"/"),r.length>1&&r.endsWith("/")&&(r=r.slice(0,-1)),r}function tt(r,e){let t=X(r),n=X(e),o=t.split("/").filter(Boolean),i=n.split("/").filter(Boolean);if(o.length!==i.length)return null;let s={};for(let c=0;c<o.length;c++){let u=o[c],l=i[c];if(u.startsWith(":")){let a=u.slice(1);if(!a)return null;s[a]=decodeURIComponent(l)}else{if(u===l)continue;return null}}return{params:s}}function Ot(r){let e={};if(!r)return e;let t=r.startsWith("?")?r.slice(1):r;if(!t)return e;for(let n of t.split("&")){if(!n)continue;let[o,i=""]=n.split("=");o&&(e[decodeURIComponent(o)]=decodeURIComponent(i))}return e}function bn(r){let e=Object.entries(r).filter(([,n])=>n!=null);return e.length?`?${e.map(([n,o])=>`${encodeURIComponent(n)}=${encodeURIComponent(String(o))}`).join("&")}`:""}function Re(){var r;let{pathname:e,search:t,hash:n}=window.location,o=decodeURIComponent(e);if(o.includes("?")){let[s,c]=o.split("?",2);e=s,t=c?`?${c}`:t}let i=Ot(t);return{pathname:X(e),params:{},query:i,hash:n||void 0,state:(r=history.state)!==null&&r!==void 0?r:void 0}}var Oe=class{constructor(e){this.listeners=new Set,this.handlePopState=t=>{var n,o,i;let s=Re(),c=this.match(s.pathname),u=Object.assign(Object.assign({},s),{params:(n=c==null?void 0:c.params)!==null&&n!==void 0?n:{},query:(o=c==null?void 0:c.query)!==null&&o!==void 0?o:s.query,state:(i=t.state)!==null&&i!==void 0?i:s.state});this.notify(u)},this.routes=Array.isArray(e)?e:[],this._location=Re()}get location(){return this._location}subscribe(e){return this.listeners.add(e),e(this._location),()=>{this.listeners.delete(e)}}notify(e){this._location=e,this.listeners.forEach(t=>t(this._location))}initFromCurrentLocation(){var e,t;let n=Re(),o=this.match(n.pathname),i=Object.assign(Object.assign({},n),{params:(e=o==null?void 0:o.params)!==null&&e!==void 0?e:{},query:(t=o==null?void 0:o.query)!==null&&t!==void 0?t:n.query});(this._location.pathname!==i.pathname||JSON.stringify(this._location.params)!==JSON.stringify(i.params)||JSON.stringify(this._location.query)!==JSON.stringify(i.query))&&this.notify(i)}navigate(e,t){var n,o;let[i,s]=e.split("?",2),c,u="",l="";if(s!=null){c=i;let[v,m]=s.split("#",2);u=v!=null?v:"",l=m!=null?m:""}else{let[v,m]=i.split("#",2);c=v!=null?v:i,l=m!=null?m:""}let a=X(c),f=new URL(window.location.href);f.pathname=a,f.search=u?`?${u}`:"",l&&(f.hash=`#${l}`);let d=t==null?void 0:t.state;t!=null&&t.replace?window.history.replaceState(d!=null?d:null,"",f.toString()):window.history.pushState(d!=null?d:null,"",f.toString());let _=Re(),p=this.match(_.pathname),h=Object.assign(Object.assign({},_),{params:(n=p==null?void 0:p.params)!==null&&n!==void 0?n:{},query:(o=p==null?void 0:p.query)!==null&&o!==void 0?o:_.query});this.notify(h)}match(e){let t=X(e);for(let n of this.routes){let o=this.matchRouteRecursive(n,t,"",{});if(o)return o}return null}matchRouteRecursive(e,t,n,o){let i=X(n?`${n}/${e.path}`:e.path),c=Re().query,u=tt(i,t);if(!u)return null;let l=Object.assign(Object.assign({},o),u.params);if(e.redirectTo){let a=X(e.redirectTo);return{route:e,params:l,query:c,pathname:a}}if(e.children&&e.children.length)for(let a of e.children){let f=this.matchRouteRecursive(a,t,i,l);if(f)return f}return{route:e,params:l,query:c,pathname:t}}};var gn=function(r,e,t,n){var o=arguments.length,i=o<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,t):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,n);else for(var c=r.length-1;c>=0;c--)(s=r[c])&&(i=(o<3?s(i):o>3?s(e,t,i):s(e,t))||i);return o>3&&i&&Object.defineProperty(e,t,i),i},yn=function(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)};function vr(r){let e=r;for(let t=0;t<10&&(typeof e=="function"&&e.length===0);t++)e=e();return Array.isArray(e)?e:[]}var T=class{constructor(e){this.push=(n,o)=>{this.router.navigate(n,Object.assign({replace:!1},o))},this.replace=(n,o)=>{this.router.navigate(n,Object.assign({replace:!0},o))},this.back=()=>{window.history.back()},this.match=n=>this.router.match(n);let t=vr(e==null?void 0:e.routes);this.router=new Oe(t),this.location=this.router.location,this.router.subscribe(n=>{this.location=n}),this.router.initFromCurrentLocation(),window.addEventListener("popstate",this.router.handlePopState)}};gn([Rt,yn("design:type",Object)],T.prototype,"location",void 0);T=gn([Le,yn("design:paramtypes",[Object])],T);var _r=function(r,e,t,n){var o=arguments.length,i=o<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,t):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,n);else for(var c=r.length-1;c>=0;c--)(s=r[c])&&(i=(o<3?s(i):o>3?s(e,t,i):s(e,t))||i);return o>3&&i&&Object.defineProperty(e,t,i),i},mr=function(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)},$e=class{constructor(e){}render(){let{routes:e,app:t}=this.props;return V(T,{routes:e,children:V(t,{})})}};$e=_r([ee,mr("design:paramtypes",[Object])],$e);var nt=Symbol.for("helfy:HttpClient");var $t=function(r,e,t,n){function o(i){return i instanceof t?i:new t(function(s){s(i)})}return new(t||(t=Promise))(function(i,s){function c(a){try{l(n.next(a))}catch(f){s(f)}}function u(a){try{l(n.throw(a))}catch(f){s(f)}}function l(a){a.done?i(a.value):o(a.value).then(c,u)}l((n=n.apply(r,e||[])).next())})};function br(r,e){var t,n,o,i,s;let c=(n=(t=e==null?void 0:e.baseUrl)!==null&&t!==void 0?t:r==null?void 0:r.baseUrl)!==null&&n!==void 0?n:"",u=Object.assign(Object.assign({},(o=r==null?void 0:r.headers)!==null&&o!==void 0?o:{}),(i=e==null?void 0:e.headers)!==null&&i!==void 0?i:{}),l=(s=e==null?void 0:e.timeout)!==null&&s!==void 0?s:r==null?void 0:r.timeout;return{url:c,headers:u,timeout:l}}function gr(r,e){if(!r)return e;let t=r.replace(/\/$/,""),n=e.startsWith("/")?e:`/${e}`;return`${t}${n}`}function yr(r,e,t){return $t(this,void 0,void 0,function*(){if(t==null||t<=0)return fetch(r,e);let n=new AbortController,o=setTimeout(()=>n.abort(),t);try{return yield fetch(r,Object.assign(Object.assign({},e),{signal:n.signal}))}finally{clearTimeout(o)}})}function Er(r){return $t(this,void 0,void 0,function*(){var e;return((e=r.headers.get("content-type"))!==null&&e!==void 0?e:"").includes("application/json")?r.json():r.text()})}var Ie=class{constructor(e={}){this.config=e}request(e,t,n,o){return $t(this,void 0,void 0,function*(){let{url:i,headers:s,timeout:c}=br(this.config,o),u=t.startsWith("http")?t:gr(i,t),l={method:e,headers:Object.assign({"Content-Type":"application/json"},s)};n!=null&&(l.body=JSON.stringify(n));let a=yield yr(u,l,c);if(!a.ok){let f=yield a.text(),d=new Error(`HTTP ${a.status}: ${a.statusText}${f?` - ${f}`:""}`);throw d.status=a.status,d}return Er(a)})}get(e,t){return this.request("GET",e,void 0,t)}post(e,t,n){return this.request("POST",e,t,n)}put(e,t,n){return this.request("PUT",e,t,n)}patch(e,t,n){return this.request("PATCH",e,t,n)}delete(e,t){return this.request("DELETE",e,void 0,t)}};function En(r){let e=[],t=r.container,n=[];return{container(o){return t=o,this},configureContainer(o){return n.push(o),this},useDI(o){return o&&n.push(o),this},http(o){return n.push(i=>{var s;o.queryCacheMaxSize!=null&&He(o.queryCacheMaxSize);let c=(s=o.client)!==null&&s!==void 0?s:Ie;i.bind(nt,{useFactory:()=>new c(o)})}),this},router(o){return e=o.routes,this},mount(o){let i=t!=null?t:new Se;i.autoRegister(je),n.forEach(u=>u(i)),We(i);let s={root:r.root,routes:e,app:o},c=new $e(s);return c.attach(s.root),c}}}var rt=class{constructor(e){this._staleTime=0,this._gcTime=5*60*1e3,this._refetchOnWindowFocus=!1,this._refetchOnReconnect=!0,this.queryKey=e}fn(e){return this.queryFn=e,this}staleTime(e){return this._staleTime=e,this}gcTime(e){return this._gcTime=e,this}refetchOnWindowFocus(e=!0){return this._refetchOnWindowFocus=e,this}refetchOnReconnect(e=!0){return this._refetchOnReconnect=e,this}build(){return xe().getOrCreate(this.queryKey,{queryFn:this.queryFn,staleTime:this._staleTime,gcTime:this._gcTime,refetchOnWindowFocus:this._refetchOnWindowFocus,refetchOnReconnect:this._refetchOnReconnect})}};var xr=function(r,e,t,n){function o(i){return i instanceof t?i:new t(function(s){s(i)})}return new(t||(t=Promise))(function(i,s){function c(a){try{l(n.next(a))}catch(f){s(f)}}function u(a){try{l(n.throw(a))}catch(f){s(f)}}function l(a){a.done?i(a.value):o(a.value).then(c,u)}l((n=n.apply(r,e||[])).next())})},ot=class{constructor(){this._invalidateQueries=[]}fn(e){return this.mutationFn=e,this}invalidateQueries(e){return this._invalidateQueries=e,this}optimisticFn(e){return this._optimisticFn=e,this}build(e){var t,n;let o=(t=e==null?void 0:e.invalidateQueries)!==null&&t!==void 0?t:this._invalidateQueries,i=(n=e==null?void 0:e.optimisticFn)!==null&&n!==void 0?n:this._optimisticFn,[s,c]=y(!1),[u,l]=y(void 0),a=xe(),f=d=>xr(this,void 0,void 0,function*(){var _;c(!0),l(void 0);let p;if(i){p=i(d);for(let h of p.updates)h.data!==void 0?a.set(h.queryKey,h.data):h.updater&&a.setWithUpdater(h.queryKey,h.updater)}try{let h=yield this.mutationFn(d);U(()=>{c(!1),l(void 0)});for(let v of o)a.invalidate(v);return h}catch(h){if(p){for(let v of p.updates)a.invalidate(v.queryKey);(_=p.rollback)===null||_===void 0||_.call(p)}throw U(()=>{c(!1),l(h)}),h}});return{get isPending(){return s()},get isError(){return u()!=null},get error(){return u()},mutate:d=>f(d),mutateAsync:d=>f(d)}}};function xn(r,e){return ue(r,e)}var It=Symbol.for("helfy:queryConfigKey");function wn(r){return function(e,t,n){let o=n.value;return n[It]=r,n.value=function(...i){let s=o.apply(this,i);return s&&typeof s.build=="function"?s.build():s},n}}function Cn(r){return function(e,t,n){let o=n.value;return n.value=function(...i){let s=o.apply(this,i);return s&&typeof s.build=="function"?s.build(r):s},n}}function wr(r,e){if(typeof r[e]=="function")throw new Error("Function cannot be decorated by @observable");r!=null&&r.$_observableFields||Object.defineProperty(r,"$_observableFields",{value:[]}),r.$_observableFields.push(e)}function Cr(r,e,t){if(typeof t.get!="function")throw new Error("@computed can only be applied to getters");r!=null&&r.$_computedFields||Object.defineProperty(r,"$_computedFields",{value:[],writable:!0,configurable:!0}),r.$_computedFields.push(e)}var Sn=Symbol.for("helfy:refFields");function Sr(r,e){var t,n;let o=typeof r=="function"?r.prototype:r,i=typeof r=="function"?r:r.constructor;if(((t=i.$_stateFields)!==null&&t!==void 0?t:[]).includes(String(e)))throw new Error(`[helfy] @ref cannot be used with @state on the same field: ${String(e)}`);let c=(n=i[Sn])!==null&&n!==void 0?n:[];c.push(String(e)),Object.defineProperty(i,Sn,{value:c,configurable:!0})}function Fn(r){return M(r)}var Fr=Symbol.for("helfy:useCase");function jn(r,e){return function(t){return t[ne]=!0,t[Fr]=!0,r!==void 0&&(t[_e]=r),e!==void 0&&(t[qe]=e),t}}var Tt=class{};var Pt=function(r,e,t,n){var o=arguments.length,i=o<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,t):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,n);else for(var c=r.length-1;c>=0;c--)(s=r[c])&&(i=(o<3?s(i):o>3?s(e,t,i):s(e,t))||i);return o>3&&i&&Object.defineProperty(e,t,i),i},At=function(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)},ce=class{constructor(e){this.props=e}onClick(e){e.preventDefault();let{to:t,replace:n,state:o}=this.props;n?this.replaceNav(t,{state:o}):this.push(t,{state:o})}render(){var e;let{to:t,class:n,children:o,label:i}=this.props;return V("a",{href:t,class:n,onclick:this.onClick.bind(this),children:(e=o!=null?o:i)!==null&&e!==void 0?e:""})}};Pt([M(T,"push"),At("design:type",Function)],ce.prototype,"push",void 0);Pt([M(T,"replace"),At("design:type",Function)],ce.prototype,"replaceNav",void 0);ce=Pt([ee,At("design:paramtypes",[Object])],ce);var jr=function(r,e,t,n){var o=arguments.length,i=o<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,t):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,n);else for(var c=r.length-1;c>=0;c--)(s=r[c])&&(i=(o<3?s(i):o>3?s(e,t,i):s(e,t))||i);return o>3&&i&&Object.defineProperty(e,t,i),i},Rr=function(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)},de=class{constructor(e={}){this.props=e}render(){let{pathname:e=""}=this.props;return mn("section",{style:{display:"flex",flexDirection:"column",flexGrow:1,alignItems:"center",justifyContent:"center",minHeight:"min(50vh, 320px)",padding:"2rem",textAlign:"center",gap:"10px",background:"azure"},children:[V("p",{style:{fontSize:"4rem",fontWeight:700,margin:0,lineHeight:1,letterSpacing:"-0.02em",opacity:.15},children:"404"}),V("h2",{style:{fontSize:"1.25rem",fontWeight:600,margin:"0.5rem 0 0.25rem"},children:"\u0421\u0442\u0440\u0430\u043D\u0438\u0446\u0430 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u0430"}),e&&V("p",{style:{fontSize:"0.875rem",opacity:.7,margin:0,fontFamily:"ui-monospace, monospace",wordBreak:"break-all"},children:e}),V(ce,{to:"/",label:"\u041D\u0430 \u0433\u043B\u0430\u0432\u043D\u0443\u044E",class:"inline-block mt-6 px-4 py-2 text-sm rounded-md no-underline bg-indigo-100 dark:bg-indigo-900/40 text-indigo-700 dark:text-indigo-200 hover:bg-indigo-200 dark:hover:bg-indigo-800/60 transition-colors"})]})}};de=jr([ee,Rr("design:paramtypes",[Object])],de);var Lt=function(r,e,t,n){var o=arguments.length,i=o<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,t):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,n);else for(var c=r.length-1;c>=0;c--)(s=r[c])&&(i=(o<3?s(i):o>3?s(e,t,i):s(e,t))||i);return o>3&&i&&Object.defineProperty(e,t,i),i},Rn=function(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)},Te=class{render(){var e;let t=this.location.pathname,n=this.match(t);if(!n)return(e=Pe._callSlot(this,"notFound",{pathname:t,location:this.location},()=>V(de,{pathname:t})))!==null&&e!==void 0?e:V(de,{pathname:t});let o=n.route.component,i={params:n.params,query:n.query,location:this.location};return V(o,Object.assign({},i))}};Lt([M(T,"location"),Rn("design:type",Object)],Te.prototype,"location",void 0);Lt([M(T,"match"),Rn("design:type",Function)],Te.prototype,"match",void 0);Te=Lt([ee],Te);function On(r){var e;let t=(e=r==null?void 0:r.defaultValue)!==null&&e!==void 0?e:"/";return M(T,"location",{access:n=>{var o;return(o=n&&typeof n=="object"&&"pathname"in n?n.pathname:null)!==null&&o!==void 0?o:t}})}function $n(r){var e;let t=(e=r==null?void 0:r.defaultValue)!==null&&e!==void 0?e:{};return M(T,"location",{access:n=>{var o;return(o=n&&typeof n=="object"&&"query"in n?n.query:null)!==null&&o!==void 0?o:t}})}function In(r){var e;let t=(e=r==null?void 0:r.defaultValue)!==null&&e!==void 0?e:{};return M(T,"location",{access:n=>{var o;return(o=n&&typeof n=="object"&&"params"in n?n.params:null)!==null&&o!==void 0?o:t}})}function Tn(r){return M(T,void 0,{subscribeField:"location",access:e=>{if(!e||typeof e!="object"||!("push"in e))throw new Error("[helfy/router] RouterContext is not available in the tree");let t=e;return{get location(){return t.location},push:t.push,replace:t.replace,back:t.back}}})}export{Pe as $,xn as ApiClient,Fe as ConsoleTransport,Se as Container,Le as Context,de as DefaultNotFound,Ie as FetchHttpClient,cn as Form,$e as HelfyApp,nt as HttpClientToken,Ce as ILoggerToken,ue as Injectable,ce as Link,je as LoggerService,ot as MutationBuilder,It as QUERY_CONFIG_KEY,Y as QUERY_SUBSCRIBE,rt as QueryBuilder,Oe as Router,T as RouterContext,Te as RouterView,Nt as Service,nr as Store,Tt as StoreBase,fe as USE_INFINITE_QUERY_FIELDS,we as USE_MUTATION_FIELDS,se as USE_QUERY_FIELDS,jn as UseCase,ee as View,U as batch,Zn as binded,Cr as computed,En as createApp,re as createComputed,j as createEffect,st as createMemo,Ln as createReactiveChild,y as createSignal,H as createViewInstance,Vt as diParams,Nn as effect,Vn as expose,on as field,xe as getOrCreateQueryCache,q as getRootContainer,Ae as getScopeMetadata,Dn as inject,Ye as isContextClass,un as isFormClass,_n as logger,tt as matchPath,Cn as mutationConfig,X as normalizePath,wr as observable,G as onCleanup,In as params,Ot as parseQuery,On as path,wn as queryConfig,Sr as ref,K as resolveInjectContainer,Tn as router,$n as search,He as setQueryCacheMaxSize,We as setRootContainer,Rt as state,bn as stringifyQuery,M as useCtx,Fn as useForm,en as useInfiniteQuery,nn as useMutation,Zt as useQuery};
@@ -1,9 +1,9 @@
1
1
  import type { MatchedRoute, NavigateOptions, RouteConfig, RouterLocation, LocationListener } from "./types";
2
2
  export declare class Router {
3
- readonly routes: RouteConfig[];
4
3
  private _location;
5
4
  private listeners;
6
- constructor(routes: RouteConfig[]);
5
+ readonly routes: RouteConfig[];
6
+ constructor(routesParam: RouteConfig[] | undefined);
7
7
  get location(): RouterLocation;
8
8
  /** Подписка на изменения location (используется RouterContext). */
9
9
  subscribe(listener: LocationListener): () => void;
@@ -1,9 +1,9 @@
1
1
  import type { RouterAPI, RouterFieldOptions } from "./types";
2
- /** @path() — поле с текущим pathname. Синтаксический сахар для @inject(RouterContext, "location") + .pathname */
2
+ /** @path() — поле с текущим pathname. Синтаксический сахар для @useCtx(RouterContext, "location") + .pathname */
3
3
  export declare function path<T extends string = string>(options?: RouterFieldOptions<T>): (target: object, propertyKey: string | symbol) => void;
4
- /** @search() — поле с объектом query-параметров. Синтаксический сахар для @inject(RouterContext, "location") + .query */
4
+ /** @search() — поле с объектом query-параметров. Синтаксический сахар для @useCtx(RouterContext, "location") + .query */
5
5
  export declare function search<T extends Record<string, string> = Record<string, string>>(options?: RouterFieldOptions<T>): (target: object, propertyKey: string | symbol) => void;
6
- /** @params() — поле с объектом параметров маршрута. Синтаксический сахар для @inject(RouterContext, "location") + .params */
6
+ /** @params() — поле с объектом параметров маршрута. Синтаксический сахар для @useCtx(RouterContext, "location") + .params */
7
7
  export declare function params<TParams extends Record<string, string> = Record<string, string>>(options?: RouterFieldOptions<TParams>): (target: object, propertyKey: string | symbol) => void;
8
- /** @router() — поле с высокоуровневым API роутера. Синтаксический сахар для @inject(RouterContext) + API-обёртка */
8
+ /** @router() — поле с высокоуровневым API роутера. Синтаксический сахар для @useCtx(RouterContext) + API-обёртка */
9
9
  export declare function router(_options?: RouterFieldOptions<RouterAPI>): (target: object, propertyKey: string | symbol) => void;