{
  "version": 3,
  "sources": ["../src/core/state/StateContractsGS.ts", "../src/core/app/RuntimeGS.ts", "../src/core/app/App.ts", "../src/core/app/GuiCtrlGS.ts", "../src/core/app/AppBrowser.ts", "../src/core/state/UrlParserGS.ts", "../src/core/state/StateConfigurationGS.ts", "../src/core/state/StateRuntimeGS.ts", "../src/core/state/StatePagedContractGS.ts", "../src/core/state/StateHeadGS.ts", "../src/core/state/StateBrowserRuntimeGS.ts", "../src/core/state/StateGS.ts", "../src/core/state/StatePagedGS.ts", "../src/helpers/array.ts", "../src/core/EventsGS.ts", "../src/core/template/TemplateRegistryGS.ts", "../src/helpers/def.ts", "../src/core/Enums.ts", "../src/helpers/html.ts", "../src/helpers/localization.ts", "../src/core/GS.ts", "../src/core/WrapperGS.ts", "../src/core/TemplateGS.ts", "../src/helpers/index.ts", "../src/helpers/generators.ts", "../src/helpers/events.ts", "../src/helpers/date.ts", "../src/helpers/web.ts", "../src/helpers/enums.ts", "../src/helpers/validation.ts", "../src/com/BoxesGS.ts", "../src/helpers/blob.ts", "../src/helpers/img.ts", "../src/helpers/files.ts", "../src/helpers/text.ts", "../src/helpers/crypt.ts", "../src/com/index.ts", "../src/com/ToggleGS.ts", "../src/com/FormGS.ts", "../src/com/ImageGS.ts", "../src/com/InputGS.ts", "../src/com/InputFilesGS.ts", "../src/com/TextAreaGS.ts", "../src/com/SelectGS.ts", "../src/com/OptionGS.ts", "../src/com/AnchorGS.ts", "../src/com/LabelGS.ts", "../src/com/DialogGS.ts", "../src/com/DetailsGS.ts", "../src/com/ProgressGS.ts", "../src/com/MeterGS.ts", "../src/ctrls/index.ts", "../src/ctrls/FocusGroup.ts", "../src/index.ts"],
  "sourcesContent": ["import type { StateGS } from \"./StateGS\";\n\nexport enum StateRunResultEnum {\n    /** State successfully activated. */\n    Activated,\n    /** State activation failed. */\n    Failed,\n    /** State was not activated because control was passed elsewhere. */\n    Skipped\n}\n\nexport enum StateRunModeEnum {\n    ServerRender,\n    BrowserFromServer,\n    BrowserTransition\n}\n\nexport interface StateConstructor {\n    new(): StateGS;\n    readonly StateName: string;\n    readonly IsPrivate: boolean;\n    readonly Instance?: StateGS;\n}\n\n/** Available only inside the callback passed to StateGS.Configure. */\nexport interface StateSetupGS {\n    UsePathRouting: boolean;\n    DefaultStateName: string;\n    State404Name: string;\n    RegState(constructor: StateConstructor): void;\n    ReplaceState(constructor: StateConstructor): void;\n}\n", "import type { App } from \"./App\";\nimport type { StateConfigurationGS } from \"../state/StateConfigurationGS\";\nimport type { StateRuntimeGS } from \"../state/StateRuntimeGS\";\n\nexport enum RuntimeEnvironmentGSEnum {\n    Browser,\n    Server\n}\n\n/** Mutable data owned by one browser application or one server request. */\nexport interface RuntimeScopeGS {\n    readonly app: App;\n    readonly environment: RuntimeEnvironmentGSEnum;\n    readonly instances: Map<Function, unknown>;\n    document?: Document;\n    window?: Window;\n    request?: Request;\n    url?: string;\n    language?: string;\n    pendingPageElement?: HTMLElement;\n    stateConfigurationOpen?: boolean;\n    stateRuntimeFactory?: (app: App, configuration: StateConfigurationGS) => StateRuntimeGS;\n}\n\ninterface RuntimeScopeRunnerGS {\n    getStore(): RuntimeScopeGS | undefined;\n    run<T>(scope: RuntimeScopeGS, action: () => Promise<T>): Promise<T>;\n}\n\n/**\n * Internal scope boundary used by the static GS facade.\n * Browser code owns one persistent scope. The server adapter installs an\n * AsyncLocalStorage-backed runner so parallel requests never share mutable data.\n */\nexport class RuntimeGS {\n    private static _browserScope?: RuntimeScopeGS;\n    private static _fallbackScope?: RuntimeScopeGS;\n    private static _scopeRunner?: RuntimeScopeRunnerGS;\n\n    public static get current(): RuntimeScopeGS | undefined {\n        return RuntimeGS._scopeRunner?.getStore()\n            ?? RuntimeGS._fallbackScope\n            ?? RuntimeGS._browserScope;\n    }\n\n    public static get document(): Document {\n        const scoped = RuntimeGS.current?.document;\n        if (scoped) return scoped;\n        if (typeof document !== \"undefined\") return document;\n        throw new Error(\"GS DOM is unavailable outside a browser or render scope.\");\n    }\n\n    public static get window(): Window | undefined {\n        const scoped = RuntimeGS.current?.window;\n        if (scoped) return scoped;\n        return typeof window === \"undefined\" ? undefined : window;\n    }\n\n    public static setBrowserScope(scope: RuntimeScopeGS): void {\n        RuntimeGS._browserScope = scope;\n    }\n\n    public static installScopeRunner(runner: RuntimeScopeRunnerGS): void {\n        RuntimeGS._scopeRunner = runner;\n    }\n\n    public static async run<T>(scope: RuntimeScopeGS, action: () => Promise<T>): Promise<T> {\n        if (RuntimeGS._scopeRunner) return RuntimeGS._scopeRunner.run(scope, action);\n\n        const previous = RuntimeGS._fallbackScope;\n        RuntimeGS._fallbackScope = scope;\n        try {\n            return await action();\n        } finally {\n            RuntimeGS._fallbackScope = previous;\n        }\n    }\n}\n", "import { RuntimeEnvironmentGSEnum, RuntimeGS, RuntimeScopeGS } from \"./RuntimeGS\";\n\nexport type ConstructorGS<T> = new (...args: any[]) => T;\nexport type InjectionTokenGS<T = unknown> = ConstructorGS<T> | string | symbol;\n\n/** Common application root with one-time lifecycle and lightweight DI. */\nexport abstract class App {\n    private readonly _instances = new Map<InjectionTokenGS, unknown>();\n    private readonly _factories = new Map<Function, (...args: any[]) => unknown>();\n    private _startPromise?: Promise<void>;\n\n    public buildId = \"\";\n    public appRootSelector = \"[gs-app]\";\n\n    /** @internal */\n    protected abstract readonly environment: RuntimeEnvironmentGSEnum;\n\n    /** Synchronous one-time application configuration phase. */\n    protected initializeCore(): void {\n    }\n\n    protected abstract startCore(): Promise<void>;\n\n    /** Current application in the browser or request scope. */\n    public static get Inst(): App {\n        const app = RuntimeGS.current?.app;\n        if (!app) throw new Error(\"App.Inst is unavailable outside an application scope.\");\n        if (!(app instanceof this))\n            throw new Error(`The current application is not an instance of ${this.name || \"App\"}.`);\n        return app;\n    }\n\n    public start(): Promise<void> {\n        if (!this._startPromise) this._startPromise = this.startInternal();\n        return this._startPromise;\n    }\n\n    private async startInternal(): Promise<void> {\n        const scope = this.createScope();\n        await RuntimeGS.run(scope, async () => {\n            scope.stateConfigurationOpen = true;\n            try {\n                this.initializeCore();\n            } finally {\n                scope.stateConfigurationOpen = false;\n            }\n            await this.startCore();\n        });\n    }\n\n    /** @internal */\n    protected createScope(): RuntimeScopeGS {\n        return {\n            app: this,\n            environment: this.environment,\n            instances: new Map<Function, unknown>()\n        };\n    }\n\n    public addInst<T>(token: InjectionTokenGS<T>, instance: T): void {\n        this._instances.set(token, instance);\n    }\n\n    public getInst<T>(token: InjectionTokenGS<T>): T {\n        const scope = RuntimeGS.current;\n        if (scope?.app === this && scope.instances.has(token as Function))\n            return scope.instances.get(token as Function) as T;\n\n        if (!this._instances.has(token))\n            throw new Error(`No instance found for ${App.tokenName(token)}.`);\n        return this._instances.get(token) as T;\n    }\n\n    public tryGetInst<T>(token: InjectionTokenGS<T>): T | undefined {\n        const scope = RuntimeGS.current;\n        if (scope?.app === this && scope.instances.has(token as Function))\n            return scope.instances.get(token as Function) as T;\n        return this._instances.get(token) as T | undefined;\n    }\n\n    public newInst<T>(constructor: ConstructorGS<T>, ...args: any[]): T {\n        const factory = this._factories.get(constructor);\n        return factory ? factory(...args) as T : new constructor(...args);\n    }\n\n    public regFactory<T>(constructor: ConstructorGS<T>, factory: (...args: any[]) => T): void {\n        this._factories.set(constructor, factory);\n    }\n\n    private static tokenName(token: InjectionTokenGS): string {\n        if (typeof token === \"function\") return token.name || \"anonymous constructor\";\n        return String(token);\n    }\n}\n", "import { WrapperGS } from \"../WrapperGS\";\n\nexport interface LayoutGS extends WrapperGS {\n    readonly pageContainer: WrapperGS;\n    reset(): void | Promise<void>;\n}\n\nexport interface LayoutConstructorGS<TLayout extends LayoutGS = LayoutGS> {\n    new(existingElement?: HTMLElement): TLayout;\n    readonly LayoutName: string;\n}\n\n/** @internal */\nexport interface LayoutRegistrationGS {\n    readonly constructor: LayoutConstructorGS;\n    readonly name: string;\n}\n\n/** Application-level layout registry shared by browser and server GUI implementations. */\nexport class GuiCtrlGS {\n    private readonly _layouts = new Map<string, LayoutRegistrationGS>();\n\n    public registerLayout(constructor: LayoutConstructorGS): void {\n        const name = (constructor?.LayoutName ?? \"\").trim();\n        if (!name) throw new Error(\"LayoutName must not be empty.\");\n        const key = name.toLowerCase();\n        if (this._layouts.has(key)) throw new Error(`Layout '${name}' is already registered.`);\n        this._layouts.set(key, { constructor, name });\n    }\n\n    /** @internal */\n    public getRegistration(name: string): LayoutRegistrationGS | undefined {\n        return this._layouts.get((name ?? \"\").toLowerCase());\n    }\n}\n\n/** Browser GUI controller owns one reusable instance of every registered layout. */\nexport class GuiBrowserGS extends GuiCtrlGS {\n    private readonly _instances = new Map<string, LayoutGS>();\n    private _currentLayout?: LayoutGS;\n    private _currentPage?: WrapperGS;\n\n    constructor(private readonly _root: HTMLElement) {\n        super();\n    }\n\n    public getLayout(name: string): LayoutGS {\n        const key = (name ?? \"\").toLowerCase();\n        const existing = this._instances.get(key);\n        if (existing) return existing;\n        const registration = this.getRegistration(key);\n        if (!registration) throw new Error(`Layout '${name}' is not registered.`);\n        const layout = new registration.constructor();\n        GuiBrowserGS.validateLayout(layout, registration.name);\n        this._instances.set(key, layout);\n        return layout;\n    }\n\n    /** @internal */\n    public adoptLayout(name: string, element: HTMLElement): LayoutGS {\n        const key = (name ?? \"\").toLowerCase();\n        const registration = this.getRegistration(key);\n        if (!registration) throw new Error(`Layout '${name}' is not registered.`);\n        const layout = new registration.constructor(element);\n        if (layout.el !== element) throw new Error(`Layout '${name}' did not adopt the existing DOM root.`);\n        GuiBrowserGS.validateLayout(layout, registration.name);\n        this._instances.set(key, layout);\n        this._currentLayout = layout;\n        return layout;\n    }\n\n    /** @internal */\n    public async place(layoutName: string, page: WrapperGS, preserveExisting: boolean): Promise<LayoutGS> {\n        const layout = this.getLayout(layoutName);\n        if (preserveExisting) {\n            if (layout.el.parentElement === null) this._root.append(layout.el);\n            this._currentLayout = layout;\n            this._currentPage = page;\n            return layout;\n        }\n\n        await layout.reset();\n        if (this._currentLayout && this._currentLayout !== layout) this._currentLayout.cut();\n        if (layout.el.parentElement !== this._root) this._root.append(layout.el);\n        if (this._currentPage && this._currentPage !== page) this._currentPage.cut();\n        layout.pageContainer.append(page);\n        page.show();\n        this._currentLayout = layout;\n        this._currentPage = page;\n        return layout;\n    }\n\n    /** @internal */\n    public forgetAdoptedLayout(name: string): void {\n        const key = (name ?? \"\").toLowerCase();\n        const layout = this._instances.get(key);\n        if (layout === this._currentLayout) this._currentLayout = undefined;\n        layout?.cut();\n        this._instances.delete(key);\n        this._currentPage = undefined;\n    }\n\n    public get currentLayout(): LayoutGS | undefined { return this._currentLayout; }\n    public get currentPage(): WrapperGS | undefined { return this._currentPage; }\n\n    private static validateLayout(layout: LayoutGS, name: string): void {\n        if (!layout?.pageContainer) throw new Error(`Layout '${name}' must expose pageContainer.`);\n        if (typeof layout.reset !== \"function\") throw new Error(`Layout '${name}' must implement reset().`);\n    }\n}\n", "import { App } from \"./App\";\nimport { GuiBrowserGS } from \"./GuiCtrlGS\";\nimport { RuntimeEnvironmentGSEnum, RuntimeGS, RuntimeScopeGS } from \"./RuntimeGS\";\n\n/** Browser application root. State execution lives behind the StateGS facade. */\nexport abstract class AppBrowser extends App {\n    /** @internal */\n    protected readonly environment = RuntimeEnvironmentGSEnum.Browser;\n    private _scope?: RuntimeScopeGS;\n    private _gui?: GuiBrowserGS;\n\n    public override start(): Promise<void> {\n        if (!this._scope) {\n            const runtimeWindow = RuntimeGS.window;\n            if (!runtimeWindow) throw new Error(\"AppBrowser requires a browser window.\");\n            this._scope = {\n                app: this,\n                environment: RuntimeEnvironmentGSEnum.Browser,\n                instances: new Map<Function, unknown>(),\n                document: runtimeWindow.document,\n                window: runtimeWindow\n            };\n            RuntimeGS.setBrowserScope(this._scope);\n            const root = runtimeWindow.document.querySelector(this.appRootSelector) as HTMLElement | null\n                ?? runtimeWindow.document.body;\n            this._gui = new GuiBrowserGS(root);\n        }\n        return super.start();\n    }\n\n    /** @internal */\n    protected override createScope(): RuntimeScopeGS {\n        if (!this._scope) throw new Error(\"Browser scope was not initialized.\");\n        return this._scope;\n    }\n\n    public get gui(): GuiBrowserGS {\n        if (!this._gui) throw new Error(\"Browser GUI is unavailable before app.start().\");\n        return this._gui;\n    }\n}\n", "export function parseUrlArgsGS(\n    urlString: string,\n    baseUrl?: string\n): Record<string, string> {\n    const url = baseUrl === undefined\n        ? new URL(urlString)\n        : new URL(urlString, baseUrl);\n    const args: Record<string, string> = {};\n\n    url.pathname.split('/').filter(Boolean).forEach((component, index) => {\n        args[`path${index}`] = decodeURIComponent(component);\n    });\n    url.searchParams.forEach((value, key) => { args[key] = value; });\n    return args;\n}\n", "import { RuntimeEnvironmentGSEnum } from \"../app/RuntimeGS\";\nimport type { StateConstructor, StateSetupGS } from \"./StateContractsGS\";\nimport type { StateGS } from \"./StateGS\";\nimport { parseUrlArgsGS } from \"./UrlParserGS\";\n\ninterface StateRegistrationGS {\n    readonly name: string;\n    readonly stateConstructor?: StateConstructor;\n}\n\n/** Mutable state registry used by environment runtime adapters. */\nexport class StateConfigurationGS {\n    private readonly _states = new Map<string, StateRegistrationGS>();\n    private _sealed = false;\n    private _usePathRouting = false;\n    private _defaultStateName = \"main\";\n    private _state404Name = \"\";\n\n    public constructor(private readonly _environment: RuntimeEnvironmentGSEnum) {\n    }\n\n    public apply(configure: (states: StateSetupGS) => void): void {\n        const setup = Object.create(null) as StateSetupGS;\n        Object.defineProperties(setup, {\n            UsePathRouting: {\n                enumerable: true,\n                get: () => this.UsePathRouting,\n                set: (value: boolean) => { this.UsePathRouting = value; }\n            },\n            DefaultStateName: {\n                enumerable: true,\n                get: () => this.DefaultStateName,\n                set: (value: string) => { this.DefaultStateName = value; }\n            },\n            State404Name: {\n                enumerable: true,\n                get: () => this.State404Name,\n                set: (value: string) => { this.State404Name = value; }\n            },\n            RegState: {\n                enumerable: true,\n                value: (constructor: StateConstructor) => this.registerState(constructor)\n            },\n            ReplaceState: {\n                enumerable: true,\n                value: (constructor: StateConstructor) => this.replaceState(constructor)\n            }\n        });\n\n        try {\n            configure(Object.freeze(setup));\n        } finally {\n            this._sealed = true;\n        }\n        this.validate();\n    }\n\n    public get UsePathRouting(): boolean { return this._usePathRouting; }\n    public set UsePathRouting(value: boolean) {\n        this.ensureMutable();\n        this._usePathRouting = value;\n    }\n\n    public get DefaultStateName(): string { return this._defaultStateName; }\n    public set DefaultStateName(value: string) {\n        this.ensureMutable();\n        this._defaultStateName = (value ?? \"\").trim();\n    }\n\n    public get State404Name(): string { return this._state404Name; }\n    public set State404Name(value: string) {\n        this.ensureMutable();\n        this._state404Name = (value ?? \"\").trim();\n    }\n\n    private registerState(constructor: StateConstructor): void {\n        this.ensureMutable();\n        const registration = this.createRegistration(constructor);\n        const key = registration.name.toLowerCase();\n        if (this._states.has(key))\n            throw new Error(`State '${registration.name}' is already registered.`);\n        this._states.set(key, registration);\n    }\n\n    private replaceState(constructor: StateConstructor): void {\n        this.ensureMutable();\n        const registration = this.createRegistration(constructor);\n        const key = registration.name.toLowerCase();\n        if (!this._states.has(key))\n            throw new Error(`State '${registration.name}' is not registered and cannot be replaced.`);\n        this._states.set(key, registration);\n    }\n\n    public getStateConstructor(stateName: string): StateConstructor | undefined {\n        return this._states.get((stateName ?? \"\").toLowerCase())?.stateConstructor;\n    }\n\n    public isStatePlaceholder(stateName: string): boolean {\n        const registration = this._states.get((stateName ?? \"\").toLowerCase());\n        return registration !== undefined && registration.stateConstructor === undefined;\n    }\n\n    public isStateRegistered(stateName: string): boolean {\n        return this._states.has((stateName ?? \"\").toLowerCase());\n    }\n\n    public parseUrl(url: string): Record<string, string> | undefined {\n        try {\n            return parseUrlArgsGS(url, \"http://gs.local\");\n        } catch {\n            return undefined;\n        }\n    }\n\n    public getStateName(args: Record<string, string>): string {\n        return args[this.urlStateArgName] || this._defaultStateName;\n    }\n\n    public get urlStateArgName(): string {\n        return this._usePathRouting ? \"path0\" : \"state\";\n    }\n\n    public buildStateUrl(stateName: string, args: Record<string, string> = {}): string {\n        const pathParts: string[] = [];\n        const query = new URLSearchParams();\n        const pathKeys = new Set<string>();\n\n        if (this._usePathRouting) {\n            for (let index = 0; ; index++) {\n                const key = `path${index}`;\n                const value = args[key];\n                if (value === undefined) break;\n                pathParts.push(encodeURIComponent(value));\n                pathKeys.add(key);\n            }\n            if (pathParts.length === 0 && stateName.toLowerCase() !== this._defaultStateName.toLowerCase())\n                pathParts.push(encodeURIComponent(stateName));\n        }\n\n        for (const key of Object.keys(args)) {\n            if (pathKeys.has(key) || (!this._usePathRouting && key === this.urlStateArgName)) continue;\n            const value = args[key];\n            if (value !== undefined) query.append(key, value);\n        }\n\n        if (!this._usePathRouting) query.set(this.urlStateArgName, stateName);\n        const queryString = query.toString();\n        if (this._usePathRouting) return `/${pathParts.join(\"/\")}${queryString ? `?${queryString}` : \"\"}`;\n        return `?${queryString}`;\n    }\n\n    public buildUrlForState(state: StateGS, extraArgs?: Record<string, string>): string {\n        return this.buildStateUrl(state.name, { ...state.urlArgs, ...(extraArgs ?? {}) });\n    }\n\n    private createRegistration(constructor: StateConstructor): StateRegistrationGS {\n        const name = (constructor?.StateName ?? \"\").trim();\n        if (!name) throw new Error(\"StateName must not be empty.\");\n\n        const isServerPlaceholder = this._environment === RuntimeEnvironmentGSEnum.Server\n            && constructor.IsPrivate === true;\n        return {\n            name,\n            stateConstructor: isServerPlaceholder ? undefined : constructor\n        };\n    }\n\n    private validate(): void {\n        if (!this._defaultStateName)\n            throw new Error(\"DefaultStateName must not be empty.\");\n        if (!this._states.has(this._defaultStateName.toLowerCase()))\n            throw new Error(`Default state '${this._defaultStateName}' is not registered.`);\n\n        if (!this._state404Name)\n            throw new Error(\"State404Name must not be empty.\");\n        const state404 = this._states.get(this._state404Name.toLowerCase());\n        if (!state404)\n            throw new Error(`State404 '${this._state404Name}' is not registered.`);\n        if (!state404.stateConstructor)\n            throw new Error(`State404 '${this._state404Name}' cannot be a private server placeholder.`);\n    }\n\n    private ensureMutable(): void {\n        if (this._sealed)\n            throw new Error(\"State configuration is sealed and cannot be changed after initialization.\");\n    }\n}\n", "import type { App } from \"../app/App\";\nimport { RuntimeGS, RuntimeScopeGS } from \"../app/RuntimeGS\";\nimport { StateConfigurationGS } from \"./StateConfigurationGS\";\nimport type { StateConstructor } from \"./StateContractsGS\";\nimport { StateRunResultEnum } from \"./StateContractsGS\";\nimport type { StateGS } from \"./StateGS\";\n\nexport interface StateRunOptionsGS {\n    readonly withHistory?: boolean;\n    readonly notFound?: boolean;\n    readonly fromUrl?: boolean;\n    /** Original browser/request URL used to resolve the state, including its fragment. */\n    readonly requestedUrl?: string;\n}\n\nexport interface StateTransitionGS {\n    readonly constructor: StateConstructor;\n    readonly args?: any;\n    readonly url: string;\n}\n\ninterface StateExecutionScopeGS {\n    activeState?: StateGS;\n    runningState?: StateGS;\n    afterStartState?: StateGS;\n    transition?: StateTransitionGS;\n}\n\n/** Environment adapter behind the public StateGS facade. */\nexport abstract class StateRuntimeGS {\n    protected constructor(\n        protected readonly app: App,\n        public readonly configuration: StateConfigurationGS\n    ) {\n    }\n\n    public get activeState(): StateGS | undefined {\n        return StateRuntimeStoreGS.execution().activeState;\n    }\n\n    public get urlStateArgName(): string { return this.configuration.urlStateArgName; }\n    public get defaultStateName(): string { return this.configuration.DefaultStateName; }\n    public get state404Name(): string { return this.configuration.State404Name; }\n\n    public buildStateUrl(stateName: string, args: Record<string, string> = {}): string {\n        return this.configuration.buildStateUrl(stateName, args);\n    }\n\n    public buildUrlForState(state: StateGS, extraArgs?: Record<string, string>): string {\n        return this.configuration.buildUrlForState(state, extraArgs);\n    }\n\n    protected ensureTransitionAllowed(targetStateName: string): void {\n        const source = StateRuntimeStoreGS.execution().afterStartState;\n        if (!source) return;\n        throw new Error(\n            `State '${targetStateName || \"(empty)\"}' cannot start while state '${source.name}' is executing afterStart. `\n            + \"Choose the transition in preStart/start or trigger it after afterStart completes.\"\n        );\n    }\n\n    public async runByName(\n        stateName: string,\n        args?: any,\n        options: StateRunOptionsGS = {}\n    ): Promise<StateRunResultEnum> {\n        const requestedName = stateName || this.configuration.DefaultStateName;\n        let constructor = this.configuration.getStateConstructor(requestedName);\n        let notFound = options.notFound === true;\n        if (!constructor && this.configuration.isStatePlaceholder(requestedName))\n            return StateRunResultEnum.Failed;\n        if (!constructor) {\n            constructor = this.configuration.getStateConstructor(this.configuration.State404Name);\n            notFound = true;\n        }\n        if (!constructor) return StateRunResultEnum.Failed;\n        return this.run(constructor, args, { ...options, notFound });\n    }\n\n    public runByUrlArgs(\n        args: Record<string, string>,\n        options: StateRunOptionsGS = {}\n    ): Promise<StateRunResultEnum> {\n        return this.runByName(\n            this.configuration.getStateName(args),\n            args,\n            { ...options, fromUrl: true }\n        );\n    }\n\n    public runByUrl(\n        url = this.getCurrentUrl(),\n        options: StateRunOptionsGS = {}\n    ): Promise<StateRunResultEnum> {\n        const args = this.configuration.parseUrl(url);\n        if (!args) {\n            return this.runByName(\n                this.configuration.State404Name,\n                {},\n                { ...options, notFound: true, fromUrl: true, requestedUrl: url }\n            );\n        }\n        return this.runByUrlArgs(\n            args,\n            { ...options, fromUrl: true, requestedUrl: url }\n        );\n    }\n\n    public abstract run(\n        constructor: StateConstructor,\n        args?: any,\n        options?: StateRunOptionsGS\n    ): Promise<StateRunResultEnum>;\n\n    public abstract runInstance(\n        state: StateGS,\n        args?: any,\n        options?: StateRunOptionsGS\n    ): Promise<StateRunResultEnum>;\n\n    protected getCurrentUrl(): string {\n        const scope = RuntimeGS.current;\n        if (scope?.url) return scope.url;\n        if (scope?.request) return scope.request.url;\n        const runtimeWindow = RuntimeGS.window;\n        if (runtimeWindow) return runtimeWindow.location.href;\n        throw new Error(\"No URL is available in the current GS state scope.\");\n    }\n}\n\nexport class StateRuntimeStoreGS {\n    private static readonly _runtimes = new WeakMap<App, StateRuntimeGS>();\n    private static readonly _executions = new WeakMap<RuntimeScopeGS, StateExecutionScopeGS>();\n\n    public static has(app: App): boolean {\n        return StateRuntimeStoreGS._runtimes.has(app);\n    }\n\n    public static set(app: App, runtime: StateRuntimeGS): void {\n        if (StateRuntimeStoreGS._runtimes.has(app))\n            throw new Error(\"StateGS is already configured for this application.\");\n        StateRuntimeStoreGS._runtimes.set(app, runtime);\n    }\n\n    public static require(app: App = StateRuntimeStoreGS.currentApp()): StateRuntimeGS {\n        const runtime = StateRuntimeStoreGS._runtimes.get(app);\n        if (!runtime)\n            throw new Error(\"StateGS is not configured. Configure states during application initialization.\");\n        return runtime;\n    }\n\n    public static execution(scope: RuntimeScopeGS = StateRuntimeStoreGS.currentScope()): StateExecutionScopeGS {\n        let execution = StateRuntimeStoreGS._executions.get(scope);\n        if (!execution) {\n            execution = {};\n            StateRuntimeStoreGS._executions.set(scope, execution);\n        }\n        return execution;\n    }\n\n    private static currentApp(): App {\n        const app = RuntimeGS.current?.app;\n        if (!app) throw new Error(\"StateGS is unavailable outside an application scope.\");\n        return app;\n    }\n\n    private static currentScope(): RuntimeScopeGS {\n        const scope = RuntimeGS.current;\n        if (!scope) throw new Error(\"StateGS is unavailable outside an application scope.\");\n        return scope;\n    }\n}\n", "import type { WrapperGS } from \"../WrapperGS\";\nimport type { StateGS } from \"./StateGS\";\n\nexport type StatePagedContractGS = StateGS & {\n    readonly layoutName: string;\n    readonly page: WrapperGS;\n};\n\nexport function isStatePagedGS(state: StateGS): state is StatePagedContractGS {\n    const candidate = state as StateGS & Partial<StatePagedContractGS>;\n    return typeof candidate.layoutName === \"string\" && candidate.page !== undefined;\n}\n", "import type { StateGS } from \"./StateGS\";\n\ninterface StateHeadTagGS {\n    readonly key: string;\n    readonly tagName: \"meta\" | \"link\" | \"script\";\n    readonly attributes: Readonly<Record<string, string>>;\n    readonly textContent: string;\n}\n\ninterface ShellHeadTagSnapshotGS {\n    readonly tagName: StateHeadTagGS[\"tagName\"];\n    readonly attributes: Readonly<Record<string, string>>;\n    readonly textContent: string;\n}\n\nconst managedAttribute = \"data-gs-head\";\nconst shellDefaultAttribute = \"data-gs-head-default\";\nconst internalKeyPrefix = \"gs:\";\nconst tagsByState = new WeakMap<StateGS, Map<string, StateHeadTagGS>>();\n\nexport function setStateHeadTagGS(\n    state: StateGS,\n    key: string,\n    tagName: \"meta\" | \"link\" | \"script\",\n    attributes: Readonly<Record<string, string>>,\n    textContent: string\n): void {\n    const normalizedKey = normalizeKey(key);\n    if (normalizedKey.startsWith(internalKeyPrefix))\n        throw new Error(`Head tag key '${key}' uses the reserved '${internalKeyPrefix}' prefix.`);\n\n    const normalizedTagName = tagName.toLowerCase() as StateHeadTagGS[\"tagName\"];\n    if (normalizedTagName !== \"meta\" && normalizedTagName !== \"link\" && normalizedTagName !== \"script\")\n        throw new Error(\"State head tags support only meta, link and JSON-LD script elements.\");\n\n    const normalizedAttributes = normalizeAttributes(attributes);\n    validateReservedMetadata(normalizedTagName, normalizedAttributes);\n    if (normalizedTagName === \"script\") {\n        if (normalizedAttributes.type?.toLowerCase() !== \"application/ld+json\" || normalizedAttributes.src)\n            throw new Error(\"State script head tags support only inline application/ld+json content.\");\n    }\n\n    let tags = tagsByState.get(state);\n    if (!tags) {\n        tags = new Map<string, StateHeadTagGS>();\n        tagsByState.set(state, tags);\n    }\n    tags.set(normalizedKey, {\n        key: normalizedKey,\n        tagName: normalizedTagName,\n        attributes: normalizedAttributes,\n        textContent: String(textContent ?? \"\")\n    });\n}\n\nexport function removeStateHeadTagGS(state: StateGS, key: string): void {\n    tagsByState.get(state)?.delete(normalizeKey(key));\n}\n\n/** Apply title, built-in metadata and custom state tags to a browser or server document. */\nexport function applyStateHeadGS(document: Document, state: StateGS, defaultCanonicalUrl: string): void {\n    document.title = state.title;\n\n    const desired = new Map<string, StateHeadTagGS>();\n    if (state.description) desired.set(\"gs:description\", {\n        key: \"gs:description\",\n        tagName: \"meta\",\n        attributes: { name: \"description\", content: state.description },\n        textContent: \"\"\n    });\n    if (state.robots) desired.set(\"gs:robots\", {\n        key: \"gs:robots\",\n        tagName: \"meta\",\n        attributes: { name: \"robots\", content: state.robots },\n        textContent: \"\"\n    });\n\n    const canonicalUrl = removeUrlFragment(state.canonicalUrl || defaultCanonicalUrl);\n    if (canonicalUrl) desired.set(\"gs:canonical\", {\n        key: \"gs:canonical\",\n        tagName: \"link\",\n        attributes: { rel: \"canonical\", href: canonicalUrl },\n        textContent: \"\"\n    });\n\n    for (const tag of tagsByState.get(state)?.values() ?? []) desired.set(tag.key, tag);\n\n    if (!desired.has(\"gs:description\")) removeKnownElements(document, \"meta\", \"name\", \"description\");\n    if (!desired.has(\"gs:robots\")) removeKnownElements(document, \"meta\", \"name\", \"robots\");\n    if (!desired.has(\"gs:canonical\")) removeKnownElements(document, \"link\", \"rel\", \"canonical\");\n\n    const claimedKeys = new Set<string>();\n    for (const element of Array.from(document.head.querySelectorAll(`[${managedAttribute}]`))) {\n        const key = normalizeExistingKey(element.getAttribute(managedAttribute));\n        const descriptor = key ? desired.get(key) : undefined;\n        if (!descriptor || element.localName.toLowerCase() !== descriptor.tagName) {\n            restoreShellDefaultOrRemove(element, key);\n            continue;\n        }\n        if (claimedKeys.has(key)) {\n            element.remove();\n            continue;\n        }\n        applyDescriptor(element, descriptor);\n        claimedKeys.add(key);\n        desired.delete(key);\n    }\n\n    for (const descriptor of desired.values()) {\n        const reusable = findReusableElement(document, descriptor);\n        if (reusable && !descriptor.key.startsWith(internalKeyPrefix)) captureShellDefault(reusable);\n        const element = reusable ?? document.createElement(descriptor.tagName);\n        applyDescriptor(element, descriptor);\n        if (!element.parentElement) document.head.append(element);\n    }\n}\n\n/** Adopt server-managed metadata so BrowserFromServer does not discard dynamic SSR head values. */\nexport function adoptStateHeadGS(document: Document, state: StateGS): void {\n    state.title = document.title;\n    for (const element of Array.from(document.head.querySelectorAll(`[${managedAttribute}]`))) {\n        const key = normalizeExistingKey(element.getAttribute(managedAttribute));\n        if (!key) continue;\n        if (key === \"gs:description\") {\n            state.description = element.getAttribute(\"content\") ?? \"\";\n            continue;\n        }\n        if (key === \"gs:robots\") {\n            state.robots = element.getAttribute(\"content\") ?? \"\";\n            continue;\n        }\n        if (key === \"gs:canonical\") {\n            state.canonicalUrl = element.getAttribute(\"href\") ?? \"\";\n            continue;\n        }\n        if (key.startsWith(internalKeyPrefix)) continue;\n\n        const tagName = element.localName.toLowerCase();\n        if (tagName !== \"meta\" && tagName !== \"link\" && tagName !== \"script\") continue;\n        const attributes: Record<string, string> = {};\n        for (const attribute of Array.from(element.attributes)) {\n            const attributeName = attribute.name.toLowerCase();\n            if (attributeName !== managedAttribute && attributeName !== shellDefaultAttribute)\n                attributes[attribute.name.toLowerCase()] = attribute.value;\n        }\n        setStateHeadTagGS(\n            state,\n            key,\n            tagName,\n            attributes,\n            element.textContent ?? \"\"\n        );\n    }\n}\n\nfunction normalizeKey(key: string): string {\n    const normalized = String(key ?? \"\").trim().toLowerCase();\n    if (!normalized) throw new Error(\"State head tag key must not be empty.\");\n    return normalized;\n}\n\nfunction normalizeExistingKey(key: string | null): string {\n    return String(key ?? \"\").trim().toLowerCase();\n}\n\nfunction normalizeAttributes(attributes: Readonly<Record<string, string>>): Readonly<Record<string, string>> {\n    const normalized: Record<string, string> = {};\n    for (const [rawName, rawValue] of Object.entries(attributes ?? {})) {\n        const name = rawName.trim().toLowerCase();\n        if (!name || !/^[^\\s\"'<>\\/=]+$/.test(name))\n            throw new Error(`Invalid state head tag attribute '${rawName}'.`);\n        if (name === managedAttribute || name === shellDefaultAttribute)\n            throw new Error(`The '${name}' attribute is reserved by GS.`);\n        normalized[name] = String(rawValue ?? \"\");\n    }\n    return normalized;\n}\n\nfunction validateReservedMetadata(\n    tagName: StateHeadTagGS[\"tagName\"],\n    attributes: Readonly<Record<string, string>>\n): void {\n    const metaName = attributes.name?.toLowerCase();\n    if (tagName === \"meta\" && (metaName === \"description\" || metaName === \"robots\" || metaName?.startsWith(\"gs-\")))\n        throw new Error(`Meta name '${attributes.name}' is managed by StateGS fields or the GS shell.`);\n    if (tagName === \"link\" && attributes.rel?.toLowerCase() === \"canonical\")\n        throw new Error(\"Canonical links are managed by StateGS.canonicalUrl.\");\n}\n\nfunction applyDescriptor(element: Element, descriptor: StateHeadTagGS): void {\n    const shellDefault = descriptor.key.startsWith(internalKeyPrefix)\n        ? null\n        : element.getAttribute(shellDefaultAttribute);\n    for (const attribute of Array.from(element.attributes)) element.removeAttribute(attribute.name);\n    element.setAttribute(managedAttribute, descriptor.key);\n    if (shellDefault !== null) element.setAttribute(shellDefaultAttribute, shellDefault);\n    for (const [name, value] of Object.entries(descriptor.attributes)) element.setAttribute(name, value);\n    element.textContent = descriptor.tagName === \"script\"\n        ? descriptor.textContent.replace(/<\\/script/gi, \"<\\\\/script\")\n        : descriptor.textContent;\n}\n\nfunction captureShellDefault(element: Element): void {\n    const attributes: Record<string, string> = {};\n    for (const attribute of Array.from(element.attributes)) {\n        const name = attribute.name.toLowerCase();\n        if (name !== managedAttribute && name !== shellDefaultAttribute)\n            attributes[name] = attribute.value;\n    }\n    const snapshot: ShellHeadTagSnapshotGS = {\n        tagName: element.localName.toLowerCase() as StateHeadTagGS[\"tagName\"],\n        attributes,\n        textContent: element.textContent ?? \"\"\n    };\n    element.setAttribute(shellDefaultAttribute, JSON.stringify(snapshot));\n}\n\nfunction restoreShellDefaultOrRemove(element: Element, key: string): void {\n    if (!key.startsWith(internalKeyPrefix) && restoreShellDefault(element)) return;\n    element.remove();\n}\n\nfunction restoreShellDefault(element: Element): boolean {\n    const serialized = element.getAttribute(shellDefaultAttribute);\n    if (!serialized) return false;\n    try {\n        const snapshot = JSON.parse(serialized) as Partial<ShellHeadTagSnapshotGS>;\n        const tagName = snapshot.tagName?.toLowerCase();\n        if (tagName !== element.localName.toLowerCase()\n            || (tagName !== \"meta\" && tagName !== \"link\" && tagName !== \"script\")\n            || !snapshot.attributes\n            || Array.isArray(snapshot.attributes)\n            || typeof snapshot.attributes !== \"object\"\n            || typeof snapshot.textContent !== \"string\")\n            return false;\n\n        const attributes = normalizeAttributes(snapshot.attributes);\n        for (const attribute of Array.from(element.attributes)) element.removeAttribute(attribute.name);\n        for (const [name, value] of Object.entries(attributes)) element.setAttribute(name, value);\n        element.textContent = snapshot.textContent;\n        return true;\n    } catch {\n        return false;\n    }\n}\n\nfunction findReusableElement(document: Document, descriptor: StateHeadTagGS): Element | undefined {\n    const candidates = Array.from(document.head.getElementsByTagName(descriptor.tagName))\n        .filter(element => !element.hasAttribute(managedAttribute));\n\n    if (descriptor.key === \"gs:description\")\n        return candidates.find(element => attributeEquals(element, \"name\", \"description\"));\n    if (descriptor.key === \"gs:robots\")\n        return candidates.find(element => attributeEquals(element, \"name\", \"robots\"));\n    if (descriptor.key === \"gs:canonical\")\n        return candidates.find(element => attributeEquals(element, \"rel\", \"canonical\"));\n\n    const id = descriptor.attributes.id;\n    if (id) return candidates.find(element => element.getAttribute(\"id\") === id);\n    if (descriptor.tagName === \"meta\") {\n        for (const identity of [\"name\", \"property\", \"http-equiv\"]) {\n            const value = descriptor.attributes[identity];\n            if (value !== undefined)\n                return candidates.find(element => element.getAttribute(identity) === value);\n        }\n    }\n    return undefined;\n}\n\nfunction removeKnownElements(document: Document, tagName: string, attribute: string, value: string): void {\n    for (const element of Array.from(document.head.getElementsByTagName(tagName))) {\n        if (attributeEquals(element, attribute, value)) element.remove();\n    }\n}\n\nfunction attributeEquals(element: Element, name: string, value: string): boolean {\n    return element.getAttribute(name)?.toLowerCase() === value.toLowerCase();\n}\n\nfunction removeUrlFragment(url: string): string {\n    const fragmentIndex = url.indexOf(\"#\");\n    return fragmentIndex < 0 ? url : url.slice(0, fragmentIndex);\n}\n", "import type { AppBrowser } from \"../app/AppBrowser\";\nimport { RuntimeGS } from \"../app/RuntimeGS\";\nimport { StateConfigurationGS } from \"./StateConfigurationGS\";\nimport { StateConstructor, StateRunModeEnum, StateRunResultEnum } from \"./StateContractsGS\";\nimport { StateRunOptionsGS, StateRuntimeGS, StateRuntimeStoreGS } from \"./StateRuntimeGS\";\nimport type { StateGS } from \"./StateGS\";\nimport { isStatePagedGS } from \"./StatePagedContractGS\";\nimport { adoptStateHeadGS, applyStateHeadGS } from \"./StateHeadGS\";\n\ninterface BrowserAdoptionGS {\n    readonly layoutName: string;\n    readonly pageElement: HTMLElement;\n}\n\n/** @internal Browser-only state lifecycle, navigation and SSR DOM adoption. */\nexport class StateBrowserRuntimeGS extends StateRuntimeGS {\n    private static readonly _documentRuntimes = new WeakMap<Document, StateBrowserRuntimeGS>();\n    private static readonly _listeningDocuments = new WeakSet<Document>();\n    private static readonly _windowRuntimes = new WeakMap<Window, StateBrowserRuntimeGS>();\n    private static readonly _listeningWindows = new WeakSet<Window>();\n    private static readonly _nativeLinkAttribute = \"gs-link-native\";\n\n    private _transitionId = 0;\n    private _adoptionAttempted = false;\n    /** Preparation may overlap; only the irreversible browser commit is serialized. */\n    private _commitTail: Promise<void> = Promise.resolve();\n\n    public constructor(\n        app: AppBrowser,\n        configuration: StateConfigurationGS\n    ) {\n        super(app, configuration);\n        const runtimeWindow = RuntimeGS.window;\n        if (!runtimeWindow) throw new Error(\"Browser state runtime requires a browser window.\");\n        StateBrowserRuntimeGS.attachNavigation(runtimeWindow, this);\n    }\n\n    private get browserApp(): AppBrowser { return this.app as AppBrowser; }\n\n    public async run(\n        constructor: StateConstructor,\n        args?: any,\n        options: StateRunOptionsGS = {}\n    ): Promise<StateRunResultEnum> {\n        try {\n            this.ensureTransitionAllowed(constructor.StateName);\n            const initialUrlActivation = options.fromUrl === true && !this._adoptionAttempted;\n            const adoption = options.fromUrl ? this.tryAdoptServerDom(constructor.StateName) : undefined;\n            const scope = RuntimeGS.current;\n            if (!scope || scope.app !== this.app)\n                throw new Error(\"Browser state activation requires the owning application scope.\");\n\n            const state = this.createState(constructor, adoption?.pageElement);\n            state.initializeFrameworkState(constructor.StateName);\n\n            if (adoption) {\n                if (isStatePagedGS(state) && state.layoutName.toLowerCase() === adoption.layoutName.toLowerCase()) {\n                    adoptStateHeadGS(RuntimeGS.document, state);\n                    return this.runStateInstanceMode(\n                        state,\n                        args,\n                        { ...options, withHistory: false },\n                        StateRunModeEnum.BrowserFromServer\n                    );\n                }\n\n                console.warn(`GS hydration mismatch for state '${constructor.StateName}'; using a fresh browser render.`);\n                this.browserApp.gui.forgetAdoptedLayout(adoption.layoutName);\n                const freshState = this.createState(constructor);\n                freshState.initializeFrameworkState(constructor.StateName);\n                return this.runStateInstanceMode(\n                    freshState,\n                    args,\n                    initialUrlActivation ? { ...options, withHistory: false } : options,\n                    StateRunModeEnum.BrowserTransition\n                );\n            }\n\n            return this.runStateInstanceMode(\n                state,\n                args,\n                initialUrlActivation ? { ...options, withHistory: false } : options,\n                StateRunModeEnum.BrowserTransition\n            );\n        } catch (error) {\n            console.error(error);\n            return StateRunResultEnum.Failed;\n        }\n    }\n\n    public runInstance(\n        state: StateGS,\n        args?: any,\n        options: StateRunOptionsGS = {}\n    ): Promise<StateRunResultEnum> {\n        const stateName = ((state.constructor as StateConstructor).StateName || state.name || \"\").trim();\n        try {\n            this.ensureTransitionAllowed(stateName);\n        } catch (error) {\n            console.error(error);\n            return Promise.resolve(StateRunResultEnum.Failed);\n        }\n        if (!state.name) {\n            if (!stateName) throw new Error(\"StateName must not be empty.\");\n            state.initializeFrameworkState(stateName);\n        }\n        return this.runStateInstanceMode(state, args, options, StateRunModeEnum.BrowserTransition);\n    }\n\n    public updateStateUrl(state: StateGS): void {\n        if (!state.inHistory) throw new Error(\"Can't update url. State not in history.\");\n        this.requireRegisteredRoute(state);\n        const runtimeWindow = RuntimeGS.window;\n        if (!runtimeWindow) throw new Error(\"History API is unavailable.\");\n        const status: Record<string, string> = {};\n        status[this.urlStateArgName] = state.name;\n        runtimeWindow.history.pushState(status, state.title, state.getUrlArgs());\n    }\n\n    private handleDocumentClick(event: MouseEvent): void {\n        const runtimeWindow = RuntimeGS.window;\n        if (!runtimeWindow || event.defaultPrevented || event.button !== 0\n            || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;\n\n        const anchor = StateBrowserRuntimeGS.findAnchor(event);\n        const rawHref = anchor?.getAttribute(\"href\")?.trim();\n        if (!anchor || !rawHref || anchor.hasAttribute(StateBrowserRuntimeGS._nativeLinkAttribute)\n            || anchor.hasAttribute(\"download\")) return;\n        if (anchor.target && anchor.target.toLowerCase() !== \"_self\") return;\n        if (anchor.rel.split(/\\s+/).some(value => value.toLowerCase() === \"external\")) return;\n\n        let target: URL;\n        let args: Record<string, string>;\n        try {\n            target = new URL(anchor.href, runtimeWindow.location.href);\n            if (target.protocol !== \"http:\" && target.protocol !== \"https:\") return;\n            if (target.username || target.password || target.origin !== runtimeWindow.location.origin) return;\n            if (target.hash.includes(\":~:text=\")) return;\n            if (target.hash\n                && target.pathname === runtimeWindow.location.pathname\n                && target.search === runtimeWindow.location.search) return;\n            if (!this.configuration.UsePathRouting\n                && target.pathname !== runtimeWindow.location.pathname) return;\n            const parsedArgs = this.configuration.parseUrl(target.href);\n            if (!parsedArgs) return;\n            args = parsedArgs;\n        } catch {\n            return;\n        }\n\n        const stateName = this.configuration.getStateName(args);\n        if (!this.configuration.isStateRegistered(stateName)) return;\n\n        event.preventDefault();\n        void this.runByUrl(target.href);\n    }\n\n    private async runStateInstanceMode(\n        state: StateGS,\n        args: any,\n        options: StateRunOptionsGS,\n        mode: StateRunModeEnum\n    ): Promise<StateRunResultEnum> {\n        const transitionId = ++this._transitionId;\n\n        try {\n            let result = await state.preStart(mode, args);\n            if (result !== StateRunResultEnum.Activated) return result;\n            if (transitionId !== this._transitionId) return StateRunResultEnum.Skipped;\n\n            result = await state.start(args);\n            if (result !== StateRunResultEnum.Activated) return result;\n            if (transitionId !== this._transitionId) return StateRunResultEnum.Skipped;\n\n            return await this.commitPreparedState(transitionId, state, args, options, mode);\n        } catch (error) {\n            console.error(error);\n            return StateRunResultEnum.Failed;\n        }\n    }\n\n    private async commitPreparedState(\n        transitionId: number,\n        state: StateGS,\n        args: any,\n        options: StateRunOptionsGS,\n        mode: StateRunModeEnum\n    ): Promise<StateRunResultEnum> {\n        const previousCommit = this._commitTail;\n        let releaseCommit: () => void = () => undefined;\n        this._commitTail = new Promise<void>(resolve => { releaseCommit = resolve; });\n        await previousCommit;\n\n        try {\n            if (transitionId !== this._transitionId) return StateRunResultEnum.Skipped;\n\n            const writeHistory = options.withHistory !== false\n                && state.inHistory\n                && this.configuration.isStateRegistered(state.name);\n            const execution = StateRuntimeStoreGS.execution();\n            const previous = execution.activeState;\n\n            if (previous && previous !== state) {\n                try {\n                    await previous.stop();\n                } catch (error) {\n                    previous.setFrameworkActive(true);\n                    throw error;\n                }\n                previous.setFrameworkActive(false);\n                if (execution.activeState === previous) delete execution.activeState;\n            }\n\n            await this.commitState(state, mode);\n            execution.activeState = state;\n            state.setFrameworkActive(true);\n            execution.afterStartState = state;\n            try {\n                await state.afterStart(mode, args);\n            } catch (error) {\n                // Placement is irreversible. A post-activation hook failure must not\n                // leave the visible page detached from history and document head.\n                console.error(error);\n            } finally {\n                if (execution.afterStartState === state) delete execution.afterStartState;\n            }\n\n            this.applyBrowserEffects(state, writeHistory, options.requestedUrl);\n            return StateRunResultEnum.Activated;\n        } finally {\n            releaseCommit();\n        }\n    }\n\n    private createState(constructor: StateConstructor, pageElement?: HTMLElement): StateGS {\n        const scope = RuntimeGS.current;\n        if (!scope || scope.app !== this.app)\n            throw new Error(\"Browser state construction requires the owning application scope.\");\n        if (pageElement) scope.pendingPageElement = pageElement;\n        try {\n            return constructor.Instance ?? new constructor();\n        } finally {\n            delete scope.pendingPageElement;\n        }\n    }\n\n    private async commitState(state: StateGS, mode: StateRunModeEnum): Promise<void> {\n        if (!isStatePagedGS(state)) return;\n        const layout = await this.browserApp.gui.place(\n            state.layoutName,\n            state.page,\n            mode === StateRunModeEnum.BrowserFromServer\n        );\n        const registration = this.browserApp.gui.getRegistration(state.layoutName);\n        if (registration) this.app.addInst(registration.constructor, layout);\n    }\n\n    private tryAdoptServerDom(stateName: string): BrowserAdoptionGS | undefined {\n        if (this._adoptionAttempted) return undefined;\n        this._adoptionAttempted = true;\n\n        const layoutElement = RuntimeGS.document.querySelector('[gs-layout]') as HTMLElement | null;\n        if (!layoutElement) return undefined;\n        const renderedState = layoutElement.getAttribute('gs-state') || '';\n        if (renderedState.toLowerCase() !== stateName.toLowerCase()) {\n            console.warn(`GS hydration state mismatch: expected '${stateName}', received '${renderedState}'.`);\n            layoutElement.remove();\n            return undefined;\n        }\n\n        const renderedBuild = layoutElement.getAttribute('gs-build') || '';\n        if (this.app.buildId && renderedBuild !== this.app.buildId) {\n            console.warn(`GS hydration build mismatch: expected '${this.app.buildId}', received '${renderedBuild}'.`);\n            layoutElement.remove();\n            return undefined;\n        }\n\n        const layoutName = layoutElement.getAttribute('gs-layout') || '';\n        if (!layoutName || !this.browserApp.gui.getRegistration(layoutName)) {\n            console.warn(`GS hydration layout '${layoutName}' is not registered.`);\n            layoutElement.remove();\n            return undefined;\n        }\n        try {\n            const layout = this.browserApp.gui.adoptLayout(layoutName, layoutElement);\n            const pageElement = layout.pageContainer.el.querySelector('[gs-page]') as HTMLElement | null;\n            if (!pageElement) {\n                this.browserApp.gui.forgetAdoptedLayout(layoutName);\n                return undefined;\n            }\n            return { layoutName, pageElement };\n        } catch (error) {\n            console.warn(`GS hydration failed for layout '${layoutName}'; using a fresh browser render.`, error);\n            layoutElement.remove();\n            return undefined;\n        }\n    }\n\n    private applyBrowserEffects(state: StateGS, withHistory: boolean, requestedUrl?: string): void {\n        const runtimeWindow = RuntimeGS.window;\n        if (!runtimeWindow) return;\n        const fragment = this.getUrlFragment(requestedUrl, runtimeWindow.location.href);\n        if (withHistory) {\n            const status: Record<string, string> = {};\n            status[this.urlStateArgName] = state.name;\n            runtimeWindow.history.pushState(\n                status,\n                state.title,\n                this.appendFragment(state.getUrlArgs(), fragment, runtimeWindow.location.href)\n            );\n        }\n        applyStateHeadGS(runtimeWindow.document, state, runtimeWindow.location.href);\n        this.scrollToFragment(runtimeWindow, fragment);\n    }\n\n    private getUrlFragment(url: string | undefined, baseUrl: string): string {\n        if (!url) return \"\";\n        try {\n            return new URL(url, baseUrl).hash;\n        } catch {\n            return \"\";\n        }\n    }\n\n    private appendFragment(url: string, fragment: string, baseUrl: string): string {\n        if (!fragment) return url;\n        const result = new URL(url, baseUrl);\n        result.hash = fragment;\n        return result.href;\n    }\n\n    private scrollToFragment(runtimeWindow: Window, fragment: string): void {\n        if (!fragment) {\n            runtimeWindow.scrollTo(0, 0);\n            return;\n        }\n\n        const encodedName = fragment.slice(1);\n        let name = encodedName;\n        try {\n            name = decodeURIComponent(encodedName);\n        } catch {\n            // Match the literal id/name when a fragment contains invalid percent encoding.\n        }\n\n        const target = runtimeWindow.document.getElementById(name)\n            ?? runtimeWindow.document.getElementsByName(name)[0];\n        target?.scrollIntoView();\n    }\n\n    private requireRegisteredRoute(state: StateGS): void {\n        if (!this.configuration.isStateRegistered(state.name))\n            throw new Error(`State '${state.name}' must be registered before it can write browser history.`);\n    }\n\n    private static attachNavigation(runtimeWindow: Window, runtime: StateBrowserRuntimeGS): void {\n        const runtimeDocument = runtimeWindow.document;\n        StateBrowserRuntimeGS._documentRuntimes.set(runtimeDocument, runtime);\n        StateBrowserRuntimeGS._windowRuntimes.set(runtimeWindow, runtime);\n\n        if (!StateBrowserRuntimeGS._listeningDocuments.has(runtimeDocument)) {\n            runtimeDocument.addEventListener(\"click\", StateBrowserRuntimeGS.handleDelegatedClick);\n            StateBrowserRuntimeGS._listeningDocuments.add(runtimeDocument);\n        }\n        if (!StateBrowserRuntimeGS._listeningWindows.has(runtimeWindow)) {\n            runtimeWindow.addEventListener(\"popstate\", StateBrowserRuntimeGS.handlePopState);\n            StateBrowserRuntimeGS._listeningWindows.add(runtimeWindow);\n        }\n    }\n\n    private static handleDelegatedClick(event: Event): void {\n        const runtimeDocument = event.currentTarget as Document | null;\n        const runtime = runtimeDocument\n            ? StateBrowserRuntimeGS._documentRuntimes.get(runtimeDocument)\n            : undefined;\n        runtime?.handleDocumentClick(event as MouseEvent);\n    }\n\n    private static handlePopState(event: PopStateEvent): void {\n        const runtimeWindow = event.currentTarget as Window | null;\n        const runtime = runtimeWindow\n            ? StateBrowserRuntimeGS._windowRuntimes.get(runtimeWindow)\n            : undefined;\n        if (runtime && runtimeWindow)\n            void runtime.runByUrl(runtimeWindow.location.href, { withHistory: false });\n    }\n\n    private static findAnchor(event: MouseEvent): HTMLAnchorElement | undefined {\n        for (const target of event.composedPath()) {\n            const element = target as Element;\n            if (element?.tagName?.toLowerCase() === \"a\") return element as HTMLAnchorElement;\n        }\n        const target = event.target as Element | null;\n        if (typeof target?.closest !== \"function\") return undefined;\n        return (target.closest(\"a\") as HTMLAnchorElement | null) ?? undefined;\n    }\n}\n", "import type { App } from \"../app/App\";\nimport { AppBrowser } from \"../app/AppBrowser\";\nimport { RuntimeEnvironmentGSEnum, RuntimeGS } from \"../app/RuntimeGS\";\nimport { StateConfigurationGS } from \"./StateConfigurationGS\";\nimport { StateBrowserRuntimeGS } from \"./StateBrowserRuntimeGS\";\nimport {\n    StateConstructor,\n    StateRunModeEnum,\n    StateRunResultEnum,\n    StateSetupGS\n} from \"./StateContractsGS\";\nimport { StateRuntimeGS, StateRuntimeStoreGS } from \"./StateRuntimeGS\";\nimport { removeStateHeadTagGS, setStateHeadTagGS } from \"./StateHeadGS\";\n\n/** State base and the only public facade for state configuration and execution. */\nexport abstract class StateGS {\n    public static DefaultServerCacheMinutes = 30;\n    /** Whether Server App replaces this route implementation with an SPA shell placeholder. */\n    public static readonly IsPrivate: boolean = false;\n\n    /** Configure and seal the state registry for the current application exactly once. */\n    public static Configure(configure: (states: StateSetupGS) => void): void {\n        const scope = RuntimeGS.current;\n        if (!scope) throw new Error(\"StateGS.Configure must run during application initialization.\");\n        if (StateRuntimeStoreGS.has(scope.app))\n            throw new Error(\"StateGS is already configured for this application.\");\n        if (!scope.stateConfigurationOpen)\n            throw new Error(\"StateGS.Configure is only available from App.initializeCore().\");\n\n        const configuration = new StateConfigurationGS(scope.environment);\n        configuration.apply(configure);\n\n        let runtime: StateRuntimeGS;\n        if (scope.stateRuntimeFactory) {\n            runtime = scope.stateRuntimeFactory(scope.app, configuration);\n        } else if (scope.environment === RuntimeEnvironmentGSEnum.Browser) {\n            if (!(scope.app instanceof AppBrowser))\n                throw new Error(\"Browser state configuration requires an AppBrowser instance.\");\n            runtime = new StateBrowserRuntimeGS(scope.app, configuration);\n        } else throw new Error(\"The application environment did not provide a state runtime adapter.\");\n        StateRuntimeStoreGS.set(scope.app, runtime);\n    }\n\n    public static async Run(\n        constructor: StateConstructor,\n        args?: any,\n        withHistory = true\n    ): Promise<StateRunResultEnum> {\n        if (!constructor) return StateRunResultEnum.Failed;\n        return StateRuntimeStoreGS.require().run(constructor, args, { withHistory });\n    }\n\n    public static RunInstance(\n        state: StateGS,\n        args?: any,\n        withHistory = true\n    ): Promise<StateRunResultEnum> {\n        return StateRuntimeStoreGS.require().runInstance(state, args, { withHistory });\n    }\n\n    public static RunByName(\n        stateName: string,\n        args?: any,\n        withHistory = true\n    ): Promise<StateRunResultEnum> {\n        return StateRuntimeStoreGS.require().runByName(stateName, args, { withHistory });\n    }\n\n    public static RunByUrl(event?: Event, withHistory = true): Promise<StateRunResultEnum> {\n        if (event) event.preventDefault();\n        return StateRuntimeStoreGS.require().runByUrl(undefined, { withHistory });\n    }\n\n    public static RunByUrlArgs(\n        args: Record<string, string>,\n        _search?: string,\n        event?: Event,\n        withHistory = true\n    ): Promise<StateRunResultEnum> {\n        if (event) event.preventDefault();\n        return StateRuntimeStoreGS.require().runByUrlArgs(args, { withHistory });\n    }\n\n    public static BuildUrl(stateName: string, args: Record<string, string> = {}): string {\n        return StateRuntimeStoreGS.require().buildStateUrl(stateName, args);\n    }\n\n    public static get ActiveState(): StateGS | undefined {\n        return StateRuntimeStoreGS.require().activeState;\n    }\n\n    public static get UrlStateArgName(): string {\n        return StateRuntimeStoreGS.require().urlStateArgName;\n    }\n\n    public static get DefaultStateName(): string {\n        return StateRuntimeStoreGS.require().defaultStateName;\n    }\n\n    public static get State404Name(): string {\n        return StateRuntimeStoreGS.require().state404Name;\n    }\n\n    public static get UrlPathName(): string {\n        return RuntimeGS.window?.location.pathname.toLowerCase() ?? \"\";\n    }\n\n    public static get UrlFullPath(): string {\n        const runtimeWindow = RuntimeGS.window;\n        return runtimeWindow ? runtimeWindow.location.origin.toLowerCase() + StateGS.UrlPathName : \"\";\n    }\n\n    private _name = \"\";\n    private _title: string;\n    private _active = false;\n    private _cachePolicyResolved = false;\n    protected readonly _urlArgs: Record<string, string> = {};\n\n    private readonly _app?: App;\n    public readonly inHistory: boolean;\n    public serverCacheMinutes = -1;\n    public description = \"\";\n    public canonicalUrl = \"\";\n    public robots = \"\";\n\n    protected constructor(title: string, inHistory = true) {\n        this._app = RuntimeGS.current?.app;\n        this._title = title;\n        this.inHistory = inHistory;\n    }\n\n    public get name(): string { return this._name; }\n    public get title(): string { return this._title; }\n    public set title(value: string) { this._title = value; }\n    public get isActive(): boolean { return this._active; }\n    public get urlArgs(): Readonly<Record<string, string>> { return this._urlArgs; }\n\n    /** Application captured when the state was created. Projects may override this getter to narrow its type. */\n    protected get app(): App | undefined { return this._app; }\n\n    protected overrideName(name: string): void { this._name = name; }\n\n    /** @internal */\n    public initializeFrameworkState(name: string): void {\n        this._name = name;\n        if (!this._cachePolicyResolved) {\n            if (this.serverCacheMinutes === -1 && StateGS.DefaultServerCacheMinutes !== -1)\n                this.serverCacheMinutes = StateGS.DefaultServerCacheMinutes;\n            this._cachePolicyResolved = true;\n        }\n    }\n\n    /** @internal */\n    public setFrameworkActive(active: boolean): void {\n        this._active = active;\n    }\n\n    public async preStart(\n        _mode: StateRunModeEnum,\n        _args?: any\n    ): Promise<StateRunResultEnum> {\n        return StateRunResultEnum.Activated;\n    }\n\n    public async start(_args?: any): Promise<StateRunResultEnum> {\n        return StateRunResultEnum.Activated;\n    }\n\n    public async afterStart(_mode: StateRunModeEnum, _args?: any): Promise<void> {\n    }\n\n    public async stop(): Promise<void> {\n        this._active = false;\n    }\n\n    public updateUrl(): void {\n        const runtime = StateRuntimeStoreGS.require(this.requireApp());\n        if (!(runtime instanceof StateBrowserRuntimeGS))\n            throw new Error(\"State URL updates are only available in a browser application.\");\n        runtime.updateStateUrl(this);\n    }\n\n    public getUrlArgs(): string {\n        return StateRuntimeStoreGS.require(this.requireApp()).buildUrlForState(this);\n    }\n\n    /** Add or replace one state-owned head tag by its stable key. */\n    public setHeadTag(\n        key: string,\n        tagName: \"meta\" | \"link\" | \"script\",\n        attributes: Readonly<Record<string, string>> = {},\n        textContent = \"\"\n    ): void {\n        setStateHeadTagGS(this, key, tagName, attributes, textContent);\n    }\n\n    /** Stop emitting the state-owned head tag with this key. */\n    public removeHeadTag(key: string): void {\n        removeStateHeadTagGS(this, key);\n    }\n\n    private requireApp(): App {\n        const app = this._app ?? RuntimeGS.current?.app;\n        if (!app) throw new Error(\"State is not attached to an application scope.\");\n        return app;\n    }\n\n}\n", "import { RuntimeGS } from \"../app/RuntimeGS\";\nimport { StateGS } from \"./StateGS\";\nimport { WrapperGS } from \"../WrapperGS\";\n\nexport interface PageConstructorGS<TPage extends WrapperGS = WrapperGS> {\n    new(existingElement?: HTMLElement): TPage;\n}\n\n/** Page-bearing state. The state creates and owns its typed page. */\nexport abstract class StatePagedGS<TPage extends WrapperGS> extends StateGS {\n    public readonly page: TPage;\n    public readonly layoutName: string;\n\n    protected constructor(\n        pageConstructor: PageConstructorGS<TPage>,\n        title: string,\n        inHistory = true,\n        layoutName = \"main\"\n    ) {\n        super(title, inHistory);\n        const existingElement = RuntimeGS.current?.pendingPageElement;\n        this.page = this.app\n            ? this.app.newInst(pageConstructor, existingElement)\n            : new pageConstructor(existingElement);\n        this.layoutName = layoutName;\n    }\n}\n", "\uFEFFexport function contains<T>(arr: T[], item: T) { return arr.indexOf(item) > -1; }\r\nexport function addRange<T>(arr: T[], range: T[]) { arr.push(...range); }\r\nexport function clear<T>(arr: T[]) {\r\n   arr.length = 0\r\n}\r\nexport function clone<T>(arr: T[]):T[] { return [...arr];}\r\nexport function remove<T>(arr: T[], item: T): boolean {\r\n    const i = arr.indexOf(item);\r\n    if (i >= 0) { arr.splice(i, 1); return true; }\r\n    return false;\r\n}\r\n\r\nexport function removeAll<T>(arr: T[], value: T): number;\r\nexport function removeAll<T>(arr: T[], predicate: (item: T, index: number) => boolean): number;\r\nexport function removeAll<T>(arr: T[], valueOrPredicate: T | ((item: T, index: number) => boolean)): number {\r\n  const predicate: (item: T, index: number) => boolean = isPredicate(valueOrPredicate)\r\n    ? valueOrPredicate\r\n    : (item => item === valueOrPredicate);\r\n  let removedCount = 0;\n  for (let i = arr.length - 1; i >= 0; i--) {\n    const item = arr[i] as T;\n    if (predicate(item, i)) {\n      arr.splice(i, 1);\r\n      removedCount++;\r\n    }\r\n  }\r\n  return removedCount;\r\n}\r\n\r\nfunction isPredicate<T>(arg: T | ((item: T, index: number) => boolean)): arg is (item: T, index: number) => boolean {\r\n  return typeof arg === 'function';\r\n}\r\n\r\n/**\r\n * Executes an asynchronous function in parallel for all elements of the array.\r\n * @param func A function that returns a Promise for each item.\r\n * @param exceptUndefined Whether to exclude undefined results from the output (default: true).\r\n */\r\nexport async function parallelAsync<T, Q>(\r\n  list: T[],\r\n  func: (item: T) => Q | Promise<Q>,\r\n  exceptUndefined: boolean = true\r\n): Promise<Awaited<Q>[]> {\r\n  const promises = list.map(func);\r\n  const results = await Promise.all(promises);\r\n\r\n  return exceptUndefined\r\n    ? results.filter((r): r is Awaited<Q> => r !== undefined)\r\n    : results;\r\n}\n", "import { clear, remove } from '../helpers/array';\nimport { WrapperGS } from './WrapperGS';\n\r\nexport interface Disposable { dispose(): any }\nexport interface Handler<T> { (event?: T): any }\nexport interface HandlerAsync<T> { (event?: T): Promise<any> }\n\r\nexport class EventGSHandlerDisposable implements Disposable {\r\n    constructor(wrapper: WrapperGS, event: string, eventHandler: (event: any) => void) {\n        this.wrapper = wrapper;\r\n        this.event = event;\r\n        this.eventHandler = eventHandler\r\n        this.wrapper.el.addEventListener(event, eventHandler);\r\n    }\r\n    public readonly wrapper: WrapperGS;\r\n    public readonly eventHandler: (event: any) => void;\n    public readonly event: string;\r\n    public dispose() { this.wrapper.el.removeEventListener(this.event, this.eventHandler); }\r\n}\r\n\r\n/**Return private invoke function ouside to initializer*/\r\nexport class EventGSToken<T = unknown> {    \n\n    private readonly _hasHandlersCallback: (() => void) | undefined;\n    /**     \r\n     * @param hasHandlersCallback  Invoke then event add first handler. Use for assign pipe listeners only when it need (another one start listen)\r\n     */\r\n    constructor(hasHandlersCallback?: () => void) {\r\n        this._hasHandlersCallback = hasHandlersCallback;\r\n    }\r\n\r\n    public invoke: Handler<T> = () => {\n        throw new Error(\"EventGSToken must be attached to EventGS before invocation.\");\n    };\n    /** Invoke then event add first handler. Use for assign pipe listeners only when it need (another one start listen)*/\r\n    public get hasHandlersCallback() { return this._hasHandlersCallback; }\r\n}\r\n\r\n/**Return private invoke function ouside to initializer*/\r\nexport class EventAsyncGSToken<T = unknown> {\n\n    private readonly _hasHandlersCallback: (() => void) | undefined;\n    /**\r\n    * @param hasHandlersCallback  Invoke then event add first handler. Use for assign pipe listeners only when it need (another one start listen)\r\n    */\r\n    constructor(hasHandlersCallback?: () => void) {\r\n        this._hasHandlersCallback = hasHandlersCallback;\r\n    }\r\n    public invoke: HandlerAsync<T> = async () => {\n        throw new Error(\"EventAsyncGSToken must be attached to EventAsyncGS before invocation.\");\n    };\n    /** Invoke then event add first handler. Use for assign pipe listeners only when it need (another one start listen)*/\r\n    public get hasHandlersCallback() { return this._hasHandlersCallback; }\r\n}\r\n\r\nexport class EventGS<T = unknown>\n{\n    private readonly _handlers:Handler<T>[]=[];\n    private readonly _handlersOnce:Handler<T>[]=[];\n    private _sourceInitialized = false;\n\r\n    private readonly _token: EventGSToken<T>;\r\n    constructor(token: EventGSToken<T>) {\r\n        this._token = token;\r\n        this._token.invoke = (e)=> this.invoke(e);\r\n    }\r\n\r\n    addHandler(listener: Handler<T>): Disposable {\r\n        this.checkFirstHandler()            \r\n        this._handlers.push(listener);\r\n        return { dispose: () => this.removeHandler(listener) };\r\n    }\r\n    addOnceHandler(listener: Handler<T>): Disposable {\r\n        this.checkFirstHandler()\r\n        this._handlersOnce.push(listener);\r\n        return { dispose: () => this.removeHandler(listener) };\r\n    }\r\n\r\n    removeHandler(handler: Handler<T>) {\r\n        remove(this._handlers, handler);\n        remove(this._handlersOnce, handler);\n    }\r\n\r\n    private invoke(event?: T) {\n        [...this._handlers].forEach((l) => l(event));\n        const onceList = [...this._handlersOnce];\r\n        clear(this._handlersOnce);\n        onceList.forEach((l) => l(event));\r\n    }\r\n\r\n    private checkFirstHandler() {\n        if (this._sourceInitialized) return;\n        this._token.hasHandlersCallback?.();\n        this._sourceInitialized = true;\n    }\n}\n\r\nexport class EventAsyncGS<T = unknown>\n{\n    private _handlers:HandlerAsync<T>[] = [];\n    private _handlersOnce:HandlerAsync<T>[]=[];\n    private _sourceInitialized = false;\n\r\n    private readonly _token: EventAsyncGSToken<T>;\r\n    constructor(token: EventAsyncGSToken<T>) {\r\n        this._token = token;\r\n        this._token.invoke = async (e) => await this.invokeAsync(e);\r\n    }\r\n\r\n    addHandler(listener: HandlerAsync<T>): Disposable {\r\n        this.checkFirstHandler();\r\n        this._handlers.push(listener);\r\n        return { dispose: () => this.removeHandler(listener) };\r\n    }\r\n    addOnceHandler(listener: HandlerAsync<T>): Disposable {\r\n        this.checkFirstHandler();\r\n        this._handlersOnce.push(listener);\r\n        return { dispose: () => this.removeHandler(listener) };\r\n    }\r\n\r\n    removeHandler(handler: HandlerAsync<T>) {\r\n        remove(this._handlers, handler);\n        remove(this._handlersOnce, handler);\n    }\r\n\r\n    private async invokeAsync(event?: T) {\n        for (const handler of [...this._handlers]) await handler(event);\n        const onceList = [...this._handlersOnce];\r\n        clear(this._handlersOnce);\n        for (const handler of onceList) await handler(event);\r\n    }\r\n    private checkFirstHandler() {\n        if (this._sourceInitialized) return;\n        this._token.hasHandlersCallback?.();\n        this._sourceInitialized = true;\n    }\n}\n", "import { RuntimeGS } from '../app/RuntimeGS';\n\n/** @internal */\nexport interface TemplateConstructorGS<T extends object = object> {\n    new(...args: any[]): T;\n}\n\n/** @internal */\nexport const templateMetadataGS = {\n    templateName: 'tmpl',\n    templateTag: 'tmpl-tag',\n    controlName: 'ctrl'\n};\n\ninterface TemplateDocumentContextGS {\n    readonly templates: Map<string, HTMLElement>;\n    initializedFromDocument: boolean;\n    buildId?: string;\n}\n\nconst templateConstructors = new Map<string, TemplateConstructorGS>();\nconst templateContexts = new WeakMap<Document, TemplateDocumentContextGS>();\n\nfunction normalizeTemplateName(name: string | undefined): string {\n    return (name ?? '').trim().toLowerCase();\n}\n\nfunction getTemplateContext(targetDocument: Document): TemplateDocumentContextGS {\n    let context = templateContexts.get(targetDocument);\n    if (!context) {\n        context = {\n            templates: new Map<string, HTMLElement>(),\n            initializedFromDocument: false\n        };\n        templateContexts.set(targetDocument, context);\n    }\n    return context;\n}\n\nfunction getTemplateName(element: Element): string {\n    return normalizeTemplateName(\n        element.getAttribute('gs-' + templateMetadataGS.templateName) ?? undefined\n    );\n}\n\nfunction findTemplateElement(targetDocument: Document, selector: string, name: string): HTMLElement | undefined {\n    for (const element of Array.from(targetDocument.querySelectorAll(selector))) {\n        if (getTemplateName(element) === name) return element as HTMLElement;\n    }\n    return undefined;\n}\n\n/** @internal */\nexport function registerTemplateConstructor<T extends object>(\n    name: string,\n    constructor: TemplateConstructorGS<T>\n): void {\n    const key = normalizeTemplateName(name);\n    if (!key) throw new Error('Template constructor name must not be empty.');\n    const previous = templateConstructors.get(key);\n    if (previous && previous !== constructor)\n        throw new Error(`Template constructor '${name}' is already registered.`);\n    templateConstructors.set(key, constructor);\n}\n\n/** @internal */\nexport function unregisterTemplateConstructor(name: string): void {\n    templateConstructors.delete(normalizeTemplateName(name));\n}\n\n/** @internal */\nexport function getTemplateConstructor<T extends object>(name: string): TemplateConstructorGS<T> | undefined {\n    return templateConstructors.get(normalizeTemplateName(name)) as TemplateConstructorGS<T> | undefined;\n}\n\n/** @internal */\nexport function registerTemplatePack(\n    html: string,\n    buildId?: string,\n    targetDocument: Document = RuntimeGS.document\n): void {\n    const context = getTemplateContext(targetDocument);\n    const holder = targetDocument.createElement('div');\n    holder.innerHTML = html;\n    const registrations = new Map<string, HTMLElement>();\n    holder.querySelectorAll('template').forEach(element => {\n        const name = getTemplateName(element);\n        if (!name) return;\n        if (registrations.has(name))\n            throw new Error(`Template '${name}' is duplicated in the loaded GS template pack.`);\n        registrations.set(name, element as HTMLElement);\n    });\n    registrations.forEach((template, name) => context.templates.set(name, template));\n    if (buildId) context.buildId = buildId;\n}\n\n/** @internal */\nexport function tryGetTemplateElement(\n    templateName: string,\n    templateClassName: string,\n    targetDocument: Document = RuntimeGS.document\n): HTMLElement | undefined {\n    const key = normalizeTemplateName(templateName);\n    if (!key) return undefined;\n    const context = getTemplateContext(targetDocument);\n\n    if (!context.initializedFromDocument) {\n        targetDocument.querySelectorAll('template').forEach(element => {\n            const name = getTemplateName(element);\n            if (name) context.templates.set(name, element as HTMLElement);\n        });\n        context.initializedFromDocument = true;\n    }\n\n    let element = context.templates.get(key);\n    if (!element) element = findTemplateElement(targetDocument, 'template', key);\n    if (!element) element = findTemplateElement(targetDocument, `.${templateClassName}`, key);\n    if (!element) return undefined;\n    context.templates.set(key, element);\n    return element;\n}\n\n/** @internal */\nexport function getTemplateBuildId(targetDocument: Document = RuntimeGS.document): string | undefined {\n    return getTemplateContext(targetDocument).buildId;\n}\n\n/** @internal */\nexport function clearTemplateDocumentCache(targetDocument: Document = RuntimeGS.document): void {\n    templateContexts.delete(targetDocument);\n}\n", "\uFEFFimport { Types } from '../core/Enums';\n\r\n/** Cast object to type without check */\r\nexport function toUnsafeType<T>(obj: unknown): T { return (obj as unknown) as T; }\r\n/** Cast object to type if he expand it or return undefined if not */\r\nexport function toType<T>(obj: unknown, type: { new(...args: any[]): T }): T | undefined {\n    return obj instanceof type ? obj as T : undefined;\n}\n\r\n\r\nexport function hasProp(wr: object, propName: string, type?: Types) {\n    const value = (wr as Record<string, unknown>)[propName];\n    if (value===undefined) return false;\n    if (type) {\n        if (type === Types.NotFunction) {\n            if ((typeof value === Types.Function) || (typeof value === Types.Undefined)) return false\n            return true;\n        }\n        if (typeof value !== type) return false;\n    }\n    return true;    \n}\n\r\n/** Cast argument to integer or return default */\r\nexport function int(arg: any, def = 0): number {\n    if (arg === undefined || arg === null || arg === '') return def;\n    const value = parseInt(String(arg), 10);\n    return Number.isFinite(value) ? value : def;\n}\n/** Cast argument to float or return default */\nexport function float(arg: any, def = 0.0): number {\n    if (arg === undefined || arg === null || arg === '') return def;\n    const value = parseFloat(String(arg));\n    return Number.isFinite(value) ? value : def;\n}\n/** Cast argument to string or return default */\nexport function string(arg: any, def = ''): string {\n    return arg === undefined || arg === null ? def : String(arg);\n}\n/** Cast argument to boolean or return default */\nexport function bool(arg: any, def = false): boolean {\n    if (arg === undefined || arg === null) return def;\n    if (typeof arg === 'boolean') return arg;\n    const value = String(arg).trim().toLowerCase();\n    if (value === 'true' || value === '1' || value === 't') return true;\n    if (value === 'false' || value === '0' || value === 'f') return false;\n    return def;\n}\n/** Cast argument to Date or return default */\nexport function date(arg: any, def = new Date()) {\n    if (arg === undefined || arg === null || arg === '') return def;\n    const value = new Date(arg);\n    return Number.isNaN(value.getTime()) ? def : value;\n}\r\n/** Cast argument to enum:T or return default */\r\nexport function enumCast<T extends Record<string, string | number>>(\n    enumType: T,\n    arg: any,\n    def?: T[keyof T]\n): T[keyof T] | undefined {\n    if (typeof arg === 'number'&&enumType[arg as keyof T] !== undefined) return arg as T[keyof T];\r\n    if (typeof arg === 'string') {\r\n        if (arg in enumType) { \r\n            const result = enumType[arg as keyof T];\r\n            if (typeof result === 'number' || typeof result === 'string')  return result as T[keyof T];\r\n        }\r\n        const parsedNum = parseInt(arg, 10);\r\n        if (!isNaN(parsedNum) && enumType[parsedNum as keyof T] !== undefined) return parsedNum as T[keyof T];\r\n    }\r\n    return def;\r\n}\r\n\r\n/** Trying found arg of object in various cases */\r\nexport function argSearch(name: string, obj: object | null | undefined): unknown {\n    if (!obj) return undefined;\n    const values = obj as Record<string, unknown>;\n    const nameCap = name.charAt(0).toUpperCase() + name.slice(1);\n    const nameLow = name.toLowerCase();\n    for (const candidate of [name, nameCap, nameLow])\n        if (Object.prototype.hasOwnProperty.call(values, candidate))\n            return values[candidate];\n    return undefined;\n}\n/** Search and cast object argument to integer */\r\nexport function argInt(name: string, obj: any, def = 0): number { const arg = argSearch(name, obj); return int(arg, def); }\n/** Search and cast object argument to float */\r\nexport function argFloat(name: string, obj: any, def = 0.0): number { const arg = argSearch(name, obj); return float(arg, def); }\n/** Search and cast object argument to string */\r\nexport function argString(name: any, obj: any, def = ''): string { const arg = argSearch(name, obj); return string(arg, def); }\n/** Search and cast object argument to string */\r\nexport function argBool(name: any, obj: any, def = false) { const arg = argSearch(name, obj); return bool(arg, def); }\n/** Search and cast object argument to string */\r\nexport function argDate(name: any, obj: any, def = new Date()) { const arg = argSearch(name, obj); return date(arg, def); }\n/** Search and cast object argument to string */\r\nexport function argEnum<T extends Record<string, string | number>>(\n    name: any,\n    obj: any,\n    enumType: T,\n    def?: T[keyof T]\n): T[keyof T] | undefined {\n    const arg = argSearch(name, obj); \r\n    return enumCast(enumType, arg, def); \r\n}\r\n\r\n", "\uFEFFexport enum Types {\r\n    Bool = \"boolean\",\r\n    Function = \"function\",\r\n    Number = \"number\",\r\n    BigInt = \"bigint\",\r\n    Object = \"object\",\r\n    String = \"string\",\r\n    Symbol = \"symbol\",\r\n    Undefined = \"undefined\",\r\n\r\n    /**Type is one of 'boolean|number|bigint|object|string|symbol' */\r\n    NotFunction = \"notfunction\",\r\n}", "import { RuntimeGS } from '../core/app/RuntimeGS';\n\nexport function addAttrs(el: Element, attrs: object) {\n    if (!attrs) return;\n    const values = attrs as Record<string, any>;\n    for (const attr in values) el.setAttribute(attr, values[attr]);\n}\n\nexport function addText(el: Element, text: string) {\n    el.appendChild(RuntimeGS.document.createTextNode(text));\n}\n\nexport function addSpace(el: Element) {\n    el.appendChild(RuntimeGS.document.createTextNode(' '));\n}\n\nfunction createAndFillElement(tag: string, inner = \"\", attrs: Record<string, any> = {}): Element {\n    const el = RuntimeGS.document.createElement(tag);\n    el.innerHTML = inner;\n    addAttrs(el, attrs);\n    return el;\n}\n\nexport function span(attrs = {}, inner = \"\"): HTMLSpanElement { return createAndFillElement('span', inner, attrs) as HTMLSpanElement; }\nexport function p(attrs = {}, inner = \"\"): HTMLParagraphElement { return createAndFillElement('p', inner, attrs) as HTMLParagraphElement; }\nexport function a(attrs = {}, inner = \"\"): HTMLAnchorElement { return createAndFillElement('a', inner, attrs) as HTMLAnchorElement; }\nexport function div(attrs = {}, inner = \"\"): HTMLDivElement { return createAndFillElement('div', inner, attrs) as HTMLDivElement; }\nexport function br(attrs = {}): HTMLBRElement { const el = RuntimeGS.document.createElement('br'); addAttrs(el, attrs); return el as HTMLBRElement; }\nexport function hr(attrs = {}): HTMLHRElement { const el = RuntimeGS.document.createElement('hr'); addAttrs(el, attrs); return el as HTMLHRElement; }\nexport function img(attrs = {}): HTMLImageElement { const el = RuntimeGS.document.createElement('img'); addAttrs(el, attrs); return el as HTMLImageElement; }\nexport function tag(tagName: string, attrs = {}, inner = ''): HTMLElement { const el = RuntimeGS.document.createElement(tagName); addAttrs(el, attrs); el.innerHTML = inner; return el; }\n\nexport function textToElement(text: string): Element | null {\n    return div({}, text).firstElementChild;\n}\n", "import { RuntimeEnvironmentGSEnum, RuntimeGS, RuntimeScopeGS } from '../core/app/RuntimeGS';\n\nconst langStorageKey = 'gs-lang';\nexport const DefaultLang = 'en';\nexport const ServerLanguageAttribute = 'data-gs-language';\n\nlet unscopedLanguage = DefaultLang;\n\nexport function getLang(): string {\n    const scope = RuntimeGS.current;\n    if (!scope) return unscopedLanguage;\n    if (!scope.language) scope.language = resolveScopeLanguage(scope);\n    return scope.language;\n}\n\n/** Set the language for the current browser or server request scope. */\nexport function setLang(lang: string): void {\n    const normalized = normalizeLang(lang);\n    const scope = RuntimeGS.current;\n    if (scope) {\n        scope.language = normalized;\n        if (scope.document) scope.document.documentElement.lang = normalized;\n        return;\n    }\n    unscopedLanguage = normalized;\n}\n\n/** Set and persist the browser language without attempting to mutate existing templates. */\nexport function setLangAndSave(lang: string): void {\n    const normalized = normalizeLang(lang);\n    setLang(normalized);\n    try { getStorage()?.setItem(langStorageKey, normalized); } catch { }\n}\n\n/** Persist a language and perform the full navigation required to rebuild layouts and pages. */\nexport function setLangAndReload(lang: string, url?: string): void {\n    setLangAndSave(lang);\n    const runtimeWindow = RuntimeGS.window;\n    if (!runtimeWindow) return;\n    if (url !== undefined) runtimeWindow.location.assign(url);\n    else runtimeWindow.location.reload();\n}\n\nexport function normalizeLang(lang: string): string {\n    const normalized = String(lang ?? '').trim().toLowerCase();\n    if (!normalized || !/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(normalized))\n        throw new Error(`Invalid language code '${lang}'.`);\n    return normalized;\n}\n\nfunction resolveScopeLanguage(scope: RuntimeScopeGS): string {\n    if (scope.environment !== RuntimeEnvironmentGSEnum.Browser) return unscopedLanguage;\n    const document = scope.document;\n    const candidates = [\n        document?.documentElement.getAttribute(ServerLanguageAttribute),\n        getSavedLanguage(),\n        document?.documentElement.lang,\n        unscopedLanguage\n    ];\n    for (const candidate of candidates) {\n        if (!candidate) continue;\n        try { return normalizeLang(candidate); } catch { }\n    }\n    return DefaultLang;\n}\n\nfunction getStorage(): Storage | undefined {\n    try {\n        return RuntimeGS.window?.localStorage;\n    } catch {\n        return undefined;\n    }\n}\n\nfunction getSavedLanguage(): string | null | undefined {\n    try {\n        return getStorage()?.getItem(langStorageKey);\n    } catch {\n        return undefined;\n    }\n}\n", "\uFEFFimport { WrapperGS } from \"./WrapperGS\";\r\nimport { RuntimeGS } from './app/RuntimeGS';\n\r\nexport class GS\r\n{\r\n    private _all:WrapperGS[];\r\n\r\n    public static Query(selector: any): GS { return new GS(selector); }\n\r\n    constructor(selector: any, inElement?: Element)\r\n    {\r\n        const type = typeof (selector);\r\n        this._all = [];\r\n\r\n        const tAll = this._all;\r\n        function savePush(e: any) { const wr = WrapperGS.Wrap(e); if (wr) tAll.push(wr); }\n        \r\n        switch (type) {\r\n            case 'string':\r\n                if (inElement) inElement.querySelectorAll(selector).forEach(e => savePush(e)); else\r\n                    RuntimeGS.document.querySelectorAll(selector).forEach(e => savePush(e));\n                break;\r\n            case 'object': savePush(selector); break;\r\n        }\r\n    }\r\n\r\n    get all() { return [...this._all];}\r\n    get first(): WrapperGS | undefined { return this._all[0] }\n    get last(): WrapperGS | undefined { return this._all[this._all.length-1]; }\n\r\n    forEach(callbackfn: (value: WrapperGS, index: number, array: WrapperGS[]) => void, thisArg?: any): void { this.all.forEach(callbackfn, thisArg); }\r\n    \r\n    text(value: string) { this.forEach(w => w.text = value) }    \r\n    html(value: string) { this.forEach(w => w.html = value) }\r\n\r\n    disable() { this.forEach(w => w.disable()); };\r\n    enable() { this.forEach(w => w.enable()); };\r\n    enableFlip() { this.forEach(w => w.enableFlip()); };\r\n    enableSet(value:boolean) { this.forEach(w => w.enableSet(value)); };\r\n\r\n    hide() { this.forEach(w => w.hide()); }\r\n    show() { this.forEach(w => w.show()); }\r\n    showFlip() { this.forEach(w => w.showFlip()); };\r\n    showSet(value:boolean) { this.forEach(w => w.showSet(value)); };\r\n\r\n    inactive() { this.forEach(w => w.inactive()); };\r\n    active() { this.forEach(w => w.active()); };\r\n    activeFlip() { this.forEach(w => w.activeFlip()); };\r\n    activeSet(value:boolean){ this.forEach(w => w.activeSet(value)); }\r\n\r\n    addClass(className: string) { this.forEach(i => i.addClass(className)); };\r\n    removeClass(className: string) { this.forEach(i => i.removeClass(className)); };\r\n\r\n    cut() { this.forEach(i => i.cut()); };\r\n}\r\n", "import { remove } from '../helpers/array';\nimport { hasProp, toType } from '../helpers/def';\nimport { div, tag } from '../helpers/html';\nimport { getLang } from '../helpers/localization';\nimport { Types } from './Enums';\nimport { GS } from './GS.js';\nimport { RuntimeGS } from './app/RuntimeGS';\nimport {\n    getTemplateConstructor,\n    registerTemplateConstructor,\n    templateMetadataGS,\n    tryGetTemplateElement,\n    unregisterTemplateConstructor\n} from './template/TemplateRegistryGS';\n\r\ninterface WrapperConstructor { new(...args: any[]): WrapperGS }\ninterface WrapperTagClassedConstructor { new(...args: any[]): WrapperGS; readonly TagClassName: string }\ninterface WrapperHTMLElementedConstructor { new(...args: any[]): WrapperGS; ForHTMLElement(el: HTMLElement): boolean }\ninterface WrapperDelegate { (wr: WrapperGS): void }\n\nfunction tryGetTemplateWrapper(name: string): WrapperGS<HTMLElement> | undefined {\n    const element = tryGetTemplateElement(name, WrapperGS.ClassNameTemplate);\n    return element ? WrapperGS.Wrap(element) as WrapperGS<HTMLElement> : undefined;\n}\n\nfunction getTemplateWrapper(name: string): WrapperGS<HTMLElement> {\n    const wrapper = tryGetTemplateWrapper(name);\n    if (!wrapper)\n        throw new Error(`Cannot find GS template '${name}'. Ensure its template pack is loaded.`);\n    return wrapper;\n}\n\nexport enum WrapperInitModeGSEnum {\n    Wrap,\n    CloneElement,\n    Adopt\n}\n\r\n/**Used for getting and setting data in FormsGS */\nexport interface Valued { value: any }\r\n/**Used for getting and setting data in FormsGS */\r\nexport interface WrapperValued extends WrapperGS, Valued {}\r\n/**Used for getting and setting data in FormsGS */\r\nexport interface WrapperAsyncValued extends WrapperGS {\r\n    setValueAsync(value: any): Promise<any>;\n    getValueAsync(): Promise<any>;\r\n}\r\nexport interface WrapperAsyncValidable extends WrapperGS {\r\n    validAsync(rule: string, ruleArgs: string): Promise<string | boolean>;\r\n}\r\nexport interface WrapperValidable extends WrapperGS {\r\n    valid(rule: string, ruleArgs: string): string | boolean;\r\n}\r\nexport class WrapperGS<T extends HTMLElement = HTMLElement> \n{\n    private static readonly _htmlNamespace = \"http://www.w3.org/1999/xhtml\";\n\n    public static ClassNameTemplate = \"tmpl\";\n\r\n    public static AttrGSTargetShow = \"target-show\";\r\n    public static AttrGSTargetActive = \"target-active\";\r\n\r\n    public static readonly ClassNameHide = \"d-none\";\r\n    public static readonly ClassNameActive = \"active\";\r\n    public static readonly ClassNameDisabled = \"disabled\";\r\n\r\n    public static ToValued(wr: WrapperGS): WrapperValued | undefined {\n        if (!hasProp(wr, \"value\", Types.NotFunction)) return undefined;\n        return wr as WrapperValued;            \r\n    }\r\n    public static ToAsyncValued(wr: WrapperGS): WrapperAsyncValued | undefined {\n        if (!hasProp(wr, \"setValueAsync\", Types.Function)) return undefined;\n        if (!hasProp(wr, \"getValueAsync\", Types.Function)) return undefined;\n        return wr as WrapperAsyncValued;\r\n    }\r\n    public static ToValidable(wr: WrapperGS): WrapperValidable | undefined {\n        if (!hasProp(wr, \"valid\", Types.Function)) return undefined;\n        return wr as WrapperValidable;\r\n    }\r\n    public static ToAsyncValidable(wr: WrapperGS): WrapperAsyncValidable | undefined {\n        if (!hasProp(wr, \"validAsync\", Types.Function)) return undefined;\n        return wr as WrapperAsyncValidable;\r\n    }\r\n\r\n   \r\n\r\n    public static InjectComponents(component: WrapperConstructor, fullNameForTmplFile: string): void {\n        registerTemplateConstructor(fullNameForTmplFile, component);\n    }\n    public static ReInjectComponents(fullNameForTmplFile: string): void {\n        unregisterTemplateConstructor(fullNameForTmplFile);\n    }\n    public static GetInjectedComponentConstructor(fullNameForTmplFile: string): WrapperConstructor | undefined {\n        return getTemplateConstructor<WrapperGS>(fullNameForTmplFile) as WrapperConstructor | undefined;\n    }\r\n\r\n    private static _ExtendComponentsByTagClass: Map<string, WrapperTagClassedConstructor> = new Map<string, WrapperTagClassedConstructor>();\r\n    public static ExtendComponentsByTagClass(component: WrapperTagClassedConstructor) {\r\n        const lib = WrapperGS._ExtendComponentsByTagClass;\r\n        if (!lib.has(component.TagClassName)){lib.set(component.TagClassName, component); return;}\r\n        if (lib.get(component.TagClassName)!=component)\r\n            throw new Error(`Component TagClass '${component.TagClassName}' is duplicated.`);\n    }\r\n\r\n    /**Return all tagClasses which extends components */\r\n    public static GetExtendComponentsTagClasses(): string[] { return [...WrapperGS._ExtendComponentsByTagClass.keys()]; }     \r\n    private static _ExtendComponentsByHTMLElement: WrapperHTMLElementedConstructor[] = [];\n    public static ExtendComponentsByHTMLElement(...components: WrapperHTMLElementedConstructor[]) {\n        for (const component of components)\n            if (!WrapperGS._ExtendComponentsByHTMLElement.includes(component))\n                WrapperGS._ExtendComponentsByHTMLElement.push(component);\n    }\n    public static ReduceComponentsByHTMLElement(component: WrapperHTMLElementedConstructor) {\r\n        remove(WrapperGS._ExtendComponentsByHTMLElement, component);\n    }\r\n\r\n\r\n    private static _ImplementWrapperByGSA: Map<string, WrapperDelegate> = new Map<string, WrapperDelegate>();\r\n    /**\r\n     * Call linked function for each wrapper who has specific dataArg\r\n     * @param dataArg\r\n     * @param func (wr:Wrapper affected, rootWr:Wrapper of template)\r\n     */\r\n    public static ImplementWrapperByGSA(gsa: string, func: WrapperDelegate) {\r\n        WrapperGS._ImplementWrapperByGSA.set(gsa, func);\r\n    }   \r\n\r\n    private static _ImplementWrapperByClassArg: Map<string, WrapperDelegate> = new Map<string, WrapperDelegate>();\r\n    /**\r\n     * Call linked function for each wrapper who has specific dataArg\r\n     * @param dataArg\r\n     * @param func (wr:Wrapper affected, rootWr:Wrapper of template)\r\n     */\r\n    public static ImplementWrapperByClassArg(classArg: string, func: WrapperDelegate) {\r\n        WrapperGS._ImplementWrapperByClassArg.set(classArg, func);\r\n    }   \r\n\r\n    public static get NameOfInstInPropOfEl() { return 'z_gswrapper_inst'; }\n    public static IsWrapper(el: unknown): el is WrapperGS { return el instanceof WrapperGS }\n\n    private static isHTMLElement(el: unknown): el is HTMLElement {\n        if (!el || (el as Node).nodeType !== 1) return false;\n        const element = el as Element;\n        const htmlElementConstructor = element.ownerDocument?.defaultView?.HTMLElement;\n        if (htmlElementConstructor) return element instanceof htmlElementConstructor;\n        return !element.namespaceURI || element.namespaceURI === WrapperGS._htmlNamespace;\n    }\n\r\n    /**\r\n     * Wrap element in WrapperGs\r\n     * \u041F\u0440\u043E\u0438\u0441\u0445\u043E\u0434\u0438\u0442 \u0432\u043E\u043A\u0440\u0443\u0433 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044E\u0449\u0435\u0433\u043E \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u043C\u044B \u043C\u043E\u0436\u0435\u043C \u0438\u043D\u0436\u0435\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0434\u0440\u0443\u0433\u0438\u0435 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u044B \u0432 \u043E\u0442\u043B\u0438\u0447\u0438\u0438 \u043E\u0442 \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440\u0430\r\n     * \u0413\u0434\u0435 \u0438\u043D\u0436\u0435\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043D\u0435\u043B\u044C\u0437\u044F \u043A\u0440\u043E\u043C\u0435 \u043A\u0430\u043A \u0447\u0435\u0440\u0435\u0437 \u043D\u0430\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043D\u0438\u0435\r\n     * @param el\n     */\n    public static Wrap(el: WrapperGS): WrapperGS;\n    public static Wrap(el: HTMLElement): WrapperGS;\n    public static Wrap(el: unknown): WrapperGS | undefined;\n    public static Wrap(el: unknown): WrapperGS | undefined {\n        if (!el) return undefined;\n        if (WrapperGS.IsWrapper(el)) return el;\n        if (!WrapperGS.isHTMLElement(el)) return undefined;\n        const cached = (el as any)[WrapperGS.NameOfInstInPropOfEl] as WrapperGS | undefined;\n        if (cached) return cached;\n\n        const htmlEl = el;\n        //wrapping extendsByTagClass\n        for (const key of WrapperGS._ExtendComponentsByTagClass.keys())\r\n            if (htmlEl.classList.contains(key)) {\n                const c = WrapperGS._ExtendComponentsByTagClass.get(key);\n                if (c) return new c(htmlEl);\n            }\n        //wrapping extendsByHTMLElementValidationFunc\r\n        for (const c of WrapperGS._ExtendComponentsByHTMLElement)\r\n            if (c.ForHTMLElement(htmlEl)) return new c(htmlEl);  \r\n        return new WrapperGS(htmlEl);\n    }\r\n\r\n\r\n    protected _controls?: Map<string, WrapperGS>;\r\n    public getControl(name:string): WrapperGS | undefined {\n        if (!this._controls) return undefined;\r\n        return this._controls.get(name);\r\n    }\r\n\r\n    public readonly el: T;\n\r\n    constructor(elOrTmplName: T|string, mode: boolean | WrapperInitModeGSEnum = WrapperInitModeGSEnum.Wrap)\n    {\n        let tmplWr: WrapperGS | undefined;\n        let resolvedElement: T | undefined;\n        const cloneElement = mode === true || mode === WrapperInitModeGSEnum.CloneElement;\n        const explicitAdoption = mode === WrapperInitModeGSEnum.Adopt;\n        let adopt = explicitAdoption;\n        //getting template wrapper\n        if (typeof elOrTmplName === 'string') {\n            tmplWr = getTemplateWrapper(elOrTmplName);\n        } else if (cloneElement) {\n            tmplWr = WrapperGS.Wrap(elOrTmplName);\n        } else {\n            resolvedElement = elOrTmplName;\n            adopt = adopt || (\n                new.target !== WrapperGS\n                && !!resolvedElement.getAttribute('gs-' + templateMetadataGS.templateName)\n            );\n        }\n        //if there is tmpl\r\n        if (tmplWr)\r\n        {\r\n            //getting template tag arguments\r\n            const attrsMap = tmplWr.getAttrsObj();\r\n            if (attrsMap.has('id')) attrsMap.delete('id');\r\n            const attrs: Record<string, string> = {};\n            for (const [key, value] of attrsMap) attrs[key] = value;\n    \r\n            //getting target tag\n            let tagName = tmplWr.el.tagName.toLowerCase();\r\n            const needSetTag = tmplWr.getGSA(templateMetadataGS.templateTag);\n            if (needSetTag) tagName = needSetTag;\r\n    \r\n            //creating new Element\r\n            if (tagName === \"template\") resolvedElement = div(attrs, tmplWr.html) as unknown as T;\n            else resolvedElement = tag(tagName, attrs, tmplWr.html) as unknown as T;\n        }\n\n        if (!resolvedElement) throw new Error(\"WrapperGS could not resolve an element.\");\n        if (!WrapperGS.isHTMLElement(resolvedElement))\n            throw new Error(\"WrapperGS supports HTMLElement instances only.\");\n        this.el = resolvedElement;\n\n        const cached = (this.el as any)[WrapperGS.NameOfInstInPropOfEl] as WrapperGS | undefined;\n        if (cached) {\n            const requestedConstructor = new.target as unknown as Function;\n            if (requestedConstructor.prototype.isPrototypeOf(cached)) return cached as any;\n            const cachedName = cached.constructor.name || \"unknown wrapper\";\n            const requestedName = requestedConstructor.name || \"unknown wrapper\";\n            throw new Error(`Element is already wrapped by '${cachedName}' and cannot be wrapped by '${requestedName}'.`);\n        }\n        (this.el as any)[WrapperGS.NameOfInstInPropOfEl] = this;\n\r\n        if (tmplWr) this._fillTmpl(false);\n        else if (adopt) this._fillTmpl(true);\n\r\n        ///Processing extends initDataArgs\r\n        for (const key of WrapperGS._ImplementWrapperByGSA.keys()) {\n            if (!this.getGSA(key)) continue;\n            WrapperGS._ImplementWrapperByGSA.get(key)?.(this);\n        }\r\n        \r\n        ///Processing extends initClassArgs\r\n        this.el.classList.forEach((cl) => {\n            if (!cl) return;\n            WrapperGS._ImplementWrapperByClassArg.get(cl)?.(this);\n        });\n    }    \n\r\n    private _fillTmpl(adopt: boolean)\n    {\n        if (adopt) {\n            this._adoptTmpl();\n            return;\n        }\n\n        const rootWr = this;\n        this._controls = new Map<string, WrapperGS>()\r\n        const rootCtrls = this._controls;\r\n        const lang = getLang();\n        const locArg = \"loc-\"+lang;\r\n        const locPlaceholderArg = \"loc-placeholder-\"+lang;\r\n\r\n        /**Fill element */\r\n        const fillData = (wr: WrapperGS) =>\r\n        {\r\n            //If it's top-level template, remove it\r\n            if (wr.el.tagName.toLowerCase() === \"template\") { wr.cut(); return; }\r\n\r\n            const hasInjection = wr.el.hasAttribute('gs-ins');\n            const gs_ins = wr.getGSA(\"ins\").trim();\n            if (hasInjection) {\n                if (!gs_ins) {\n                    const owner = rootWr.getGSA(templateMetadataGS.templateName)\n                        || rootWr.constructor.name\n                        || 'unknown';\n                    throw new Error(`Required gs-ins in template '${owner}' must name a component or template.`);\n                }\n                const insConstructor = WrapperGS.GetInjectedComponentConstructor(gs_ins);\n                let injected: WrapperGS;\n                if (insConstructor) {\n                    injected = new insConstructor();\n                } else {\n                    const template = tryGetTemplateWrapper(gs_ins);\n                    if (!template) {\n                        const owner = rootWr.getGSA(templateMetadataGS.templateName)\n                            || rootWr.constructor.name\n                            || 'unknown';\n                        throw new Error(\n                            `Required gs-ins '${gs_ins}' in template '${owner}' cannot be resolved. `\n                            + 'Register its component constructor or include its template in the loaded GS template pack.'\n                        );\n                    }\n                    injected = new WrapperGS(template.el, WrapperInitModeGSEnum.CloneElement);\n                }\n\n                wr.getAttrsObj().forEach((v,k)=>{if(k.toLowerCase()==\"class\") return; injected.attr(k,v)});\n                wr.el.classList.forEach((cl)=>injected.addClass(cl));\n                wr.replace(injected);\n\n                //Text injection\n                const txts = wr.q('text').all;\n                //Text injection with deep ctrls like cmp1CtrlPage.cmp2CtrlBlock.cmp3CtrlText\n                for(const txt of txts)\n                {\n                    const target = injected._searchGSTarget(txt.attr(templateMetadataGS.controlName));\n                    if (target) target.text = txt.text;\n                }\n                //Text injection\n                const attrs = wr.q('attr').all;\n                //Text injection with deep ctrls like cmp1CtrlPage.cmp2CtrlBlock.cmp3CtrlText\n                for(const attr of attrs)\n                {\n                    const target = injected._searchGSTarget(attr.attr(templateMetadataGS.controlName));\n                    if (!target) continue;\n                    const attrName = attr.attr(\"name\");\n                    if (!attrName) continue;\n                    target.attr(attrName, attr.html);\n                }\n\n                injected.removeGSA(\"ins\");\n                injected.setGSA(\"ins-ed\", gs_ins);\n                fillData(injected);\n                return;\n            }\r\n\r\n            let controlName: string | undefined = wr.getGSA(templateMetadataGS.controlName);\n            if (wr === rootWr) controlName = undefined; //\u041A\u043E\u043D\u0442\u0440\u043E\u043B\u044C \u043D\u0430 \u0441\u0430\u043C \u0448\u0430\u0431\u043B\u043E\u043D \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u0432\u043E \u0432\u043B\u043E\u0436\u0435\u043D\u043D\u043E\u0441\u0442\u0438, \u0430 \u0437\u043D\u0430\u0447\u0438\u0442 \u043D\u0430 root \u043E\u0431\u044A\u0435\u043A\u0442\u0435 \u0435\u0433\u043E \u0431\u044B\u0442\u044C \u043D\u0435 \u043C\u043E\u0436\u0435\u0442\r\n            if (controlName) rootCtrls.set(controlName, wr);                        \r\n\r\n            //Check - is it template\r\n            const tmplName = wr.getGSA(templateMetadataGS.templateName);\n            if (tmplName && !wr.getGSA('ins-ed'))\n                //It's nested template\n                if (rootWr !== wr) {\n                    const constructFunc = getTemplateConstructor<WrapperGS>(tmplName) as WrapperConstructor | undefined;\n                    if (!constructFunc) return;\r\n                    const newW = new constructFunc();\n                    wr.replace(newW);\r\n                    if (controlName) {\r\n                        rootCtrls.delete(controlName);\r\n                        rootCtrls.set(controlName, newW);\r\n                    }\r\n                    return;\r\n                }\r\n            \r\n            //\u041B\u043E\u043A\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F\r\n            const locText = wr.getGSA(locArg);\r\n            if (locText) wr.text=locText;\r\n            const locPlaceholder = wr.getGSA(locPlaceholderArg);\r\n            if (locPlaceholder) (wr.el as any).placeholder=locPlaceholder;\r\n\r\n            //\u0420\u0435\u043A\u0443\u0440\u0441\u0438\u0432\u043D\u044B\u0439 \u043E\u0431\u0445\u043E\u0434 \u0434\u043B\u044F \u043D\u0435 \u0432\u043B\u043E\u0436\u0435\u043D\u043D\u044B\u0445 \u0448\u0430\u0431\u043B\u043E\u043D\u043E\u0432\r\n            wr.getChildren().map(fillData);        \r\n        };        \r\n        rootWr.q('*'); //\u043F\u0440\u0435\u043E\u0431\u0435\u0440\u0442\u043A\u0430, \u0447\u0442\u043E\u0431\u044B \u0431\u044B\u043B\u0430 \u043F\u043E\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u043D\u0430\u044F \u0438\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F\r\n        fillData(rootWr);\r\n        rootWr.q('template').cut();\n    }\n\n    private _adoptTmpl(): void {\n        const rootCtrls = new Map<string, WrapperGS>();\n        this._controls = rootCtrls;\n\n        const visit = (element: Element): void => {\n            const controlName = element.getAttribute('gs-' + templateMetadataGS.controlName) || '';\n            const injectedName = element.getAttribute('gs-ins-ed') || '';\n            const templateName = element.getAttribute('gs-' + templateMetadataGS.templateName) || '';\n            const nestedName = injectedName || templateName;\n\n            if (nestedName) {\n                const constructor = WrapperGS.GetInjectedComponentConstructor(nestedName);\n                if (constructor) {\n                    const nested = new constructor(element as HTMLElement);\n                    if (nested.el !== element)\n                        throw new Error(`Template '${nestedName}' cannot adopt its existing element.`);\n                    if (controlName) rootCtrls.set(controlName, nested);\n                    return;\n                }\n            }\n\n            const wrapper = WrapperGS.Wrap(element);\n            if (!wrapper) return;\n            if (controlName) rootCtrls.set(controlName, wrapper);\n            Array.from(element.children).forEach(child => visit(child));\n        };\n\n        Array.from(this.el.children).forEach(child => visit(child));\n    }\n\r\n\r\n    q(selector: any) { return new GS(selector, this.el); }\r\n    hasClass(className: string) { return this.el.classList?.contains(className) ?? false; }    \r\n    addClass(className: string) { if (!this.el.classList) return; if (!this.hasClass(className)) this.el.classList.add(className); }\r\n    addClasses(classesNames: string[]) { for (const c of classesNames) this.addClass(c); }    \r\n    removeClass(className: string) { if (!this.el.classList) return; if (this.hasClass(className)) this.el.classList.remove(className); }    \r\n    flipClass(className: string) { if (!this.el.classList) return; if (this.hasClass(className)) this.removeClass(className); else this.addClass(className); }\r\n\r\n    private getElement(el: WrapperGS | Element): Element {\r\n        if (WrapperGS.IsWrapper(el)) return (el as WrapperGS).el; else return el as Element;\r\n    }\r\n\r\n    /**Add after this wrapper*/\r\n    after(el: WrapperGS | Element) { this.el.after(this.getElement(el)); }\r\n    /**Add before this wrapper*/\r\n    before(el: WrapperGS | Element) { this.el.before(this.getElement(el)); }\r\n    /**Add to start of childrens*/\r\n    prepend(el: WrapperGS | Element) { this.el.prepend(this.getElement(el)); }\r\n    /**Add to end of childrens*/\r\n    append(el: WrapperGS | Element) { this.el.append(this.getElement(el)); }\r\n    /**Remove this wrapper */\r\n    cut() { this.el.remove(); }\r\n    /**\r\n     * Replace this wrapper by another\r\n     * @param {WrapperGS} w \r\n     */\r\n    replace(by: WrapperGS | Element)\r\n    {\r\n        if (this.el.parentElement === null) return;\r\n        const el = this.getElement(by);\r\n        this.before(el);\r\n        this.cut();        \r\n    };\r\n\r\n    get isEnabled() { return !this.hasClass(WrapperGS.ClassNameDisabled); }\r\n    disable() { (this.el as any)[WrapperGS.ClassNameDisabled] = true; this.addClass(WrapperGS.ClassNameDisabled); };\n    enable() { (this.el as any)[WrapperGS.ClassNameDisabled] = false; this.removeClass(WrapperGS.ClassNameDisabled); };\n    enableFlip() { this.isEnabled ? this.disable() : this.enable(); };\r\n    enableSet(value:boolean) { value ? this.enable() : this.disable(); };\r\n   \r\n    get isShowed() { return !this.hasClass(WrapperGS.ClassNameHide); }\r\n    hide() { this.addClass(WrapperGS.ClassNameHide); };\r\n    show() { this.removeClass(WrapperGS.ClassNameHide); };\r\n    showFlip() { this.isShowed ? this.hide() : this.show(); };\r\n    showSet(value:boolean) { value ? this.show() : this.hide(); };\r\n\r\n    get isActive() { return this.hasClass(WrapperGS.ClassNameActive); }\r\n    inactive() {this.removeClass(WrapperGS.ClassNameActive);this._actionOnTarget(false);};\r\n    active() { this.addClass(WrapperGS.ClassNameActive);this._actionOnTarget(true);};\r\n    activeFlip() { this.isActive ? this.inactive() : this.active(); };\r\n    activeSet(value:boolean){ value ? this.active() : this.inactive(); }\r\n\r\n    //\u043F\u043E\u0438\u0441\u043A \u0431\u043B\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043E \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u0430 \u043F\u043E \u043F\u043E\u0434\u044A\u0435\u043C\u0443 \u0432\u0432\u0435\u0440\u0445 \u0430 \u043F\u043E\u0442\u043E\u043C \u0432 \u0433\u043B\u0443\u0431\u044C \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430\r\n    private _searchGSTarget(gsTargetQuery: string | null | undefined): WrapperGS | undefined\n    {\r\n        if (!gsTargetQuery) return undefined;\n        const stepsNames = gsTargetQuery.split('.');\n        const firstStepName = stepsNames[0];\n        if (!firstStepName) return undefined;\n        //Search Up from down\n        let wrStep: WrapperGS | undefined = this;\n        while(true)\n        {\n            const target = wrStep.getControl(firstStepName);\n            if (target) {wrStep = target; break;}\n            if (!wrStep.el.parentElement) {wrStep = undefined; break;}\n            wrStep = WrapperGS.Wrap(wrStep.el.parentElement);\n        }\n        if (!wrStep) return undefined;\n        //Search deep in\n        for(let i=1; i<stepsNames.length;i++)\n        {\n            const ctrlName = stepsNames[i];\n            if (!ctrlName) return undefined;\n            wrStep = wrStep.getControl(ctrlName);\n            if (!wrStep) return undefined;\n        }\r\n        return wrStep;\r\n    }\r\n    //\u041F\u043E\u0432\u0435\u0440\u043A\u0430 \u0438 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043F\u043E \u0446\u0435\u043B\u0438\r\n    private _actionOnTarget(value:boolean)\n    {\n        const targetShow = this._searchGSTarget(this.getGSA(WrapperGS.AttrGSTargetShow));\n        if (targetShow) targetShow.showSet(value);\n        const targetActive = this._searchGSTarget(this.getGSA(WrapperGS.AttrGSTargetActive));\n        if (targetActive) targetActive.activeSet(value);\n    }\n\r\n    scrollTo()\r\n    {\r\n        let e: HTMLElement | undefined = this.el, posX = 0, posY = 0;\n        while (e) { posX += e.offsetLeft; posY += e.offsetTop; e = toType(e.offsetParent, HTMLElement); }\n        RuntimeGS.window?.scrollTo(posX, posY);\n    };     \r\n\r\n    get text(): string { return this.el.innerText; }\n    set text(value: string) {\n        try {\n            this.el.innerText = value;\n        } catch {\n            // Server DOM implementations may expose innerText as read-only.\n            this.el.textContent = value;\n        }\n    }\n\r\n    get html(): string { return this.el.innerHTML; }    \r\n    set html(value: string) { this.el.innerHTML = value; }\r\n\r\n    attr(name: string): string | null;\n    attr(name: string, value: string | null): void;\n    attr(name: string, value?: string | null): string | null | void {\n        if (value === undefined) return this.el.getAttribute(name);\n        if (value === null) this.el.removeAttribute(name);\n        else this.el.setAttribute(name, value);\n    }\r\n\r\n    attrRemove(name: string) { this.attr(name,null) }\r\n\r\n    /**\r\n     * Return obj this attrs\r\n     * */\r\n    getAttrsObj(): Map<string, string>\r\n    {\r\n        const map: Map<string, string> = new Map();\r\n        for (const attribute of Array.from(this.el.attributes))\n            map.set(attribute.name, attribute.value);\n        return map;\r\n    }\r\n\r\n    getData(name: string) { const d = this.attr('data-' + name); if (!d) return ''; else return d; }    \r\n    removeData(name: string) { this.attr('data-' + name, null); }    \r\n    setData(name: string, value: string) { this.attr('data-' + name, value); }\r\n\r\n    getGSA(name: string) { const d = this.attr('gs-' + name); if (!d) return ''; else return d; }\r\n    removeGSA(name: string) { this.attr('gs-' + name, null); }\r\n    setGSA(name: string, value: string) { this.attr('gs-' + name, value); }\r\n\r\n    /**Get children without deep */\r\n    getChildren(): WrapperGS[] {\r\n\r\n        const list: WrapperGS[] = [];\n        this.el.childNodes.forEach(e => {\r\n            const wr = WrapperGS.Wrap(e);\n            if (wr) list.push(wr);\r\n        });\r\n        return list;\r\n    }\r\n    /**Get all children include children of children*/\r\n    getAllChildren(): WrapperGS[]\r\n    {\r\n        \r\n        const list: WrapperGS[] = [];\n        function searchChildren(el: Node)\n        {\r\n            el.childNodes.forEach(e =>\r\n            {\r\n                const wr = WrapperGS.Wrap(e);\n                if (wr) list.push(wr);\r\n                searchChildren(e);                \r\n            });    \r\n        }\r\n        searchChildren(this.el);        \r\n        return list;        \r\n    }\r\n    set onclick(value: ((this: GlobalEventHandlers, ev: MouseEvent) => any)) { this.el.onclick = value; }\r\n}\r\n\r\n\r\nWrapperGS.ImplementWrapperByGSA('set_src_after', (wr) => {\n    if (wr.el.tagName.toLowerCase() === 'img')\n        (wr.el as HTMLImageElement).src = wr.getGSA('set_src_after');\n});\n\r\nWrapperGS.ImplementWrapperByGSA('scroll_after_focusin', (wr) => {\r\n    const scrollHandler = function (e: Event){\n        const el = e.target as Element;\n        if (el?.scrollIntoView) el.scrollIntoView();\n    }    \r\n    wr.el.addEventListener('focusin', scrollHandler);\r\n});\n", "import { RuntimeGS } from './app/RuntimeGS';\nimport {\n    clearTemplateDocumentCache,\n    getTemplateBuildId,\n    getTemplateConstructor,\n    registerTemplateConstructor,\n    registerTemplatePack,\n    templateMetadataGS,\n    tryGetTemplateElement,\n    unregisterTemplateConstructor\n} from './template/TemplateRegistryGS';\nimport { WrapperGS } from './WrapperGS';\n\ninterface TemplateGSConstructor {\n    new(existingElement?: HTMLElement): WrapperGS;\n}\n\n/**\n * A generated template can either create a fresh tree by name or adopt an\n * existing server-rendered root element.\n */\nexport class TemplateGS extends WrapperGS {\n    public static get TagGSATemplateName(): string { return templateMetadataGS.templateName; }\n    public static set TagGSATemplateName(value: string) { templateMetadataGS.templateName = value; }\n\n    public static get TagGSATemplateTag(): string { return templateMetadataGS.templateTag; }\n    public static set TagGSATemplateTag(value: string) { templateMetadataGS.templateTag = value; }\n\n    public static get AttrGSControlName(): string { return templateMetadataGS.controlName; }\n    public static set AttrGSControlName(value: string) { templateMetadataGS.controlName = value; }\n\n    constructor(nameOrElement: string | HTMLElement) {\n        super(nameOrElement);\n    }\n\n    /** @internal */\n    public static RegisterConstructor(name: string, constructor: TemplateGSConstructor): void {\n        registerTemplateConstructor(name, constructor);\n    }\n\n    /** @internal */\n    public static UnregisterConstructor(name: string): void {\n        unregisterTemplateConstructor(name);\n    }\n\n    /** @internal */\n    public static GetConstructor(name: string): TemplateGSConstructor | undefined {\n        return getTemplateConstructor<WrapperGS>(name) as TemplateGSConstructor | undefined;\n    }\n\n    public static RegisterPack(\n        html: string,\n        buildId?: string,\n        targetDocument: Document = RuntimeGS.document\n    ): void {\n        registerTemplatePack(html, buildId, targetDocument);\n    }\n\n    public static async LoadPack(\n        url: string,\n        buildId?: string,\n        fetcher: typeof fetch = fetch,\n        targetDocument: Document = RuntimeGS.document\n    ): Promise<void> {\n        const response = await fetcher(url);\n        if (!response.ok) throw new Error(`Cannot load GS template pack '${url}': HTTP ${response.status}.`);\n        TemplateGS.RegisterPack(await response.text(), buildId, targetDocument);\n    }\n\n    public static async LoadPackFromDocument(\n        fetcher: typeof fetch = fetch,\n        targetDocument: Document = RuntimeGS.document\n    ): Promise<boolean> {\n        const metadata = targetDocument.querySelector('meta[name=\"gs-template-pack\"]') as HTMLMetaElement | null;\n        if (!metadata?.content) return false;\n        const build = targetDocument.querySelector('meta[name=\"gs-build\"]') as HTMLMetaElement | null;\n        await TemplateGS.LoadPack(metadata.content, build?.content, fetcher, targetDocument);\n        return true;\n    }\n\n    public static GetBuildId(targetDocument: Document = RuntimeGS.document): string | undefined {\n        return getTemplateBuildId(targetDocument);\n    }\n\n    public static ClearDocumentCache(targetDocument: Document = RuntimeGS.document): void {\n        clearTemplateDocumentCache(targetDocument);\n    }\n\n    public static GetTmpl(tmplName: string): WrapperGS<HTMLElement> {\n        const wrapper = TemplateGS.TryGetTmpl(tmplName);\n        if (!wrapper)\n            throw new Error(`Cannot find GS template '${tmplName}'. Ensure its template pack is loaded.`);\n        return wrapper;\n    }\n\n    /** @internal */\n    public static TryGetTmpl(tmplName: string): WrapperGS<HTMLElement> | undefined {\n        const element = tryGetTemplateElement(tmplName, WrapperGS.ClassNameTemplate);\n        return element ? WrapperGS.Wrap(element) as WrapperGS<HTMLElement> : undefined;\n    }\n}\n", "\uFEFFimport * as htmlImport from './html';\r\nimport * as generatorsImport from './generators';\r\nimport * as defImport from './def';\r\nimport * as eventsImport from './events';\r\nimport * as dateImport from './date';\r\nimport * as webImport from './web';\r\nimport * as enumsImport from './enums';\r\nimport * as validationImport from './validation';\r\nimport * as localizationImport from './localization';\r\nimport * as blobImport from './blob';\r\nimport * as imgImport from './img';\r\nimport * as textImport from './text';\r\nimport * as cryptImport from './crypt';\r\nimport * as filesImport from './files';\r\nimport * as arrayImport from './array';\n\nexport type { ImageOutputMimeType, ImageResizeOptions } from './img';\n\r\nexport const html = htmlImport;\r\nexport const generators = generatorsImport;\r\nexport const web = webImport;\r\nexport const def = defImport;\r\nexport const files = filesImport;\r\nexport const events = eventsImport;\r\nexport const date = dateImport;\r\nexport const blob = blobImport;\r\nexport const img = imgImport;\r\nexport const enums = enumsImport;\r\nexport const text = textImport;\r\nexport const crypt = cryptImport;\r\nexport const array = arrayImport;\r\nexport const validation = validationImport;\r\nexport const localization = localizationImport;\n", "const passwordAlphabet = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz23456789';\nconst hexAlphabet = '0123456789abcdef';\n\n/** Create a cryptographically secure, visually unambiguous password. */\nexport function createPassword(size = 16): string {\n    return createSecureString(size, passwordAlphabet);\n}\n\n/** Create a cryptographically secure lowercase hexadecimal string. */\nexport function createHexString(size = 32): string {\n    return createSecureString(size, hexAlphabet);\n}\n\nfunction createSecureString(size: number, alphabet: string): string {\n    if (!Number.isInteger(size) || size < 0)\n        throw new Error('Secure string size must be a non-negative integer.');\n    const secureCrypto = globalThis.crypto;\n    if (!secureCrypto?.getRandomValues)\n        throw new Error('Secure random generation requires crypto.getRandomValues.');\n\n    const limit = 0x1_0000_0000 - (0x1_0000_0000 % alphabet.length);\n    let result = '';\n    while (result.length < size) {\n        const values = new Uint32Array(Math.min(size - result.length, 256));\n        secureCrypto.getRandomValues(values);\n        for (const value of values) {\n            if (value >= limit) continue;\n            result += alphabet[value % alphabet.length];\n        }\n    }\n    return result;\n}\n", "\uFEFFexport function stop(e: Event) {\r\n    e.preventDefault(); e.stopPropagation();\r\n};  \r\n", "\uFEFF\r\nconst daysBeforeMonth = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334] as const;\n\nfunction addZero(value: number) { if (value < 10) return \"0\" + value; return \"\" + value; }\n\r\n\r\nexport function getDayOfYear(data: Date): number\n{\n    const year = data.getFullYear();\n    const month = data.getMonth();\n    const day = data.getDate();\n    const elapsedBeforeMonth = daysBeforeMonth[month];\n    if (elapsedBeforeMonth === undefined || !Number.isFinite(year) || !Number.isFinite(day))\n        return Number.NaN;\n    const leapDay = month > 1 && isLeapYear(year) ? 1 : 0;\n    return elapsedBeforeMonth + day + leapDay;\n}\n\nfunction isLeapYear(year: number): boolean {\n    return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\r\nexport function getShortTime(date: Date) \r\n    {\r\n    if (!date) return \"---\";\r\n    return addZero(date.getDate()) + '.' + addZero(date.getMonth() + 1) + '.' + addZero(date.getFullYear()) + ' ' + addZero(date.getHours()) + ':' + addZero(date.getMinutes());\r\n    }\r\n\r\n/**\r\n* \u0412\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u0430\u0442\u0443 \u0441 \u043F\u0440\u0435\u043F\u0438\u0441\u043A\u043E\u0439, \u0441\u0435\u0433\u043E\u0434\u043D\u044F-\u0432\u0447\u0435\u0440\u0430\r\n* @returns {string}\r\n* @param {Date} date\r\n*/\r\nexport function getNamedTime(date: Date) \r\n{\r\n    if (!date) return \"---\";\r\n    const now = new Date();\r\n    if (date.getFullYear()!==now.getFullYear())\r\n        return addZero(date.getDate()) + '.' + addZero(date.getMonth()+1) + '.' + addZero(date.getFullYear()) + ' ' + addZero(date.getHours()) + ':' + addZero(date.getMinutes());\r\n    const nowDays = getDayOfYear(now);\n    const dateDays = getDayOfYear(date);\n\r\n    const delta = nowDays-dateDays;        \r\n    switch (delta)\r\n    {\r\n        case 0:\r\n            return '\u0441\u0435\u0433\u043E\u0434\u043D\u044F ' + addZero(date.getHours()) + ':' + addZero(date.getMinutes());        \r\n        case 1:\r\n            return '\u0432\u0447\u0435\u0440\u0430 ' + addZero(date.getHours()) + ':' + addZero(date.getMinutes());        \r\n        case 2:\r\n            return '\u043F\u043E\u0437\u0430\u0432\u0447\u0435\u0440\u0430 ' + addZero(date.getHours()) + ':' + addZero(date.getMinutes());        \r\n    }        \r\n    return addZero(date.getDate()) + '.' + addZero(date.getMonth()+1) + '.' + addZero(date.getFullYear()) + ' ' + addZero(date.getHours()) + ':' + addZero(date.getMinutes());\r\n}\r\n\r\n/**\r\n* @returns {string}\r\n* @param {Date} date\r\n*/\r\nexport function getDate(date: Date) \r\n{        \r\n    return addZero(date.getDate()) + '.' + addZero(date.getMonth()+1) + '.' + addZero(date.getFullYear());\r\n}\r\n\r\n/**\r\n* @returns {string}\r\n* @param {Date} date\r\n*/\r\nexport function getTime(date: Date) \r\n{        \r\n    return addZero(date.getHours()) + ':' + addZero(date.getMinutes());\r\n}\r\n\r\n/**\r\n* @returns {Date}\r\n* */\r\nexport function getNow()\r\n{\r\n    return new Date();\r\n}\r\n\r\n", "\uFEFF\nimport { parseUrlArgsGS } from '../core/state/UrlParserGS';\n\ninterface ArgsDictionary {\n    [name: string]: string;\r\n}\r\n\r\n\r\nexport function redirect(url: string) { window.location.href = url; };\r\nexport function changeUrl(url: string, state: object = {}, title = '') { window.history.replaceState(state, title, url); };\r\n\r\nexport function parseUrlArgs(urlString: string): ArgsDictionary {\n    try {\n        return parseUrlArgsGS(urlString);\n    } catch {\n        throw new URIError('Cannot parse URL arguments: the URL or its path encoding is malformed.');\n    }\n}\n\r\nexport function getUrlArgs(): ArgsDictionary { return parseUrlArgs(window.location.href); }\r\n\r\nexport function getCookie(name: string): string | undefined\n{\r\n    const matches = document.cookie.match(new RegExp(\r\n        \"(?:^|; )\" + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + \"=([^;]*)\"\r\n    ));\r\n    const value = matches?.[1];\n    return value === undefined ? undefined : decodeURIComponent(value);\n}\r\n\r\nexport function setCookie(name: string, value: string, options: any = {})\r\n{\r\n\r\n    let cacheOptions = {\r\n        path: '/',            \r\n        ...options\r\n    };\r\n\r\n    if (cacheOptions.expires instanceof Date) { cacheOptions.expires = cacheOptions.expires.toUTCString(); }\r\n    let updatedCookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value);\r\n\r\n    for (let optionKey in cacheOptions) {\r\n        updatedCookie += \"; \" + optionKey;\r\n        let optionValue = cacheOptions[optionKey];\r\n        if (optionValue !== true) { updatedCookie += \"=\" + optionValue; }\r\n    }\r\n    document.cookie = updatedCookie;\r\n}\r\n    \r\nexport function deleteCookie(name: string)\n{\n    setCookie(name, \"\", { 'max-age': -1 })\n}\n", "\uFEFF\r\nimport * as defLib from \"./def\";\r\n\r\nexport function isInEnum<T extends Record<string, string | number>>(enumType: T, enumValue: unknown): boolean {\r\n  return Object.values(enumType).includes(enumValue as T[keyof T]);\r\n}\r\nexport function enumCast<T extends Record<string, string | number>>(\n  enumType: T,\n  arg: any,\n  def?: T[keyof T]\n): T[keyof T] | undefined\n{\r\n    return defLib.enumCast(enumType,arg,def);\r\n}\n", "import { CheckBox } from '../com/BoxesGS';\nimport { Valued } from \"../core/WrapperGS\";\nimport { toType } from './def';\nimport { getLang, normalizeLang, setLang } from './localization';\n\r\nexport let validPhoneReg = '^[0-9]+$';\nexport let validEmailReg = '^[^\\\\s@]+@[^\\\\s@]+\\\\.[^\\\\s@]+$';\n\r\nconst messages_ru={\r\n    notFoundSameField:\"\u041D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043F\u043E\u043B\u0435 \u0434\u043B\u044F \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u044F!\",\r\n    noValue:\"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435!\",\r\n    noSelectedValue:\"\u0423\u043A\u0430\u0436\u0438\u0442\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435!\",\r\n    noNumber:\"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0447\u0438\u0441\u043B\u043E!\",\r\n    noIntNumber:\"\u041D\u0443\u0436\u043D\u043E \u0432\u0432\u0435\u0441\u0442\u0438 \u0446\u0435\u043B\u043E\u0435 \u0447\u0438\u0441\u043B\u043E!\",\r\n    noUIntNumber:\"\u041D\u0443\u0436\u043D\u043E \u0432\u0432\u0435\u0441\u0442\u0438 \u0446\u0435\u043B\u043E\u0435 \u043D\u0435\u043E\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0435 \u0447\u0438\u0441\u043B\u043E!\",\n    noPhone:\"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0432 \u043D\u0443\u0436\u043D\u043E\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u0435!\",\r\n    noEmail:\"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 email \u0432 \u043D\u0443\u0436\u043D\u043E\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u0435!\",\r\n    noSame:\"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043E\u0434\u0438\u043D\u0430\u043A\u043E\u0432\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435!\",\n    noFoto:\"\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0444\u043E\u0442\u043E!\",\n    invalidRuleArgument:\"\u041D\u0435\u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u044B\u0439 \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442 \u043F\u0440\u0430\u0432\u0438\u043B\u0430 \u0432\u0430\u043B\u0438\u0434\u0430\u0446\u0438\u0438!\",\n    unknownRule:\"\u041D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u043E\u0435 \u043F\u0440\u0430\u0432\u0438\u043B\u043E \u0432\u0430\u043B\u0438\u0434\u0430\u0446\u0438\u0438: {arg0}\",\n    unknownFunction:\"\u041D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u0430\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u044F \u0432\u0430\u043B\u0438\u0434\u0430\u0446\u0438\u0438: {arg0}\",\n    maxValue:\"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 {arg0}!\",\r\n    minValue:\"\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 {arg0}!\",\r\n    notOnlyNumber:\"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0435 \u0442\u043E\u043B\u044C\u043A\u043E \u0446\u0438\u0444\u0440\u044B!\",\r\n    fixCountChars: \"\u041D\u0443\u0436\u043D\u043E \u0432\u0432\u0435\u0441\u0442\u0438 {arg0} \u0441\u0438\u043C\u0432\u043E\u043B\u0430!\",\r\n    fixCountElements: \"\u041D\u0443\u0436\u043D\u043E {arg0} \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432!\",\r\n    noMoreChars:\"\u041D\u0435 \u0431\u043E\u043B\u0435\u0435 {arg0} \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432!\",\r\n    noMoreElements:\"\u041D\u0435 \u0431\u043E\u043B\u0435\u0435 {arg0} \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432!\",\r\n    noLessChars:\"\u041D\u0435 \u043C\u0435\u043D\u0435\u0435 {arg0} \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432!\",\r\n    noLessElements:\"\u041D\u0435 \u043C\u0435\u043D\u0435\u0435 {arg0} \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432!\",\r\n}\r\nconst messages_en={\r\n    notFoundSameField: \"Comparison field not found!\",\r\n    noValue: \"Please enter a value!\",\r\n    noSelectedValue: \"Please select a value!\",\r\n    noNumber: \"Please enter a number!\",\r\n    noIntNumber: \"Please enter an integer!\",\r\n    noUIntNumber: \"Please enter a non-negative integer!\",\n    noPhone: \"Please enter a phone number in the correct format!\",\r\n    noEmail: \"Please enter an email in the correct format!\",\r\n    noSame: \"Please enter the same value!\",\n    noFoto: \"Please upload a photo!\",\n    invalidRuleArgument: \"Invalid validation rule argument!\",\n    unknownRule: \"Unknown validation rule: {arg0}\",\n    unknownFunction: \"Unknown validation function: {arg0}\",\n    maxValue: \"Maximum value is {arg0}!\",\r\n    minValue: \"Minimum value is {arg0}!\",\r\n    notOnlyNumber: \"Please enter more than just digits!\",\r\n    fixCountChars: \"You need to enter {arg0} characters!\",\r\n    fixCountElements: \"You need {arg0} elements!\",\r\n    noMoreChars: \"No more than {arg0} characters!\",\r\n    noMoreElements: \"No more than {arg0} elements!\",\r\n    noLessChars: \"At least {arg0} characters!\",\r\n    noLessElements: \"At least {arg0} elements!\",\r\n}\r\nexport type ValidationMessagesGS = typeof messages_en;\n\nconst messageSets = new Map<string, Readonly<ValidationMessagesGS>>([\n    ['en', messages_en],\n    ['ru', messages_ru]\n]);\n\n/** Messages resolved against the current browser or server request language. */\nexport const messages: Readonly<ValidationMessagesGS> = new Proxy({} as ValidationMessagesGS, {\n    get: (_target, property) => Reflect.get(getMessages(), property),\n    set: () => false,\n    ownKeys: () => Reflect.ownKeys(messages_en),\n    getOwnPropertyDescriptor: () => ({ enumerable: true, configurable: true })\n});\n\nexport function getMessages(lang = getLang()): Readonly<ValidationMessagesGS> {\n    const normalized = normalizeLang(lang);\n    return messageSets.get(normalized)\n        ?? messageSets.get(normalized.split('-')[0] ?? '')\n        ?? messages_en;\n}\n\nexport function registerMessages(lang: string, values: ValidationMessagesGS): void {\n    messageSets.set(normalizeLang(lang), Object.freeze({ ...values }));\n}\n\n/** Compatibility alias; language selection is now request scoped. */\nexport function localize(lang: string): void { setLang(lang); }\n\r\nfunction replace(str:string, value:any) { return str.replace(\"{arg0}\",value+\"\"); }\nfunction _noValue(wr:Valued)\n{\n    if (!wr) return true;\n    const value = wr.value;\n    return value === undefined\n        || value === null\n        || value === \"\"\n        || (Array.isArray(value) && value.length === 0);\n}\n\nexport function isNumber(val: unknown): boolean {\n    if (typeof val === 'number') return Number.isFinite(val);\n    if (typeof val !== 'string') return false;\n    const normalized = val.trim().replace(/,/g, '.');\n    return /^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i.test(normalized)\n        && Number.isFinite(Number(normalized));\n}\n\r\nexport function valueRequired(wr: Valued): boolean | string {\r\n    if (!wr) return messages.noValue;\n    const checkBox = toType(wr, CheckBox);\n    if (checkBox) {\n        if (checkBox.value.length === 0) return messages.noSelectedValue;\n        return true;\n    }\n    if (_noValue(wr)) return messages.noValue;\n    return true;\n}\n\nexport function valueIsNumber(wr: Valued): boolean | string {    \n    if (_noValue(wr)) return messages.noNumber;\n    const value = typeof wr.value === 'string'\n        ? wr.value.trim().replace(/,/g, '.')\n        : wr.value;\n    if (!isNumber(value)) return messages.noNumber;\n    if (typeof wr.value === 'string') wr.value = value;\n    return true;\n}\n\r\nexport function valueNumberMax(wr: Valued, max: number): boolean | string {\n    if (!Number.isFinite(max)) return messages.invalidRuleArgument;\n    const valid = valueIsNumber(wr);\n    if (typeof valid === \"string\") return valid;\r\n    const value = Number(wr.value);\n    if (value > max) return replace(messages.maxValue, max);\r\n    return true;\r\n}\r\nexport function valueNumberMin(wr: Valued, min: number): boolean | string {\n    if (!Number.isFinite(min)) return messages.invalidRuleArgument;\n    const valid = valueIsNumber(wr);\r\n    if (typeof valid === \"string\") return valid;\r\n    const value = Number(wr.value);\n    if (value < min) return replace(messages.minValue, min);\r\n    return true;\r\n}\r\nexport function valueNumberInt(wr: Valued): boolean | string {\n    const valid = valueIsNumber(wr);\n    if (typeof valid === \"string\") return valid;\n    if (!Number.isInteger(Number(wr.value))) return messages.noIntNumber;\n    return true;\n}\nexport function valueNumberUInt(wr: Valued): boolean | string {\n    const valid = valueNumberInt(wr);\n    if (typeof valid === \"string\") return valid;    \n    if (Number(wr.value) < 0) return messages.noUIntNumber;\n    return true;\n}\nexport function valueNotNumber(wr: Valued): boolean | string {\n    if (_noValue(wr)) return true;\n    return isNumber(typeof wr.value === 'string' ? wr.value : String(wr.value))\n        ? messages.notOnlyNumber\n        : true;\n}\r\nexport function valueLength(wr: Valued, length: number): boolean | string {\n    if (!isValidLength(length)) return messages.invalidRuleArgument;\n    const valid = valueRequired(wr);    \r\n    if (typeof valid === \"string\") return valid;\r\n    if (typeof wr.value === \"string\") {\r\n        if (wr.value.length !== length) return replace(messages.fixCountChars, length);\r\n    }    \r\n    if (Array.isArray(wr.value)) {\r\n        if (wr.value.length !== length) return replace(messages.fixCountElements, length); \r\n    }\r\n    return true;\r\n}\r\nexport function valueMinLength(wr: Valued, length: number): boolean | string {\n    if (!isValidLength(length)) return messages.invalidRuleArgument;\n    const valid = valueRequired(wr);\r\n    if (typeof valid === \"string\") return valid;\r\n    if (typeof wr.value === \"string\") {\r\n        if (wr.value.length < length) return replace(messages.noLessChars, length);\r\n    }\r\n    if (Array.isArray(wr.value)) {\r\n        if (wr.value.length < length) return replace(messages.noLessElements, length);\r\n    }\r\n    return true;\r\n}\r\nexport function valueMaxLength(wr: Valued, length: number): boolean | string {\n    if (!isValidLength(length)) return messages.invalidRuleArgument;\n    if (_noValue(wr)) return true;\r\n    if (typeof wr.value === \"string\") {\r\n        if (wr.value.length > length) return replace(messages.noMoreChars, length);\r\n    }\r\n    if (Array.isArray(wr.value)) {\r\n        if (wr.value.length > length) return replace(messages.noMoreElements, length);\r\n    }\r\n    return true;\r\n}\r\nexport function valueIsPhone(wr: Valued): boolean | string {\n    if (_noValue(wr)) return true;\n    if (!new RegExp(validPhoneReg).test(String(wr.value))) return messages.noPhone;\n    return true;\n}\nexport function valueIsEmail(wr: Valued): boolean | string {\n    if (_noValue(wr)) return true;\n    if (!new RegExp(validEmailReg).test(String(wr.value))) return messages.noEmail;\n    return true;\r\n}\r\n\r\nexport function valueSame(wr: Valued, wrAnother: Valued): boolean | string {\n    if (wr.value !== wrAnother.value) return messages.noSame;\n    return true;\n}\n\nfunction isValidLength(value: number): boolean {\n    return Number.isInteger(value) && value >= 0;\n}\n\r\n", "import { EventGS, EventGSToken } from '../core/EventsGS';\nimport { WrapperGS, WrapperValued } from '../core/WrapperGS';\nimport { toType } from '../helpers/def';\n\r\nexport class BoxItem extends WrapperGS implements WrapperValued {\n    static TagClassName = 'gs-boxitem';\r\n\r\n    constructor(el: HTMLElement|string) {\r\n        super(el)\r\n    }\r\n\n    get value(): string | null { return this.attr(\"value\"); }\n    set value(value: string | null) { this.attr(\"value\", value); }\n}\n\r\nexport class CheckBox extends WrapperGS implements WrapperValued {\n    static TagClassName = 'gs-checkbox';\r\n\r\n    private readonly _onItemSelectedToken = new EventGSToken<BoxItem>();\n    private readonly _onItemClickedToken = new EventGSToken<BoxItem>();\n    public readonly onItemSelected = new EventGS<BoxItem>(this._onItemSelectedToken);\n    public readonly onItemClicked = new EventGS<BoxItem>(this._onItemClickedToken);\n\r\n    constructor(el: HTMLElement|string) {\r\n        super(el);\r\n        if (!this.hasClass(CheckBox.TagClassName)) throw new Error(\"Trying create CheckBox from HTMLElement without specific class in classList\")\r\n        this.onclick = (e) => this.handlerClick(e);\r\n    }    \r\n\r\n    inactiveAll() { this.getItems().forEach((item) => item.inactive()); }\r\n    activeByValue(val: string, invokeEvent = true) {        \r\n        this.getItems().filter(i => i.value === val).forEach((i) => this.activeItem(i, invokeEvent));\r\n    }\r\n    get value(): (string | null)[] {\n        return this.getActiveItems().map((i) => i.value);\r\n    }\r\n    set value(value: (string | null)[]) {\n        this.inactiveAll();\r\n        this.getItems().forEach(i => {            \r\n            if (!i.value) return;\r\n            if (value.indexOf(i.value)<0) return;\r\n            i.active();\r\n        });\r\n    }\r\n    getAllValues() {\r\n        const result:string[] = [];\r\n        this.getItems().forEach((item) => {if (item.value) result.push(item.value) });\r\n        return result;\r\n    }\r\n    getActiveItem(): BoxItem | undefined { return this.getActiveItems()[0]; }\n    getActiveItems() { return this.getItems().filter((i) => i.isActive); }\n    getItems(): BoxItem[] { return getOwnedItems(this); }\n    getItemByValue(cbvalue: string): BoxItem | undefined { return this.getItems().find(i => i.value === cbvalue); }\n\r\n\r\n    //*Private*//\n    private handlerClick(e: MouseEvent) {\n        const item = getClickedItem(this, e);\n        if (!item) return;\n        if (item.isActive) item.inactive(); else this.activeItem(item, true);\n        this._onItemClickedToken.invoke(item);\n    };\n\r\n    private activeItem(item: BoxItem, invokeEvent=true) {\r\n        if (item.isActive) return;\r\n        item.active();\r\n        if (invokeEvent) {\r\n            this._onItemSelectedToken.invoke(item);\r\n            this.el.dispatchEvent(new Event('input'));\r\n        }\r\n    };\r\n}\r\n\r\n\r\nexport class BtnsBox extends WrapperGS {\n    static TagClassName = 'gs-btnsbox';\r\n\r\n    private readonly _onItemClickedToken = new EventGSToken<BoxItem>();\n    public readonly onItemClicked = new EventGS<BoxItem>(this._onItemClickedToken);\n\r\n    constructor(el: HTMLElement|string) {\r\n        super(el);\r\n        if (!this.hasClass(BtnsBox.TagClassName)) throw new Error(\"Trying create BtnsBox from HTMLElement without specific class in classList\")\r\n        this.onclick = (e) => this.handlerClick(e);\r\n    }\r\n\r\n    getAllValues() {\r\n        const result:string[] = [];\r\n        this.getItems().forEach((item) => { if (item.value) result.push(item.value) });\r\n        return result;\r\n    }    \r\n    getItems(): BoxItem[] { return getOwnedItems(this); }\n    getItemByValue(cbvalue: string): BoxItem | undefined { return this.getItems().find(i => i.value === cbvalue); }\n\r\n    //*Private*//\n    private handlerClick(e: MouseEvent) {\n        const item = getClickedItem(this, e);\n        if (item) this._onItemClickedToken.invoke(item);\n    };\n}\r\n\r\n\r\nexport class RadioBox extends WrapperGS implements WrapperValued {\n    static TagClassName = 'gs-radiobox';       \r\n\r\n    private readonly _onItemSelectedToken = new EventGSToken<BoxItem>();\n    public readonly onItemSelected = new EventGS<BoxItem>(this._onItemSelectedToken);\n\r\n    constructor(el: HTMLElement|string) {\r\n        super(el);\r\n        if (!this.hasClass(RadioBox.TagClassName)) throw new Error(\"Trying create RadioBox from HTMLElement without specific class in classList\")\r\n        this.onclick = (e) => this.handlerClick(e);\r\n    }\r\n\r\n    inactiveAll() { this.getItems().forEach((item) => item.inactive()); }\r\n    activeByValue(val: string | null | undefined, invokeEvent = true) {\n        this.inactiveAll();\r\n        this.getItems().filter(i => i.value === val).forEach((i) => this.activeItem(i, invokeEvent));\r\n    }\r\n    get value(): string | null | undefined { return this.getActiveItem()?.value; }\n    set value(value: string | null | undefined) { this.activeByValue(value); }\n\r\n    getAllValues() {\r\n        const result:string[] = [];\r\n        this.getItems().forEach((item) => { if (item.value) result.push(item.value) });\r\n        return result;\r\n    }\r\n    getActiveItem(): BoxItem | undefined { return this.getItems().find(i => i.isActive); }\n    getItems(): BoxItem[] { return getOwnedItems(this); }\n    getItemByValue(cbvalue: string): BoxItem | undefined { return this.getItems().find(i => i.value === cbvalue); }\n\r\n\r\n    //*Private*//\n    private handlerClick(e: MouseEvent) {\n        const item = getClickedItem(this, e);\n        if (!item) return;\n        this.inactiveAll();\n        this.activeItem(item, true);\n    };\n\r\n    private activeItem(item: BoxItem, invokeEvent = true) {\r\n        if (item.isActive) return;\r\n        item.active();\r\n        if (invokeEvent) {\r\n            this._onItemSelectedToken.invoke(item);\r\n            this.el.dispatchEvent(new Event('input'));\r\n        }\r\n    };\r\n}\n\nfunction toBoxItems(wrappers: WrapperGS[]): BoxItem[] {\n    const items: BoxItem[] = [];\n    for (const wrapper of wrappers) {\n        const item = toType(wrapper, BoxItem);\n        if (item) items.push(item);\n    }\n    return items;\n}\n\nconst boxControlSelector = [CheckBox.TagClassName, BtnsBox.TagClassName, RadioBox.TagClassName]\n    .map(className => `.${className}`)\n    .join(',');\n\nfunction getOwnedItems(owner: WrapperGS): BoxItem[] {\n    return toBoxItems(owner.q(`.${BoxItem.TagClassName}`).all)\n        .filter(item => item.el.parentElement?.closest(boxControlSelector) === owner.el);\n}\n\nfunction getClickedItem(owner: WrapperGS, event: MouseEvent): BoxItem | undefined {\n    const target = event.target as Element | null;\n    if (!target?.closest || !owner.el.contains(target)) return undefined;\n    if (target.closest(boxControlSelector) !== owner.el) return undefined;\n\n    const itemElement = target.closest(`.${BoxItem.TagClassName}`);\n    if (!itemElement || !owner.el.contains(itemElement)) return undefined;\n    return toType(WrapperGS.Wrap(itemElement), BoxItem);\n}\n\nWrapperGS.ExtendComponentsByTagClass(BoxItem);\nWrapperGS.ExtendComponentsByTagClass(CheckBox);\nWrapperGS.ExtendComponentsByTagClass(BtnsBox);\nWrapperGS.ExtendComponentsByTagClass(RadioBox);\n", "\uFEFFexport function base64toBlob(b64Data: string, contentType = '', sliceSize = 512)\r\n{\r\n    const byteCharacters = atob(b64Data);\r\n    const byteArrays: BlobPart[] = [];\r\n    \r\n    for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\r\n        const slice = byteCharacters.slice(offset, offset + sliceSize);\r\n\r\n        const byteNumbers = new Array(slice.length);\r\n        for (let i = 0; i < slice.length; i++) {\r\n            byteNumbers[i] = slice.charCodeAt(i);\r\n        }\r\n\r\n        const byteArray = new Uint8Array(byteNumbers);\r\n        byteArrays.push(byteArray);\r\n    }\r\n\r\n    const blob = new Blob(byteArrays, { type: contentType });\r\n    return blob;\r\n}\r\n\r\nexport function dataURLtoBlob(dataurl:string):Blob {\n    const separator = dataurl.indexOf(',');\n    if (separator < 0) throw new Error('Invalid data URL: missing payload separator.');\n    const header = dataurl.slice(0, separator);\n    const mimeMatch = header.match(/:(.*?);/);\n    if (!mimeMatch?.[1]) throw new Error('Invalid data URL: missing MIME type.');\n\n    const mime = mimeMatch[1];\n    const bstr = atob(dataurl.slice(separator + 1));\n    let n = bstr.length;\n    const u8arr = new Uint8Array(n);\n    while(n--){\r\n        u8arr[n] = bstr.charCodeAt(n);\r\n    }\r\n    return new Blob([u8arr], {type:mime});\r\n}\r\n\r\nexport async function blobToDataURL(blob: any):Promise<string> {\n    return new Promise<string>((resolve, reject) => {\n        const a = new FileReader();\n        a.onload = () => {\n            if (typeof a.result === 'string') resolve(a.result);\n            else reject(new Error('FileReader did not produce a data URL.'));\n        };\n        a.onerror = () => reject(a.error ?? new Error('Cannot read blob as a data URL.'));\n        try { a.readAsDataURL(blob); } catch (e)\n            { reject(e); }\r\n    });\r\n}\r\n\r\nexport function blobToFile(blob:Blob, filename:string):File\r\n{        \r\n    let file = new File([blob], filename, {type: blob.type, lastModified: Date.now()});\r\n    return file;\r\n}\n", "import { blobToFile } from './blob';\nimport { readAsImgAsync } from './files';\n\nexport type ImageOutputMimeType = 'image/jpeg' | 'image/png' | 'image/webp';\n\nexport interface ImageResizeOptions {\n    /**Output format. Defaults to the supported source format, then PNG.*/\n    mimeType?: ImageOutputMimeType;\n    /**Encoder quality from 0 to 1. Browsers ignore it for formats such as PNG.*/\n    quality?: number;\n}\n\ninterface ImageSize {\n    readonly width: number;\n    readonly height: number;\n}\n\ninterface ImageEncoding {\n    readonly mimeType: ImageOutputMimeType;\n    readonly quality?: number;\n}\n\n/**Downsizes an image to fit maxSize while preserving its ratio. Never enlarges it.*/\nexport async function resizeByMaxSize(\n    file: File,\n    maxSize: number,\n    options?: ImageResizeOptions\n): Promise<File> {\n    const targetMaxSize = normalizeDimension(maxSize, 'maxSize');\n    const encoding = resolveEncoding(file, options);\n    const image = await readAsImgAsync(file);\n    const source = getImageSize(image);\n\n    if (source.width <= targetMaxSize && source.height <= targetMaxSize) return file;\n\n    const scale = targetMaxSize / Math.max(source.width, source.height);\n    const target = {\n        width: Math.max(1, Math.round(source.width * scale)),\n        height: Math.max(1, Math.round(source.height * scale))\n    };\n    return renderToFile(file, image, target, 0, 0, target.width, target.height, encoding);\n}\n\n/**Resizes an image to an exact square and crops overflow from the center. May enlarge it.*/\nexport async function resizeToCuttedSquare(\n    file: File,\n    sideSize: number,\n    options?: ImageResizeOptions\n): Promise<File> {\n    return resizeToCuttedRect(file, sideSize, sideSize, options);\n}\n\n/**Resizes an image to an exact rectangle and crops overflow from the center. May enlarge it.*/\nexport async function resizeToCuttedRect(\n    file: File,\n    width: number,\n    height: number,\n    options?: ImageResizeOptions\n): Promise<File> {\n    const target = {\n        width: normalizeDimension(width, 'width'),\n        height: normalizeDimension(height, 'height')\n    };\n    const encoding = resolveEncoding(file, options);\n    const image = await readAsImgAsync(file);\n    const source = getImageSize(image);\n\n    const scale = Math.max(target.width / source.width, target.height / source.height);\n    const imageWidth = source.width * scale;\n    const imageHeight = source.height * scale;\n    const imageX = (target.width - imageWidth) / 2;\n    const imageY = (target.height - imageHeight) / 2;\n    return renderToFile(file, image, target, imageX, imageY, imageWidth, imageHeight, encoding);\n}\n\nasync function renderToFile(\n    sourceFile: File,\n    image: HTMLImageElement,\n    canvasSize: ImageSize,\n    imageX: number,\n    imageY: number,\n    imageWidth: number,\n    imageHeight: number,\n    encoding: ImageEncoding\n): Promise<File> {\n    const blob = await fillCanvas(\n        image,\n        canvasSize,\n        imageX,\n        imageY,\n        imageWidth,\n        imageHeight,\n        encoding\n    );\n    const actualMimeType = normalizeMimeType(blob.type);\n    if (!actualMimeType)\n        throw new Error(`Canvas returned unsupported image MIME type '${blob.type || 'empty'}'.`);\n    return blobToFile(blob, getOutputFileName(sourceFile.name, actualMimeType));\n}\n\nfunction fillCanvas(\n    image: HTMLImageElement,\n    canvasSize: ImageSize,\n    imageX: number,\n    imageY: number,\n    imageWidth: number,\n    imageHeight: number,\n    encoding: ImageEncoding\n): Promise<Blob> {\n    const canvas = document.createElement('canvas');\n    canvas.width = canvasSize.width;\n    canvas.height = canvasSize.height;\n    const context = canvas.getContext('2d');\n    if (!context) throw new Error('A 2D canvas context is unavailable.');\n    context.drawImage(image, imageX, imageY, imageWidth, imageHeight);\n\n    return new Promise<Blob>((resolve, reject) => {\n        canvas.toBlob(blob => {\n            if (blob) resolve(blob);\n            else reject(new Error(`Canvas could not encode '${encoding.mimeType}'.`));\n        }, encoding.mimeType, encoding.quality);\n    });\n}\n\nfunction getImageSize(image: HTMLImageElement): ImageSize {\n    const width = image.naturalWidth || image.width;\n    const height = image.naturalHeight || image.height;\n    if (!Number.isFinite(width) || width <= 0 || !Number.isFinite(height) || height <= 0)\n        throw new Error('Decoded image dimensions must be finite positive numbers.');\n    return { width, height };\n}\n\nfunction normalizeDimension(value: number, name: string): number {\n    if (!Number.isFinite(value) || value <= 0)\n        throw new RangeError(`${name} must be a finite positive number.`);\n    return Math.max(1, Math.round(value));\n}\n\nfunction resolveEncoding(file: File, options?: ImageResizeOptions): ImageEncoding {\n    const requestedMimeType = options?.mimeType;\n    const mimeType = requestedMimeType !== undefined\n        ? normalizeMimeType(requestedMimeType)\n        : normalizeMimeType(file.type) ?? inferMimeType(file.name) ?? 'image/png';\n    if (!mimeType)\n        throw new RangeError(`Unsupported output image MIME type '${requestedMimeType}'.`);\n\n    const quality = options?.quality;\n    if (quality !== undefined && (!Number.isFinite(quality) || quality < 0 || quality > 1))\n        throw new RangeError('quality must be a finite number from 0 to 1.');\n    return quality === undefined ? { mimeType } : { mimeType, quality };\n}\n\nfunction normalizeMimeType(value: string): ImageOutputMimeType | undefined {\n    switch (value.trim().toLowerCase()) {\n        case 'image/jpeg':\n        case 'image/jpg':\n            return 'image/jpeg';\n        case 'image/png':\n            return 'image/png';\n        case 'image/webp':\n            return 'image/webp';\n        default:\n            return undefined;\n    }\n}\n\nfunction inferMimeType(fileName: string): ImageOutputMimeType | undefined {\n    const extension = getFileExtension(fileName);\n    if (extension === 'jpg' || extension === 'jpeg' || extension === 'jpe' || extension === 'jfif')\n        return 'image/jpeg';\n    if (extension === 'png') return 'image/png';\n    if (extension === 'webp') return 'image/webp';\n    return undefined;\n}\n\nfunction getOutputFileName(fileName: string, mimeType: ImageOutputMimeType): string {\n    const extension = getFileExtension(fileName);\n    const matchingExtensions = mimeType === 'image/jpeg'\n        ? ['jpg', 'jpeg', 'jpe', 'jfif']\n        : [mimeType.slice('image/'.length)];\n    if (matchingExtensions.includes(extension)) return fileName;\n\n    const dotIndex = fileName.lastIndexOf('.');\n    const baseName = dotIndex > 0 ? fileName.slice(0, dotIndex) : fileName;\n    const outputExtension = mimeType === 'image/jpeg' ? 'jpg' : mimeType.slice('image/'.length);\n    return `${baseName || 'image'}.${outputExtension}`;\n}\n\nfunction getFileExtension(fileName: string): string {\n    const dotIndex = fileName.lastIndexOf('.');\n    return dotIndex > 0 ? fileName.slice(dotIndex + 1).toLowerCase() : '';\n}\n", "\uFEFFexport function readFileAsTextAsync(file: File):Promise<string> {\r\n    return new Promise<string>((resolve, reject) => {        \r\n        const reader = new FileReader();\r\n        reader.onload = () => {\n            if (typeof reader.result === 'string') resolve(reader.result);\n            else reject(new Error('FileReader did not produce text.'));\n        };\n        reader.onerror = () => reject(reader.error ?? new Error('Cannot read file as text.'));\n        reader.readAsText(file);\r\n    });\r\n}\r\n\r\nexport function readAsDataURLAsync(file: File):Promise<string> {\r\n    return new Promise<string>((resolve, reject) => {\r\n        const reader = new FileReader();\r\n        reader.onload = () => {\n            if (typeof reader.result === 'string') resolve(reader.result);\n            else reject(new Error('FileReader did not produce a data URL.'));\n        };\n        reader.onerror = () => reject(reader.error ?? new Error('Cannot read file as a data URL.'));\n        reader.readAsDataURL(file);\r\n    });\r\n}\r\n\r\nexport function readAsArrayBufferAsync(file: File):Promise<ArrayBuffer> {\r\n    return new Promise<ArrayBuffer>((resolve, reject) => {\r\n        const reader = new FileReader();\r\n        reader.onload = () => {\n            if (reader.result instanceof ArrayBuffer) resolve(reader.result);\n            else reject(new Error('FileReader did not produce an ArrayBuffer.'));\n        };\n        reader.onerror = () => reject(reader.error ?? new Error('Cannot read file as an ArrayBuffer.'));\n        reader.readAsArrayBuffer(file);\r\n    });\r\n}\r\n\r\nexport function readAsImgAsync(file: File): Promise<HTMLImageElement> {\r\n    return new Promise((resolve, reject) => {\r\n        if (!file.type.match(/^image\\//)) {\n            reject(new Error('File is not an image.'));\n            return;\n        }\n        const reader = new FileReader();\n        reader.onerror = () => reject(reader.error ?? new Error('Cannot read image file.'));\n        reader.onload = function () {\n            if (typeof reader.result !== 'string') {\n                reject(new Error('FileReader did not produce an image data URL.'));\n                return;\n            }\n            const image = new Image();\n            image.onload = function () { resolve(image); }\n            image.onerror = () => reject(new Error('Cannot decode image file.'));\n            image.src = reader.result;\n        }\r\n        reader.readAsDataURL(file);\r\n    });\r\n}\n", "import { WrapperGS } from '../core/WrapperGS';\nimport { a, p } from './html';\n/** Clear string for parse to number */\r\nexport function formalForNumber(value: string): string {\r\n    if (!value) return value;\r\n    let result = value;\r\n    result = result.replace(/[,]/g, '.');\r\n    result = result.replace(/[^-.,\\d]/g, '');\r\n    return result;\r\n}\r\n\r\nexport function uppercaseFirstLetter(string: string) { return string.charAt(0).toUpperCase() + string.slice(1); }\r\nexport function lowercaseFirstLetter(string: string) { return string.charAt(0).toLowerCase() + string.slice(1); }\r\n\r\nexport function clearHtmlToText(html: string): string\r\n{    \r\n    return html.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');\r\n}\r\n\r\nexport function htmlDecode(text: string): string { return p({}, text).textContent ?? ''; };\n\r\nexport function replaceAll(str: string, target: string, replace: string): string\n{\n    const escapedTarget = target.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n    return str.replace(new RegExp(escapedTarget, 'g'), () => replace);\n}\n\r\n\r\nexport function parseHost(url: string): string {\r\n    const anchor = a({ href: url });\n    return anchor.host;\n}\r\n\r\nexport function parsePath(url: string): string {\r\n    const anchor = a({ href: url });\n    return anchor.pathname;\n}\r\n\r\nexport function createUrlArgs(data: object): string {\n    const urlArgs: string[] = [];\n    const values = data as Record<string, any>;\n    for (const key in values) urlArgs.push(`${key}=${encodeURIComponent(values[key])}`);\n    return urlArgs.join('&');\r\n};\r\n\r\n\r\nexport function copyToClipboard(text: string): boolean {\r\n    const textarea = document.createElement(\"textarea\");\r\n    textarea.textContent = text;\r\n    textarea.style.position = \"fixed\";\r\n    document.body.appendChild(textarea);\r\n    textarea.focus();\r\n    textarea.select();\r\n    const successful = document.execCommand('copy');\r\n    WrapperGS.Wrap(textarea).cut();\n    return successful;\r\n};\r\n", "export function bytesToHexString(byteArray: number[]) \n{\r\n    return Array.from(byteArray, function(byte) {\r\n        return ('0' + (byte & 0xFF).toString(16)).slice(-2);\r\n    }).join('')\r\n}\r\n\r\nexport function hexStringToBytes(hex: any) {\n    const bytes: any[] = [];\n    for (let c = 0; c < hex.length; c += 2)\r\n        bytes.push(parseInt(hex.substr(c, 2), 16));\r\n    return bytes;\r\n}\r\n\r\n\r\nconst sha256 = (() => {\n\n    const hexcase = 0;\n\r\n    function safeAdd(x: number, y: number) {\n        const lsw = (x & 0xFFFF) + (y & 0xFFFF);\r\n        const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\r\n        return (msw << 16) | (lsw & 0xFFFF);\r\n    }\r\n\r\n    function S(X: number, n: number) { return (X >>> n) | (X << (32 - n)); }\n    function R(X: number, n: number) { return (X >>> n); }\n    function Ch(x: number, y: number, z: number) { return ((x & y) ^ ((~x) & z)); }\n    function Maj(x: number, y: number, z: number) { return ((x & y) ^ (x & z) ^ (y & z)); }\n    function Sigma0256(x: number) { return (S(x, 2) ^ S(x, 13) ^ S(x, 22)); }\n    function Sigma1256(x: number) { return (S(x, 6) ^ S(x, 11) ^ S(x, 25)); }\n    function Gamma0256(x: number) { return (S(x, 7) ^ S(x, 18) ^ R(x, 3)); }\n    function Gamma1256(x: number) { return (S(x, 17) ^ S(x, 19) ^ R(x, 10)); }\n\r\n    function coreSha256(m: number[], l: number) {\n        const K = [0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786, 0xFC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147, 0x6CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2];\r\n        const HASH = [0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19];\r\n        const W: number[] = new Array(64);\n        let a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number;\n        let T1: number, T2: number;\n\r\n        const paddingIndex = l >> 5;\n        m[paddingIndex] = (m[paddingIndex] ?? 0) | 0x80 << (24 - l % 32);\n        m[((l + 64 >> 9) << 4) + 15] = l;\n\n        for (let i = 0; i < m.length; i += 16) {\n            a = HASH[0] ?? 0;\n            b = HASH[1] ?? 0;\n            c = HASH[2] ?? 0;\n            d = HASH[3] ?? 0;\n            e = HASH[4] ?? 0;\n            f = HASH[5] ?? 0;\n            g = HASH[6] ?? 0;\n            h = HASH[7] ?? 0;\n\n            for (let j = 0; j < 64; j++) {\n                if (j < 16) W[j] = m[j + i] ?? 0;\n                else W[j] = safeAdd(\n                    safeAdd(\n                        safeAdd(Gamma1256(W[j - 2] ?? 0), W[j - 7] ?? 0),\n                        Gamma0256(W[j - 15] ?? 0)\n                    ),\n                    W[j - 16] ?? 0\n                );\n\n                T1 = safeAdd(safeAdd(safeAdd(safeAdd(h, Sigma1256(e)), Ch(e, f, g)), K[j] ?? 0), W[j] ?? 0);\n                T2 = safeAdd(Sigma0256(a), Maj(a, b, c));\r\n\r\n                h = g;\r\n                g = f;\r\n                f = e;\r\n                e = safeAdd(d, T1);\r\n                d = c;\r\n                c = b;\r\n                b = a;\r\n                a = safeAdd(T1, T2);\r\n            }\r\n\r\n            HASH[0] = safeAdd(a, HASH[0] ?? 0);\n            HASH[1] = safeAdd(b, HASH[1] ?? 0);\n            HASH[2] = safeAdd(c, HASH[2] ?? 0);\n            HASH[3] = safeAdd(d, HASH[3] ?? 0);\n            HASH[4] = safeAdd(e, HASH[4] ?? 0);\n            HASH[5] = safeAdd(f, HASH[5] ?? 0);\n            HASH[6] = safeAdd(g, HASH[6] ?? 0);\n            HASH[7] = safeAdd(h, HASH[7] ?? 0);\n        }\r\n        return HASH;\r\n    }\r\n\r\n    function bytesToWords (bytes: Uint8Array) {\n        const words: number[] = []\n        for (let i = 0, b = 0; i < bytes.length; i++, b += 8) {\n            const wordIndex = b >>> 5;\n            words[wordIndex] = (words[wordIndex] ?? 0) | (bytes[i] ?? 0) << (24 - b % 32)\n        }\r\n        return words\r\n    }\r\n\r\n    function binb2hex(binarray: number[]) {\n        const hexTab = hexcase ? '0123456789ABCDEF' : '0123456789abcdef';\n        let str = '';\n        for (let i = 0; i < binarray.length * 4; i++) {\n            const word = binarray[i >> 2] ?? 0;\n            str += hexTab.charAt((word >> ((3 - i % 4) * 8 + 4)) & 0xF) +\n                hexTab.charAt((word >> ((3 - i % 4) * 8)) & 0xF);\n        }\r\n        return str;\r\n    }\r\n\r\n    function strToSHA256(s: string): string {\n        const bytes = new TextEncoder().encode(s);\n        return binb2hex(coreSha256(bytesToWords(bytes), bytes.byteLength * 8));\n    }\n\n    function bytesToSHA256(data: ArrayBuffer): string {\n        return binb2hex(coreSha256(bytesToWords(new Uint8Array(data)), data.byteLength * 8));\n    }\n\n    return { strToSHA256, bytesToSHA256 };\n})();\n\r\nexport function strToSHA256(s: string): string {\r\n    return sha256.strToSHA256(s);\r\n}\r\nexport function bytesToSHA256(data: ArrayBuffer): string {\r\n    return sha256.bytesToSHA256(data);\r\n}\r\n\r\nexport function toBase64(str: string): string {\n    const bytes = new TextEncoder().encode(str);\n    let binary = '';\n    for (const byte of bytes) binary += String.fromCharCode(byte);\n    return btoa(binary);\n}\n\nexport function fromBase64(data: string): string {\n    const binary = atob(data);\n    const bytes = Uint8Array.from(binary, character => character.charCodeAt(0));\n    return new TextDecoder().decode(bytes);\n}\n", "\uFEFFexport * from \"./BoxesGS\";\r\nexport * from \"./ToggleGS\";\r\nexport * from \"./FormGS\";\r\nexport * from \"./ImageGS\";\nexport * from \"./InputGS\";\nexport * from \"./InputFilesGS\";\nexport * from \"./TextAreaGS\";\nexport * from \"./SelectGS\";\nexport * from \"./OptionGS\";\nexport * from \"./AnchorGS\";\nexport * from \"./LabelGS\";\nexport * from \"./DialogGS\";\nexport * from \"./DetailsGS\";\nexport * from \"./ProgressGS\";\nexport * from \"./MeterGS\";\n", "import { WrapperGS } from '../core/WrapperGS';\n\nexport class ToggleGS extends WrapperGS {\n    static TagClassName = 'gs-toggle';\n\n    constructor(el: HTMLElement | string) {\n        super(el);\n        if (!this.hasClass(ToggleGS.TagClassName))\n            throw new Error('Trying create ToggleGS from HTMLElement without specific class in classList');\n        this.el.addEventListener('click', () => this.activeFlip());\n    }\n}\n\nWrapperGS.ExtendComponentsByTagClass(ToggleGS);\n", "import { WrapperGS, Valued} from '../core/WrapperGS.js';\nimport { EventGSHandlerDisposable } from '../core/EventsGS';\nimport * as array from '../helpers/array';\nimport * as def from '../helpers/def';\nimport * as validation from '../helpers/validation';\n\r\nexport interface WrapperValidationFunction {\n    (wr: WrapperGS): string | boolean;\n}\n\ninterface LinkedFormControl {\n    wrapper: WrapperGS;\n    disposables: EventGSHandlerDisposable[];\n}\n\ninterface FieldValidationPresentation {\n    readonly target: HTMLElement;\n    readonly fieldSet?: HTMLFieldSetElement;\n    readonly formItem?: WrapperGS;\n}\n\ninterface FieldValidationResult {\n    readonly isValid: boolean;\n    readonly errorsText: string;\n    readonly hasRules: boolean;\n}\n\r\nclass TextValueWrapper implements Valued\r\n{\r\n    private readonly _wr:WrapperGS;\r\n    constructor(wr:WrapperGS)\r\n    {\r\n        this._wr=wr;\r\n    }\r\n    get value(){\r\n        return this._wr.el.innerText;\r\n    }\r\n    set value(value:any){\r\n        this._wr.el.innerText=value+\"\";\r\n    }\r\n}\r\n\r\nexport class FormGS extends WrapperGS\r\n{   \r\n    static TagClassName = 'gs-form';\r\n    static ForHTMLElement(el: HTMLElement): boolean { return el.nodeName.toLowerCase() === \"form\"; }\r\n\r\n    /**\u041D\u0430 \u0434\u0430\u043D\u043D\u044B\u0439 \u0431\u043B\u043E\u043A \u043D\u0430\u043A\u043B\u0430\u0434\u044B\u0432\u0430\u0435\u0442\u0441\u044F is-valid is-invalid. \u0418\u0449\u0435\u0442\u0441\u044F \u043E\u043D \u043F\u043E\u0434\u044A\u0435\u043C\u043E\u043C \u0432\u0432\u0435\u0440\u0445 \u043F\u043E \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044F\u043C \u043E\u0442 input*/\r\n    static TagClassItemName = 'gs-form_item';\r\n    private static readonly _ExternalFunc = new Map <string, WrapperValidationFunction>()\r\n    \r\n\r\n    static TagClassValid = 'is-valid';\r\n    static TagClassInvalid = 'is-invalid';\r\n\r\n    static AddExternalValidation(name: string, func: WrapperValidationFunction) { this._ExternalFunc.set(name, func); }    \r\n\r\n    private _handlers: LinkedFormControl[] = [];\n    private readonly _validationVersions = new WeakMap<HTMLElement, number>();\n    private _validationGeneration = 0;\n    private _firstTimeValidated = false;\n\r\n    constructor(el: HTMLElement|string)\r\n    {\r\n        super(el);        \r\n        this.addEventHandler();\r\n    }\r\n\r\n    public async validAsync(): Promise<boolean>\n    {\n        this.addEventHandler();\n        this._firstTimeValidated = true;\n        const valids = await array.parallelAsync(this._handlers, (w) => this.validFieldAsync(w.wrapper));\n        const valid = valids.filter(r => r === false).length === 0;\r\n        return valid;\r\n    }\r\n\r\n    public async fillFormData(data: any, withValidation=true)\n    {\r\n        this.addEventHandler();\r\n        for (const control of this._handlers) {\r\n            const w = control.wrapper;\r\n            const name = w.attr('name');\r\n            if (!name) continue;\r\n            if (data[name] === undefined) continue;            \r\n            \r\n            const inputEl = def.toType(w.el, HTMLInputElement);\n            if (inputEl) {\n                if (inputEl.type === \"file\") {\n                    if (!isFileInputClearValue(data[name]))\n                        throw new TypeError(\n                            `Cannot fill file input '${name}' with a non-empty value. `\n                            + 'Browsers only allow clearing a selected file.'\n                        );\n                    inputEl.value = '';\n                    continue;\n                }\n                if (inputEl.type === \"radio\") {\n                    inputEl.checked = inputEl.value === def.string(data[name]);\n                    continue;\n                }\n                if (inputEl.type === \"checkbox\") {\n                    if (!Array.isArray(data[name])) continue;\n                    const array:string[] = [];\n                    (data[name] as any[]).forEach(v => array.push(def.string(v)));\n                    inputEl.checked = array.includes(inputEl.value);\n                    continue;\n                }\r\n            }\r\n            const valuedWr = WrapperGS.ToValued(w);\r\n            if (valuedWr) {\r\n                valuedWr.value = data[name];\r\n                continue;\r\n            }\r\n            const valuedAsyncWr = WrapperGS.ToAsyncValued(w);\r\n            if (valuedAsyncWr) {\r\n                await valuedAsyncWr.setValueAsync(data[name]);\r\n                continue;\r\n            }    \r\n            const valuedText = new TextValueWrapper(w);\r\n            if (valuedText)\r\n            {\r\n                valuedText.value = data[name];\r\n                continue;\r\n            }\r\n        }\r\n        if (withValidation) await this.getFormData();\n    }\r\n    public async getFormData(evenNotValid = false): Promise<Record<string, any> | undefined>\n    {\r\n        const valid = await this.validAsync();\r\n        if (!evenNotValid)\r\n            if (!valid) return undefined;\r\n        const data: Record<string, any> = {};\n        for (const control of this._handlers) {            \r\n            const w = control.wrapper;\r\n            const name = w.attr('name');\r\n            if (!name) continue;\r\n            const inputEl = def.toType(w.el, HTMLInputElement);\n            if (inputEl) {\n                switch (inputEl.type) {\n                    case \"file\":\n                        if (!Array.isArray(data[name])) data[name] = [];\n                        data[name].push(...Array.from(inputEl.files ?? []));\n                        continue;\n                    case \"radio\":\n                        if (inputEl.checked) data[name] = inputEl.value;\n                        continue;\n                    case \"checkbox\":\r\n                        if (!data[name]) { data[name] = new Array<string>(0); }   \r\n                        if (!inputEl.checked) continue;                        \r\n                        data[name].push(inputEl.value);\r\n                        continue;\r\n                }\r\n            }\r\n            const valuedWr = WrapperGS.ToValued(w);\r\n            if (valuedWr) {\r\n                data[name] = valuedWr.value;\r\n                continue;\r\n            }\r\n            const valuedAsyncWr = WrapperGS.ToAsyncValued(w);\r\n            if (valuedAsyncWr) {\r\n                data[name] = await valuedAsyncWr.getValueAsync();\r\n                continue;\r\n            }\r\n            const valuedText = new TextValueWrapper(w);\r\n            if (valuedText)\r\n            {\r\n                data[name] = valuedText.value;\r\n                continue;\r\n            }\r\n        }\r\n        return data;\r\n    }\r\n\r\n    destroy(): void\n    {\n        this._validationGeneration++;\n        this._handlers.forEach(h => h.disposables.forEach(d => d.dispose()));\n        array.clear(this._handlers);\n    }\n\r\n\r\n    private async validFieldAsync(field: WrapperGS): Promise<boolean | undefined>\n    {\n        if (!field.el.isConnected) {\n            this.unlinkControl(field);\n            return undefined;\n        }\n\n        // The first field event validates the complete form, preserving the existing contract.\n        if (!this._firstTimeValidated) return this.validAsync();\n\n        const presentation = this.getValidationPresentation(field);\n        const version = (this._validationVersions.get(presentation.target) ?? 0) + 1;\n        const generation = this._validationGeneration;\n        this._validationVersions.set(presentation.target, version);\n\n        const result = await this.evaluateFieldAsync(field);\n        if (!field.el.isConnected) {\n            this.unlinkControl(field);\n            return undefined;\n        }\n        if (generation !== this._validationGeneration\n            || this._validationVersions.get(presentation.target) !== version)\n            return result.isValid;\n\n        this.applyValidationResult(presentation, result);\n        return result.isValid;\n    }\n\n    private getValidationPresentation(field: WrapperGS): FieldValidationPresentation {\n        const fieldSet = def.toType(field.el, HTMLFieldSetElement);\n        let formItem: WrapperGS | undefined = field;\n        while (true) {\n            if (formItem.hasClass(FormGS.TagClassItemName)) break;\n            if (!formItem.el.parentElement) {\n                formItem = undefined;\n                break;\n            }\n            formItem = WrapperGS.Wrap(formItem.el.parentElement);\n        }\n\n        return {\n            target: formItem?.el ?? field.el,\n            fieldSet,\n            formItem\n        };\n    }\n\n    private async evaluateFieldAsync(field: WrapperGS): Promise<FieldValidationResult> {\n        const rulesArg = field.attr('validrules');\n        if (!rulesArg) return { isValid: true, errorsText: '', hasRules: false };\n        const rules = rulesArg.trim().split(/\\s+/).filter(Boolean);\n        const validErrors: string[] = [];\n        const addError = (error: boolean | string) => {\n            if (typeof error === \"string\") { validErrors.push(error); return true; }\n            return false;\n        };\n\n        for (const ruleRecord of rules) {\n            let rule: string;\n            let ruleArg = \"\";\n\n            const separatorIndex = ruleRecord.indexOf(\"=\");\n            if (separatorIndex >= 0) {\n                rule = ruleRecord.slice(0, separatorIndex).toLowerCase();\n                ruleArg = ruleRecord.slice(separatorIndex + 1);\n            } else\n                rule = ruleRecord.toLowerCase();\n\n            if (rule === 'external')\n            {\n                if (!FormGS._ExternalFunc.has(ruleArg)) {\n                    addError(validation.messages.unknownFunction.replace(\"{arg0}\", ruleArg));\n                    continue;\n                }\n                const validationFunction = FormGS._ExternalFunc.get(ruleArg);\n                if (validationFunction) addError(validationFunction(field));\n                continue;\n            }\n\n            const validable = WrapperGS.ToValidable(field);\n            if (validable) { addError(validable.valid(rule, ruleArg)); continue; }\n            const validableAsync = WrapperGS.ToAsyncValidable(field);\n            if (validableAsync) { addError(await validableAsync.validAsync(rule, ruleArg)); continue; }\n            const valued = getValidationValue(field);\n\n            let anotherControl: EventGSHandlerDisposable | undefined;\n            const addSameError = (control: EventGSHandlerDisposable | undefined) => {\n                if (!control) {\n                    addError(validation.messages.notFoundSameField);\n                    return;\n                }\n\n                const anotherValued = getComparableValidationValue(control.wrapper);\n                if (!anotherValued) addError(validation.messages.notFoundSameField);\n                else addError(validation.valueSame(valued, anotherValued));\n            };\n            switch (rule) {\n                case 'req':\n                    if (inputIsUnselected(field, this._handlers)) addError(validation.messages.noSelectedValue);\n                    else addError(validation.valueRequired(valued));\n                    break;\n                case 'number':\n                case 'numbers': addError(validation.valueIsNumber(valued)); break;\n                case 'max': addError(validation.valueNumberMax(valued, parseRuleNumber(ruleArg))); break;\n                case 'min': addError(validation.valueNumberMin(valued, parseRuleNumber(ruleArg))); break;\n                case 'uint': addError(validation.valueNumberUInt(valued)); break;\n                case 'int': addError(validation.valueNumberInt(valued)); break;\n                case 'notonlynumbers': addError(validation.valueNotNumber(valued)); break;\n                case 'length': addError(validation.valueLength(valued, parseRuleNumber(ruleArg))); break;\n                case 'minlength': addError(validation.valueMinLength(valued, parseRuleNumber(ruleArg))); break;\n                case 'maxlength': addError(validation.valueMaxLength(valued, parseRuleNumber(ruleArg))); break;\n                case 'phone': addError(validation.valueIsPhone(valued)); break;\n                case 'email': addError(validation.valueIsEmail(valued)); break;\n                case 'same':\n                    anotherControl = this._handlers.filter(i => i.wrapper.attr('name') === ruleArg)[0]?.disposables[0];\n                    addSameError(anotherControl);\n                    break;\n                case 'samebyid':\n                    anotherControl = this._handlers.filter(i => i.wrapper.attr('id') === ruleArg)[0]?.disposables[0];\n                    addSameError(anotherControl);\n                    break;\n                default:\n                    addError(validation.messages.unknownRule.replace(\"{arg0}\", rule));\n                    break;\n            }\n        }\n\n        const uniqueErrors = [...new Set(validErrors)];\n        return {\n            isValid: uniqueErrors.length === 0,\n            errorsText: uniqueErrors.join('\\r\\n'),\n            hasRules: true\n        };\n    }\n\n    private applyValidationResult(\n        presentation: FieldValidationPresentation,\n        result: FieldValidationResult\n    ): void {\n        presentation.fieldSet?.setCustomValidity(result.hasRules ? result.errorsText : '');\n        const formItem = presentation.formItem;\n        if (!formItem) return;\n\n        formItem.removeClass(FormGS.TagClassValid);\n        formItem.removeClass(FormGS.TagClassInvalid);\n        const invalidWr = formItem.q('.invalid-feedback').first;\n        if (invalidWr) {\n            invalidWr.text = '';\n            invalidWr.hide();\n        }\n        if (!result.hasRules) return;\n\n        if (result.isValid) {\n            formItem.addClass(FormGS.TagClassValid);\n        } else {\n            formItem.addClass(FormGS.TagClassInvalid);\n            if (invalidWr && result.errorsText) {\n                invalidWr.text = result.errorsText;\n                invalidWr.show();\n            }\n        }\n    }\n\n    private unlinkControl(field: WrapperGS): void {\n        const handler = this._handlers.find(control => control.wrapper === field);\n        if (!handler) return;\n        handler.disposables.forEach(disposable => disposable.dispose());\n        array.remove(this._handlers, handler);\n    }\n\r\n    \r\n    private addEventHandler()\r\n    {        \r\n        this.q('input, textarea, select').forEach(i => { this.linkControl(i); });\n        this.q(\"[name]\").forEach(i => { this.linkControl(i); });\n    }\n\n    private linkControl(wr: WrapperGS) {\n        //check exists\n        if (this._handlers.filter(l => l.wrapper === wr).length > 0) return;\n        const handler = (e: Event) => {\n            const wr = WrapperGS.Wrap(e.target);\n            if (!wr) return;\n            void this.validFieldAsync(wr).catch(error => {\n                const identity = wr.attr('name') || wr.attr('id') || wr.el.tagName.toLowerCase();\n                console.error(`GS form validation failed for field '${identity}'.`, error);\n            });\n        };\n        this._handlers.push({\n            wrapper: wr,\n            disposables: [\n                new EventGSHandlerDisposable(wr, \"input\", handler),\n                new EventGSHandlerDisposable(wr, \"change\", handler)\n            ]\n        });\n    }\n}\n\nfunction parseRuleNumber(value: string): number {\n    const normalized = value.trim().replace(/,/g, '.');\n    return normalized ? Number(normalized) : Number.NaN;\n}\n\nfunction isFileInputClearValue(value: unknown): boolean {\n    return value === null\n        || value === ''\n        || (Array.isArray(value) && value.length === 0);\n}\n\nfunction getValidationValue(field: WrapperGS): Valued {\n    const input = def.toType(field.el, HTMLInputElement);\n    if (input?.type === 'file')\n        return { value: Array.from(input.files ?? []) };\n    return WrapperGS.ToValued(field) ?? new TextValueWrapper(field);\n}\n\nfunction getComparableValidationValue(field: WrapperGS): Valued | undefined {\n    const input = def.toType(field.el, HTMLInputElement);\n    if (input?.type === 'file')\n        return { value: Array.from(input.files ?? []) };\n    return WrapperGS.ToValued(field);\n}\n\nfunction inputIsUnselected(field: WrapperGS, controls: LinkedFormControl[]): boolean {\n    const input = def.toType(field.el, HTMLInputElement);\n    if (!input || (input.type !== 'checkbox' && input.type !== 'radio')) return false;\n\n    const name = input.name;\n    if (!name) return !input.checked;\n    return !controls.some(control => {\n        const candidate = def.toType(control.wrapper.el, HTMLInputElement);\n        return candidate?.type === input.type && candidate.name === name && candidate.checked;\n    });\n}\nWrapperGS.ExtendComponentsByTagClass(FormGS);\nWrapperGS.ExtendComponentsByHTMLElement(FormGS);\n", "\uFEFFimport { WrapperGS } from '../core/WrapperGS';\r\nimport { EventGS, EventGSToken } from '../core/EventsGS';\n\r\nexport class ImageGS extends WrapperGS<HTMLImageElement>\r\n{\r\n    static ForHTMLElement(el: HTMLElement): boolean { return el.nodeName.toLowerCase() === \"img\"; }\r\n\r\n    private readonly _onLoadedToken: EventGSToken;\n    public readonly onLoaded: EventGS;\n\r\n    constructor(el: HTMLImageElement|string)\r\n    {\r\n        super(el);\r\n        this._onLoadedToken = new EventGSToken(() => { this.el.addEventListener('load', () => this._onLoadedToken.invoke()); });\n        this.onLoaded = new EventGS(this._onLoadedToken);\n    }\r\n\r\n    public get src() { return this.el.src; }\r\n    public set src(value: string) { this.el.src = value; }\r\n}\r\nWrapperGS.ExtendComponentsByHTMLElement(ImageGS);\n", "import { WrapperGS, WrapperValued } from '../core/WrapperGS';\n\nexport class InputGS extends WrapperGS<HTMLInputElement> implements WrapperValued\n{\n    static ForHTMLElement(el: HTMLElement): boolean {\n        if (el.nodeName.toLowerCase() === 'input') {\n            const inputEl = el as HTMLInputElement;\n            return inputEl.type !== 'file';\n        }\n        return false;\n    }\n\n    constructor(el: HTMLInputElement | string) {\n        super(el);\n    }\n\n    public get value() { return this.el.value; }\n    public set value(value: string) { this.el.value = value; }\n}\n\nWrapperGS.ExtendComponentsByHTMLElement(InputGS);\n", "import { EventGS, EventGSToken } from '../core/EventsGS';\nimport { WrapperGS } from '../core/WrapperGS';\nimport { InputGS } from './InputGS';\n\nexport class InputFilesGS extends InputGS\n{\n    static override ForHTMLElement(el: HTMLElement): boolean {\n        if (el.nodeName.toLowerCase() === 'input') {\n            const inputEl = el as HTMLInputElement;\n            return inputEl.type === 'file';\n        }\n        return false;\n    }\n\n    private readonly _onFilesSelectedToken: EventGSToken<File[]>;\n    public readonly onFilesSelected: EventGS<File[]>;\n\n    constructor(el: HTMLInputElement | string) {\n        super(el);\n        this._onFilesSelectedToken = new EventGSToken<File[]>(() => {\n            this.el.addEventListener('change', () => this.onChangeHandler());\n        });\n        this.onFilesSelected = new EventGS<File[]>(this._onFilesSelectedToken);\n    }\n\n    /** Opens the native file-selection dialog. */\n    public open(): void {\n        this.el.click();\n    }\n\n    /** Returns a snapshot of the files currently selected by the user. */\n    public get files(): File[] {\n        return this.el.files ? Array.from(this.el.files) : [];\n    }\n\n    /** Clears the current selection. Browsers do not allow restoring it programmatically. */\n    public clear(): void {\n        this.value = '';\n    }\n\n    private onChangeHandler(): void {\n        const list = this.files;\n        if (list.length === 0) return;\n        this._onFilesSelectedToken.invoke(list);\n    }\n}\n\nWrapperGS.ExtendComponentsByHTMLElement(InputFilesGS);\n", "import { WrapperGS, WrapperValued } from '../core/WrapperGS';\n\nexport class TextAreaGS extends WrapperGS<HTMLTextAreaElement> implements WrapperValued\n{\n    static ForHTMLElement(el: HTMLElement): boolean {\n        return el.nodeName.toLowerCase() === 'textarea';\n    }\n\n    constructor(el: HTMLTextAreaElement | string) {\n        super(el);\n    }\n\n    public get value() { return this.el.value; }\n    public set value(value: string) { this.el.value = value; }\n}\n\nWrapperGS.ExtendComponentsByHTMLElement(TextAreaGS);\n", "import { EventGS, EventGSToken } from '../core/EventsGS';\nimport { WrapperGS, WrapperValued } from '../core/WrapperGS';\nimport { OptionGS } from './OptionGS';\n\nexport class SelectGS extends WrapperGS<HTMLSelectElement> implements WrapperValued\n{\n    static ForHTMLElement(el: HTMLElement): boolean {\n        return el.nodeName.toLowerCase() === \"select\";\n    }\n\n    private readonly _onChangeToken: EventGSToken<Event>;\n    public readonly onChange: EventGS<Event>;\n\n    constructor(el: HTMLSelectElement|string)\n    {\n        super(el);\n        this._onChangeToken = new EventGSToken<Event>(() => { this.el.addEventListener('change', e => this._onChangeToken.invoke(e)); });\n        this.onChange = new EventGS<Event>(this._onChangeToken);\n    }\n\n    public get value() { return this.el.value; }\n    public set value(value: string) { this.el.value = value; }\n\n    public get selectedIndex() { return this.el.selectedIndex; }\n    public set selectedIndex(value: number) { this.el.selectedIndex = value; }\n\n    public get selectedOption(): OptionGS | undefined {\n        const option = this.el.selectedOptions.item(0);\n        return option ? WrapperGS.Wrap(option) as OptionGS : undefined;\n    }\n\n    public get options(): OptionGS[] {\n        return Array.from(this.el.options).map(o => WrapperGS.Wrap(o) as OptionGS);\n    }\n\n    public get disabled() { return this.el.disabled; }\n    public set disabled(value: boolean) { this.el.disabled = value; }\n}\nWrapperGS.ExtendComponentsByHTMLElement(SelectGS);\n", "import { WrapperGS, WrapperValued } from '../core/WrapperGS';\n\nexport class OptionGS extends WrapperGS<HTMLOptionElement> implements WrapperValued\n{\n    static ForHTMLElement(el: HTMLElement): boolean {\n        return el.nodeName.toLowerCase() === \"option\";\n    }\n\n    constructor(el: HTMLOptionElement|string)\n    {\n        super(el);\n    }\n\n    public get value() { return this.el.value; }\n    public set value(value: string) { this.el.value = value; }\n\n    public get label() { return this.el.label; }\n    public set label(value: string) { this.el.label = value; }\n\n    public override get text() { return this.el.text; }\n    public override set text(value: string) { this.el.text = value; }\n\n    public get selected() { return this.el.selected; }\n    public set selected(value: boolean) { this.el.selected = value; }\n\n    public get disabled() { return this.el.disabled; }\n    public set disabled(value: boolean) { this.el.disabled = value; }\n}\nWrapperGS.ExtendComponentsByHTMLElement(OptionGS);\n", "import { WrapperGS } from '../core/WrapperGS';\n\nexport class AnchorGS extends WrapperGS<HTMLAnchorElement>\n{\n    static ForHTMLElement(el: HTMLElement): boolean {\n        return el.nodeName.toLowerCase() === \"a\";\n    }\n\n    constructor(el: HTMLAnchorElement|string)\n    {\n        super(el);\n    }\n\n    public get href() { return this.el.href; }\n    public set href(value: string) { this.el.href = value; }\n\n    public get target() { return this.el.target; }\n    public set target(value: string) { this.el.target = value; }\n\n    public get download() { return this.el.download; }\n    public set download(value: string) { this.el.download = value; }\n\n    public get rel() { return this.el.rel; }\n    public set rel(value: string) { this.el.rel = value; }\n}\nWrapperGS.ExtendComponentsByHTMLElement(AnchorGS);\n", "import { WrapperGS } from '../core/WrapperGS';\n\nexport class LabelGS extends WrapperGS<HTMLLabelElement>\n{\n    static ForHTMLElement(el: HTMLElement): boolean {\n        return el.nodeName.toLowerCase() === \"label\";\n    }\n\n    constructor(el: HTMLLabelElement|string)\n    {\n        super(el);\n    }\n\n    public get htmlFor() { return this.el.htmlFor; }\n    public set htmlFor(value: string) { this.el.htmlFor = value; }\n\n    public get control(): WrapperGS | undefined {\n        return this.el.control ? WrapperGS.Wrap(this.el.control) : undefined;\n    }\n}\nWrapperGS.ExtendComponentsByHTMLElement(LabelGS);\n", "import { EventGS, EventGSToken } from '../core/EventsGS';\nimport { WrapperGS } from '../core/WrapperGS';\n\nexport class DialogGS extends WrapperGS<HTMLDialogElement>\n{\n    static ForHTMLElement(el: HTMLElement): boolean {\n        return el.nodeName.toLowerCase() === \"dialog\";\n    }\n\n    private readonly _onCloseToken: EventGSToken<Event>;\n    private readonly _onCancelToken: EventGSToken<Event>;\n    public readonly onClose: EventGS<Event>;\n    public readonly onCancel: EventGS<Event>;\n\n    constructor(el: HTMLDialogElement|string)\n    {\n        super(el);\n        this._onCloseToken = new EventGSToken<Event>(() => { this.el.addEventListener('close', e => this._onCloseToken.invoke(e)); });\n        this._onCancelToken = new EventGSToken<Event>(() => { this.el.addEventListener('cancel', e => this._onCancelToken.invoke(e)); });\n        this.onClose = new EventGS<Event>(this._onCloseToken);\n        this.onCancel = new EventGS<Event>(this._onCancelToken);\n    }\n\n    public get open() { return this.el.open; }\n    public set open(value: boolean) { this.el.open = value; }\n\n    public get returnValue() { return this.el.returnValue; }\n    public set returnValue(value: string) { this.el.returnValue = value; }\n\n    public showDialog() { this.el.show(); }\n    public showModal() { this.el.showModal(); }\n    public close(returnValue?: string) { this.el.close(returnValue); }\n}\nWrapperGS.ExtendComponentsByHTMLElement(DialogGS);\n", "import { EventGS, EventGSToken } from '../core/EventsGS';\nimport { WrapperGS } from '../core/WrapperGS';\n\nexport class DetailsGS extends WrapperGS<HTMLDetailsElement>\n{\n    static ForHTMLElement(el: HTMLElement): boolean {\n        return el.nodeName.toLowerCase() === \"details\";\n    }\n\n    private readonly _onToggleToken: EventGSToken<Event>;\n    public readonly onToggle: EventGS<Event>;\n\n    constructor(el: HTMLDetailsElement|string)\n    {\n        super(el);\n        this._onToggleToken = new EventGSToken<Event>(() => { this.el.addEventListener('toggle', e => this._onToggleToken.invoke(e)); });\n        this.onToggle = new EventGS<Event>(this._onToggleToken);\n    }\n\n    public get open() { return this.el.open; }\n    public set open(value: boolean) { this.el.open = value; }\n\n    public toggle() { this.open = !this.open; }\n}\nWrapperGS.ExtendComponentsByHTMLElement(DetailsGS);\n", "import { WrapperGS, WrapperValued } from '../core/WrapperGS';\n\nexport class ProgressGS extends WrapperGS<HTMLProgressElement> implements WrapperValued\n{\n    static ForHTMLElement(el: HTMLElement): boolean {\n        return el.nodeName.toLowerCase() === \"progress\";\n    }\n\n    constructor(el: HTMLProgressElement|string)\n    {\n        super(el);\n    }\n\n    public get value() { return this.el.value; }\n    public set value(value: number) { this.el.value = value; }\n\n    public get max() { return this.el.max; }\n    public set max(value: number) { this.el.max = value; }\n\n    public get position() { return this.el.position; }\n    public get percent() { return this.max > 0 ? (this.value / this.max) * 100 : 0; }\n}\nWrapperGS.ExtendComponentsByHTMLElement(ProgressGS);\n", "import { WrapperGS, WrapperValued } from '../core/WrapperGS';\n\nexport class MeterGS extends WrapperGS<HTMLMeterElement> implements WrapperValued\n{\n    static ForHTMLElement(el: HTMLElement): boolean {\n        return el.nodeName.toLowerCase() === \"meter\";\n    }\n\n    constructor(el: HTMLMeterElement|string)\n    {\n        super(el);\n    }\n\n    public get value() { return this.el.value; }\n    public set value(value: number) { this.el.value = value; }\n\n    public get min() { return this.el.min; }\n    public set min(value: number) { this.el.min = value; }\n\n    public get max() { return this.el.max; }\n    public set max(value: number) { this.el.max = value; }\n\n    public get low() { return this.el.low; }\n    public set low(value: number) { this.el.low = value; }\n\n    public get high() { return this.el.high; }\n    public set high(value: number) { this.el.high = value; }\n\n    public get optimum() { return this.el.optimum; }\n    public set optimum(value: number) { this.el.optimum = value; }\n\n    public get percent() {\n        const range = this.max - this.min;\n        return range > 0 ? ((this.value - this.min) / range) * 100 : 0;\n    }\n}\nWrapperGS.ExtendComponentsByHTMLElement(MeterGS);\n", "export * from './FocusGroup';\n", "import { WrapperGS } from '../core/WrapperGS';\nimport { RuntimeEnvironmentGSEnum, RuntimeGS } from '../core/app/RuntimeGS';\n\ninterface FocusPositionGS {\n    readonly element: HTMLElement;\n    readonly groupName: string;\n    readonly position: number;\n}\n\nconst focusAttribute = 'gs-focus';\nconst listeningDocuments = new WeakSet<Document>();\n\nfunction enableFocusNavigation(wrapper: WrapperGS): void {\n    const scope = RuntimeGS.current;\n    if (scope?.environment === RuntimeEnvironmentGSEnum.Server) return;\n\n    if (!parseFocusPosition(wrapper.el)) {\n        console.warn(`Invalid ${focusAttribute} value '${wrapper.el.getAttribute(focusAttribute) ?? ''}'. Expected 'group:position'.`);\n        return;\n    }\n\n    const document = wrapper.el.ownerDocument;\n    if (listeningDocuments.has(document)) return;\n    document.addEventListener('keydown', handleFocusKeyDown);\n    listeningDocuments.add(document);\n}\n\nfunction handleFocusKeyDown(event: Event): void {\n    const keyboardEvent = event as KeyboardEvent;\n    if (keyboardEvent.defaultPrevented || keyboardEvent.key !== 'Enter'\n        || keyboardEvent.repeat || keyboardEvent.isComposing) return;\n\n    const currentElement = keyboardEvent.target as HTMLElement | null;\n    if (!currentElement?.hasAttribute?.(focusAttribute)) return;\n    if (currentElement.tagName === 'TEXTAREA' && !keyboardEvent.ctrlKey) return;\n\n    const current = parseFocusPosition(currentElement);\n    const document = keyboardEvent.currentTarget as Document | null;\n    if (!current || !document) return;\n\n    const positions = collectGroupPositions(document, current.groupName);\n    if (!positions) return;\n\n    const next = positions.find(value => value.position > current.position);\n    keyboardEvent.preventDefault();\n    if (!next) {\n        currentElement.blur();\n        return;\n    }\n\n    activateElement(next.element);\n}\n\nfunction collectGroupPositions(\n    document: Document,\n    groupName: string\n): FocusPositionGS[] | undefined {\n    const positions: FocusPositionGS[] = [];\n    const positionElements = new Map<number, HTMLElement>();\n    for (const element of Array.from(document.querySelectorAll(`[${focusAttribute}]`))) {\n        const value = parseFocusPosition(element as HTMLElement);\n        if (!value || value.groupName !== groupName) continue;\n\n        if (positionElements.has(value.position)) {\n            console.warn(`Duplicate ${focusAttribute} position '${groupName}:${value.position}'.`);\n            return undefined;\n        }\n        positionElements.set(value.position, value.element);\n        positions.push(value);\n    }\n    positions.sort((left, right) => left.position - right.position);\n    return positions;\n}\n\nfunction parseFocusPosition(element: HTMLElement): FocusPositionGS | undefined {\n    const raw = element.getAttribute(focusAttribute)?.trim();\n    if (!raw) return undefined;\n    const separator = raw.lastIndexOf(':');\n    const groupName = (separator < 0 ? raw : raw.slice(0, separator)).trim();\n    const positionText = (separator < 0 ? '0' : raw.slice(separator + 1)).trim();\n    if (!groupName || !/^\\d+$/.test(positionText)) return undefined;\n    const position = Number(positionText);\n    if (!Number.isSafeInteger(position)) return undefined;\n    return { element, groupName, position };\n}\n\nfunction activateElement(element: HTMLElement): void {\n    if (element.getAttribute('type')?.toLowerCase() === 'submit') {\n        element.click();\n        return;\n    }\n    if (element.tagName === 'INPUT' || element.tagName === 'TEXTAREA') {\n        element.focus();\n        return;\n    }\n    element.click();\n}\n\n/** Programmatic convenience facade over the stateless gs-focus document behavior. */\nexport class FocusGroup {\n    public static readonly TagGSA = 'focus';\n    public readonly groupName: string;\n\n    public constructor(wrapper: WrapperGS, groupName = 'noname', position = 0) {\n        this.groupName = groupName.trim();\n        this.add(wrapper, position);\n    }\n\n    public static AddItem(wrapper: WrapperGS): void {\n        enableFocusNavigation(wrapper);\n    }\n\n    public add(wrapper: WrapperGS, position: number): boolean {\n        if (!this.groupName || !Number.isSafeInteger(position) || position < 0) {\n            console.warn(`Invalid ${focusAttribute} position '${this.groupName}:${position}'.`);\n            return false;\n        }\n        wrapper.setGSA(FocusGroup.TagGSA, `${this.groupName}:${position}`);\n        enableFocusNavigation(wrapper);\n        return true;\n    }\n\n    public remove(wrapper: WrapperGS): void {\n        const value = parseFocusPosition(wrapper.el);\n        if (value?.groupName === this.groupName) wrapper.removeGSA(FocusGroup.TagGSA);\n    }\n\n    public clear(): void {\n        const document = RuntimeGS.current?.document ?? RuntimeGS.window?.document;\n        if (!document) return;\n        for (const element of Array.from(document.querySelectorAll(`[${focusAttribute}]`))) {\n            const htmlElement = element as HTMLElement;\n            if (parseFocusPosition(htmlElement)?.groupName === this.groupName)\n                htmlElement.removeAttribute(focusAttribute);\n        }\n    }\n}\n\nWrapperGS.ImplementWrapperByGSA(FocusGroup.TagGSA, FocusGroup.AddItem);\n", "\uFEFFexport * from './core';\r\nexport * from './helpers/index'\r\nexport * from './com';\r\nexport * from './ctrls';\r\n\r\nimport { WrapperGS, GS } from './core';\nimport * as comLib from './com';\nimport * as ctrlsLib from './ctrls';\nimport * as helpersLib from './helpers/index'\n\r\nexport const com = comLib;\r\nexport const ctrls = ctrlsLib;\r\nexport const helpers = helpersLib;\r\n\r\n/**\r\n* Wrap element in WrapperGs\r\n* @param el\r\n*/\r\nexport function w(el: WrapperGS): WrapperGS;\nexport function w(el: HTMLElement): WrapperGS;\nexport function w(el: unknown): WrapperGS | undefined;\nexport function w(el: unknown): WrapperGS | undefined { return WrapperGS.Wrap(el); }\nexport function q(selector: any) { return GS.Query(selector); }\n"],
  "mappings": "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",
  "names": ["StateRunResultEnum", "StateRunModeEnum", "document", "tag", "target", "html", "element", "Types", "def", "text", "tag", "document", "w", "WrapperInitModeGSEnum", "_a", "html", "date", "img", "date", "enumCast", "enumCast", "def", "blob", "a", "blob", "string", "html", "text", "replace", "text", "a", "strToSHA256", "bytesToSHA256", "date", "img", "w", "array", "wr", "document"]
}
