@motifx/core 1.2.0-rc.4 → 1.2.0-rc.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{core-C-BpS-QN.esm.js → core-Cq96WPGz.esm.js} +548 -416
- package/dist/chunks/core-Cq96WPGz.esm.js.map +1 -0
- package/dist/chunks/{core-ZMoM1273.cjs → core-ZhqTS1zK.cjs} +548 -416
- package/dist/chunks/core-ZhqTS1zK.cjs.map +1 -0
- package/dist/devtools.cjs +1 -1
- package/dist/devtools.esm.js +1 -1
- package/dist/index.cjs +3 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -6
- package/dist/index.d.ts +4 -6
- package/dist/index.esm.js +4 -8
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +1 -1
- package/dist/index.esm.min.js.map +1 -1
- package/dist/index.umd.js +14341 -14213
- package/dist/index.umd.js.map +1 -1
- package/dist/index.umd.min.js +1 -1
- package/dist/index.umd.min.js.map +1 -1
- package/dist/jsx-runtime.cjs.map +1 -1
- package/dist/jsx-runtime.d.cts +25 -15
- package/dist/jsx-runtime.d.ts +25 -15
- package/dist/jsx-runtime.esm.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/core-C-BpS-QN.esm.js.map +0 -1
- package/dist/chunks/core-ZMoM1273.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.min.js","sources":["../src/common/ErrorHandler.ts","../src/devtools/devbus.ts","../src/common/diagnostics.ts","../src/disposable/DisposableCore.ts","../src/disposable/DisposableStore.ts","../src/disposable/Disposable.ts","../src/store/common.ts","../src/bindings/ListBinding.ts","../src/common/NameValuePair.ts","../src/common/List.ts","../src/common/functions.ts","../src/common/LeakMonitor.ts","../src/common/Dictionary.ts","../src/common/LinkedList.ts","../src/common/bind.ts","../src/common/Query.ts","../src/common/compilerContract.ts","../src/common/index.ts","../src/store/reactivity-core.ts","../src/bindings/Binding.ts","../src/common/lazyBind.ts","../src/bindings/BindingCollection.ts","../src/delegate/Emitter.ts","../src/component/ComponentEmiter.ts","../src/component/controlAttribute.ts","../src/component/controlClass.ts","../src/component/types.ts","../src/common/transition.ts","../src/component/ComponentMotif.ts","../src/store/Signal.ts","../src/dependencyInjection/ServiceProvider.ts","../src/component/contentBlockRegistry.ts","../src/component/optionsSlots.ts","../src/common/transitionRegistry.ts","../src/component/componentBase.ts","../src/component/resolveComponent.ts","../src/component/Component.ts","../src/core/dom.ts","../src/core/ControlCollection.ts","../src/component/Lazy.ts","../src/component/navigation.ts","../src/component/Frame.ts","../src/component/PreProcessing.ts","../src/component/ContentBody.ts","../src/component/TransportRegistry.ts","../src/component/Transport.tsx","../src/component/Transporter.ts","../src/component/TransportTo.tsx","../src/store/handlers/getter.ts","../src/store/handlers/setter.ts","../src/store/handlers/orhers.ts","../src/store/handlers/ArrayMethods.ts","../src/store/handlers/collections.ts","../src/store/ReactiveEngine.ts","../src/store/index.ts","../src/core/Virtualization.ts","../src/dependencyInjection/autoRegistry.ts","../src/dependencyInjection/ServiceCollection.ts","../src/devtools/routeLinter.ts","../src/devtools/overlay.ts","../src/routing/RouterViewRegistry.ts","../src/routing/RouterView.ts","../src/routing/scrollMemory.ts","../src/routing/NavigationStack.ts","../src/routing/scanner.ts","../src/routing/RouteCollection.ts","../src/routing/RoutingEngine.ts","../src/routing/RouterLink.ts","../src/routing/UrlRoutingModule.ts","../src/routing/routerState.ts","../src/application.ts","../src/dependencyInjection/decorators.ts","../src/common/Resilience.ts"],"sourcesContent":["function rethrowLater(error: any): void {\r\n\tsetTimeout(() => { throw error; }, 0);\r\n}\r\n\r\nexport class ErrorHandler {\r\n\tprivate unexpectedErrorHandler: (e: any) => void = rethrowLater;\r\n\tprivate listeners: Array<(error: any) => void> = [];\r\n\tprivate _isDevelopment: boolean = false;\r\n\tprivate _enableConsoleLogging: boolean = true;\r\n\r\n\tpublic setDevelopmentMode(isDev: boolean): void {\r\n\t\tthis._isDevelopment = isDev;\r\n\t}\r\n\r\n\tpublic setConsoleLogging(enabled: boolean): void {\r\n\t\tthis._enableConsoleLogging = enabled;\r\n\t}\r\n\r\n\tpublic isDevelopment(): boolean {\r\n\t\treturn this._isDevelopment || (globalThis as any).__MOTIF_DEV__ === true;\r\n\t}\r\n\r\n\tpublic reportSuppressed(context: string, error: any): void {\r\n\t\tthis.logIfDev(context, error);\r\n\t}\r\n\r\n\tpublic report(error: Error): void {\r\n\t\tif (this._enableConsoleLogging) {\r\n\t\t\tif (error.cause !== undefined) console.error(error.message, error.cause);\r\n\t\t\telse console.error(error.message);\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst bus = (globalThis as any).__MOTIF_DEVTOOLS_BUS__;\r\n\t\t\tif (bus && typeof bus.publish === 'function') {\r\n\t\t\t\tbus.publish('error:caught', { context: (error as any).code ?? error.name, error: this.serializeError(error) });\r\n\t\t\t}\r\n\t\t} catch { /* ignore */ }\r\n\r\n\t\tthis.emit(error);\r\n\t}\r\n\r\n\tprivate logIfDev(context: string, error: any): void {\r\n\t\tif (this.isDevelopment() && this._enableConsoleLogging) {\r\n\t\t\tconsole.error(`[motifjs Error - ${context}]`, error);\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst bus = (globalThis as any).__MOTIF_DEVTOOLS_BUS__;\r\n\t\t\tif (bus && typeof bus.publish === 'function') {\r\n\t\t\t\tbus.publish('error:caught', { context, error: this.serializeError(error) });\r\n\t\t\t}\r\n\t\t} catch { /* ignore */ }\r\n\t}\r\n\r\n\r\n\tprivate serializeError(error: any): any {\r\n\t\tif (!error) return { message: 'Unknown error' };\r\n\t\tif (error instanceof Error) {\r\n\t\t\treturn {\r\n\t\t\t\tname: error.name,\r\n\t\t\t\tmessage: error.message,\r\n\t\t\t\tstack: error.stack,\r\n\t\t\t\tcause: error.cause ? this.serializeError(error.cause) : undefined\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (typeof error === 'object') {\r\n\t\t\ttry { return JSON.parse(JSON.stringify(error)); } catch { return String(error); }\r\n\t\t}\r\n\t\treturn String(error);\r\n\t}\r\n\r\n\taddListener(listener: (error: any) => void): () => void {\r\n\t\tthis.listeners.push(listener);\r\n\t\treturn () => {\r\n\t\t\tconst index = this.listeners.indexOf(listener);\r\n\t\t\tif (index !== -1) {\r\n\t\t\t\tthis.listeners.splice(index, 1);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tprivate emit(error: any): void {\r\n\t\tfor (const listener of this.listeners.slice()) {\r\n\t\t\tlistener(error);\r\n\t\t}\r\n\t}\r\n\r\n\tsetUnexpectedErrorHandler(handler: (e: any) => void): void {\r\n\t\tthis.unexpectedErrorHandler = handler;\r\n\t}\r\n\r\n\tgetUnexpectedErrorHandler(): (e: any) => void {\r\n\t\treturn this.unexpectedErrorHandler;\r\n\t}\r\n\r\n\tonUnexpectedError(error: any): void {\r\n\t\tthis.unexpectedErrorHandler(error);\r\n\t\tthis.emit(error);\r\n\t}\r\n\r\n\tpublic safeCall<T>(fn: () => T, context: string, fallback?: T): T | undefined {\r\n\t\ttry {\r\n\t\t\treturn fn();\r\n\t\t} catch (error) {\r\n\t\t\tthis.logIfDev(context, error);\r\n\t\t\tthis.onUnexpectedError(error);\r\n\t\t\treturn fallback;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async safeCallAsync<T>(fn: () => Promise<T>, context: string, fallback?: T): Promise<T | undefined> {\r\n\t\ttry {\r\n\t\t\treturn await fn();\r\n\t\t} catch (error) {\r\n\t\t\tthis.logIfDev(context, error);\r\n\t\t\tthis.onUnexpectedError(error);\r\n\t\t\treturn fallback;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic safeCallSilent(fn: () => void, context: string): void {\r\n\t\ttry {\r\n\t\t\tfn();\r\n\t\t} catch (error) {\r\n\t\t\tthis.logIfDev(context, error);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async safeCallSilentAsync<T>(fn: () => Promise<T>, context: string): Promise<T | undefined> {\r\n\t\ttry {\r\n\t\t\treturn await fn();\r\n\t\t} catch (error) {\r\n\t\t\tthis.logIfDev(context, error);\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tpublic wrapSafe<TArgs extends any[], TReturn>(\r\n\t\tfn: (...args: TArgs) => TReturn,\r\n\t\tcontext: string\r\n\t): (...args: TArgs) => TReturn | undefined {\r\n\t\treturn (...args: TArgs) => {\r\n\t\t\ttry {\r\n\t\t\t\treturn fn(...args);\r\n\t\t\t} catch (error) {\r\n\t\t\t\tthis.logIfDev(context, error);\r\n\t\t\t\tthis.onUnexpectedError(error);\r\n\t\t\t\treturn undefined;\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tpublic wrapSafeAsync<TArgs extends any[], TReturn>(\r\n\t\tfn: (...args: TArgs) => Promise<TReturn>,\r\n\t\tcontext: string\r\n\t): (...args: TArgs) => Promise<TReturn | undefined> {\r\n\t\treturn async (...args: TArgs) => {\r\n\t\t\ttry {\r\n\t\t\t\treturn await fn(...args);\r\n\t\t\t} catch (error) {\r\n\t\t\t\tthis.logIfDev(context, error);\r\n\t\t\t\tthis.onUnexpectedError(error);\r\n\t\t\t\treturn undefined;\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}\r\n\r\nexport const errorHandler = new ErrorHandler();\r\n\r\n\r\nexport function setErrorConsoleLogging(enabled: boolean): void {\r\n\terrorHandler.setConsoleLogging(enabled);\r\n}\r\n\r\nexport function safeCall<T>(fn: () => T, context: string, fallback?: T): T | undefined {\r\n\treturn errorHandler.safeCall(fn, context, fallback);\r\n}\r\n\r\nexport function safeCallAsync<T>(fn: () => Promise<T>, context: string, fallback?: T): Promise<T | undefined> {\r\n\treturn errorHandler.safeCallAsync(fn, context, fallback);\r\n}\r\n\r\n\r\nexport function safeCallSilent<T>(fn: () => T, context: string): void {\r\n\terrorHandler.safeCallSilent(fn, context);\r\n}\r\n\r\n\r\nexport function safeCallSilentAsync<T>(fn: () => Promise<T>, context: string): Promise<T | undefined> {\r\n\treturn errorHandler.safeCallSilentAsync(fn, context);\r\n}\r\n\r\nexport function wrapSafe<TArgs extends any[], TReturn>(\r\n\tfn: (...args: TArgs) => TReturn,\r\n\tcontext: string\r\n): (...args: TArgs) => TReturn | undefined {\r\n\treturn errorHandler.wrapSafe(fn, context);\r\n}\r\n\r\nexport function wrapSafeAsync<TArgs extends any[], TReturn>(\r\n\tfn: (...args: TArgs) => Promise<TReturn>,\r\n\tcontext: string\r\n): (...args: TArgs) => Promise<TReturn | undefined> {\r\n\treturn errorHandler.wrapSafeAsync(fn, context);\r\n}\r\n\r\nexport function setUnexpectedErrorHandler(handler: (e: any) => void): void {\r\n\terrorHandler.setUnexpectedErrorHandler(handler);\r\n}\r\n","export type DevEvent = { type: string; payload?: any };\r\nexport type DevWarning = { code: string; message: string; details?: any };\r\n\r\nconst state = {\r\n enabled: false as boolean,\r\n listeners: new Set<(ev: DevEvent) => void>(),\r\n warnings: [] as DevWarning[],\r\n routes: null as any,\r\n};\r\n\r\n/** Dev modu: devtools açık ya da `globalThis.__MOTIF_DEV__ === true`. */\r\nexport function isDevLike(): boolean {\r\n return state.enabled || (globalThis as any).__MOTIF_DEV__ === true;\r\n}\r\n\r\nexport function isRequestedByFlag(): boolean {\r\n try {\r\n if (typeof window === 'undefined') return false;\r\n const w = window as any;\r\n if (w.__motif_DEVTOOLS === true) return true;\r\n if ((globalThis as any).__MOTIF_DEVTOOLS__ === true) return true;\r\n if ((globalThis as any).__MOTIF_DEVTOOLS_FLAG === true) return true;\r\n return false;\r\n } catch { return false; }\r\n}\r\n\r\nfunction exposeBus(visible: boolean) {\r\n try {\r\n if (visible) (window as any).__motifDevBus = { on, emit, warn, getWarnings, isEnabled, setRoutes, getRoutes };\r\n else delete (window as any).__motifDevBus;\r\n } catch { }\r\n}\r\n\r\nexport function ensureDevtoolsFlagInitialized() {\r\n if (state.enabled) return;\r\n state.enabled = isRequestedByFlag();\r\n if (state.enabled) exposeBus(true);\r\n}\r\n\r\nexport function setDevtoolsEnabled(enabled: boolean) {\r\n state.enabled = enabled || isRequestedByFlag();\r\n exposeBus(state.enabled);\r\n}\r\n\r\nexport function isEnabled(): boolean { return state.enabled; }\r\n\r\nexport function on(listener: (ev: DevEvent) => void): () => void {\r\n state.listeners.add(listener);\r\n return () => { state.listeners.delete(listener); };\r\n}\r\n\r\nexport function emit(type: string, payload?: any) {\r\n const ev: DevEvent = { type, payload };\r\n for (const l of state.listeners) {\r\n try { l(ev); } catch { }\r\n }\r\n try {\r\n const bus = (globalThis as any).__MOTIF_DEVTOOLS_BUS__;\r\n if (bus && typeof bus.publish === 'function') {\r\n bus.publish('devtools:' + type, payload);\r\n }\r\n } catch { }\r\n}\r\n\r\nexport function warn(code: string, message: string, details?: any) {\r\n if (!isDevLike()) return;\r\n const w: DevWarning = { code, message, details };\r\n state.warnings.push(w);\r\n try { if (typeof console !== 'undefined') details === undefined ? console.warn(`[motifjs] ${code}: ${message}`) : console.warn(`[motifjs] ${code}: ${message}`, details); } catch { }\r\n emit('warning', w);\r\n}\r\n\r\nexport function getWarnings(): DevWarning[] { return state.warnings.slice(); }\r\n\r\nexport function setRoutes(routes: any) { state.routes = routes; }\r\nexport function getRoutes(): any { return state.routes; }\r","import { errorHandler } from \"./ErrorHandler\";\nimport { warn as devWarn } from \"../devtools/devbus\";\n\nexport const motifMessages = {\n MJX101: (tag: string) => `dom.createElement('${tag}'): no document is available (no DOM environment).`,\n MJX102: (description: string) => `Invalid element selector \"${description}\".`,\n MJX103: (tag: string) => `dom.createElementNS('${tag}') failed.`,\n MJX104: () => `Skipped inserting a component into the DOM because it contains its own parent.`,\n MJX105: () => `Applying router link classes failed.`,\n MJX106: () => `The placeholder parent changed; rebuilding the component.`,\n MJX107: () => `Disposing a child component failed.`,\n MJX108: () => `Component is disposed; the result of doWork was discarded.`,\n MJX109: () => `A content block child was removed because its content body is being disposed.`,\n MJX110: (ms: number) => `Lazy timeout: the component did not load within ${ms} ms.`,\n MJX111: () => `Lazy aborted: loading the component was cancelled.`,\n MJX112: (depth: number) => `resolveComponent: the factory chain exceeded ${depth} levels; a factory may be returning itself.`,\n MJX113: () => `The transport slot has no parent; mount the slot before transporting into it.`,\n MJX114: () => `Placing the navigation target into its host failed.`,\n MJX115: () => `Disposing the previous navigation target failed.`,\n MJX116: (ms: number) => `Timeout: the listener guard did not settle within ${ms} ms.`,\n MJX117: () => `Detaching a control failed.`,\n MJX118: () => `The onRemove callback failed while detaching a control.`,\n MJX119: () => `Moving a fragment's DOM range stopped: its end marker was not found (possible infinite loop).`,\n MJX120: () => `Scanning a fragment's DOM range stopped: its end marker was not found (possible infinite loop).`,\n MJX121: (compiled: number, runtime: number) => `This code was compiled for compiler contract ${compiled}, but the @motifx/core runtime implements contract ${runtime}. Install matching versions of @motifx/compiler and @motifx/core, and rebuild packages that ship compiled JSX.`,\n MJX122: (hook: string) => `The component ${hook} hook threw.`,\n MJX123: (event: string) => `The '${event}' event handler threw.`,\n MJX124: (key: string) => `A spread object on a DOM tag cannot set ${key}; the key was ignored. Write it on the tag, or use x-html, for HTML you trust.`,\n MJX125: (key: string) => `A spread object on a DOM tag cannot set a javascript: URL on '${key}'; the value was ignored. Write the attribute on the tag if it is intended.`,\n MJX126: () => `Lazy: loading the component failed and no Fallbackview is set; the host was cleared.`,\n MJX127: (got: string) => got === 'module'\n ? `The loaded module has no default export. Export the component as default, or map it: () => import('./X').then(m => m.X).`\n : `The loaded value is not a component (got ${got}). Return a component class, a function component, an Options API factory or a component instance.`,\n MJX128: (cls: string, member: string, how: 'method' | 'field' | 'replaced') => how === 'method'\n ? `${cls} overrides ${member} without calling super.${member}; MotifJS relies on this ComponentBase member. Rename your member, or call super.${member} in the override.`\n : how === 'field'\n ? `${cls} defines '${member}' as an instance field, which hides the ComponentBase member MotifJS relies on. Rename your field.`\n : `${cls} replaces '${member}', which MotifJS created for the component (a class field or an assignment with that name). Rename your member.`,\n\n MJX201: () => `ListBinding: renderFn must return a component instance, a component class, or a factory function.`,\n MJX202: (key: unknown, index: number) => `ListBinding: duplicate key \"${String(key)}\" at index ${index}. Rows are matched by the item object, not by key, so rendering is not affected; keep keys unique so they identify items.`,\n MJX203: (max: number) => `An effect ran ${max} times in one flush and keeps triggering itself; it is skipped for the rest of this flush. It probably writes a value it reads (for example state.n++). Wrap the write in untracked(...).`,\n MJX204: () => `A component reached a text binding and was not written to the DOM. For a template prop that can change later, write a getter: {() => props.tpl}. Templates that are ready at setup also work as {props.tpl}.`,\n MJX205: () => `Virtualization: the watch callback threw.`,\n MJX206: () => `Virtualization: autoRefresh stopped; dataRequest may be changing the reactive data it reads on every refresh.`,\n MJX207: () => `Virtualization: loading data failed.`,\n MJX208: () => `An effect threw.`,\n\n MJX301: (outlet: string, ms: number) => `RouterView outlet '${outlet}' was not built within ${ms} ms, so the route chain cannot be mounted. Does the layout component render a <RouterView>?`,\n MJX302: (name: string) => `Named route '${name}' was not found.`,\n MJX303: (chain: string) => `Redirect loop or too many redirects: ${chain}`,\n MJX304: () => `Route execution failed.`,\n MJX305: () => `The error fallback route failed.`,\n MJX306: (hook: string) => `The ${hook} hook threw.`,\n MJX307: () => `Disposing a route component failed.`,\n MJX308: () => `The stack navigation transition failed.`,\n MJX309: () => `Router is not initialized. Call useRouter() before navigating.`,\n MJX310: (parentPath: string) => `Route path cannot be empty; use '/' for the default child. Under parent \"${parentPath}\".`,\n MJX311: (path: string, parentPath: string) => `Child route path should start with '/': \"${path}\" under parent \"${parentPath}\".`,\n MJX312: (full: string) => `Child route path resolves to the same full path as its parent: \"${full}\".`,\n MJX313: (full: string) => `Multiple routes resolve to the same full path: \"${full}\".`,\n MJX314: (alias: string, parentPath: string) => `Child route alias should start with '/': \"${alias}\" under parent \"${parentPath}\".`,\n MJX315: (alias: string) => `Route alias resolves to the route's own path: \"${alias}\".`,\n MJX316: (alias: string) => `Multiple routes use the same alias: \"${alias}\".`,\n\n MJX401: (token: string) => `Service not registered for token: ${token}`,\n MJX402: (token: string) => `Async factory used with get() for token ${token}; use getAsync().`,\n MJX403: () => `Invalid service descriptor.`,\n MJX404: (chain: string) => `Cyclic dependency detected: ${chain}`,\n MJX405: () => `Only one ApplicationBuilder instance is allowed.`,\n MJX406: (selector: string) => `Application.run: host not found for selector: ${selector}`,\n MJX407: (token: string) => `getService: no ServiceProvider found for token '${token}'.`,\n MJX408: (token: string, reason: string) => `getService failed for token '${token}': ${reason}`,\n MJX409: (token: string) => `inject(${token}) was called outside a service construction; call it in a field initializer or constructor of a class the ServiceProvider creates.`,\n MJX410: (token: string, sources: string) => `Multiple sources provided for token '${token}': ${sources}. Resolution order is useValue > useFactory > useClass.`,\n MJX411: (token: string) => `'deps' must be an array for token '${token}'; the invalid deps are ignored.`,\n MJX413: (token: string) => `Service '${token}' is registered with a function that cannot be constructed. Use { useValue: fn } to provide the function itself or { useFactory: fn } to create the service.`,\n MJX414: (token: string, reason: string) => `FromService failed for token '${token}': ${reason}`,\n\n MJX501: () => `Disposable already disposed.`,\n MJX502: () => `Cannot register a disposable on itself.`,\n MJX503: () => `Errors were thrown while disposing a store.`,\n MJX504: () => `A disposable was added to a DisposableStore that is already disposed; the added object will leak.`,\n MJX505: () => `Cannot dispose a disposable on itself.`,\n MJX507: (name: string, limit: number, count: number) => `[${name}] potential listener LEAK: ${limit} listeners already; most frequent stack (${count}):`,\n\n MJX601: () => `Sequence contains no elements.`,\n MJX602: () => `Circuit is open.`,\n MJX603: () => `Bulkhead queue is full.`,\n MJX604: () => `Rate limit exceeded.`,\n MJX605: () => `Operation timed out.`,\n MJX607: () => `A history must be created with at least one entry.`,\n MJX608: () => `Method not implemented.`,\n MJX609: () => `OperationRunner: the operation threw.`,\n MJX610: () => `Matching the request path failed.`,\n MJX611: () => `The devtools panel failed to load.`,\n} satisfies Record<string, (...args: any[]) => string>;\n\nexport type MotifErrorCode = keyof typeof motifMessages;\ntype MessageArgs<C extends MotifErrorCode> = Parameters<(typeof motifMessages)[C]>;\n\nexport class MotifError extends Error {\n readonly code: MotifErrorCode;\n\n constructor(code: MotifErrorCode, message: string, options?: { cause?: unknown }) {\n super(message, options);\n this.name = 'MotifError';\n this.code = code;\n }\n}\n\nexport function formatMotifMessage<C extends MotifErrorCode>(code: C, ...args: MessageArgs<C>): string {\n return `[motifjs] ${code}: ${(motifMessages[code] as (...a: any[]) => string)(...args)}`;\n}\n\nexport function motifError<C extends MotifErrorCode>(code: C, ...args: MessageArgs<C>): MotifError {\n return new MotifError(code, formatMotifMessage(code, ...args));\n}\n\nexport function reportError<C extends MotifErrorCode>(code: C, cause: unknown, ...args: MessageArgs<C>): void {\n errorHandler.report(new MotifError(code, formatMotifMessage(code, ...args), { cause }));\n}\n\nexport function callReported<C extends MotifErrorCode>(fn: () => unknown, code: C, ...args: MessageArgs<C>): void {\n try {\n const result: any = fn();\n if (result && typeof result.then === 'function') {\n result.then(undefined, (error: unknown) => reportError(code, error, ...args));\n }\n } catch (error) {\n reportError(code, error, ...args);\n }\n}\n\nexport function reportWarning<C extends MotifErrorCode>(code: C, args: MessageArgs<C>, details?: unknown): void {\n devWarn(code, (motifMessages[code] as (...a: any[]) => string)(...args), details);\n}\n","import { IDisposable } from \"./IDisposable\";\n\nexport interface IDisposableTracker {\n trackDisposable(disposable: IDisposable): void;\n setParent(child: IDisposable, parent: IDisposable | null): void;\n markAsDisposed(disposable: IDisposable): void;\n markAsSingleton(disposable: IDisposable): void;\n}\n\nclass DisposableCore {\n\n disposableTracker: IDisposableTracker | null = null;\n\n notifyCreated<T extends IDisposable>(target: T): T {\n this.disposableTracker?.trackDisposable(target);\n return target;\n }\n\n notifyDisposed(target: IDisposable): void {\n this.disposableTracker?.markAsDisposed(target);\n }\n\n notifyOwner(target: IDisposable, owner: IDisposable | null): void {\n this.disposableTracker?.setParent(target, owner);\n }\n\n toDisposable(fn: () => void): IDisposable {\n let pending = true;\n const handle: IDisposable = {\n dispose: () => {\n if (!pending) {\n return;\n }\n pending = false;\n this.notifyDisposed(handle);\n fn();\n }\n };\n return this.notifyCreated(handle);\n }\n}\n\nexport const disposableCore: DisposableCore = new DisposableCore();\n","import { IDisposable } from \"./IDisposable\";\r\nimport { disposableCore } from \"./DisposableCore\";\r\nimport { MotifError, formatMotifMessage, motifError, reportWarning } from \"../common/diagnostics\";\r\n\r\nexport class DisposableStore implements IDisposable {\r\n\r\n private _items?: Set<IDisposable>;\r\n private _closed = false;\r\n\r\n constructor() {\r\n disposableCore.notifyCreated(this);\r\n }\r\n\r\n get isDisposed(): boolean {\r\n return this._closed;\r\n }\r\n\r\n add<T extends IDisposable>(item: T): T {\r\n if (!item) {\r\n return item;\r\n }\r\n if ((item as unknown) === this) {\r\n throw motifError('MJX502');\r\n }\r\n disposableCore.notifyOwner(item, this);\r\n if (this._closed) {\r\n reportWarning('MJX504', [], new Error().stack);\r\n } else {\r\n (this._items ??= new Set()).add(item);\r\n }\r\n return item;\r\n }\r\n\r\n delete<T extends IDisposable>(item: T): void {\r\n if (!item) {\r\n return;\r\n }\r\n if ((item as unknown) === this) {\r\n throw motifError('MJX505');\r\n }\r\n this._items?.delete(item);\r\n item.dispose();\r\n }\r\n\r\n detach<T extends IDisposable>(item: T): void {\r\n if (item && this._items?.delete(item)) {\r\n disposableCore.notifyOwner(item, null);\r\n }\r\n }\r\n\r\n clear(): void {\r\n const items = this._items;\r\n if (!items || items.size === 0) {\r\n return;\r\n }\r\n const failures: unknown[] = [];\r\n for (const item of items) {\r\n try {\r\n item?.dispose();\r\n } catch (error) {\r\n failures.push(error);\r\n }\r\n }\r\n items.clear();\r\n if (failures.length === 1) {\r\n throw failures[0];\r\n }\r\n if (failures.length > 1) {\r\n throw new MotifError('MJX503', formatMotifMessage('MJX503'), { cause: new AggregateError(failures) });\r\n }\r\n }\r\n\r\n dispose(): void {\r\n if (this._closed) {\r\n return;\r\n }\r\n disposableCore.notifyDisposed(this);\r\n this._closed = true;\r\n this.clear();\r\n }\r\n}\r\n","import { motifError, reportWarning } from \"../common/diagnostics\";\nimport { IDisposable } from \"./IDisposable\";\nimport { disposableCore } from \"./DisposableCore\";\nimport { DisposableStore } from \"./DisposableStore\";\n\nlet closedStore: DisposableStore | undefined;\n\nfunction sharedClosedStore(): DisposableStore {\n if (closedStore === undefined) {\n closedStore = new DisposableStore();\n closedStore.dispose();\n }\n return closedStore;\n}\n\nexport abstract class Disposable implements IDisposable {\n\n private _store?: DisposableStore | null = undefined;\n\n protected get _disposables(): DisposableStore {\n let store = this._store;\n if (store === undefined) {\n store = this._store = new DisposableStore();\n disposableCore.notifyOwner(store, this);\n }\n return store as DisposableStore;\n }\n\n constructor() {\n disposableCore.notifyCreated(this);\n }\n\n public dispose(): void {\n disposableCore.notifyDisposed(this);\n const owned = this._store;\n if (owned === undefined) {\n this._store = sharedClosedStore();\n } else if (owned && typeof owned.dispose === 'function') {\n owned.dispose();\n } else {\n reportWarning('MJX501', [], { disposable: this });\n }\n }\n\n protected _register<T extends IDisposable>(item: T): T {\n if ((item as unknown) === this) {\n throw motifError('MJX502');\n }\n return this._disposables.add(item);\n }\n}\n","\r\n\r\nexport const Flags = {\r\n IS_REACTIVE: Symbol.for('motif.isReactive'),\r\n IS_READONLY: Symbol.for('motif.isReadonly'),\r\n IS_SUPERFICIAL: Symbol.for('motif.isSuperficial'),\r\n RAW: Symbol.for('motif.raw'),\r\n GET_SETUP: Symbol.for('motif.getSetup'),\r\n} as const;\r\n\r\nexport const enum TargetType {\r\n SYSTEM = 0,\r\n INVALID = SYSTEM,\r\n COMMON = 0b01,\r\n COLLECTION = 0b10\r\n}\r\n\r\nexport const ITERATE_KEY = Symbol('')\r\nexport let followTracking: boolean = true;\r\nexport let arrayScope: { enabled: boolean, key: string } = { enabled: false, key: '' };\r\n\r\n\r\nexport function getRaw<T>(value: T): T {\r\n let current = value;\r\n while (current && (current as any)[Flags.RAW]) {\r\n current = (current as any)[Flags.RAW];\r\n }\r\n return current;\r\n}\r\n\r\nexport function isReadonly(candidate: unknown): boolean {\r\n if (candidate == null) return false;\r\n return Boolean((candidate as any)[Flags.IS_READONLY]);\r\n}\r\n\r\nexport function hasOwn(target: object, key: PropertyKey): boolean {\r\n return Object.prototype.hasOwnProperty.call(target, key);\r\n}\r\n\r\nexport function isObject(value: unknown): value is Record<any, any> {\r\n return typeof value === 'object' && value !== null;\r\n}\r\n\r\nconst intrinsicSymbols: ReadonlySet<symbol> = new Set(\r\n Object.values(Object.getOwnPropertyDescriptors(Symbol))\r\n .map(descriptor => descriptor.value)\r\n .filter((value): value is symbol => typeof value === 'symbol')\r\n);\r\n\r\nexport function isIntrinsicSymbol(key: unknown): boolean {\r\n return typeof key === 'symbol' && intrinsicSymbols.has(key);\r\n}\r\n\r\nconst proxyableTags = new Map<string, TargetType>([\r\n ['[object Object]', TargetType.COMMON],\r\n ['[object Array]', TargetType.COMMON],\r\n ['[object Map]', TargetType.COLLECTION],\r\n ['[object Set]', TargetType.COLLECTION],\r\n ['[object WeakMap]', TargetType.COLLECTION],\r\n ['[object WeakSet]', TargetType.COLLECTION],\r\n]);\r\n\r\nexport function getTargetType(value: any): TargetType {\r\n var proto = Object.getPrototypeOf(value);\r\n var cname = \"\";\r\n if (proto && proto.constructor) {\r\n cname = proto.constructor.name;\r\n }\r\n if ((cname === \"Control\" || cname == \"RouteManager\" || cname == \"ServiceManager\")) {\r\n return TargetType.SYSTEM;\r\n }\r\n if (!Object.isExtensible(value)) {\r\n return TargetType.INVALID;\r\n }\r\n return proxyableTags.get(Object.prototype.toString.call(value)) ?? TargetType.INVALID;\r\n}\r\n\r\nconst canonicalIndex = /^(?:0|[1-9]\\d*)$/;\r\nexport const isNumericKey = (key: unknown): boolean =>\r\n typeof key === 'string' && canonicalIndex.test(key) && String(Number(key)) === key;\r\n\r\n\r\nconst savedTracking: boolean[] = [];\r\nlet trackingDepth = 0;\r\n\r\nfunction enterTracking(enabled: boolean) {\r\n savedTracking[trackingDepth++] = followTracking;\r\n followTracking = enabled;\r\n}\r\n\r\nexport function pauseTracking() {\r\n enterTracking(false);\r\n}\r\n\r\nexport function enableTracking() {\r\n enterTracking(true);\r\n}\r\n\r\nexport function resetTracking() {\r\n followTracking = trackingDepth > 0 ? savedTracking[--trackingDepth] : true;\r\n}\r\n\r\nconst arrayStack: { enabled: boolean, key: string }[] = []\r\n\r\n\r\nexport function addArrayStack(key: any) {\r\n arrayStack.push(arrayScope)\r\n arrayScope.enabled = true;\r\n arrayScope.key = key;\r\n}\r\nexport function removeArrayStack() {\r\n const last = arrayStack.pop();\r\n if (arrayStack.length > 0) {\r\n arrayScope = last === undefined ? { enabled: false, key: '' } : last;\r\n } else {\r\n arrayScope = { enabled: false, key: '' }\r\n }\r\n\r\n}\r\n\r\n\r\ndeclare const opaqueBrand: unique symbol\r\ndeclare const shallowBrand: unique symbol\r\n\r\ntype OpaqueState = Function | Map<any, any> | Set<any> | WeakMap<any, any> | WeakSet<any> | string | number | boolean | { [opaqueBrand]?: true }\r\n\r\ntype DeepState<T> = T extends OpaqueState ? T\r\n : T extends Array<any> ? { [Index in keyof T]: DeepState<T[Index]> }\r\n : T extends object & { [shallowBrand]?: never } ? { [Key in keyof T]: Key extends symbol ? T[Key] : DeepState<T[Key]> }\r\n : T\r\n\r\ninterface BoxedPrimitive<T> { value: T }\r\n\r\nexport type UnwrapValueRefs<T> = T extends number | string | boolean ? BoxedPrimitive<T> : DeepState<T>;\r\n\r\n\r\nexport var setupListener: any;\r\nexport var setupActive = false;\r\n\r\nexport function listenSetup(key: any) {\r\n setupListener = key;\r\n setupActive = true;\r\n}\r\n\r\nexport function closeSetup() {\r\n setupListener = null;\r\n setupActive = false;\r\n}","import { ComponentBase, motifFragment, resolveComponent } from \"../\";\r\nimport { effect, untracked } from \"../\";\r\nimport { getRaw } from \"../store/common\";\r\nimport { motifError, reportWarning } from \"../common/diagnostics\";\r\nimport { IBaseBinding } from \"./\";\r\n\r\n\r\nexport interface ListBindingOptions {\r\n reuse?: boolean;\r\n}\r\n\r\nexport class ListBinding implements IBaseBinding {\r\n propertyName: string = \"__list__\";\r\n dataSource: any;\r\n dataMember?: string | undefined;\r\n formatString?: string | undefined;\r\n converter?: ((value: any) => any) | undefined;\r\n converterBack?: ((value: any) => any) | undefined;\r\n updateMode?: \"onPropertyChanged\" | \"onValidation\" | \"never\" | undefined;\r\n private _isActive = false;\r\n private _effectCleanup?: () => void;\r\n private _rendered: ComponentBase[] = [];\r\n private _identityMap = new WeakMap<object, ComponentBase[]>();\r\n private container: ComponentBase = motifFragment('list-container');\r\n constructor(private component: ComponentBase,\r\n private itemsFn: () => any[] | Iterable<any>,\r\n private renderFn: (item: any, index: number) => ComponentBase,\r\n private options?: ListBindingOptions) {\r\n this.component.controls.add(this.container);\r\n\r\n }\r\n activate(): void { if (this._isActive) return; this._isActive = true; this._setupBinding(); }\r\n deactivate(): void {\r\n if (!this._isActive) return;\r\n this._isActive = false;\r\n if (this._effectCleanup) {\r\n this._effectCleanup();\r\n this._effectCleanup = undefined;\r\n }\r\n this._disposeAll();\r\n }\r\n reActivate(): void {\r\n\r\n this.deactivate();\r\n this.activate();\r\n }\r\n private _disposeAll() {\r\n this._rendered.forEach(c => { try { c.dispose && c.dispose(); } catch { } });\r\n this._rendered = [];\r\n this._identityMap = new WeakMap();\r\n }\r\n private _toArray(src: any): any[] {\r\n if (!src) return [];\r\n if (Array.isArray(src)) return src;\r\n if (typeof src === 'function') return this._toArray(src());\r\n if (src[Symbol.iterator]) return Array.from(src as Iterable<any>);\r\n return [];\r\n }\r\n private _getComponentKey(comp: ComponentBase): any {\r\n try {\r\n const p: any = (comp as any).props;\r\n if (p && typeof p.indexkey === 'function') {\r\n return p.indexkey();\r\n }\r\n if (p && typeof p.indexkey !== 'undefined' && p.indexkey !== null) {\r\n return p.indexkey;\r\n }\r\n } catch { }\r\n try {\r\n const k = (comp as any).motif.options?.__key;\r\n if (typeof k !== 'undefined') return k;\r\n } catch { }\r\n return undefined;\r\n }\r\n\r\n private isPreCreated(comp: ComponentBase): boolean {\r\n return comp.element !== null || comp.parent !== null;\r\n }\r\n\r\n private _render(item: any, idx: number): ComponentBase {\r\n return untracked(() => {\r\n const rendered = this.renderFn(item, idx);\r\n return this.processRendered(rendered, item);\r\n });\r\n }\r\n\r\n private processRendered(rendered: any, item: any): ComponentBase {\r\n const component: ComponentBase = resolveComponent(rendered);\r\n if (!(component instanceof ComponentBase)) {\r\n throw motifError('MJX201');\r\n }\r\n\r\n try { (component as any)._base.itemRef = item; } catch { }\r\n try { (component.motif.options as any).__fromList = true; } catch { }\r\n\r\n if (typeof (component as any).__listAdopted === 'undefined') {\r\n (component as any).__listAdopted = component.parent !== null && component.parent !== undefined;\r\n }\r\n\r\n return component;\r\n }\r\n private olditems: any[] = [];\r\n\r\n private get _indexSensitive(): boolean {\r\n try { return this.renderFn.length >= 2; } catch { return true; }\r\n }\r\n\r\n private static _isPrimitive(v: any): boolean {\r\n return v === null || typeof v !== 'object';\r\n }\r\n\r\n private _setupBinding() {\r\n const update = () => {\r\n const source = this._toArray(this.itemsFn());\r\n const rawSource = getRaw(source);\r\n const count = source.length;\r\n let items: any[];\r\n if (rawSource === source) {\r\n items = source;\r\n } else {\r\n items = new Array(count);\r\n for (let i = 0; i < count; i++) {\r\n if (i in rawSource) items[i] = source[i];\r\n else void source[i];\r\n }\r\n }\r\n const prevItems = this.olditems;\r\n const prevComponents = this._rendered;\r\n if (this.olditems.length > 0) {\r\n const currentRaws = new Set<any>();\r\n for (let i = 0; i < count; i++) currentRaws.add(getRaw(items[i]));\r\n for (const old of this.olditems) {\r\n const raw = getRaw(old);\r\n if (!currentRaws.has(raw)) {\r\n const list = this._identityMap.get(raw);\r\n if (list) {\r\n this._identityMap.delete(raw);\r\n for (const component of list) {\r\n try { component.dispose(); } catch { }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n const newComponents: ComponentBase[] = [];\r\n const usedComponents = new Set<ComponentBase>();\r\n const seenKeys = new Map<any, number>();\r\n\r\n const claimed = new Set<ComponentBase>();\r\n const positionalReuse = new Map<number, ComponentBase>();\r\n const isReusable = (c: ComponentBase | undefined): c is ComponentBase =>\r\n !!c && !c.isDisposed && !claimed.has(c) && !(c as any).__listAdopted;\r\n\r\n const shared = Math.min(items.length, prevItems.length);\r\n for (let i = 0; i < shared; i++) {\r\n const it = items[i];\r\n if (!ListBinding._isPrimitive(it)) continue;\r\n if (!Object.is(prevItems[i], it)) continue;\r\n const comp = prevComponents[i];\r\n if (!isReusable(comp)) continue;\r\n positionalReuse.set(i, comp);\r\n claimed.add(comp);\r\n }\r\n\r\n let valuePool: Map<any, ComponentBase[]> | null = null;\r\n if (!this._indexSensitive) {\r\n valuePool = new Map<any, ComponentBase[]>();\r\n for (let i = 0; i < prevItems.length; i++) {\r\n const prev = prevItems[i];\r\n if (!ListBinding._isPrimitive(prev)) continue;\r\n const comp = prevComponents[i];\r\n if (!isReusable(comp)) continue;\r\n const queue = valuePool.get(prev);\r\n if (queue) queue.push(comp); else valuePool.set(prev, [comp]);\r\n }\r\n }\r\n\r\n const occurrences = new Map<object, number>();\r\n items.forEach((item, idx) => {\r\n let component: ComponentBase;\r\n if (typeof item === 'object' && item !== null) {\r\n const raw = getRaw(item);\r\n const occurrence = occurrences.get(raw) ?? 0;\r\n occurrences.set(raw, occurrence + 1);\r\n let list = this._identityMap.get(raw);\r\n if (!list) {\r\n list = [];\r\n this._identityMap.set(raw, list);\r\n }\r\n const existing = list[occurrence];\r\n if (existing && !existing.isDisposed) {\r\n component = existing;\r\n } else {\r\n component = this._render(item, idx);\r\n list[occurrence] = component;\r\n }\r\n }\r\n else {\r\n let reused = positionalReuse.get(idx);\r\n if (!reused && valuePool) {\r\n const queue = valuePool.get(item);\r\n if (queue && queue.length) {\r\n reused = queue.shift()!;\r\n claimed.add(reused);\r\n }\r\n }\r\n if (reused) {\r\n component = reused;\r\n } else {\r\n component = this._render(item, idx);\r\n }\r\n }\r\n const userKey = this._getComponentKey(component);\r\n if (userKey !== undefined && userKey !== null) {\r\n if (seenKeys.has(userKey)) {\r\n reportWarning('MJX202', [userKey, idx]);\r\n } else {\r\n seenKeys.set(userKey, idx);\r\n }\r\n }\r\n\r\n newComponents.push(component);\r\n usedComponents.add(component);\r\n });\r\n\r\n occurrences.forEach((count, raw) => {\r\n const list = this._identityMap.get(raw);\r\n if (list && list.length > count) list.length = count;\r\n });\r\n\r\n this._rendered.forEach(comp => {\r\n if (!usedComponents.has(comp) && !(comp as any).__listAdopted) {\r\n try { comp.dispose(); } catch { }\r\n }\r\n });\r\n\r\n this._syncContainer(newComponents);\r\n\r\n this._rendered = newComponents;\r\n this.olditems = items === source ? source.slice() : items;\r\n return count;\r\n };\r\n this._effectCleanup = effect(() => update());\r\n }\r\n\r\n private _syncContainer(newComponents: ComponentBase[]) {\r\n const controls = this.container.controls;\r\n const items = controls.items;\r\n\r\n if (items.length === 0) {\r\n for (const comp of newComponents) {\r\n try { controls.add(comp); } catch { }\r\n }\r\n return;\r\n }\r\n\r\n if (newComponents.length >= items.length) {\r\n let appendOnly = true;\r\n for (let i = 0; i < items.length; i++) {\r\n if (newComponents[i] !== items[i]) {\r\n appendOnly = false;\r\n break;\r\n }\r\n }\r\n\r\n if (appendOnly && newComponents.length > items.length) {\r\n const existing = new Set(items);\r\n for (let i = items.length; i < newComponents.length; i++) {\r\n if (existing.has(newComponents[i])) {\r\n appendOnly = false;\r\n break;\r\n }\r\n existing.add(newComponents[i]);\r\n }\r\n }\r\n\r\n if (appendOnly) {\r\n for (let i = items.length; i < newComponents.length; i++) {\r\n try { controls.add(newComponents[i]); } catch { }\r\n }\r\n return;\r\n }\r\n }\r\n\r\n const oldIndex = new Map<ComponentBase, number>();\r\n items.forEach((c, i) => oldIndex.set(c, i));\r\n const sources = newComponents.map(c => {\r\n const oi = oldIndex.get(c);\r\n return oi === undefined ? -1 : oi;\r\n });\r\n\r\n const stable = new Set(longestIncreasingIndices(sources));\r\n\r\n if (newComponents.length === items.length && isPermutation(sources, newComponents, this.container)) {\r\n controls._reorder(newComponents, stable);\r\n return;\r\n }\r\n\r\n let anchor: ComponentBase | null = null;\r\n for (let i = newComponents.length - 1; i >= 0; i--) {\r\n const comp = newComponents[i];\r\n try {\r\n if (sources[i] === -1) {\r\n if (anchor) {\r\n const at = items.indexOf(anchor);\r\n controls.add(at >= 0 ? at : items.length, comp);\r\n } else {\r\n controls.add(comp);\r\n }\r\n } else if (!stable.has(i)) {\r\n controls.move(comp, anchor);\r\n }\r\n } catch { }\r\n anchor = comp;\r\n }\r\n }\r\n}\r\n\r\nfunction isPermutation(sources: number[], components: ComponentBase[], owner: ComponentBase): boolean {\r\n const seen = new Uint8Array(sources.length);\r\n for (let i = 0; i < sources.length; i++) {\r\n const s = sources[i];\r\n if (s === -1 || seen[s]) return false;\r\n seen[s] = 1;\r\n const c = components[i];\r\n if (c.isDisposed || c.parent !== owner) return false;\r\n }\r\n return true;\r\n}\r\n\r\nfunction longestIncreasingIndices(sources: number[]): number[] {\r\n const predecessors = new Array<number>(sources.length).fill(-1);\r\n const tails: number[] = [];\r\n\r\n for (let i = 0; i < sources.length; i++) {\r\n const v = sources[i];\r\n if (v === -1) continue;\r\n if (tails.length === 0 || sources[tails[tails.length - 1]] < v) {\r\n predecessors[i] = tails.length > 0 ? tails[tails.length - 1] : -1;\r\n tails.push(i);\r\n continue;\r\n } \r\n let lo = 0, hi = tails.length - 1;\r\n while (lo < hi) {\r\n const mid = (lo + hi) >> 1;\r\n if (sources[tails[mid]] < v) lo = mid + 1; else hi = mid;\r\n }\r\n if (v < sources[tails[lo]]) {\r\n predecessors[i] = lo > 0 ? tails[lo - 1] : -1;\r\n tails[lo] = i;\r\n }\r\n }\r\n\r\n const result: number[] = [];\r\n let u = tails.length > 0 ? tails[tails.length - 1] : -1;\r\n while (u !== -1) {\r\n result.push(u);\r\n u = predecessors[u];\r\n }\r\n return result.reverse();\r\n}"," \r\nexport class NameValuePair<KType, VType> {\r\n public Key!: KType;\r\n public value!: VType;\r\n}; ","export class List<T>{\r\n \r\n public ItemAdded!: (i: T) => void;\r\n public ItemAddedBefore!: (i: T) => void;\r\n public ItemSplice!: (start:any, i: T) => void;\r\n private __list: Array<T> = [];\r\n private _map = new Set<T>();\r\n public Dispose() {\r\n this.__list = [];\r\n\r\n }\r\n public Add(item: T): number {\r\n this._map.add(item);\r\n var i = this.__list.push(item) - 1;\r\n if (this.ItemAdded != undefined) { this.ItemAdded(item); };\r\n return i;\r\n }\r\n\r\n public AddBefore(item: T) {\r\n this._map.add(item);\r\n var i = this.__list.unshift(item) - 1;\r\n if (this.ItemAddedBefore != undefined) { this.ItemAddedBefore(item); };\r\n return i;\r\n\r\n }\r\n\r\n public Insert(start:any, item: T) {\r\n this._map.add(item);\r\n var i = this.__list.splice(start, 0, item);\r\n if (this.ItemSplice != undefined) { this.ItemSplice(start, item); };\r\n return i;\r\n }\r\n\r\n public get items(): Array<T> {\r\n return this.__list;\r\n }\r\n\r\n public clear(): T[] {\r\n this._map.clear();\r\n this.__list.splice(0);\r\n this.__list = [];\r\n return this.__list;\r\n };\r\n public get count(): number { \r\n return this.__list.length;\r\n };\r\n\r\n public remove(item: T): T[] {\r\n const index = this.__list.indexOf(item);\r\n if (index === -1) return [];\r\n this._map.delete(item);\r\n return this.__list.splice(index, 1);\r\n };\r\n\r\n public indexOf(item: T): number {\r\n return this.__list.indexOf(item)\r\n }\r\n\r\n public FindFromKey(key: any, value: any): T[] {\r\n return this.__list.filter(i => { return (i as any)[key] === value })\r\n }\r\n\r\n public removeIndex(index: number): T[] {\r\n var deleted = this.__list.splice(index, 1);\r\n deleted.forEach(t => {\r\n this._map.delete(t);\r\n })\r\n return deleted;\r\n };\r\n\r\n public has(item: T): boolean {\r\n return this._map.has(item);\r\n }\r\n\r\n public item(index: number): T {\r\n return this.__list[index];\r\n }\r\n\r\n public forEach(callbackfn: (value: T, index: number, array: T[]) => void) {\r\n\r\n this.__list?.forEach(callbackfn);\r\n }\r\n\r\n public ReverseClone(): Array<T> {\r\n return this.__list.slice().reverse();\r\n }\r\n\r\n public filter(callbackfn: (value: T, index: number, array: T[]) => boolean ): Array<T> {\r\n return this.__list.filter(callbackfn);\r\n }\r\n};","\r\n\r\nimport { NodeTypes } from \".\";\r\nimport { reportError } from \"./diagnostics\";\r\nimport { Component, ComponentBase } from \"../component\";\r\nimport { IDisposable } from \"../disposable\";\r\n\r\nexport const toKebab = (str: string) => str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? \"-\" : \"\") + $.toLowerCase());\r\n\r\n\r\nexport function toDisposable(fn: () => void): IDisposable {\r\n let pending = true;\r\n return {\r\n dispose() {\r\n if (!pending) {\r\n return;\r\n }\r\n pending = false;\r\n fn();\r\n }\r\n };\r\n}\r\n\r\n\r\n\r\nexport function advanceif(source: ComponentBase, ...targets: NodeTypes[]) {\r\n if (targets.indexOf(source.element.nodeType) > -1) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function advelif(source: any, ...targets: NodeTypes[]) {\r\n if (source && targets.indexOf(source.nodeType) > -1) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function isAnchorElement(source: ComponentBase) {\r\n return source.element.nodeName == 'A';\r\n}\r\n\r\nexport function isElement(source: ComponentBase) {\r\n return source.element.nodeType == NodeTypes.ELEMENT_NODE;\r\n}\r\nexport function isview(source: ComponentBase) {\r\n return source.element.nodeName == 'view';\r\n}\r\n\r\n\r\n\r\nexport function isComponent(source: any) {\r\n return source instanceof ComponentBase\r\n}\r\nexport function createComponent(tag: any, options: any) {\r\n return new Component(tag, options)\r\n}\r\n\r\n\r\nexport function normalizePath(p: string): string {\r\n return '/' + p.replace(/^\\/+|\\/+$/g, '');\r\n}\r\nexport function startsWithPath(requestPath: string, prefix: string): boolean {\r\n const rp = normalizePath(requestPath);\r\n const pp = normalizePath(prefix);\r\n return rp === pp || rp.startsWith(pp + '/');\r\n}\r\n\r\nexport function isExactMatch(requestPath: string, target: string): boolean {\r\n try {\r\n const strip = (p: string) => {\r\n return p.trim()\r\n .split(/[?#]/)[0]\r\n .replace(/\\\\/g, \"/\")\r\n .replace(/\\/{2,}/g, \"/\");\r\n }\r\n return strip(requestPath) === strip(target);\r\n } catch (error) {\r\n reportError('MJX610', error);\r\n return false;\r\n }\r\n\r\n}\r\n\r\nexport function findAppendableComponent(component: ComponentBase): ComponentBase | null {\r\n try {\r\n if (component.isDisposed) return null;\r\n if (component.element.nodeType !== Node.COMMENT_NODE && component.element.nodeType !== Node.DOCUMENT_FRAGMENT_NODE && component.element.nodeType !== Node.TEXT_NODE) {\r\n return component;\r\n } else if (component.parent) {\r\n return findAppendableComponent(component.parent);\r\n }\r\n } catch (error) {\r\n throw error;\r\n }\r\n return null;\r\n}","import { reportWarning } from \"./diagnostics\";\n\nexport class LeakMonitor {\n\n private readonly _origins = new Map<string, number>();\n private _quietChecks = 0;\n\n constructor(readonly threshold: number, readonly name: string) { }\n\n check(size: number): (() => void) | undefined {\n if (this.threshold <= 0 || size < this.threshold) {\n return undefined;\n }\n const origin = new Error().stack ?? '';\n this._origins.set(origin, (this._origins.get(origin) ?? 0) + 1);\n\n this._quietChecks--;\n if (this._quietChecks <= 0) {\n this._quietChecks = this.threshold / 2;\n const [stack, count] = this._busiestOrigin();\n reportWarning('MJX507', [this.name, size, count], stack);\n }\n\n return () => {\n this._origins.set(origin, (this._origins.get(origin) ?? 0) - 1);\n };\n }\n\n private _busiestOrigin(): [string, number] {\n let busiest: [string, number] = ['', 0];\n for (const entry of this._origins) {\n if (entry[1] > busiest[1]) {\n busiest = entry;\n }\n }\n return busiest;\n }\n}\n","import { List, NameValuePair } from \"./\";\r\n\r\nexport class Dictionary<KType, VType> {\r\n private __values: List<NameValuePair<KType, VType>> = new List<NameValuePair<KType, VType>>();\r\n public Add(Key: KType, Value: VType): number {\r\n\r\n\r\n var item = new NameValuePair<KType, VType>();\r\n item.Key = Key;\r\n item.value = Value;\r\n var n = this.__values.Add(item);\r\n if (this.OnItemAdded != null) {\r\n this.OnItemAdded(item.Key, item.value);\r\n }\r\n\r\n return n;\r\n\r\n }\r\n public has(key: KType) {\r\n return this.filter(t => t.Key == key)[0] ? true : false;\r\n }\r\n public item(key: KType) {\r\n return this.filter(t => t.Key == key)[0]\r\n }\r\n public OnItemAdded!: (key: KType, value: VType) => any;\r\n public removeIndex(index: number): NameValuePair<KType, VType>[] {\r\n return this.__values.removeIndex(index);\r\n };\r\n public remove(Key: KType) {\r\n var item = this.__values.filter(x => x.Key == Key);\r\n item.forEach((v) => {\r\n this.__values.remove(v);\r\n });\r\n };\r\n public clear() {\r\n this.__values.clear();\r\n };\r\n public forEach(callback: ((item: NameValuePair<KType, VType>) => void)) {\r\n this.__values.forEach(callback);\r\n\r\n }\r\n public get values(): List<NameValuePair<KType, VType>> {\r\n return this.__values;\r\n }\r\n public filter(callbackfn: (value: NameValuePair<KType, VType>, index: number, array: NameValuePair<KType, VType>[]) => boolean): NameValuePair<KType, VType>[] {\r\n return this.__values.items.filter(callbackfn);\r\n }\r\n\r\n public find(predicate: (value: NameValuePair<KType, VType>, index: number, obj: NameValuePair<KType, VType>[]) => unknown, thisArg?: any): NameValuePair<KType, VType> | undefined {\r\n return this.__values.items.find(predicate);\r\n }\r\n} ","interface Link<T> {\n value: T | undefined;\n before: Link<T>;\n after: Link<T>;\n linked: boolean;\n}\n\nfunction createRing<T>(): Link<T> {\n const ring = { value: undefined, linked: false } as Link<T>;\n ring.before = ring;\n ring.after = ring;\n return ring;\n}\n\nexport class LinkedList<T> {\n\n private _ring: Link<T> = createRing<T>();\n private _count = 0;\n\n get size(): number {\n return this._count;\n }\n\n isEmpty(): boolean {\n return this._count === 0;\n }\n\n push(value: T): () => void {\n return this._link(value, this._ring.before);\n }\n\n unshift(value: T): () => void {\n return this._link(value, this._ring);\n }\n\n pop(): T | undefined {\n return this._take(this._ring.before);\n }\n\n shift(): T | undefined {\n return this._take(this._ring.after);\n }\n\n clear(): void {\n for (let link = this._ring.after; link !== this._ring; link = link.after) {\n link.linked = false;\n }\n this._ring = createRing<T>();\n this._count = 0;\n }\n\n *[Symbol.iterator](): Iterator<T> {\n const ring = this._ring;\n for (let link = ring.after; link !== ring; link = link.after) {\n yield link.value as T;\n }\n }\n\n private _link(value: T, previous: Link<T>): () => void {\n const link: Link<T> = { value, before: previous, after: previous.after, linked: true };\n previous.after.before = link;\n previous.after = link;\n this._count++;\n return () => this._unlink(link);\n }\n\n private _take(link: Link<T>): T | undefined {\n if (link === this._ring) {\n return undefined;\n }\n const value = link.value;\n this._unlink(link);\n return value;\n }\n\n private _unlink(link: Link<T>): void {\n if (!link.linked) {\n return;\n }\n link.linked = false;\n link.before.after = link.after;\n link.after.before = link.before;\n this._count--;\n }\n}\n","export type Bind<T> = T | (() => T);\n\nexport function toGetter<T>(value: Bind<T>): () => T {\n return typeof value === 'function' ? (value as () => T) : () => value;\n}\n\nexport function read<T>(value: Bind<T>): T {\n return typeof value === 'function' ? (value as () => T)() : value;\n}\n","import { motifError } from \"./diagnostics\";\nexport interface Group<TKey, TElement> {\n key: TKey;\n items: TElement[];\n}\n\nfunction compareKeys<TKey>(a: TKey, b: TKey): number {\n return a > b ? 1 : a < b ? -1 : 0;\n}\n\nexport class Query<T> implements Iterable<T> {\n private readonly source: readonly T[];\n\n constructor(source: Iterable<T>) {\n this.source = Array.isArray(source) ? source : Array.from(source);\n }\n\n static from<T>(source: Iterable<T>): Query<T> {\n return new Query(source);\n }\n\n where(predicate: (item: T, index: number) => boolean): Query<T> {\n return new Query(this.source.filter(predicate));\n }\n\n select<TResult>(selector: (item: T, index: number) => TResult): Query<TResult> {\n return new Query(this.source.map(selector));\n }\n\n orderBy<TKey>(keySelector: (item: T) => TKey): Query<T> {\n return new Query([...this.source].sort((a, b) => compareKeys(keySelector(a), keySelector(b))));\n }\n\n orderByDescending<TKey>(keySelector: (item: T) => TKey): Query<T> {\n return new Query([...this.source].sort((a, b) => compareKeys(keySelector(b), keySelector(a))));\n }\n\n distinctBy<TKey>(keySelector: (item: T) => TKey): Query<T> {\n const seen = new Set<TKey>();\n return new Query(this.source.filter(item => {\n const key = keySelector(item);\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n }));\n }\n\n groupBy<TKey>(keySelector: (item: T) => TKey): Query<Group<TKey, T>> {\n const map = new Map<TKey, T[]>();\n for (const item of this.source) {\n const key = keySelector(item);\n const group = map.get(key);\n if (group) {\n group.push(item);\n } else {\n map.set(key, [item]);\n }\n }\n return new Query(Array.from(map, ([key, items]) => ({ key, items })));\n }\n\n first(): T {\n if (this.source.length === 0) {\n throw motifError('MJX601');\n }\n return this.source[0];\n }\n\n firstOrDefault(): T | undefined {\n return this.source[0];\n }\n\n any(predicate?: (item: T) => boolean): boolean {\n return predicate ? this.source.some(predicate) : this.source.length > 0;\n }\n\n all(predicate: (item: T) => boolean): boolean {\n return this.source.every(predicate);\n }\n\n aggregate<TResult>(seed: TResult, func: (acc: TResult, item: T) => TResult): TResult {\n return this.source.reduce(func, seed);\n }\n\n toArray(): T[] {\n return [...this.source];\n }\n\n [Symbol.iterator](): Iterator<T> {\n return this.source[Symbol.iterator]();\n }\n}\n","import { reportWarning } from \"./diagnostics\";\nimport { isDevLike } from \"../devtools/devbus\";\n\nexport const COMPILER_CONTRACT = 1;\nconst SUPPORTED_CONTRACTS: readonly number[] = [1, 2];\n\nconst reported = new Set<number>();\nconst pending = new Set<number>();\n\nexport function motifCompiled(contract: number): void {\n if (SUPPORTED_CONTRACTS.includes(contract) || reported.has(contract)) return;\n if (!isDevLike()) {\n pending.add(contract);\n return;\n }\n pending.delete(contract);\n reported.add(contract);\n reportWarning('MJX121', [contract, COMPILER_CONTRACT]);\n}\n\nexport function flushCompilerContractWarnings(): void {\n for (const contract of Array.from(pending)) motifCompiled(contract);\n}\n","\nexport * from \"./NameValuePair\";\nexport * from \"./List\";\nexport * from \"./functions\";\nexport * from \"./ErrorHandler\";\nexport * from \"./LeakMonitor\";\nexport * from \"./Dictionary\";\nexport * from \"./IAttribute\";\nexport * from \"./LinkedList\";\nexport type { TransitionProps, CSSTransitionInfo, TransitionPhase } from \"./transition\";\nexport type { TransitionMode } from \"./transitionRegistry\";\nexport * from \"./bind\";\nexport * from \"./Query\";\nexport { MotifError } from \"./diagnostics\";\nexport { motifCompiled } from \"./compilerContract\";\nexport type { MotifErrorCode } from \"./diagnostics\";\n\n\nexport enum NodeTypes {\n ELEMENT_NODE = 1,\n ATTRIBUTE_NODE = 2,\n TEXT_NODE = 3,\n CDATA_SECTION_NODE = 4,\n ENTITY_REFERENCE_NODE = 5,\n /**deprecated */\n ENTITY_NODE = 6,\n /**deprecated */\n PROCESSING_INSTRUCTION_NODE = 7,\n COMMENT_NODE = 8,\n DOCUMENT_NODE = 9,\n DOCUMENT_TYPE_NODE = 10,\n DOCUMENT_FRAGMENT_NODE = 11,\n /**deprecated */\n NOTATION_NODE = 12\n}\n","\r\nimport { LeakMonitor } from \"../common\";\r\nimport { reportError, reportWarning } from \"../common/diagnostics\";\r\nimport { getRaw, followTracking } from \"./common\";\r\n\r\nexport type EffectFn = () => void;\r\n\r\nclass Effect {\r\n deps: [object, string | symbol][] = [];\r\n active = true;\r\n running = false;\r\n scheduler?: () => void;\r\n constructor(public fn: EffectFn, private callback?: (value: unknown) => void) { }\r\n run() {\r\n let value: unknown;\r\n if (!this.active || this.running) return;\r\n cleanup(this);\r\n effectStack.push(this);\r\n this.running = true;\r\n try {\r\n value = this.fn();\r\n } finally {\r\n effectStack.pop();\r\n this.running = false;\r\n if (this.callback) {\r\n this.callback(value);\r\n }\r\n }\r\n }\r\n stop() {\r\n this.active = false;\r\n cleanup(this);\r\n }\r\n}\r\n\r\nconst depMap = new WeakMap<object, Map<string | symbol, Set<Effect>>>();\r\nconst effectStack: Effect[] = [];\r\nconst effectQueue = new Set<Effect>();\r\nlet isFlushing = false;\r\n\r\nlet leakEnabled = false;\r\nlet leakThreshold = -1;\r\nlet leakMonitor: LeakMonitor | undefined;\r\nconst leakCleanups = new WeakMap<Set<Effect>, Map<Effect, () => void>>();\r\nexport function configureReactivityLeakMonitor(opts: { enabled?: boolean; threshold?: number; name?: string } = {}) {\r\n leakEnabled = !!opts.enabled;\r\n leakThreshold = typeof opts.threshold === 'number' ? opts.threshold : (leakEnabled ? 200 : -1);\r\n leakMonitor = leakEnabled && leakThreshold > 0 ? new LeakMonitor(leakThreshold, opts.name ?? 'reactivity-core') : undefined;\r\n}\r\n\r\nexport function track(target: object, key: string | symbol) {\r\n if (!followTracking) return;\r\n const rawTarget = getRaw(target as any);\r\n const effect = effectStack[effectStack.length - 1];\r\n if (!effect || !effect.active) return;\r\n let deps = depMap.get(rawTarget);\r\n if (!deps) depMap.set(rawTarget, (deps = new Map()));\r\n let dep = deps.get(key);\r\n if (!dep) deps.set(key, (dep = new Set()));\r\n if (!dep.has(effect)) {\r\n dep.add(effect);\r\n effect.deps.push([rawTarget, key]);\r\n if (leakEnabled && leakMonitor && leakThreshold > 0) {\r\n try {\r\n const cleanup = leakMonitor.check(dep.size);\r\n if (cleanup) {\r\n let m = leakCleanups.get(dep);\r\n if (!m) { m = new Map(); leakCleanups.set(dep, m); }\r\n m.set(effect, cleanup);\r\n }\r\n } catch { }\r\n }\r\n }\r\n}\r\n\r\nexport function trigger(target: object, key: string | symbol) {\r\n const rawTarget = getRaw(target as any);\r\n const deps = depMap.get(rawTarget);\r\n if (!deps) return;\r\n const effects = deps.get(key);\r\n if (!effects) return;\r\n let queued = false;\r\n effects.forEach(effect => {\r\n if (!effect.active) return;\r\n if (effect.scheduler) {\r\n runReported(effect.scheduler);\r\n return;\r\n }\r\n effectQueue.add(effect);\r\n queued = true;\r\n });\r\n if (queued) flushEffects();\r\n}\r\n\r\nfunction runReported(fn: () => unknown) {\r\n try {\r\n fn();\r\n } catch (error) {\r\n reportError('MJX208', error);\r\n }\r\n}\r\n\r\nconst MAX_EFFECT_RUNS_PER_FLUSH = 50;\r\n\r\nfunction flushEffects() {\r\n if (isFlushing) return;\r\n isFlushing = true;\r\n Promise.resolve().then(() => {\r\n const runCounts = new Map<Effect, number>();\r\n try {\r\n while (effectQueue.size > 0) {\r\n const batch = Array.from(effectQueue);\r\n effectQueue.clear();\r\n for (const e of batch) {\r\n const runs = (runCounts.get(e) ?? 0) + 1;\r\n runCounts.set(e, runs);\r\n if (runs > MAX_EFFECT_RUNS_PER_FLUSH) {\r\n if (runs === MAX_EFFECT_RUNS_PER_FLUSH + 1) {\r\n reportWarning('MJX203', [MAX_EFFECT_RUNS_PER_FLUSH], { fn: String((e as any).fn).slice(0, 200) });\r\n }\r\n continue;\r\n }\r\n runReported(() => e.run());\r\n }\r\n }\r\n } finally {\r\n effectQueue.clear();\r\n isFlushing = false;\r\n }\r\n });\r\n}\r\n\r\nfunction cleanup(effect: Effect) {\r\n for (const [target, key] of effect.deps) {\r\n const keyMap = depMap.get(target);\r\n if (!keyMap) continue;\r\n const depSet = keyMap.get(key);\r\n if (!depSet) continue;\r\n depSet.delete(effect);\r\n try {\r\n const map = leakCleanups.get(depSet);\r\n const fn = map?.get(effect);\r\n if (fn) { try { fn(); } catch { } map!.delete(effect); }\r\n } catch { }\r\n if (depSet.size === 0) {\r\n keyMap.delete(key);\r\n }\r\n if (keyMap.size === 0) {\r\n depMap.delete(target);\r\n }\r\n }\r\n effect.deps = [];\r\n}\r\n\r\n\r\nexport function effect(fn: EffectFn, onValueChanged?: <T>(value: T) => void) {\r\n const e = new Effect(fn, onValueChanged);\r\n runReported(() => e.run());\r\n return () => e.stop();\r\n}\r\n\r\nexport interface ScheduledEffect {\r\n run(): void;\r\n stop(): void;\r\n}\r\n\r\nexport function createScheduledEffect(fn: EffectFn, scheduler: () => void): ScheduledEffect {\r\n const e = new Effect(fn);\r\n e.scheduler = scheduler;\r\n return {\r\n run: () => { runReported(() => e.run()); },\r\n stop: () => e.stop(),\r\n };\r\n}\r\n\r\nexport interface AsyncTrackingToken { effect: Effect | undefined; pushed: boolean }\r\nfunction popAsyncTracking(t: AsyncTrackingToken) {\r\n if (!t.pushed) return;\r\n t.pushed = false;\r\n const i = effectStack.lastIndexOf(t.effect!);\r\n if (i >= 0) effectStack.splice(i, 1);\r\n}\r\nexport const asyncTracking = {\r\n capture(): AsyncTrackingToken {\r\n return { effect: effectStack[effectStack.length - 1], pushed: false };\r\n },\r\n suspend<T>(t: AsyncTrackingToken, value: T): T {\r\n popAsyncTracking(t);\r\n return value;\r\n },\r\n resume<T>(t: AsyncTrackingToken, value: T): T {\r\n if (t.effect && t.effect.active && !t.pushed) {\r\n effectStack.push(t.effect);\r\n t.pushed = true;\r\n }\r\n return value;\r\n },\r\n end(t: AsyncTrackingToken): void {\r\n popAsyncTracking(t);\r\n },\r\n};\r\n\r\nconst UNTRACKED_SENTINEL = new Effect(() => { });\r\nUNTRACKED_SENTINEL.active = false;\r\nexport function untracked<T>(fn: () => T): T {\r\n effectStack.push(UNTRACKED_SENTINEL);\r\n try {\r\n return fn();\r\n } finally {\r\n effectStack.pop();\r\n }\r\n}\r\n\r\n\r\n\r\nexport function debugGetDeps(target: object): Map<string | symbol, Set<Effect>> | undefined {\r\n const rawTarget = getRaw(target as any);\r\n return depMap.get(rawTarget);\r\n}\r\nexport function debugGetDepMap(): WeakMap<object, Map<string | symbol, Set<Effect>>> {\r\n return depMap;\r\n}\r\n","\r\nimport { ComponentBase } from \"../\";\r\nimport { effect } from \"../store/reactivity-core\";\r\nimport { BindingFormatInfo, IBaseBinding } from \"./\";\r\n\r\n\r\nexport function isCheckedInput(el: any): boolean {\r\n if (!el || el.tagName !== 'INPUT') return false;\r\n const t = String(el.type || '').toLowerCase();\r\n return t === 'checkbox' || t === 'radio';\r\n}\r\n\r\nexport function isNumericInput(el: any): boolean {\r\n if (!el || el.tagName !== 'INPUT') return false;\r\n const t = String(el.type || '').toLowerCase();\r\n return t === 'number' || t === 'range';\r\n}\r\n\r\nexport function readModelValue(el: any): any {\r\n if (!el) return undefined;\r\n if (isCheckedInput(el)) return !!el.checked;\r\n if (isNumericInput(el)) {\r\n const raw = el.value;\r\n if (raw === '' || raw == null) return null;\r\n const n = typeof el.valueAsNumber === 'number' ? el.valueAsNumber : Number(raw);\r\n return Number.isFinite(n) ? n : null;\r\n }\r\n return el.value;\r\n}\r\n\r\nexport class Binding implements IBaseBinding {\r\n propertyName: string;\r\n dataSource: any;\r\n dataMember?: string;\r\n formatString?: string;\r\n converter?: (value: any) => any;\r\n converterBack?: (value: any) => any;\r\n setter?: (value: any) => void;\r\n formatInfo?: BindingFormatInfo;\r\n updateMode: 'onPropertyChanged' | 'onValidation' | 'never' = 'onPropertyChanged';\r\n\r\n private _isActive: boolean = false;\r\n private _component: ComponentBase;\r\n private _effectCleanup?: () => void;\r\n private _memberPath: string[] | null = null;\r\n private _memberPathSource?: string;\r\n\r\n constructor(\r\n component: ComponentBase,\r\n propertyName: string,\r\n dataSource: any,\r\n dataMember?: string,\r\n formatString?: string,\r\n formatInfo?: BindingFormatInfo\r\n ) {\r\n this._component = component;\r\n this.propertyName = propertyName;\r\n this.dataSource = dataSource;\r\n this.dataMember = dataMember;\r\n this.formatString = formatString;\r\n this.formatInfo = formatInfo;\r\n this._memberPath = dataMember ? dataMember.split('.') : null;\r\n this._memberPathSource = dataMember;\r\n }\r\n\r\n activate(): void {\r\n if (this._isActive) return;\r\n\r\n this._isActive = true;\r\n this._setupBinding();\r\n }\r\n\r\n deactivate(): void {\r\n\r\n if (!this._isActive) return;\r\n\r\n this._isActive = false;\r\n if (this._effectCleanup) {\r\n this._effectCleanup();\r\n this._effectCleanup = undefined;\r\n }\r\n }\r\n\r\n reActivate(): void {\r\n\r\n if (this._effectCleanup) {\r\n this._effectCleanup();\r\n this._effectCleanup = undefined;\r\n }\r\n this._setupBinding();\r\n }\r\n\r\n private functional(value: any) {\r\n if (typeof value === 'function') {\r\n value = this.functional(value());\r\n }\r\n return value;\r\n }\r\n private _setupBinding(): void {\r\n const getValue = () => {\r\n\r\n let value: any = this.dataSource;\r\n if (this.dataMember) {\r\n if (this._memberPathSource !== this.dataMember) {\r\n this._memberPath = this.dataMember.split('.');\r\n this._memberPathSource = this.dataMember;\r\n }\r\n for (const prop of this._memberPath!) {\r\n if (value != null) {\r\n value = value[prop];\r\n }\r\n }\r\n }\r\n value = this.functional(value);\r\n if (this.formatString && value != null) {\r\n value = this._applyFormat(value, this.formatString);\r\n }\r\n\r\n if (this.converter) {\r\n value = this.converter(value);\r\n }\r\n\r\n return value;\r\n };\r\n\r\n const updateTarget = () => {\r\n const value = getValue();\r\n this._updateComponentProperty(value);\r\n return value;\r\n };\r\n\r\n this._effectCleanup = effect(() => {\r\n return updateTarget();\r\n });\r\n\r\n }\r\n\r\n private _updateComponentProperty(value: any): void {\r\n\r\n switch (this.propertyName.toLowerCase()) {\r\n case 'wait': {\r\n const comp = this._component;\r\n if (!comp || comp.isDisposed) return;\r\n const isWaiting = !!value;\r\n if (!comp.isBuilt) {\r\n comp.isWait = isWaiting;\r\n } else {\r\n if (isWaiting) {\r\n comp.isWait = true;\r\n } else {\r\n comp.isWait = false;\r\n }\r\n }\r\n break;\r\n }\r\n case 'display': {\r\n const comp = this._component;\r\n if (!comp || comp.isDisposed) return;\r\n const isWaiting = value;\r\n if (!comp.isBuilt) {\r\n comp.isWait = !isWaiting;\r\n } else {\r\n if (isWaiting) {\r\n comp.isWait = false;\r\n } else {\r\n comp.isWait = true;\r\n }\r\n }\r\n break;\r\n }\r\n case 'text':\r\n case 'textcontent':\r\n this._component.setText(value);\r\n break;\r\n case 'innerhtml':\r\n case 'html':\r\n this._component.element.innerHTML = (value);\r\n this._component.motif.trigger('htmlChanged', { value: value });\r\n break;\r\n case 'visible':\r\n case 'visibility':\r\n if (value) {\r\n this._component.motif.show();\r\n } else {\r\n this._component.motif.hide();\r\n }\r\n break;\r\n case 'style':\r\n if (typeof value === 'object') {\r\n this._component.style(value);\r\n }\r\n break;\r\n case 'model': {\r\n\r\n const el: any = this._component.element;\r\n if (!el) break;\r\n if (isCheckedInput(el)) {\r\n el.checked = !!value;\r\n } else {\r\n el.value = value == null ? '' : value;\r\n }\r\n break;\r\n }\r\n case 'when':\r\n\r\n break;\r\n default:\r\n if (this._component.element && this.propertyName in this._component.element) {\r\n (this._component.element as any)[this.propertyName] = value;\r\n } else if (this.propertyName in this._component) {\r\n (this._component as any)[this.propertyName] = value;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n private _applyFormat(value: any, format: string): string {\r\n const locale = this.formatInfo?.locale;\r\n const currency = this.formatInfo?.currency;\r\n if (typeof value === 'number') {\r\n if (format.includes('C') || format.includes('c')) {\r\n if (currency) {\r\n return new Intl.NumberFormat(locale, {\r\n style: 'currency',\r\n currency\r\n }).format(value);\r\n }\r\n return new Intl.NumberFormat(locale, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(value);\r\n }\r\n if (format.includes('P') || format.includes('p')) {\r\n return new Intl.NumberFormat(locale, {\r\n style: 'percent'\r\n }).format(value);\r\n }\r\n if (format.includes('N') || format.includes('n')) {\r\n const decimals = parseInt(format.match(/\\d+/)?.[0] || '2');\r\n return new Intl.NumberFormat(locale, {\r\n minimumFractionDigits: decimals,\r\n maximumFractionDigits: decimals\r\n }).format(value);\r\n }\r\n }\r\n\r\n if (value instanceof Date) {\r\n if (format.includes('d')) {\r\n return value.toLocaleDateString(locale);\r\n }\r\n if (format.includes('t')) {\r\n return value.toLocaleTimeString(locale);\r\n }\r\n }\r\n\r\n return value?.toString() || '';\r\n }\r\n}","import { Flags } from \"../store/common\";\r\n\r\nconst RAW_KEY = Flags.RAW;\r\n\r\nfunction isPrototypeObject(o: any): boolean {\r\n return Object.prototype.hasOwnProperty.call(o, 'constructor') && typeof o.constructor === 'function' && o.constructor.prototype === o;\r\n}\r\n\r\nfunction overridesBelow(instance: any, proto: any, name: string): boolean {\r\n let p = Object.getPrototypeOf(instance);\r\n while (p && p !== proto) {\r\n if (Object.prototype.hasOwnProperty.call(p, name)) return true;\r\n p = Object.getPrototypeOf(p);\r\n }\r\n return false;\r\n}\r\n\r\nexport function lazyBindMethods(proto: any, names: readonly string[]): void {\r\n for (const name of names) {\r\n let fn = proto[name];\r\n if (typeof fn !== 'function') continue;\r\n Object.defineProperty(proto, name, {\r\n configurable: true,\r\n enumerable: false,\r\n get() {\r\n if (this === proto || isPrototypeObject(this)) return fn;\r\n const target = this[RAW_KEY] ?? this;\r\n const bound = fn.bind(target);\r\n if (!overridesBelow(target, proto, name)) {\r\n try {\r\n Object.defineProperty(target, name, { value: bound, writable: true, configurable: true, enumerable: true });\r\n } catch { }\r\n }\r\n return bound;\r\n },\r\n set(value: unknown) {\r\n if (this === proto && typeof value === 'function') { fn = value; return; }\r\n Object.defineProperty(this, name, { value, writable: true, configurable: true, enumerable: true });\r\n },\r\n });\r\n }\r\n}\r\n","\r\n\r\nimport { Component, ComponentBase, Frame, motifFragment, toDisposable } from \"../\";\r\nimport { dom } from \"../\";\r\nimport { effect, untracked } from \"../\";\r\nimport { Binding, BindingFormatInfo, IBaseBinding, IBindingCollection, ListBinding, ListBindingOptions, readModelValue } from \"./\";\r\nimport { reportError } from \"../common/diagnostics\";\r\nimport { lazyBindMethods } from \"../common/lazyBind\";\r\n\r\nfunction resolveValue(value: any): any {\r\n return typeof value === 'function' ? resolveValue(value()) : value;\r\n}\r\n\r\nfunction isWritablePathKey(target: object, key: string): boolean {\r\n if (key === '__proto__') return false;\r\n if (key === 'constructor' || key === 'prototype') return Object.prototype.hasOwnProperty.call(target, key);\r\n return true;\r\n}\r\n\r\nexport class BindingCollection implements IBindingCollection {\r\n private _items: IBaseBinding[] = [];\r\n private _modelWriters?: WeakMap<IBaseBinding, (value: any) => void>;\r\n private _component: ComponentBase;\r\n private _branchScope: Array<() => void> | null = null;\r\n\r\n constructor(component: ComponentBase) {\r\n this._component = component;\r\n }\r\n private _own(stop: () => void) {\r\n if (this._branchScope) {\r\n this._branchScope.push(stop);\r\n return;\r\n }\r\n this._component.motif.register(toDisposable(() => {\r\n try { stop(); } catch { }\r\n }));\r\n }\r\n\r\n when(computeFn: () => any, renderFn: (isTrue: boolean) => any) {\r\n\r\n var frame = new Frame();\r\n this._component.controls.add(frame);\r\n let shown = false;\r\n let last: any;\r\n const stop = effect(computeFn, (value) => {\r\n if (shown && (Object.is(last, value) || (!last && !value))) return;\r\n shown = true;\r\n last = value;\r\n untracked(() => {\r\n if (value) {\r\n frame.navigate(renderFn(value as any))\r\n } else {\r\n frame.navigate(motifFragment())\r\n }\r\n });\r\n });\r\n this._own(stop);\r\n\r\n return null as any;\r\n\r\n }\r\n\r\n get items(): IBaseBinding[] {\r\n return [...this._items];\r\n }\r\n\r\n text(cb: any) {\r\n this.add(\"textContent\", cb);\r\n };\r\n\r\n\r\n value(fn: () => any) {\r\n this.add(\"value\", fn);\r\n };\r\n\r\n add(propertyName: string, dataSource: any): IBaseBinding;\r\n add(propertyName: string, dataSource: any, dataMember: string): IBaseBinding;\r\n add(propertyName: string, dataSource: any, dataMember: string, formatString: string): IBaseBinding;\r\n add(propertyName: string, dataSource: any, dataMember: string, formatString: string, formatInfo: BindingFormatInfo): IBaseBinding;\r\n add(binding: IBaseBinding): IBaseBinding;\r\n add(...args: any[]): IBaseBinding {\r\n let binding: IBaseBinding;\r\n if (args.length === 1 && typeof args[0] === 'object' && 'propertyName' in args[0]) {\r\n\r\n binding = args[0];\r\n } else {\r\n\r\n const [propertyName, dataSource, dataMember, formatString, formatInfo] = args;\r\n binding = new Binding(this._component, propertyName, dataSource, dataMember, formatString, formatInfo);\r\n }\r\n\r\n this._items.push(binding);\r\n\r\n if (this._component.isBuilt) {\r\n (binding as Binding).activate();\r\n }\r\n return binding;\r\n }\r\n\r\n wait(predicate: () => any): IBaseBinding {\r\n const binding = new Binding(this._component, 'isWait', predicate);\r\n this._items.push(binding);\r\n if (this._component.isBuilt) {\r\n (binding as Binding).activate();\r\n }\r\n return binding;\r\n }\r\n\r\n display(predicate: () => any): IBaseBinding {\r\n const binding = new Binding(this._component, 'isWait', () => !resolveValue(predicate()));\r\n this._items.push(binding);\r\n if (this._component.isBuilt) {\r\n (binding as Binding).activate();\r\n }\r\n return binding;\r\n }\r\n\r\n html(predicate: () => any): IBaseBinding {\r\n const binding = new Binding(this._component, 'innerHTML', predicate);\r\n this._items.push(binding);\r\n if (this._component.isBuilt) {\r\n binding.activate();\r\n }\r\n return binding;\r\n }\r\n list(itemsFn: () => any[] | Iterable<any>, renderFn: (item: any, index: number) => ComponentBase): IBaseBinding;\r\n list(itemsFn: () => any[] | Iterable<any>, renderFn: (item: any, index: number) => ComponentBase, options: ListBindingOptions): IBaseBinding;\r\n list(itemsFn: () => any[] | Iterable<any>, renderFn: (item: any, index: number) => ComponentBase, options?: ListBindingOptions): IBaseBinding {\r\n const binding = new ListBinding(this._component, itemsFn, renderFn, options);\r\n this._items.push(binding);\r\n if (this._component.isBuilt) {\r\n binding.activate();\r\n }\r\n return binding;\r\n }\r\n\r\n loop(itemsFn: () => any[] | Iterable<any>, renderFn: (item: any, index: number) => ComponentBase): IBaseBinding;\r\n loop(itemsFn: () => any[] | Iterable<any>, renderFn: (item: any, index: number) => ComponentBase, options: ListBindingOptions): IBaseBinding;\r\n loop(itemsFn: () => any[] | Iterable<any>, renderFn: (item: any, index: number) => ComponentBase, options?: ListBindingOptions): IBaseBinding {\r\n const binding = new ListBinding(this._component, itemsFn, renderFn, options);\r\n this._items.push(binding);\r\n if (this._component.isBuilt) {\r\n binding.activate();\r\n }\r\n return binding;\r\n }\r\n method(cb: () => any) {\r\n const host = this._component;\r\n let text: ComponentBase | null = null;\r\n let frame: Frame | null = null;\r\n const place = (next: ComponentBase, previous: ComponentBase | null) => {\r\n if (!previous) {\r\n host.controls.add(next);\r\n return;\r\n }\r\n host.controls.insert(host.controls.items.indexOf(previous), next);\r\n host.controls.remove(previous);\r\n };\r\n const stop = effect(cb, (result) => {\r\n if (host.isDisposed) return;\r\n const isText = typeof result === 'string' || typeof result === 'number' || typeof result === 'boolean' || typeof result === 'bigint';\r\n if (isText || (text && result == null)) {\r\n if (text) {\r\n text.setText(result as any);\r\n return;\r\n }\r\n text = new Component(dom.createTextNode(result as any));\r\n place(text, frame);\r\n frame = null;\r\n return;\r\n }\r\n if (!frame) {\r\n frame = new Frame();\r\n place(frame, text);\r\n text = null;\r\n }\r\n frame.navigate(result == null ? motifFragment() : result as any);\r\n });\r\n host.motif.register(toDisposable(() => {\r\n try { stop(); } catch { }\r\n }));\r\n }\r\n\r\n ternary(conditionFn: () => any, trueFn: (frame: Frame) => any, falseFn: (frame: Frame) => any) {\r\n const frame = new Frame();\r\n this._component.controls.add(frame);\r\n this._ternaryCallTop(\r\n conditionFn,\r\n () => { trueFn(frame); },\r\n () => { falseFn(frame); }\r\n );\r\n return null as any;\r\n }\r\n\r\n private _ternarySchedule(condFn: () => any, onTrue: () => void, onFalse: () => void, defer: (run: () => void) => void) {\r\n let first = true;\r\n let last: any;\r\n let stopped = false;\r\n let inner: Array<() => void> = [];\r\n const stopInner = () => {\r\n const list = inner;\r\n inner = [];\r\n for (const stop of list) {\r\n try { stop(); } catch { }\r\n }\r\n };\r\n const stopEffect = effect(condFn, (condition) => {\r\n if (!first && Object.is(last, condition)) return;\r\n last = condition;\r\n const run = () => {\r\n stopInner();\r\n const outer = this._branchScope;\r\n this._branchScope = inner;\r\n try {\r\n if (condition) { onTrue(); } else { onFalse(); }\r\n } finally {\r\n this._branchScope = outer;\r\n }\r\n };\r\n if (first) {\r\n first = false;\r\n untracked(run);\r\n return;\r\n }\r\n defer(() => { if (!stopped && !this._component.isDisposed) run(); });\r\n });\r\n this._own(() => {\r\n stopped = true;\r\n stopEffect();\r\n stopInner();\r\n });\r\n }\r\n private ternaryCall(condFn: () => any, onTrue: () => void, onFalse: () => void) {\r\n this._ternarySchedule(condFn, onTrue, onFalse, (run) => queueMicrotask(run));\r\n }\r\n private _ternaryCallTop(condFn: () => any, onTrue: () => void, onFalse: () => void) {\r\n this._ternarySchedule(condFn, onTrue, onFalse, (run) => setTimeout(run, 0));\r\n }\r\n\r\n watch(cb: () => any) {\r\n const ef = effect(() => {\r\n cb();\r\n });\r\n this._component.motif.register(toDisposable(() => {\r\n try { ef(); } catch { }\r\n }));\r\n }\r\n remove(binding: IBaseBinding): void {\r\n const index = this._items.indexOf(binding);\r\n if (index > -1) {\r\n this._items.splice(index, 1);\r\n binding.deactivate();\r\n }\r\n }\r\n\r\n clear(): void {\r\n this._items.forEach(binding => (binding as Binding).deactivate());\r\n this._items = [];\r\n }\r\n\r\n activateAll(): void {\r\n this._items.forEach(binding => {\r\n binding.activate();\r\n });\r\n }\r\n\r\n model(dataSource: any): IBaseBinding;\r\n model(dataSource: any, dataMember: string): IBaseBinding;\r\n model(dataSource: any, dataMember: string, formatString: string): IBaseBinding;\r\n model(dataSource: any, dataMember: string, formatString: string, formatInfo: BindingFormatInfo): IBaseBinding;\r\n model(getter: () => any, setter: (value: any) => void): IBaseBinding;\r\n model(binding: IBaseBinding): IBaseBinding;\r\n model(...args: any[]): IBaseBinding {\r\n\r\n var tn = '';\r\n if (this._component.element) {\r\n tn = (this._component.element as HTMLElement).tagName;\r\n }\r\n var propertyName = 'value';\r\n switch (tn.toLowerCase()) {\r\n case 'input':\r\n\r\n propertyName = 'model';\r\n break;\r\n case 'select':\r\n propertyName = 'value';\r\n break;\r\n case 'textarea':\r\n propertyName = 'value';\r\n break;\r\n case 'img':\r\n propertyName = 'src';\r\n break;\r\n case 'audio':\r\n propertyName = 'src';\r\n break;\r\n case 'video':\r\n propertyName = 'src';\r\n break;\r\n default:\r\n\r\n }\r\n let binding: IBaseBinding;\r\n if (args.length === 1 && typeof args[0] === 'object') {\r\n binding = args[0];\r\n } else if (typeof args[0] === 'function' && typeof args[1] === 'function') {\r\n binding = new Binding(this._component, propertyName, args[0]);\r\n binding.setter = args[1];\r\n } else {\r\n const [dataSource, dataMember, formatString, formatInfo] = args;\r\n binding = new Binding(this._component, propertyName, dataSource, dataMember, formatString, formatInfo);\r\n }\r\n const write = (raw: any) => {\r\n let value: any = raw;\r\n const b: any = binding;\r\n if (typeof b.converterBack === 'function') {\r\n value = b.converterBack(value);\r\n }\r\n if (typeof b.setter === 'function') {\r\n b.setter(value);\r\n return;\r\n }\r\n const member: string | undefined = b.dataMember;\r\n const source = b.dataSource;\r\n if (member && source != null) {\r\n\r\n const path = member.split('.');\r\n let target: any = source;\r\n for (let i = 0; i < path.length && target != null; i++) {\r\n const key = path[i];\r\n if (!isWritablePathKey(target, key)) return;\r\n if (i === path.length - 1) {\r\n target[key] = value;\r\n } else {\r\n target = target[key];\r\n }\r\n }\r\n } else if (source != null && typeof source === 'object' && 'value' in source) {\r\n\r\n source.value = value;\r\n }\r\n };\r\n (this._modelWriters ??= new WeakMap()).set(binding, write);\r\n\r\n const lowerTag = tn.toLowerCase();\r\n if (lowerTag === 'input' || lowerTag === 'select' || lowerTag === 'textarea') {\r\n const writeBack = () => {\r\n try {\r\n const el: any = this._component.element;\r\n if (!el) return;\r\n write(readModelValue(el));\r\n } catch { /* ignore */ }\r\n };\r\n\r\n this._component.motif.on('input' as any, writeBack as any);\r\n this._component.motif.on('change' as any, writeBack as any);\r\n }\r\n\r\n this._items.push(binding);\r\n if (this._component.isBuilt) {\r\n (binding as Binding).activate();\r\n }\r\n return binding;\r\n }\r\n\r\n writeModel(value: any): boolean {\r\n const writers = this._modelWriters;\r\n if (!writers) return false;\r\n let written = false;\r\n for (const binding of this._items) {\r\n const write = writers.get(binding);\r\n if (!write) continue;\r\n try {\r\n write(value);\r\n written = true;\r\n } catch { /* ignore */ }\r\n }\r\n return written;\r\n }\r\n\r\n\r\n deactivateAll(): void {\r\n this._items.forEach(binding => binding.deactivate());\r\n this._items = [];\r\n }\r\n\r\n reActivateAll(): void {\r\n for (const binding of [...this._items]) {\r\n if (typeof binding.reActivate !== 'function') continue;\r\n try {\r\n binding.reActivate();\r\n } catch (error) {\r\n reportError('MJX208', error);\r\n }\r\n }\r\n }\r\n\r\n switchCase(\r\n discriminatorFn: () => any,\r\n cases: Record<string | number, (frame: Frame) => any>,\r\n defaultFn?: (frame: Frame) => any\r\n ) {\r\n const frame = new Frame();\r\n this._component.controls.add(frame);\r\n var currentValue: any;\r\n var defaultRunned = false;\r\n const ef = effect(discriminatorFn, (value) => {\r\n if (currentValue == value) return;\r\n currentValue = value;\r\n const caseKey = String(value);\r\n if (Object.prototype.hasOwnProperty.call(cases, caseKey)) {\r\n cases[caseKey](frame);\r\n defaultRunned = false;\r\n } else if (defaultFn) {\r\n if (defaultRunned) return;\r\n defaultRunned = true;\r\n defaultFn(frame);\r\n } else {\r\n if (defaultRunned) return;\r\n defaultRunned = true;\r\n frame.navigate(motifFragment());\r\n }\r\n });\r\n this._component.motif.register(toDisposable(() => {\r\n try { ef(); } catch { }\r\n }));\r\n\r\n return null as any;\r\n }\r\n}\r\n\r\nlazyBindMethods(BindingCollection.prototype, [\r\n 'add', 'remove', 'clear', 'activateAll', 'deactivateAll', 'reActivateAll',\r\n 'when', 'text', 'value', 'list', 'loop', 'method', 'watch', 'display', 'wait',\r\n 'ternaryCall', '_ternaryCallTop'\r\n]);","import { errorHandler } from \"../common/ErrorHandler\";\nimport { IDisposable } from \"../disposable/IDisposable\";\nimport { DisposableStore } from \"../disposable/DisposableStore\";\nimport { Event } from \"./Event\";\n\ninterface Subscription<T> {\n handler: (value: T) => unknown;\n active: boolean;\n}\n\ninterface Delivery<T> {\n targets: Subscription<T>[];\n value: T;\n next: number;\n}\n\nexport class Emitter<T> {\n\n private _subscriptions: Subscription<T>[] = [];\n private _delivery: Delivery<T> | undefined;\n private _subscribe: Event<T> | undefined;\n private _disposed = false;\n\n get event(): Event<T> {\n if (!this._subscribe) {\n this._subscribe = (listener, thisArgs, disposables) => {\n if (this._disposed) {\n return { dispose() { } };\n }\n const subscription: Subscription<T> = {\n handler: thisArgs ? listener.bind(thisArgs) : listener,\n active: true\n };\n this._writable().push(subscription);\n const handle: IDisposable = { dispose: () => this._unsubscribe(subscription) };\n if (disposables instanceof DisposableStore) {\n disposables.add(handle);\n } else if (Array.isArray(disposables)) {\n disposables.push(handle);\n }\n return handle;\n };\n }\n return this._subscribe;\n }\n\n fire(value: T): void {\n this._resume();\n if (this._subscriptions.length === 0) {\n return;\n }\n this._delivery = { targets: this._subscriptions, value, next: 0 };\n this._resume();\n }\n\n dispose(): void {\n if (this._disposed) {\n return;\n }\n this._disposed = true;\n for (const subscription of this._subscriptions) {\n subscription.active = false;\n }\n this._subscriptions = [];\n this._delivery = undefined;\n }\n\n private _writable(): Subscription<T>[] {\n if (this._delivery && this._delivery.targets === this._subscriptions) {\n this._subscriptions = this._subscriptions.slice();\n }\n return this._subscriptions;\n }\n\n private _unsubscribe(subscription: Subscription<T>): void {\n if (!subscription.active) {\n return;\n }\n subscription.active = false;\n const list = this._writable();\n const index = list.indexOf(subscription);\n if (index !== -1) {\n list.splice(index, 1);\n }\n }\n\n private _resume(): void {\n const delivery = this._delivery;\n if (!delivery) {\n return;\n }\n while (delivery.next < delivery.targets.length) {\n const target = delivery.targets[delivery.next++];\n if (!target.active) {\n continue;\n }\n try {\n target.handler(delivery.value);\n } catch (error) {\n errorHandler.onUnexpectedError(error);\n }\n }\n if (this._delivery === delivery) {\n this._delivery = undefined;\n }\n }\n}\n","import { Emitter, Event as DelegateEvent } from \"../delegate\";\r\nimport { disposableCore, IDisposable } from \"../disposable\";\r\nimport { ComponentBase } from \"../\";\r\nimport { EventArgs } from \"./types\";\r\nimport { callReported } from \"../common/diagnostics\";\r\nimport { lazyBindMethods } from \"../common/lazyBind\";\r\n\r\nexport class ComponentEmiter {\r\n\r\n private _emitters?: Map<string, Emitter<EventArgs>>;\r\n private _sourceDisposables?: Map<string, Set<IDisposable>>;\r\n private _listenerDisposables?: Map<string, Map<Function, IDisposable[]>>;\r\n\r\n constructor(private component: ComponentBase) {\r\n }\r\n\r\n public hasListeners(eventName: string): boolean {\r\n return this._emitters !== undefined && this._emitters.has(eventName);\r\n }\r\n\r\n public fire(eventName: string, args: EventArgs) {\r\n\r\n try {\r\n const e = this._emitters?.get(eventName.toLowerCase());\r\n if (e) {\r\n e.fire(args);\r\n }\r\n } catch { }\r\n }\r\n\r\n public on(event: any, cb: (sender: ComponentBase | this, ev: any) => any) {\r\n\r\n try {\r\n this.createEvent(event, cb);\r\n } catch {\r\n }\r\n }\r\n public off(event: any, cb: (sender: ComponentBase | this, ev: any) => any) {\r\n const lower = String(event).toLowerCase();\r\n const map = this._listenerDisposables?.get(lower);\r\n if (!map) return this;\r\n const list = map.get(cb);\r\n map.delete(cb);\r\n list?.forEach(d => { try { d.dispose(); } catch { } });\r\n return this;\r\n }\r\n private getOrCreateEmitter(name: string): Emitter<EventArgs> {\r\n const emitters = this._emitters ??= new Map();\r\n let e = emitters.get(name);\r\n if (!e) {\r\n e = new Emitter<EventArgs>();\r\n emitters.set(name, e);\r\n }\r\n return e;\r\n }\r\n\r\n private createEvent(event: any, cb: (sender: ComponentBase | this, ev: any) => any) {\r\n const full = String(event);\r\n const lowerFull = full.toLowerCase();\r\n const hook = lowerFull.startsWith('on') ? 'x:' + lowerFull.slice(2) : lowerFull;\r\n const invoke = (e: EventArgs) => {\r\n let res: any;\r\n callReported(() => {\r\n res = (cb as any).length <= 1 ? (cb as any)(e as any) : cb(this.component, e as any);\r\n return res;\r\n }, 'MJX122', hook);\r\n return res;\r\n };\r\n\r\n const emitter = this.getOrCreateEmitter(lowerFull);\r\n const disp = emitter.event((e) => invoke(e));\r\n\r\n const listeners = this._listenerDisposables ??= new Map();\r\n let map = listeners.get(lowerFull);\r\n if (!map) { map = new Map(); listeners.set(lowerFull, map); }\r\n const list = map.get(cb);\r\n if (list) { list.push(disp); } else { map.set(cb, [disp]); }\r\n return this;\r\n }\r\n\r\n public addSource(event: string, source: Emitter<EventArgs> | DelegateEvent<EventArgs>) {\r\n const lower = String(event).toLowerCase();\r\n const target = this.getOrCreateEmitter(lower);\r\n const forward = (ev: DelegateEvent<EventArgs>) => ev(e => target.fire(e));\r\n let disp: IDisposable | undefined;\r\n try {\r\n if (source instanceof Emitter) {\r\n disp = forward(source.event);\r\n } else {\r\n disp = forward(source);\r\n }\r\n } catch { }\r\n if (disp) {\r\n const sources = this._sourceDisposables ??= new Map();\r\n let set = sources.get(lower);\r\n if (!set) { set = new Set(); sources.set(lower, set); }\r\n set.add(disp);\r\n this.component.motif.register(disposableCore.toDisposable(() => {\r\n try { disp?.dispose(); } catch { }\r\n try { set?.delete(disp!); } catch { }\r\n }));\r\n }\r\n return this;\r\n }\r\n\r\n public clear(event?: string) {\r\n if (event) {\r\n const lower = event.toLowerCase();\r\n const srcs = this._sourceDisposables?.get(lower);\r\n srcs?.forEach(d => { try { d.dispose(); } catch { } });\r\n this._sourceDisposables?.delete(lower);\r\n const agg = this._emitters?.get(lower);\r\n try { agg?.dispose(); } catch { }\r\n this._emitters?.delete(lower);\r\n this._listenerDisposables?.delete(lower);\r\n } else if (this._emitters) {\r\n for (const key of Array.from(this._emitters.keys())) { this.clear(key); }\r\n }\r\n return this;\r\n }\r\n}\r\n\r\nlazyBindMethods(ComponentEmiter.prototype, ['fire', 'on', 'off', 'createEvent', 'getOrCreateEmitter', 'addSource', 'clear']);","import { IAttribute } from \"../\";\r\nimport { ComponentBase } from \"../\";\r\nimport { effect } from \"../store/reactivity-core\";\r\nimport { Binding, IBaseBinding } from \"../bindings\";\r\nimport { isComponentLike } from \"./componentBase\";\r\n\r\nexport type ElementTypes = Node | Element | HTMLElement | Text | DocumentFragment | Comment | HTMLDivElement;\r\n\r\nconst METHOD_ATTRS = new Set<string>([\r\n 'focus', 'blur', 'click', 'pause', 'submit', 'reset',\r\n 'scrollTo', 'scrollBy', 'select', 'scrollIntoView',\r\n 'requestFullscreen', 'exitFullscreen',\r\n 'requestPointerLock', 'exitPointerLock',\r\n 'play', 'requestPictureInPicture', 'exitPictureInPicture',\r\n 'show', 'showModal', 'close', 'showPopover', 'hidePopover', 'togglePopover',\r\n 'requestSubmit', 'checkValidity', 'reportValidity', 'showPicker', 'load',\r\n 'setSelectionRange', 'setRangeText', 'setPointerCapture', 'releasePointerCapture', 'fastSeek'\r\n]);\r\n\r\nconst OPEN_METHODS: Record<string, string> = { show: 'close', showModal: 'close', showPopover: 'hidePopover' };\r\nconst WHEN_TRUTHY_METHODS = new Set<string>(['close', 'hidePopover', 'requestSubmit', 'checkValidity', 'reportValidity', 'showPicker', 'load']);\r\nconst ARGUMENT_METHODS = new Set<string>(['setSelectionRange', 'setRangeText', 'setPointerCapture', 'releasePointerCapture', 'fastSeek']);\r\n\r\nconst PROPERTY_FIRST = new Set<string>(['checked', 'selected', 'muted', 'indeterminate', 'srcObject']);\r\n\r\nexport class controlAttribute<ElementType extends ElementTypes> implements IAttribute<ComponentBase<ElementType, any>> {\r\n private _parent: ComponentBase<ElementType, any>;\r\n private _attrMapStore?: Map<string | symbol, any>;\r\n private _watchersStore?: Map<string | symbol, { stop: () => void, binding?: IBaseBinding }>;\r\n constructor(parent: ComponentBase<ElementType, any>) {\r\n this._parent = parent;\r\n }\r\n private get _attrMap(): Map<string | symbol, any> { return this._attrMapStore ??= new Map(); }\r\n private get _watchers(): Map<string | symbol, { stop: () => void, binding?: IBaseBinding }> { return this._watchersStore ??= new Map(); }\r\n\r\n /** @deprecated Tek kaynak `_attrMap`; geriye dönük okuma için türetilmiş görünüm. */\r\n get attributes(): { name: string, value: any }[] {\r\n return Array.from(this._attrMap.entries(), ([name, value]) => ({ name: String(name), value }));\r\n }\r\n add(attribute: object | string): ComponentBase<ElementType, any> {\r\n if (attribute !== null && typeof attribute === 'object' && !Array.isArray(attribute)) {\r\n const bag = attribute as Record<string | symbol, any>;\r\n Reflect.ownKeys(bag).forEach(key => {\r\n this.parse(bag[key], key);\r\n });\r\n }\r\n return this._parent;\r\n\r\n };\r\n remove(key: string): ComponentBase<ElementType, any> {\r\n const stopper = this._watchers.get(key);\r\n if (stopper) {\r\n try { stopper.stop(); } catch { }\r\n try { stopper.binding && this._parent.bindings.remove(stopper.binding); } catch { }\r\n this._watchers.delete(key);\r\n }\r\n this._attrMap.delete(key);\r\n const el = this._getElement();\r\n if (el) {\r\n try { el.removeAttribute(key); } catch { }\r\n }\r\n return this._parent;\r\n };\r\n has(key: string): boolean {\r\n\r\n if (this._parent.element instanceof HTMLElement ||\r\n this._parent.element instanceof Element) {\r\n return this._parent.element.hasAttribute(key)\r\n }\r\n return false;\r\n };\r\n get(key: string): string | null {\r\n const el = this._getElement();\r\n if (el) {\r\n const v = el.getAttribute(key);\r\n if (v != null) return v;\r\n }\r\n const val = this._attrMap.get(key);\r\n return val == null ? null : String(val);\r\n };\r\n\r\n parse(values: any, key: any) {\r\n\r\n if (typeof values === 'function') {\r\n const stopper = this._watchers.get(key);\r\n if (stopper) {\r\n try { stopper.stop(); } catch { }\r\n try { stopper.binding && this._parent.bindings.remove(stopper.binding); } catch { }\r\n this._watchers.delete(key);\r\n }\r\n const run = () => effect(() => {\r\n const v = values();\r\n this._applyValue(key, v);\r\n });\r\n let current = run();\r\n const stop = () => { try { current(); } catch { } };\r\n\r\n const binding: IBaseBinding = {\r\n propertyName: `__attr:${String(key)}`,\r\n dataSource: null,\r\n activate() { /* no-op */ },\r\n deactivate() { stop(); },\r\n reActivate() {\r\n stop();\r\n current = run();\r\n }\r\n } as any;\r\n try { this._parent.bindings.add(binding); } catch { }\r\n this._watchers.set(key, { stop, binding });\r\n } else {\r\n this._applyValue(key, values);\r\n }\r\n }\r\n\r\n private _applyValue(key: string | symbol, raw: any) {\r\n if (!key) return;\r\n const el = this._getElement();\r\n\r\n try {\r\n if (typeof raw === 'function') {\r\n raw = raw();\r\n if (typeof raw === 'function') {\r\n raw = raw();\r\n }\r\n }\r\n } catch {\r\n }\r\n\r\n if (el && typeof key === 'string' && METHOD_ATTRS.has(key)) {\r\n const k = key as string;\r\n const method = (el as any)[k];\r\n if (typeof method === 'function') {\r\n const invoke = (fn: Function, arg?: any) => {\r\n try {\r\n if (Array.isArray(arg)) {\r\n fn.apply(el, arg);\r\n } else if (arg === undefined) {\r\n fn.call(el);\r\n } else {\r\n fn.call(el, arg);\r\n }\r\n } catch { }\r\n };\r\n const schedule = (fn: () => void) => { try { queueMicrotask(fn); } catch { try { setTimeout(fn, 0); } catch { } } };\r\n const cacheValue = () => {\r\n this._attrMap.set(key, raw);\r\n };\r\n\r\n if (k === 'focus') {\r\n const action = () => {\r\n if (raw === false) {\r\n const blur = (el as any).blur; if (typeof blur === 'function') invoke(blur);\r\n } else if (raw === true) {\r\n invoke(method);\r\n } else if (typeof raw === 'object' && raw != null && raw !== true) {\r\n invoke(method, raw);\r\n } else if (Array.isArray(raw)) {\r\n invoke(method, raw);\r\n } else {\r\n invoke(method, raw);\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (k === 'blur' || k === 'click' || k === 'pause' || k === 'submit' || k === 'reset') {\r\n const action = () => { if (raw) invoke(method); };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n if (k === 'scrollTo' || k === 'scrollBy') {\r\n const action = () => {\r\n if (Array.isArray(raw) || (raw && typeof raw === 'object')) {\r\n invoke(method, raw);\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (k === 'select') {\r\n const action = () => {\r\n if (raw) {\r\n invoke(method);\r\n } else {\r\n const inp: any = el as any;\r\n if (typeof inp.setSelectionRange === 'function') {\r\n try { inp.setSelectionRange(0, 0); } catch { }\r\n }\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (k === 'scrollIntoView') {\r\n const action = () => {\r\n if (raw === true || raw == null) {\r\n invoke(method);\r\n } else {\r\n invoke(method, raw);\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n if (k === 'requestFullscreen') {\r\n const action = () => {\r\n if (raw) {\r\n invoke(method);\r\n } else {\r\n\r\n try {\r\n const d: any = document;\r\n if (d && d.fullscreenElement === el && typeof d.exitFullscreen === 'function') {\r\n d.exitFullscreen();\r\n }\r\n } catch { }\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (k === 'exitFullscreen') {\r\n const action = () => {\r\n if (raw) {\r\n try {\r\n const d: any = document;\r\n if (d && typeof d.exitFullscreen === 'function') d.exitFullscreen();\r\n } catch { }\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (k === 'requestPointerLock') {\r\n const action = () => {\r\n if (raw) {\r\n invoke(method);\r\n } else {\r\n try {\r\n const d: any = document;\r\n if (d && typeof d.exitPointerLock === 'function') d.exitPointerLock();\r\n } catch { }\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (k === 'exitPointerLock') {\r\n const action = () => {\r\n if (raw) {\r\n try {\r\n const d: any = document;\r\n if (d && typeof d.exitPointerLock === 'function') d.exitPointerLock();\r\n } catch { }\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (k === 'play') {\r\n const action = () => {\r\n if (raw) {\r\n try { const p = method.call(el); if (p && typeof p.then === 'function') p.catch(() => { }); } catch { }\r\n } else {\r\n const pause = (el as any).pause; if (typeof pause === 'function') invoke(pause);\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (k === 'requestPictureInPicture') {\r\n const action = () => {\r\n if (raw) {\r\n try { const p = method.call(el); if (p && typeof p.then === 'function') p.catch(() => { }); } catch { }\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n if (k === 'exitPictureInPicture') {\r\n const action = () => {\r\n if (raw) {\r\n try {\r\n const d: any = document as any;\r\n if (d && typeof d.exitPictureInPicture === 'function') {\r\n const p = d.exitPictureInPicture(); if (p && typeof p.then === 'function') p.catch(() => { });\r\n }\r\n } catch { }\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (k in OPEN_METHODS) {\r\n const action = () => {\r\n if (raw === false) {\r\n const other = (el as any)[OPEN_METHODS[k]]; if (typeof other === 'function') invoke(other);\r\n } else if (raw) {\r\n invoke(method);\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (k === 'togglePopover') {\r\n const action = () => {\r\n if (typeof raw === 'boolean') {\r\n try { method.call(el, raw); } catch { }\r\n } else if (raw) {\r\n invoke(method);\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (WHEN_TRUTHY_METHODS.has(k)) {\r\n const action = () => {\r\n if (raw === true) {\r\n invoke(method);\r\n } else if (raw) {\r\n invoke(method, raw);\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (ARGUMENT_METHODS.has(k)) {\r\n const action = () => {\r\n if (raw !== undefined && raw !== null && raw !== false) {\r\n invoke(method, raw);\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (raw === undefined || raw === null || raw === false) {\r\n this._attrMap.delete(key);\r\n return;\r\n }\r\n cacheValue();\r\n return;\r\n }\r\n }\r\n\r\n if (typeof key === 'string' && PROPERTY_FIRST.has(key)) {\r\n const target = (this._parent.element as any) ?? el;\r\n if (target) {\r\n try {\r\n if (key === 'srcObject') {\r\n target.srcObject = raw ?? null;\r\n } else {\r\n target[key] = !!raw;\r\n }\r\n } catch { }\r\n }\r\n if (raw === undefined || raw === null || raw === false) {\r\n this._attrMap.delete(key);\r\n } else {\r\n this._attrMap.set(key, raw);\r\n }\r\n return;\r\n }\r\n\r\n if (typeof raw === 'boolean' && typeof key === 'string' && (key.startsWith('aria-') || key.startsWith('data-'))) {\r\n if (el) { try { (el as Element).setAttribute(key, String(raw)); } catch { } }\r\n this._attrMap.set(key, raw);\r\n return;\r\n }\r\n\r\n const isUnset = raw === undefined || raw === null || raw === false;\r\n const isBool = typeof raw === 'boolean';\r\n\r\n if (isUnset) {\r\n if (el) { try { (el as Element).removeAttribute(String(key)); } catch { } }\r\n this._attrMap.delete(key);\r\n return;\r\n }\r\n\r\n if (key === 'value') {\r\n try {\r\n const input = (this._parent.element as any) as HTMLInputElement;\r\n const next = String(raw);\r\n if (input.value !== next) { input.value = next; }\r\n } catch { }\r\n } else if (key === 'textContent' || key === 'innerText' || key === 'innerHTML') {\r\n if (isComponentLike(raw)) { this._parent.setText(raw as any); return; }\r\n try { (this._parent.element as any)[key as any] = raw; } catch { }\r\n } else {\r\n if (el) {\r\n try {\r\n if (isBool && raw === true) {\r\n (el as Element).setAttribute(String(key), '');\r\n } else {\r\n (el as Element).setAttribute(String(key), raw);\r\n }\r\n } catch { }\r\n }\r\n }\r\n\r\n this._attrMap.set(key, raw);\r\n }\r\n\r\n private _getElement(): Element | null {\r\n const el = this._parent?.element as unknown;\r\n if (el instanceof HTMLElement || el instanceof Element) return el as Element;\r\n return null;\r\n }\r\n\r\n public hasMethodState(key: string): boolean {\r\n const el = this._getElement();\r\n if (!el || !key) return false;\r\n return !!this.getMethodState(key);\r\n }\r\n\r\n public getMethodState(key: string): any {\r\n const el = this._getElement();\r\n if (!el || !key) return false;\r\n const k = String(key);\r\n switch (k) {\r\n case 'focus':\r\n case 'blur':\r\n try { return (document && (document as any).activeElement) === el; } catch { return false; }\r\n case 'select': {\r\n const inp: any = el as any;\r\n if (typeof inp.selectionStart === 'number' && typeof inp.selectionEnd === 'number') {\r\n try { return (inp.selectionEnd - inp.selectionStart) > 0; } catch { return false; }\r\n }\r\n return false;\r\n }\r\n case 'scrollIntoView':\r\n return false;\r\n case 'click':\r\n return false;\r\n default:\r\n return false;\r\n }\r\n }\r\n}","import { IClass } from \"../\";\r\nimport { ComponentBase } from \"./\";\r\nimport { effect } from \"../store/reactivity-core\";\r\nimport { IBaseBinding } from \"../bindings\";\r\n\r\n\r\n\r\nexport class controlClass<ElementType extends Element | HTMLElement | Text | DocumentFragment | Comment> implements IClass<ComponentBase<ElementType, any>> {\r\n private _parent: ComponentBase;\r\n constructor(parent: ComponentBase) {\r\n this._parent = parent;\r\n }\r\n private _countsStore?: Map<string, number>;\r\n private _staticSetStore?: Set<string>;\r\n private _watchersStore?: Map<string, { stop: () => void, binding?: IBaseBinding, set: Set<string> }>;\r\n private _watcherSeq = 0;\r\n private get _counts(): Map<string, number> { return this._countsStore ??= new Map(); }\r\n private get _staticSet(): Set<string> { return this._staticSetStore ??= new Set(); }\r\n private get _watchers(): Map<string, { stop: () => void, binding?: IBaseBinding, set: Set<string> }> { return this._watchersStore ??= new Map(); }\r\n\r\n add(...values: (string | any[] | {} | Function)[]): ComponentBase {\r\n for (const value of values) {\r\n if (typeof value === 'function') {\r\n this._addReactive(value);\r\n } else if (Array.isArray(value)) {\r\n this._addStaticFromArray(value);\r\n } else if (value && typeof value === 'object') {\r\n this._addStaticFromObject(value as Record<string, any>);\r\n } else {\r\n this._addStaticNames(this._splitClasses(String(value ?? '')));\r\n }\r\n }\r\n return this._parent;\r\n }\r\n\r\n remove(classNames: string | string[]): ComponentBase {\r\n const el = this._getElement();\r\n if (Array.isArray(classNames)) {\r\n const prev = new Set(this._staticSet);\r\n for (const cn of classNames) {\r\n for (const cls of this._splitClasses(String(cn))) {\r\n this._staticSet.delete(cls);\r\n }\r\n }\r\n this._applySourceDiff('static', prev, new Set(this._staticSet), el);\r\n } else {\r\n if (classNames === '**') {\r\n for (const [id, w] of Array.from(this._watchers.entries())) {\r\n const prev = new Set(w.set);\r\n this._applySourceDiff(id, prev, new Set(), el);\r\n try { w.binding && this._parent.bindings.remove(w.binding); } catch { }\r\n try { w.stop(); } catch { }\r\n this._watchers.delete(id);\r\n }\r\n const prev = new Set(this._staticSet);\r\n this._staticSet.clear();\r\n this._applySourceDiff('static', prev, new Set(), el);\r\n if (el) {\r\n try { el.removeAttribute('class'); } catch { /* ignore */ }\r\n }\r\n this._counts.clear();\r\n } else {\r\n const prev = new Set(this._staticSet);\r\n for (const cls of this._splitClasses(String(classNames))) {\r\n this._staticSet.delete(cls);\r\n }\r\n this._applySourceDiff('static', prev, new Set(this._staticSet), el);\r\n }\r\n }\r\n return this._parent;\r\n }\r\n\r\n has(className: string): boolean {\r\n const el = this._getElement();\r\n const name = String(className ?? '').trim();\r\n if (!name) return false;\r\n return !!(el && el.classList.contains(name));\r\n }\r\n\r\n private _getElement(): (Element & { classList: DOMTokenList, className: string }) | null {\r\n const el: unknown = this._parent?.element;\r\n if (el instanceof Element) return el as any;\r\n return null;\r\n }\r\n\r\n private _splitClasses(input: string): string[] {\r\n if (!input) return [];\r\n if (!/\\s/.test(input)) return [input];\r\n return input.split(/\\s+/).filter(s => s.length > 0);\r\n }\r\n\r\n private _normalizeToSet(values: any, key?: any): Set<string> {\r\n const result = new Set<string>();\r\n if (values == null) return result;\r\n if (typeof values === 'string') {\r\n for (const cls of this._splitClasses(values)) result.add(cls);\r\n } else if (Array.isArray(values)) {\r\n for (const item of values) {\r\n if (item == null) continue;\r\n if (typeof item === 'string') {\r\n for (const cls of this._splitClasses(item)) result.add(cls);\r\n } else if (Array.isArray(item)) {\r\n for (const cls of this._normalizeToSet(item)) result.add(cls);\r\n } else if (typeof item === 'object') {\r\n const obj = item as Record<string, any>;\r\n for (const k of Object.keys(obj)) {\r\n const v = obj[k];\r\n if (!!v) {\r\n for (const cls of this._splitClasses(String(k))) result.add(cls);\r\n }\r\n }\r\n } else if (typeof item === 'boolean') {\r\n if (key && item) {\r\n for (const cls of this._splitClasses(String(key))) result.add(cls);\r\n }\r\n } else {\r\n for (const cls of this._splitClasses(String(item))) result.add(cls);\r\n }\r\n }\r\n } else if (typeof values === 'object') {\r\n const obj = values as Record<string, any>;\r\n for (const k of Object.keys(obj)) {\r\n const v = obj[k];\r\n if (!!v) {\r\n for (const cls of this._splitClasses(String(k))) result.add(cls);\r\n }\r\n }\r\n } else if (typeof values === 'boolean') {\r\n if (key && values) {\r\n for (const cls of this._splitClasses(String(key))) result.add(cls);\r\n }\r\n } else {\r\n for (const cls of this._splitClasses(String(values))) result.add(cls);\r\n }\r\n return result;\r\n }\r\n\r\n private _applySourceDiff(sourceId: string, prev: Set<string>, next: Set<string>, el: Element | null) {\r\n\r\n for (const cls of prev) {\r\n if (!next.has(cls)) {\r\n const prevCount = this._counts.get(cls) || 0;\r\n const now = prevCount - 1;\r\n if (now <= 0) {\r\n this._counts.delete(cls);\r\n if (el) { try { (el as any).classList.remove(cls); } catch { } }\r\n } else {\r\n this._counts.set(cls, now);\r\n }\r\n }\r\n }\r\n for (const cls of next) {\r\n if (!prev.has(cls)) {\r\n const prevCount = this._counts.get(cls) || 0;\r\n const now = prevCount + 1;\r\n this._counts.set(cls, now);\r\n if (prevCount === 0 && el) {\r\n try { (el as any).classList.add(cls); } catch { }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _addStaticNames(names: string[]) {\r\n if (names.length === 0) return;\r\n const el = this._getElement();\r\n const staticSet = this._staticSet;\r\n const fresh: string[] | null = el && !el.hasAttribute('class') ? [] : null;\r\n for (const cls of names) {\r\n if (staticSet.has(cls)) continue;\r\n staticSet.add(cls);\r\n const prevCount = this._counts.get(cls) || 0;\r\n this._counts.set(cls, prevCount + 1);\r\n if (prevCount === 0 && el) {\r\n if (fresh) fresh.push(cls);\r\n else { try { (el as any).classList.add(cls); } catch { } }\r\n }\r\n }\r\n if (fresh && fresh.length > 0) el!.setAttribute('class', fresh.join(' '));\r\n }\r\n\r\n private _addStaticFromArray(arr: any[]) {\r\n const el = this._getElement();\r\n const prev = new Set(this._staticSet);\r\n for (const item of arr) {\r\n if (item == null) continue;\r\n if (typeof item === 'string') {\r\n for (const cls of this._splitClasses(item)) this._staticSet.add(cls);\r\n } else if (Array.isArray(item)) {\r\n const set = this._normalizeToSet(item);\r\n for (const cls of set) this._staticSet.add(cls);\r\n } else if (typeof item === 'object') {\r\n const obj = item as Record<string, any>;\r\n for (const k of Object.keys(obj)) {\r\n const v = obj[k];\r\n if (typeof v === 'function') {\r\n const keys = this._splitClasses(String(k));\r\n for (const cls of keys) this._addReactive(obj[k], cls);\r\n } else {\r\n const keys = this._splitClasses(String(k));\r\n if (!!v) {\r\n for (const cls of keys) this._staticSet.add(cls);\r\n } else {\r\n for (const cls of keys) this._staticSet.delete(cls);\r\n }\r\n }\r\n\r\n }\r\n } else if (typeof item === 'boolean') {\r\n continue;\r\n } else if (typeof item === \"function\") {\r\n this._addReactive(item);\r\n } else {\r\n for (const cls of this._splitClasses(String(item))) this._staticSet.add(cls);\r\n }\r\n }\r\n\r\n this._applySourceDiff('static', prev, new Set(this._staticSet), el);\r\n }\r\n\r\n private _addStaticFromObject(obj: Record<string, any>) {\r\n const el = this._getElement();\r\n const prev = new Set(this._staticSet);\r\n for (const k of Object.keys(obj)) {\r\n const v = obj[k];\r\n const keys = this._splitClasses(String(k));\r\n if (!!v) {\r\n for (const cls of keys) this._staticSet.add(cls);\r\n } else {\r\n for (const cls of keys) this._staticSet.delete(cls);\r\n }\r\n }\r\n this._applySourceDiff('static', prev, new Set(this._staticSet), el);\r\n }\r\n\r\n private _addReactive(fn: Function, key?: any) {\r\n const id = `fx#${++this._watcherSeq}`;\r\n const rec = { stop: () => { }, binding: undefined as undefined | IBaseBinding, set: new Set<string>() };\r\n const el = this._getElement();\r\n const run = () => effect(() => {\r\n let next: Set<string>;\r\n try {\r\n const v = fn();\r\n next = this._normalizeToSet(v, key);\r\n } catch {\r\n next = new Set();\r\n }\r\n const prev = new Set(rec.set);\r\n this._applySourceDiff(id, prev, next, el);\r\n rec.set = next;\r\n });\r\n let current = run();\r\n const stop = () => { try { current(); } catch { } };\r\n\r\n const binding: IBaseBinding = {\r\n propertyName: `__class:${id}`,\r\n dataSource: null,\r\n activate() { /* no-op */ },\r\n deactivate: () => {\r\n stop();\r\n const el2 = this._getElement();\r\n const prev = new Set(rec.set);\r\n this._applySourceDiff(id, prev, new Set(), el2);\r\n rec.set.clear();\r\n },\r\n reActivate: () => {\r\n stop();\r\n current = run();\r\n }\r\n } as any;\r\n try { this._parent.bindings.add(binding); } catch { }\r\n rec.stop = stop;\r\n rec.binding = binding;\r\n this._watchers.set(id, rec);\r\n }\r\n}","import { CSSTransitionInfo, TransitionProps } from \"../common/transition\";\r\nimport { TransitionMode } from \"../common/transitionRegistry\";\r\n\r\nexport interface IHtmlElement extends HTMLElement { }\r\nexport interface IElement extends Node { }\r\nexport type ElementType = IElement | IHtmlElement | DocumentFragment | Comment | Text;\r\nexport type CustomParameters<T extends any> = T extends (...args: infer P) => any ? P[0] : never;\r\n\r\n\r\nexport type IsOptional<T> = T extends {} ? { [K in keyof T]-?: {} extends Pick<T, K> ? true : false }[keyof T] : false;\r\n\r\nexport type OptionalParams<T> = T extends null ? { params?: undefined } : T extends undefined ? { params?: undefined } : IsOptional<T> extends true ? T : T;\r\n\r\n\r\nexport interface EventArgs {\r\n cancel: boolean;\r\n}\r\n\r\nexport interface VisibilityChangedEventArgs extends EventArgs {\r\n visible: boolean;\r\n}\r\n\r\nexport type RouterClassingSettings = {\r\n to: 'all' | 'active' | 'exact' | 'none',\r\n path: string,\r\n activeClass?: string,\r\n exactClass?: string,\r\n onActive?: () => void,\r\n offActive?: () => void,\r\n onExact?: () => void,\r\n offExact?: () => void,\r\n}\r\n\r\nexport interface ComponentBaseOptions<TProps> {\r\n [key: string]: any;\r\n cache?: DocumentFragment;\r\n closeFragment?: Comment;\r\n transition: {\r\n transitionInfo: () => {\r\n in: CSSTransitionInfo,\r\n out: CSSTransitionInfo\r\n },\r\n name: string,\r\n mode?: TransitionMode,\r\n classes?: TransitionProps,\r\n activeCssCancel: (() => void) | null,\r\n activeCssPhase: 'enter' | 'leave' | null,\r\n cssProps: () => TransitionProps | null,\r\n skipNextLeave: boolean\r\n _suppressEnter: boolean\r\n _markedDirection: boolean\r\n in: (op: { keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions }) => void,\r\n out: (op: { keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions }) => void,\r\n enterTransition: (resolve: () => void) => Animation,\r\n leaveTransition: (resolve: () => void) => Animation,\r\n _runCss: (phase: 'enter' | 'leave', resolve: () => void, appear?: boolean) => Animation,\r\n activeAnimations: Animation[],\r\n run: (keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions, resolve?: () => void) => Animation\r\n },\r\n set enableRouterClassing(value: RouterClassingSettings);\r\n getInstance(): any;\r\n hasEvent: (name: string) => boolean;\r\n}\r\n\r\n\r\nexport const shimAnimation: any = {\r\n cancel() { },\r\n addEventListener() { },\r\n removeEventListener() { },\r\n oncancel: null,\r\n playState: 'finished'\r\n};\r\n\r\n\r\nexport type AnyEvents = {\r\n [key: string]: any\r\n}\r\n\r\nexport type HtmlElementEvents = {\r\n [K in keyof IHtmlElement as K extends `on${string}` ?\r\n | Uncapitalize<K extends `on${infer EventName}` ? EventName : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:passive` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:passive:prevent` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:passive:stop` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:passive:trusted` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:passive:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:passive:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:prevent` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:prevent:stop` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:prevent:trusted` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:prevent:trusted:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:prevent:trusted:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:stop` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:stop:trusted` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:stop:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:stop:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:trusted` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:trusted:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:trusted:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:prevent` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:prevent:stop` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:prevent:trusted` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:prevent:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:prevent:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:stop` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:stop:trusted` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:stop:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:stop:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:trusted` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:trusted:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:trusted:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:capture:self` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:prevent` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:prevent:stop` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:prevent:trusted` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:prevent:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:prevent:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:stop` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:stop:trusted` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:stop:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:stop:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:trusted` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:trusted:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:trusted:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:capture:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:self` : never>\r\n : 'x:building' | 'x:built' | 'x:initializing' | 'x:initialized' | 'x:disposing' | 'x:disposed' | 'x:config' | 'x:configured' | 'x:visibilityChanged' | 'x:mounted']\r\n : CustomParameters<IHtmlElement[K]> extends Event ? CustomParameters<IHtmlElement[K]> : EventArgs;\r\n\r\n} & { 'x:visibilityChanged': VisibilityChangedEventArgs } & AnyEvents;\r","\r\nimport { dom } from \"../\";\r\n\r\ntype TransitionKind = 'transition' | 'animation'\r\n\r\nexport interface CSSTransitionInfo {\r\n type: TransitionKind | null\r\n timeout: number\r\n propCount: number\r\n hasTransform: boolean\r\n}\r\n\r\nexport interface TransitionProps {\r\n name?: string\r\n type?: TransitionKind\r\n css?: boolean\r\n duration?: number | { enter: number; leave: number }\r\n enterFromClass?: string\r\n enterActiveClass?: string\r\n enterToClass?: string\r\n appearFromClass?: string\r\n appearActiveClass?: string\r\n appearToClass?: string\r\n leaveFromClass?: string\r\n leaveActiveClass?: string\r\n leaveToClass?: string\r\n}\r\n\r\n\r\ninterface TimingSample {\r\n kind: TransitionKind\r\n longest: number\r\n tracks: number\r\n}\r\n\r\nfunction cssTimeToMs(text: string): number {\r\n const amount = text.substring(0, Math.max(0, text.length - 1)).replace(',', '.');\r\n return 1000 * Number(amount);\r\n}\r\n\r\nfunction sampleTiming(styles: any, kind: TransitionKind): TimingSample {\r\n const listOf = (aspect: 'delay' | 'duration'): string[] => {\r\n const declared: string = styles[`${kind}-${aspect}`] || '';\r\n return declared.split(', ');\r\n };\r\n const delays = listOf('delay');\r\n const durations = listOf('duration');\r\n let longest = -Infinity;\r\n for (let track = 0; track < durations.length; track++) {\r\n const total = cssTimeToMs(durations[track]) + cssTimeToMs(delays[track % delays.length]);\r\n longest = Math.max(longest, total);\r\n }\r\n return { kind, longest, tracks: durations.length };\r\n}\r\n\r\nconst transformTrack = /(?:^|\\W)(?:transform|all)(?:,|$)/;\r\n\r\nfunction computeTransitionInfo(styles: any, Type?: TransitionProps['type']): CSSTransitionInfo {\r\n if (!styles) {\r\n return { type: 'animation', timeout: 0, propCount: 0, hasTransform: false };\r\n }\r\n\r\n const samples: Record<TransitionKind, TimingSample> = {\r\n transition: sampleTiming(styles, 'transition'),\r\n animation: sampleTiming(styles, 'animation'),\r\n };\r\n\r\n let winner: TimingSample | null;\r\n let timeout: number;\r\n if (Type === 'transition' || Type === 'animation') {\r\n const forced = samples[Type];\r\n winner = forced.longest > 0 ? forced : null;\r\n timeout = winner ? winner.longest : 0;\r\n } else {\r\n const { transition, animation } = samples;\r\n timeout = Math.max(transition.longest, animation.longest);\r\n winner = !(timeout > 0) ? null : transition.longest > animation.longest ? transition : animation;\r\n }\r\n\r\n const type = winner ? winner.kind : null;\r\n return {\r\n type,\r\n timeout,\r\n propCount: winner ? winner.tracks : 0,\r\n hasTransform: type === 'transition' && transformTrack.test(styles.transitionProperty),\r\n };\r\n}\r\n\r\nexport function getTransitionInfo(el: Element, name: string, Type?: TransitionProps['type']): CSSTransitionInfo {\r\n if (el.isConnected && el.nodeType !== 8) {\r\n return computeTransitionInfo(dom.window.getComputedStyle(el), Type);\r\n }\r\n const fxElement = dom.createElement('div');\r\n fxElement.setAttribute('style', 'width:0!important;height:0!important;display:none');\r\n dom.body.appendChild(fxElement);\r\n fxElement.setAttribute('class', name);\r\n try {\r\n return computeTransitionInfo(dom.window.getComputedStyle(fxElement), Type);\r\n } finally {\r\n fxElement.remove();\r\n }\r\n}\r\n\r\n\r\nexport function getTransitionInfoFromElement(el: Element, Type?: TransitionProps['type']): CSSTransitionInfo {\r\n return computeTransitionInfo(dom.window.getComputedStyle(el), Type);\r\n}\r\n\r\nexport type TransitionPhase = 'enter' | 'leave';\r\n\r\nexport function resolveTransitionClasses(props: TransitionProps, phase: TransitionPhase, appear: boolean = false): { from: string, active: string, to: string } {\r\n const name = props.name || 'motif';\r\n if (phase === 'enter') {\r\n const enter = {\r\n from: props.enterFromClass ?? `${name}-enter-from`,\r\n active: props.enterActiveClass ?? `${name}-enter-active`,\r\n to: props.enterToClass ?? `${name}-enter-to`,\r\n };\r\n if (!appear) return enter;\r\n return {\r\n from: props.appearFromClass ?? enter.from,\r\n active: props.appearActiveClass ?? enter.active,\r\n to: props.appearToClass ?? enter.to,\r\n };\r\n }\r\n return {\r\n from: props.leaveFromClass ?? `${name}-leave-from`,\r\n active: props.leaveActiveClass ?? `${name}-leave-active`,\r\n to: props.leaveToClass ?? `${name}-leave-to`,\r\n };\r\n}\r\n\r\nexport function runCssTransition(el: Element, props: TransitionProps, phase: TransitionPhase, done: () => void, appear: boolean = false): () => void {\r\n if (props.css === false) {\r\n done();\r\n return () => { };\r\n }\r\n const classes = resolveTransitionClasses(props, phase, appear);\r\n const addC = (c: string) => { if (c) c.split(/\\s+/).forEach(x => { if (x) try { el.classList.add(x); } catch { } }); };\r\n const removeC = (c: string) => { if (c) c.split(/\\s+/).forEach(x => { if (x) try { el.classList.remove(x); } catch { } }); };\r\n\r\n let finished = false;\r\n let guardTimer: any = undefined;\r\n let endEvent: string | null = null;\r\n let endHandler: ((e: any) => void) | null = null;\r\n\r\n const cleanup = () => {\r\n removeC(classes.from);\r\n removeC(classes.to);\r\n removeC(classes.active);\r\n if (guardTimer !== undefined) { try { clearTimeout(guardTimer); } catch { } guardTimer = undefined; }\r\n if (endEvent && endHandler) { try { el.removeEventListener(endEvent, endHandler); } catch { } endHandler = null; }\r\n };\r\n const finish = () => {\r\n if (finished) return;\r\n finished = true;\r\n cleanup();\r\n try { done(); } catch { }\r\n };\r\n\r\n addC(classes.from);\r\n addC(classes.active);\r\n try { void (el as HTMLElement).offsetHeight; } catch { }\r\n\r\n const nextFrame = (cb: () => void) => {\r\n const raf = (globalThis as any).requestAnimationFrame;\r\n if (typeof raf === 'function') { raf(() => cb()); } else { setTimeout(cb, 16); }\r\n };\r\n\r\n nextFrame(() => {\r\n if (finished) return;\r\n removeC(classes.from);\r\n addC(classes.to);\r\n\r\n let timeout = 0;\r\n let expectedEnds = 1;\r\n const dur = props.duration;\r\n if (typeof dur === 'number') {\r\n timeout = dur;\r\n endEvent = props.type === 'animation' ? 'animationend' : 'transitionend';\r\n } else if (dur && typeof dur === 'object') {\r\n timeout = (phase === 'enter' ? dur.enter : dur.leave) ?? 0;\r\n endEvent = props.type === 'animation' ? 'animationend' : 'transitionend';\r\n } else {\r\n const info = getTransitionInfoFromElement(el, props.type);\r\n timeout = info.timeout;\r\n expectedEnds = info.propCount || 1;\r\n endEvent = info.type === 'animation' ? 'animationend' : 'transitionend';\r\n }\r\n\r\n if (!timeout || timeout <= 0) {\r\n finish();\r\n return;\r\n }\r\n\r\n let ended = 0;\r\n endHandler = (e: any) => {\r\n if (e && e.target !== el) return;\r\n if (++ended >= expectedEnds) finish();\r\n };\r\n try { el.addEventListener(endEvent, endHandler); } catch { }\r\n guardTimer = setTimeout(finish, timeout + 60);\r\n });\r\n\r\n return finish;\r\n}\r","import type { ComponentBase } from \"./componentBase\";\nimport { disposableCore, IDisposable } from \"..\";\nimport type { ComponentBaseOptions, EventArgs, HtmlElementEvents } from \"./types\";\n\nexport class ComponentMotif<TSelf extends ComponentBase = ComponentBase, TProps extends object = any> {\n\n private readonly _component: TSelf;\n public options: ComponentBaseOptions<TProps> & { hideStrategy?: 'placeholder' | 'detach' | 'auto', __fromList?: boolean, __key?: any, placeholder?: Comment };\n\n constructor(component: TSelf, options: ComponentMotif<TSelf, TProps>['options']) {\n this._component = component;\n this.options = options;\n }\n\n public show(): Promise<any> {\n return this._component['_show']();\n }\n\n public hide(): Promise<any> {\n return this._component['_hide']();\n }\n\n public toggle(): void {\n this._component['_toggle']();\n }\n\n public on<K extends keyof HtmlElementEvents>(event: K, cb: (sender: TSelf, ev: HtmlElementEvents[K]) => any, domEvent: boolean = true): Promise<TSelf> {\n return this._component['_on'](event, cb as any, domEvent);\n }\n\n public off<K extends keyof HtmlElementEvents>(event: K, cb: (sender: TSelf, ev: HtmlElementEvents[K]) => any): Promise<TSelf> {\n return this._component['_off'](event, cb as any);\n }\n\n public trigger(event: any, ev: any): Promise<TSelf> {\n return this._component['_trigger'](event, ev);\n }\n\n public addHandler(event: any, handler: (sender: ComponentBase, e: EventArgs) => void): void {\n this._component['_addHandler'](event, handler);\n }\n\n public clear(): Promise<any> {\n return this._component['_clear']();\n }\n\n public register(c: IDisposable): void {\n this._component['_register'](c);\n }\n\n public setDisposable(c: () => void): void {\n this._component['_register'](disposableCore.toDisposable(c));\n }\n\n public stopAnimations(): Promise<void> {\n return this._component['_stopAnimations']();\n }\n}\n","import { track, trigger, effect, createScheduledEffect, untracked, ScheduledEffect } from \"../\";\r\nimport { pauseTracking, resetTracking } from \"./common\";\r\nconst SIGNAL_TARGET = Symbol('SignalTarget');\r\nconst SIGNAL_KEY = Symbol('SignalKey');\r\n\r\nexport class Signal<T> {\r\n private _value: T;\r\n private readonly _target: object;\r\n private readonly _key: symbol;\r\n private readonly _equals: (a: T, b: T) => boolean;\r\n private _disposed = false;\r\n\r\n public static create<U>(initialValue: U, equals?: (a: U, b: U) => boolean): Signal<U> {\r\n return new Signal<U>(initialValue, equals);\r\n }\r\n\r\n constructor(initialValue: T, equals: (a: T, b: T) => boolean = Object.is) {\r\n this._value = initialValue;\r\n this._target = { [SIGNAL_TARGET]: true };\r\n this._key = SIGNAL_KEY;\r\n this._equals = equals;\r\n }\r\n\r\n get value(): T {\r\n if (!this._disposed) {\r\n track(this._target, this._key);\r\n }\r\n return this._value;\r\n }\r\n\r\n set value(newValue: T) {\r\n if (this._disposed) return;\r\n if (!this._equals(this._value as any, newValue as any)) {\r\n this._value = newValue;\r\n trigger(this._target, this._key);\r\n }\r\n }\r\n\r\n peek(): T {\r\n return this._value;\r\n }\r\n\r\n update(updater: (prev: T) => T): void {\r\n this.value = (updater(this._value));\r\n }\r\n\r\n mutate(mutator: (draft: T) => void): void {\r\n if (this._disposed) return;\r\n mutator(this._value);\r\n trigger(this._target, this._key);\r\n }\r\n\r\n notify(): void {\r\n if (this._disposed) return;\r\n trigger(this._target, this._key);\r\n }\r\n\r\n asReadonly(): ReadonlySignal<T> {\r\n const self = this;\r\n return {\r\n get value() { return self.value; },\r\n peek() { return self.peek(); },\r\n valueOf() { return self.valueOf(); },\r\n toString() { return self.toString(); }\r\n };\r\n }\r\n \r\n dispose(): void {\r\n this._disposed = true;\r\n }\r\n\r\n valueOf(): T {\r\n return this.value;\r\n }\r\n\r\n toString(): string {\r\n return String(this.value);\r\n }\r\n}\r\n\r\nexport interface ReadonlySignal<T> {\r\n readonly value: T;\r\n peek(): T;\r\n valueOf(): T;\r\n toString(): string;\r\n}\r\n\r\n\r\nexport class Computed<T> {\r\n private _value!: T;\r\n private _dirty: boolean = true;\r\n private _computing: boolean = false;\r\n private readonly _target: object;\r\n private readonly _key: symbol;\r\n private readonly _getter: () => T;\r\n private _cleanup?: () => void;\r\n\r\n constructor(getter: () => T) {\r\n this._getter = getter;\r\n this._target = { [SIGNAL_TARGET]: true };\r\n this._key = SIGNAL_KEY;\r\n\r\n this._cleanup = effect(() => {\r\n if (this._computing) return; \r\n this._computing = true;\r\n try {\r\n const newVal = this._getter();\r\n const changed = this._dirty || !Object.is(this._value, newVal);\r\n this._value = newVal;\r\n this._dirty = false;\r\n if (changed) {\r\n trigger(this._target, this._key);\r\n }\r\n } finally {\r\n this._computing = false;\r\n }\r\n });\r\n }\r\n\r\n get value(): T {\r\n track(this._target, this._key);\r\n\r\n if (this._dirty) { \r\n this._computing = true;\r\n pauseTracking();\r\n try {\r\n this._value = this._getter();\r\n this._dirty = false;\r\n } finally {\r\n resetTracking();\r\n this._computing = false;\r\n }\r\n }\r\n return this._value;\r\n }\r\n\r\n peek(): T {\r\n if (this._dirty) {\r\n pauseTracking();\r\n try {\r\n this._value = this._getter();\r\n this._dirty = false;\r\n } finally {\r\n resetTracking();\r\n }\r\n }\r\n return this._value;\r\n }\r\n\r\n dispose(): void {\r\n if (this._cleanup) {\r\n this._cleanup();\r\n this._cleanup = undefined;\r\n }\r\n }\r\n\r\n valueOf(): T {\r\n return this.value;\r\n }\r\n\r\n toString(): string {\r\n return String(this.value);\r\n }\r\n}\r\n\n\nexport class LazyComputed<T> {\n private _value!: T;\n private _dirty: boolean = true;\n private _disposed: boolean = false;\n private readonly _target: object;\n private readonly _key: symbol;\n private readonly _getter: () => T;\n private readonly _runner: ScheduledEffect;\n\n constructor(getter: () => T) {\n this._getter = getter;\n this._target = { [SIGNAL_TARGET]: true };\n this._key = SIGNAL_KEY;\n this._runner = createScheduledEffect(\n () => { this._value = this._getter(); },\n () => {\n if (this._dirty || this._disposed) return;\n this._dirty = true;\n trigger(this._target, this._key);\n }\n );\n }\n\n get value(): T {\n if (!this._disposed) {\n track(this._target, this._key);\n }\n this._refresh();\n return this._value;\n }\n\n peek(): T {\n this._refresh();\n return this._value;\n }\n\n get isDirty(): boolean {\n return this._dirty;\n }\n\n private _refresh(): void {\n if (!this._dirty) return;\n if (this._disposed) {\n this._value = untracked(this._getter);\n } else {\n this._runner.run();\n }\n this._dirty = false;\n }\n\n dispose(): void {\n if (this._disposed) return;\n this._disposed = true;\n this._runner.stop();\n }\n\n valueOf(): T {\n return this.value;\n }\n\n toString(): string {\n return String(this.value);\n }\n}\n","import { ServiceCollection, ServiceDescriptor } from \"./ServiceCollection\";\nimport { motifError } from \"../common/diagnostics\";\nimport { Signal } from \"../store/Signal\";\n\ntype ScopeKind = 'root' | 'navigation' | 'user';\ntype OwnerSlot = { owner: object | null; ownerless?: boolean };\ntype OwnerPin = { scope: ServiceProvider; live: boolean };\ntype NavigationState = { current: ServiceProvider; version: Signal<number>; scopes: Set<ServiceProvider> };\n\nlet activeResolver: ((token: any) => any) | null = null;\nlet activeSlot: OwnerSlot | null = null;\nlet rawScopedIn: ServiceProvider | null = null;\nlet constructionScope: ServiceProvider | null = null;\nlet navigatingRoot: ServiceProvider | null = null;\n\nconst slotsByOwner = new WeakMap<object, OwnerSlot>();\nconst handlesBySlot = new WeakMap<OwnerSlot, Map<any, any>>();\nconst pins = new WeakMap<object, OwnerPin>();\nconst builtIn = new WeakMap<object, ServiceProvider>();\nconst boundMethods = new WeakMap<object, Map<PropertyKey, { fn: Function; bound: Function }>>();\n\nfunction runWithResolver<T>(resolver: (token: any) => any, create: () => T): T {\n const previous = activeResolver;\n activeResolver = resolver;\n try {\n return create();\n } finally {\n activeResolver = previous;\n }\n}\n\nfunction runWith<T>(slot: OwnerSlot | null, raw: ServiceProvider | null, create: () => T): T {\n const previousSlot = activeSlot;\n const previousRaw = rawScopedIn;\n activeSlot = slot;\n rawScopedIn = raw;\n try {\n return create();\n } finally {\n activeSlot = previousSlot;\n rawScopedIn = previousRaw;\n }\n}\n\nfunction bindTo(target: object, key: PropertyKey, fn: Function): Function {\n let cache = boundMethods.get(target);\n if (!cache) boundMethods.set(target, cache = new Map());\n const hit = cache.get(key);\n if (hit && hit.fn === fn) return hit.bound;\n const bound = fn.bind(target);\n cache.set(key, { fn, bound });\n return bound;\n}\n\nfunction pinnedScopeOf(owner: object | null): ServiceProvider | null {\n let current: any = owner;\n while (current) {\n const pin = pins.get(current);\n if (pin) return pin.scope;\n const built = builtIn.get(current);\n if (built && built._pending) return built;\n current = current.parent;\n }\n return null;\n}\n\nexport function inject<T>(token: (abstract new (...args: any) => T) | { prototype: T }): T;\nexport function inject<T = any>(token: string | symbol | object): T;\nexport function inject(token: any): any {\n if (!activeResolver) throw motifError('MJX409', describeInjectToken(token));\n return activeResolver(token);\n}\n\nfunction describeInjectToken(token: any): string {\n if (typeof token === 'function') return token.name || '[AnonymousClass]';\n return String(token);\n}\n\nexport function runInConstructionScope<T>(scope: ServiceProvider | undefined, create: () => T): T {\n const previous = constructionScope;\n constructionScope = scope ?? null;\n try {\n return create();\n } finally {\n constructionScope = previous;\n }\n}\n\nexport function recordServiceOwner(owner: object): void {\n if (constructionScope && constructionScope._pending) builtIn.set(owner, constructionScope);\n}\n\nexport function pinServiceOwner(owner: object): void {\n const root = navigatingRoot;\n if (!root) return;\n if (pins.get(owner)?.live) return;\n const target = pinnedScopeOf(owner) ?? root._currentScope();\n pins.set(owner, { scope: target, live: true });\n target._livePins++;\n}\n\nexport function unpinServiceOwner(owner: object): void {\n const pin = pins.get(owner);\n if (!pin) return;\n pins.delete(owner);\n if (pin.live) pin.scope._releaseLivePin();\n navigatingRoot?._touch();\n}\n\nexport function retireServiceOwner(owner: object): void {\n const pin = pins.get(owner);\n if (pin) {\n if (pin.live) {\n pin.live = false;\n pin.scope._releaseLivePin();\n }\n return;\n }\n if (!navigatingRoot || !slotsByOwner.has(owner)) return;\n pins.set(owner, { scope: pinnedScopeOf(owner) ?? navigatingRoot._currentScope(), live: false });\n}\n\nexport class ServiceProvider {\n private parent?: ServiceProvider;\n private root: ServiceProvider;\n private scopeName?: string;\n private kind: ScopeKind;\n private singletonCache: Map<any, any>;\n private scopedCache: Map<any, any> = new Map();\n private transientSet: Set<any> = new Set();\n private _autoDisposeTransients = false;\n private pendingSingleton: Map<any, Promise<any>>;\n private pendingScoped: Map<any, Promise<any>> = new Map();\n private _navigation?: NavigationState;\n private _ownerlessSlot: OwnerSlot = { owner: null, ownerless: true };\n private _navigationDisposed = false;\n public _livePins = 0;\n public _pending = false;\n\n constructor(private services: ServiceCollection, parent?: ServiceProvider, root?: ServiceProvider) {\n this.parent = parent;\n this.root = root ?? this;\n this.kind = this.root === this ? 'root' : 'user';\n this.singletonCache = this.root === this ? new Map() : (this.root as any).singletonCache;\n this.pendingSingleton = this.root === this ? new Map() : (this.root as any).pendingSingleton;\n }\n\n public createScope(name?: string): ServiceProvider {\n const scoped = new ServiceProvider(this.services, this, this.root);\n scoped.scopeName = name ?? this.scopeName;\n (scoped as any)._autoDisposeTransients = this._autoDisposeTransients;\n return scoped;\n }\n\n public enableAutoDisposeTransients(enable = true): this { this._autoDisposeTransients = enable; return this; }\n\n\n public get<T>(token: (abstract new (...args: any) => T) | { prototype: T }): T;\n public get<T = any>(token: string | symbol | object): T;\n public get(token: any): any {\n const desc = this.services.getDescriptor(token);\n if (!desc) throw motifError('MJX401', this.describeToken(token));\n const value = this.resolveDescriptorSync(desc, [token]);\n return value;\n }\n\n public getAsync<T>(token: (abstract new (...args: any) => T) | { prototype: T }): Promise<T>;\n public getAsync<T = any>(token: string | symbol | object): Promise<T>;\n public async getAsync(token: any): Promise<any> {\n const desc = this.services.getDescriptor(token);\n if (!desc) throw motifError('MJX401', this.describeToken(token));\n const value = await this.resolveDescriptorAsync(desc, [token]);\n return value;\n }\n\n public _getFor<T = any>(owner: object, token: any): T {\n let slot = slotsByOwner.get(owner);\n if (!slot) {\n slot = { owner };\n slotsByOwner.set(owner, slot);\n }\n return runWith(slot, rawScopedIn, () => this.get<T>(token));\n }\n\n public getAllServices(): ServiceCollection { return this.services; }\n\n public _beginNavigation(): ServiceProvider {\n const root = this.root;\n const navigation = root._navigation ??= { current: root, version: new Signal(0), scopes: new Set() };\n navigatingRoot = root;\n const scope = new ServiceProvider(this.services, root, root);\n scope.kind = 'navigation';\n scope.scopeName = 'navigation';\n scope._pending = true;\n scope._autoDisposeTransients = root._autoDisposeTransients;\n navigation.scopes.add(scope);\n return scope;\n }\n\n public _commitNavigation(scope: ServiceProvider): void {\n const navigation = this.root._navigation;\n if (!navigation || navigation.current === scope) return;\n scope._pending = false;\n const previous = navigation.current;\n navigation.current = scope;\n this._touch();\n if (previous !== this.root) previous._releaseIfUnused();\n }\n\n public _abandonNavigation(scope: ServiceProvider): void {\n scope._pending = false;\n scope._releaseIfUnused();\n }\n\n public _currentScope(): ServiceProvider {\n return this.root._navigation?.current ?? this.root;\n }\n\n public _touch(): void {\n const navigation = this.root._navigation;\n if (navigation) navigation.version.value = navigation.version.peek() + 1;\n }\n\n public _releaseLivePin(): void {\n this._livePins--;\n this._releaseIfUnused();\n }\n\n private _releaseIfUnused(): void {\n const navigation = this.root._navigation;\n if (this.kind !== 'navigation' || this._navigationDisposed || this._livePins > 0) return;\n if (navigation && navigation.current === this) return;\n this._navigationDisposed = true;\n navigation?.scopes.delete(this);\n this.dispose().catch(() => { });\n }\n\n private _scopeFor(slot: OwnerSlot): ServiceProvider {\n const navigation = this._navigation;\n if (navigation) navigation.version.value;\n if (!slot.ownerless) {\n const pinned = pinnedScopeOf(slot.owner);\n if (pinned) return pinned;\n if (constructionScope && constructionScope.root === this) return constructionScope;\n }\n return navigation ? navigation.current : this;\n }\n\n private _handle(desc: ServiceDescriptor, path: any[]): any {\n const slot = activeSlot ?? this._ownerlessSlot;\n let handles = handlesBySlot.get(slot);\n if (!handles) handlesBySlot.set(slot, handles = new Map());\n let handle = handles.get(desc.token);\n if (!handle) {\n handle = this._createHandle(desc, slot);\n handles.set(desc.token, handle);\n }\n this._scopeFor(slot)._scopedInstanceSync(desc, path);\n return handle;\n }\n\n private async _handleAsync(desc: ServiceDescriptor, path: any[]): Promise<any> {\n const slot = activeSlot ?? this._ownerlessSlot;\n await this._scopeFor(slot)._scopedInstanceAsync(desc, path);\n return runWith(slot, null, () => this._handle(desc, path));\n }\n\n private _createHandle(desc: ServiceDescriptor, slot: OwnerSlot): any {\n const root = this;\n const target = () => root._scopeFor(slot)._scopedInstanceSync(desc, [desc.token]);\n return new Proxy(Object.create(null), {\n get(_, key) {\n const instance = target();\n const value = Reflect.get(instance, key, instance);\n return typeof value === 'function' ? bindTo(instance, key, value) : value;\n },\n set(_, key, value) {\n const instance = target();\n return Reflect.set(instance, key, value, instance);\n },\n has(_, key) {\n return key in target();\n },\n getPrototypeOf() {\n return Object.getPrototypeOf(target());\n },\n });\n }\n\n private _isSystemScope(): boolean {\n return this.kind !== 'user';\n }\n\n private _scopedInstanceSync(desc: ServiceDescriptor, path: any[]): any {\n if (this.scopedCache.has(desc.token)) return this.scopedCache.get(desc.token);\n const inst = runWith(null, this, () => this.instantiateSync(desc, path));\n this.scopedCache.set(desc.token, inst);\n return inst;\n }\n\n private async _scopedInstanceAsync(desc: ServiceDescriptor, path: any[]): Promise<any> {\n if (this.scopedCache.has(desc.token)) return this.scopedCache.get(desc.token);\n if (this.pendingScoped.has(desc.token)) return await this.pendingScoped.get(desc.token)!;\n const promise = (async () => {\n const inst = await this.instantiateAsyncIn(null, this, desc, path);\n this.scopedCache.set(desc.token, inst);\n this.pendingScoped.delete(desc.token);\n return inst;\n })();\n this.pendingScoped.set(desc.token, promise);\n return await promise;\n }\n\n private resolveDescriptorSync(desc: ServiceDescriptor, path: any[]): any {\n this.checkCycle(desc.token, path);\n switch (desc.lifetime) {\n case 'singleton': {\n if (this.singletonCache.has(desc.token)) return this.singletonCache.get(desc.token);\n const inst = runWith(null, null, () => this.instantiateSync(desc, path));\n this.singletonCache.set(desc.token, inst);\n return inst;\n }\n case 'scoped': {\n if (this._isSystemScope() && rawScopedIn !== this) return this.root._handle(desc, path);\n return this._scopedInstanceSync(desc, path);\n }\n case 'transient':\n default: {\n const inst = this.instantiateSync(desc, path);\n if (this._autoDisposeTransients && this.parent) {\n this.transientSet.add(inst);\n }\n return inst;\n }\n }\n }\n\n private async resolveDescriptorAsync(desc: ServiceDescriptor, path: any[]): Promise<any> {\n this.checkCycle(desc.token, path);\n switch (desc.lifetime) {\n case 'singleton': {\n if (this.singletonCache.has(desc.token)) return this.singletonCache.get(desc.token);\n if (this.pendingSingleton.has(desc.token)) return await this.pendingSingleton.get(desc.token)!;\n const promise = (async () => {\n const inst = await this.instantiateAsyncIn(null, null, desc, path);\n this.singletonCache.set(desc.token, inst);\n this.pendingSingleton.delete(desc.token);\n return inst;\n })();\n this.pendingSingleton.set(desc.token, promise);\n return await promise;\n }\n case 'scoped': {\n if (this._isSystemScope() && rawScopedIn !== this) return await this.root._handleAsync(desc, path);\n return await this._scopedInstanceAsync(desc, path);\n }\n case 'transient':\n default: {\n const inst = await this.instantiateAsync(desc, path);\n if (this._autoDisposeTransients && this.parent) {\n this.transientSet.add(inst);\n }\n return inst;\n }\n }\n }\n\n private construct<T>(create: () => T): T {\n if (activeSlot) return create();\n const slot: OwnerSlot = { owner: null };\n const inst = runWith(slot, rawScopedIn, create);\n if (inst && (typeof inst === 'object' || typeof inst === 'function') && typeof (inst as any).then !== 'function') {\n recordServiceOwner(inst as any);\n slot.owner = inst as any;\n if (!slotsByOwner.has(inst as any)) slotsByOwner.set(inst as any, slot);\n }\n return inst;\n }\n\n private instantiateSync(desc: ServiceDescriptor, path: any[]): any {\n if (desc.useValue !== undefined) {\n return desc.useValue;\n }\n if (desc.useFactory) {\n return this.construct(() => {\n const args = this.resolveDepsSync(desc, path);\n const result = runWithResolver(this.injectionResolver(path), () => (desc.useFactory as any)(...args, this));\n if (result && typeof (result as any).then === 'function') {\n const name = this.describeTokenWithSource(desc.token);\n throw motifError('MJX402', name);\n }\n return result;\n });\n }\n if (desc.useClass) {\n return this.construct(() => {\n const args = this.resolveDepsSync(desc, path);\n return runWithResolver(this.injectionResolver(path), () => new (desc.useClass as any)(...args));\n });\n }\n throw motifError('MJX403');\n }\n\n private async instantiateAsyncIn(slot: OwnerSlot | null, raw: ServiceProvider | null, desc: ServiceDescriptor, path: any[]): Promise<any> {\n return await runWith(slot, raw, () => this.instantiateAsync(desc, path));\n }\n\n private async instantiateAsync(desc: ServiceDescriptor, path: any[]): Promise<any> {\n if (desc.useValue !== undefined) {\n return desc.useValue;\n }\n const slot = activeSlot;\n const raw = rawScopedIn;\n if (desc.useFactory) {\n const args = await this.resolveDepsAsyncIn(slot, raw, desc, path);\n return await runWith(slot, raw, () => this.construct(() => runWithResolver(this.injectionResolver(path), () => (desc.useFactory as any)(...args, this))));\n }\n if (desc.useClass) {\n const args = await this.resolveDepsAsyncIn(slot, raw, desc, path);\n return runWith(slot, raw, () => this.construct(() => runWithResolver(this.injectionResolver(path), () => new (desc.useClass as any)(...args))));\n }\n throw motifError('MJX403');\n }\n\n public async dispose(): Promise<void> {\n const seen = new Set<any>();\n const callDispose = async (obj: any) => {\n if (!obj || seen.has(obj)) return;\n seen.add(obj);\n try { if (typeof obj.dispose === 'function') await obj.dispose(); }\n catch { /* ignore */ }\n try { if (typeof obj.close === 'function') await obj.close(); }\n catch { /* ignore */ }\n try {\n const d = (obj as any)[Symbol.dispose];\n if (typeof d === 'function') await d.call(obj);\n } catch { }\n try {\n const ad = (obj as any)[Symbol.asyncDispose];\n if (typeof ad === 'function') await ad.call(obj);\n } catch { }\n };\n if (this.root === this) {\n const navigation = this._navigation;\n if (navigation) {\n const scopes = [...navigation.scopes];\n navigation.scopes.clear();\n navigation.current = this;\n if (navigatingRoot === this) navigatingRoot = null;\n this._navigation = undefined;\n for (const scope of scopes) {\n scope._navigationDisposed = true;\n await scope.dispose();\n }\n }\n for (const v of this.singletonCache.values()) await callDispose(v);\n this.singletonCache.clear();\n this.pendingSingleton.clear();\n }\n for (const v of this.scopedCache.values()) await callDispose(v);\n if (this.kind !== 'navigation') this.scopedCache.clear();\n this.pendingScoped.clear();\n for (const v of this.transientSet.values()) await callDispose(v);\n this.transientSet.clear();\n }\n\n private resolveDepsSync(desc: ServiceDescriptor, path: any[]): any[] {\n const deps = this.getDeps(desc);\n if (!deps || deps.length === 0) return [];\n return deps.map(dep => this.resolveTokenSync(dep, path));\n }\n private async resolveDepsAsyncIn(slot: OwnerSlot | null, raw: ServiceProvider | null, desc: ServiceDescriptor, path: any[]): Promise<any[]> {\n const deps = this.getDeps(desc);\n if (!deps || deps.length === 0) return [];\n const results: any[] = [];\n for (const dep of deps) {\n results.push(await runWith(slot, raw, () => this.resolveTokenAsync(dep, path)));\n }\n return results;\n }\n private injectionResolver(path: any[]): (token: any) => any {\n return (token: any) => this.resolveTokenSync(token, path);\n }\n private getDeps(desc: ServiceDescriptor): any[] | undefined {\n if (Array.isArray(desc.deps)) return desc.deps;\n const source: any = desc.useClass ?? desc.useFactory;\n if (source) {\n if (Array.isArray(source.inject)) return source.inject;\n if (Array.isArray(source.dependencies)) return source.dependencies;\n }\n return undefined;\n }\n private resolveTokenSync(token: any, path: any[]): any {\n const d = this.services.getDescriptor(token);\n if (!d) throw motifError('MJX401', this.describeToken(token));\n const nextPath = path.concat(token);\n return this.resolveDescriptorSync(d, nextPath);\n }\n private async resolveTokenAsync(token: any, path: any[]): Promise<any> {\n const d = this.services.getDescriptor(token);\n if (!d) throw motifError('MJX401', this.describeToken(token));\n const nextPath = path.concat(token);\n return await this.resolveDescriptorAsync(d, nextPath);\n }\n private checkCycle(token: any, path: any[]) {\n const firstIndex = path.indexOf(token);\n if (firstIndex !== -1 && firstIndex !== path.length - 1) {\n const chainTokens = path.slice(firstIndex).concat([token]);\n const chain = chainTokens.map((t) => this.describeTokenWithSource(t)).join(' -> ');\n throw motifError('MJX404', chain);\n }\n }\n private describeToken = (t: any) => {\n if (typeof t === 'string') return t;\n if (typeof t === 'symbol') return t.toString();\n if (typeof t === 'function') return t.name || '[AnonymousClass]';\n return String(t);\n };\n private describeTokenWithSource(t: any) {\n const name = this.describeToken(t);\n const d = this.services.getDescriptor(t);\n if (!d) return name;\n const src = d.useClass ? 'useClass' : d.useFactory ? 'useFactory' : (d.useValue !== undefined) ? 'useValue' : 'unknown';\n return `${name}[${src}]`;\n }\n}\n","export const contentBlocks = { live: 0 };\r\n","export const OPTIONS_OWNER: unique symbol = Symbol('motif.optionsOwner');\nexport const TRANSITION_SLOT: unique symbol = Symbol('motif.transition');\n","export type TransitionMode = 'concurrent' | 'out-in' | 'in-out';\n\nexport const transitionSettings: { mode: TransitionMode } = { mode: 'concurrent' };\n\ntype Entry = { node: Node; via: Node | null; done: Promise<void> };\n\nexport type TrackedRun = { done: () => void; release: () => void; finished?: Promise<void> };\n\nconst noop = () => { };\n\nfunction createTracker() {\n const running = new WeakMap<Node, Set<Entry>>();\n\n function track(node: Node | null | undefined, resolve: () => void, via?: Node | null): TrackedRun {\n const host = node?.parentNode ?? via?.parentNode;\n if (!host) return { done: resolve, release: noop };\n let set = running.get(host);\n if (!set) running.set(host, (set = new Set()));\n let finish: () => void = noop;\n const entry: Entry = { node: node!, via: via ?? null, done: new Promise<void>(r => { finish = r; }) };\n set.add(entry);\n let settled = false;\n const release = () => {\n if (settled) return;\n settled = true;\n set!.delete(entry);\n finish();\n };\n return {\n done: () => {\n const first = !settled;\n release();\n if (first && resolve) resolve();\n },\n release,\n finished: entry.done,\n };\n }\n\n function pending(host: Node | null | undefined, except?: Node | null): Promise<void> | null {\n if (!host) return null;\n const set = running.get(host);\n if (!set || set.size === 0) return null;\n let waits: Promise<void>[] | null = null;\n for (const entry of set) {\n if (entry.node === except) continue;\n if (entry.node.parentNode !== host && entry.via?.parentNode !== host) {\n set.delete(entry);\n continue;\n }\n (waits ??= []).push(entry.done);\n }\n return waits ? Promise.all(waits).then(noop) : null;\n }\n\n return { track, pending };\n}\n\nconst leaves = createTracker();\nconst enters = createTracker();\n\nexport const trackLeave = leaves.track;\nexport const pendingLeaves = leaves.pending;\nexport const trackEnter = enters.track;\nexport const pendingEnters = enters.pending;\n\nexport function deferUntilEntered(node: Node, run: TrackedRun, play: () => unknown): Animation {\n const host = node.parentNode;\n const handle: any = {\n finished: run.finished ?? Promise.resolve(),\n playState: 'pending',\n addEventListener: noop,\n removeEventListener: noop,\n cancel: noop,\n };\n queueMicrotask(() => {\n const wait = pendingEnters(host, node);\n if (wait) wait.then(() => { play(); });\n else play();\n });\n return handle as Animation;\n}\n\nexport function isTransitionMode(value: any): value is TransitionMode {\n return value === 'concurrent' || value === 'out-in' || value === 'in-out';\n}\n","import { ControlCollection, dom, Disposable, disposableCore, IClass, IDisposable, Application, isExactMatch, startsWithPath, reactive, safeCallSilent, safeCallSilentAsync, safeCall, safeCallAsync } from \"..\";\r\nimport { ServiceProvider } from \"..\";\r\nimport { BindingCollection, IBaseBinding } from \"../bindings\";\r\nimport { effect } from \"../store/reactivity-core\";\r\nimport { ComponentEmiter } from \"./ComponentEmiter\";\r\nimport { controlAttribute } from \"./controlAttribute\";\r\nimport { controlClass } from \"./controlClass\";\r\nimport { ComponentBaseOptions, ElementType, EventArgs, HtmlElementEvents, OptionalParams, RouterClassingSettings, shimAnimation, VisibilityChangedEventArgs } from \"./types\";\r\nimport { UnwrapValueRefs } from \"../store/common\";\r\nimport { getTransitionInfo, runCssTransition, TransitionProps } from \"../common/transition\";\r\nimport { callReported, motifError, reportError, reportWarning } from \"../common/diagnostics\";\r\nimport { ComponentMotif } from \"./ComponentMotif\";\r\nimport { pinServiceOwner, recordServiceOwner, retireServiceOwner, unpinServiceOwner } from \"../dependencyInjection/ServiceProvider\";\r\nimport { contentBlocks as liveContentBlocks } from \"./contentBlockRegistry\";\r\nimport { OPTIONS_OWNER, TRANSITION_SLOT } from \"./optionsSlots\";\r\nimport { deferUntilEntered, isTransitionMode, pendingLeaves, trackEnter, trackLeave, transitionSettings, TransitionMode } from \"../common/transitionRegistry\";\r\nimport { lazyBindMethods } from \"../common/lazyBind\";\r\nimport type { MotifDomEventProps } from \"../jsx-runtime\";\r\nimport { isDevLike } from \"../devtools/devbus\";\r\n\r\n/** DI token'ını okunur biçime çevirir (dev uyarıları için). */\r\nfunction describeServiceToken(t: any): string {\r\n if (typeof t === 'string') return t;\r\n if (typeof t === 'symbol') return t.toString();\r\n if (typeof t === 'function') return t.name || '[AnonymousClass]';\r\n return String(t);\r\n}\r\n\r\ntype TransitionApi = ComponentBaseOptions<any>['transition'];\r\n\r\nconst F_BUILT = 1;\r\nconst F_INITIALIZED = 2;\r\nconst F_DISPOSED = 4;\r\nconst F_CONFIGURED = 8;\r\nconst F_PAINTING = 16;\r\nconst F_PAINTED = 32;\r\nconst F_HIDDEN = 64;\r\nconst F_WAIT = 128;\r\nconst F_POSTCONFIG = 256;\r\nconst F_PREBOUND = 512;\r\nconst F_DISPOSED_FIRED = 1024;\r\n\r\nfunction optionsOf(c: any): any {\r\n return c?._motif?.options;\r\n}\r\n\r\nfunction peekTransition(c: any): TransitionApi | undefined {\r\n return c?._motif?.options?.[TRANSITION_SLOT];\r\n}\r\n\r\n/**WAAPI keyframe (transitionIn) YA DA CSS class transition (name/classes) tanımlı olarak enter animasyonu varmı */\r\nfunction clearNavDirection(c: any): void {\r\n const t = peekTransition(c);\r\n if (!t?._markedDirection) return;\r\n t._markedDirection = false;\r\n try { (c.element as any)?.removeAttribute?.('data-nav-direction'); } catch { }\r\n}\r\n\r\nfunction enterModeOf(container: any): TransitionMode {\r\n let c = container;\r\n while (c) {\r\n const mode = peekTransition(c)?.mode;\r\n if (mode) return mode;\r\n const node = c.element as Node | null;\r\n if (!node || node.nodeType !== Node.COMMENT_NODE) break;\r\n c = c.parent ?? c._leaveContainer;\r\n }\r\n return transitionSettings.mode;\r\n}\r\n\r\nfunction leaveModeOf(c: any): TransitionMode {\r\n return enterModeOf(c.parent ?? c._leaveContainer);\r\n}\r\n\r\nfunction wantsEnterTransition(c: any): boolean {\r\n const o = c?._motif?.options;\r\n const t = o?.[TRANSITION_SLOT];\r\n return !!(o?.transitionIn || (t && (t.classes || (t.name && t.name.length > 0))));\r\n}\r\n\r\nfunction createTransitionApi(owner: ComponentBase): TransitionApi {\r\n const cur = (): TransitionApi => (owner.motif.options as any)?.[TRANSITION_SLOT] ?? t;\r\n const t: TransitionApi = {\r\n transitionInfo: () => {\r\n const s = cur();\r\n return {\r\n in: getTransitionInfo(owner.element as Element, `${s.name}-enter ${s.name}-enter-start`),\r\n out: getTransitionInfo(owner.element as Element, `${s.name}-leave ${s.name}-leave-start`),\r\n }\r\n },\r\n name: '',\r\n mode: undefined as TransitionMode | undefined,\r\n classes: undefined as TransitionProps | undefined,\r\n activeCssCancel: null as (() => void) | null,\r\n activeCssPhase: null as ('enter' | 'leave' | null),\r\n cssProps: (): TransitionProps | null => {\r\n const s = cur();\r\n if (s.classes) {\r\n return { name: s.classes.name || s.name || '', ...s.classes };\r\n }\r\n if (s.name && s.name.length > 0) {\r\n return { name: s.name };\r\n }\r\n return null;\r\n },\r\n skipNextLeave: false,\r\n _suppressEnter: false,\r\n _markedDirection: false,\r\n in: (op) => {\r\n owner.motif.options.transitionIn = op;\r\n },\r\n out: (op) => {\r\n owner.motif.options.transitionOut = op;\r\n },\r\n enterTransition: (resolve: () => void): Animation => {\r\n const s = cur();\r\n const base = (owner as any)._base;\r\n const appear = !base._enterPlayed;\r\n base._enterPlayed = true;\r\n base._enterSeq = (base._enterSeq ?? 0) + 1;\r\n if (s._suppressEnter) {\r\n resolve && resolve();\r\n return shimAnimation as Animation;\r\n }\r\n const attempt = {};\r\n base._enterRun = attempt;\r\n const enter = trackEnter(owner.element as unknown as Node, () => {\r\n if ((owner as any)._base?._enterRun === attempt) {\r\n (owner as any)._base._enterRun = null;\r\n clearNavDirection(owner);\r\n }\r\n resolve && resolve();\r\n }, owner.motif.options.placeholder as Node | undefined);\r\n const transitionIn = owner.motif.options.transitionIn;\r\n const animation = transitionIn\r\n ? s.run(transitionIn.keyframes, transitionIn.options, enter.done)\r\n : s._runCss('enter', enter.done, appear);\r\n if (animation && animation !== (shimAnimation as unknown as Animation) && typeof (animation as any).addEventListener === 'function') {\r\n (animation as any).addEventListener('cancel', enter.release);\r\n }\r\n return animation;\r\n },\r\n leaveTransition: (resolve: () => void): Animation => {\r\n const s = cur();\r\n const node = owner.element as unknown as Node;\r\n const leave = trackLeave(node, resolve);\r\n const play = (): Animation => {\r\n const transitionOut = owner.motif.options?.transitionOut;\r\n const animation = transitionOut\r\n ? s.run(transitionOut.keyframes, transitionOut.options, leave.done)\r\n : s._runCss('leave', leave.done);\r\n if (animation && animation !== (shimAnimation as unknown as Animation) && typeof (animation as any).addEventListener === 'function') {\r\n (animation as any).addEventListener('cancel', leave.release);\r\n }\r\n return animation;\r\n };\r\n if (leave.finished && leaveModeOf(owner) === 'in-out') {\r\n return deferUntilEntered(node, leave, play);\r\n }\r\n return play();\r\n },\r\n _runCss: (phase: 'enter' | 'leave', resolve: () => void, appear: boolean = false): Animation => {\r\n const s = cur();\r\n if (phase === 'enter' && s.activeCssPhase === 'leave') {\r\n resolve && resolve();\r\n return shimAnimation as Animation;\r\n }\r\n const cssProps = s.cssProps();\r\n const el = owner.element as unknown as Element | null;\r\n if (cssProps && el && (el as any).nodeType === 1 && (el as any).classList) {\r\n try { s.activeCssCancel?.(); } catch { }\r\n const cancel = runCssTransition(el, cssProps, phase, () => {\r\n s.activeCssCancel = null;\r\n s.activeCssPhase = null;\r\n resolve && resolve();\r\n }, appear);\r\n s.activeCssCancel = cancel;\r\n s.activeCssPhase = phase;\r\n return shimAnimation as Animation;\r\n }\r\n resolve && resolve();\r\n return shimAnimation as Animation;\r\n },\r\n activeAnimations: [] as Animation[],\r\n run: (keyframes, options, resolve) => {\r\n const s = cur();\r\n owner.motif.stopAnimations();\r\n\r\n const element = owner.element as unknown as HTMLElement;\r\n\r\n if (element.animate) {\r\n var x = element.animate(keyframes, options);\r\n s.activeAnimations.push(x);\r\n\r\n let cleanedUp = false;\r\n const safeCleanup = () => {\r\n if (cleanedUp) return;\r\n cleanedUp = true;\r\n try {\r\n if (s.activeAnimations) {\r\n s.activeAnimations = s.activeAnimations.filter(a => a !== x);\r\n }\r\n } catch { }\r\n };\r\n\r\n x.addEventListener('finish', () => {\r\n resolve && resolve();\r\n safeCleanup();\r\n });\r\n\r\n x.oncancel = () => {\r\n safeCleanup();\r\n };\r\n return x;\r\n }\r\n else {\r\n resolve && resolve();\r\n const g: any = (globalThis as any);\r\n if (typeof g.Animation === 'function') {\r\n try { return new g.Animation(); } catch { /* ignore */ }\r\n }\r\n\r\n return shimAnimation as Animation;\r\n }\r\n }\r\n };\r\n return t;\r\n}\r\n\r\nclass ComponentOptionsImpl {\r\n [OPTIONS_OWNER]: ComponentBase;\r\n [TRANSITION_SLOT]?: TransitionApi;\r\n\r\n constructor(owner: ComponentBase) {\r\n this[OPTIONS_OWNER] = owner;\r\n }\r\n\r\n get transition(): TransitionApi {\r\n return this[TRANSITION_SLOT] ??= createTransitionApi(this[OPTIONS_OWNER]);\r\n }\r\n\r\n set transition(value: TransitionApi) {\r\n this[TRANSITION_SLOT] = value;\r\n }\r\n\r\n set enableRouterClassing(value: RouterClassingSettings) {\r\n try {\r\n const ins = this[OPTIONS_OWNER];\r\n const callback = ins.context.onRouterChanged(() => {\r\n ComponentHelper.routerClassing.call(ins, value);\r\n });\r\n ins.motif.register(disposableCore.toDisposable(() => {\r\n callback();\r\n }));\r\n ComponentHelper.routerClassing.call(ins, value);\r\n } catch (error) {\r\n reportError('MJX105', error);\r\n }\r\n }\r\n\r\n getInstance(): ComponentBase {\r\n return this[OPTIONS_OWNER];\r\n }\r\n\r\n get display(): boolean {\r\n return this[OPTIONS_OWNER].isVisible;\r\n }\r\n\r\n set display(value: boolean) {\r\n if (value) {\r\n this[OPTIONS_OWNER].motif.show();\r\n } else {\r\n this[OPTIONS_OWNER].motif.hide();\r\n }\r\n }\r\n\r\n hasEvent(name: string): boolean {\r\n return hasEventKey(this[OPTIONS_OWNER], name);\r\n }\r\n}\r\nlazyBindMethods(ComponentOptionsImpl.prototype, ['getInstance', 'hasEvent']);\r\n\r\n\r\n\r\n\r\nexport type IBaseProp<T extends any> = OptionalParams<T> & MotifDomEventProps & {\r\n childs?: any[];\r\n options?: any;\r\n onElementCreating?(): any;\r\n initializeComponent?(sender: ComponentBase): void;\r\n onBuilding?(sender: ComponentBase, e: EventArgs): void;\r\n onBuilt?(sender: ComponentBase, e: EventArgs): void;\r\n onMounted?(sender: ComponentBase, e: EventArgs): void;\r\n onInitializing?(sender: ComponentBase, e: EventArgs): void;\r\n onInitialized?(sender: ComponentBase, e: EventArgs): void;\r\n onDisposing?(sender: ComponentBase, e: EventArgs): void;\r\n onDisposed?(sender: ComponentBase, e: EventArgs): void;\r\n onConfig?(sender: ComponentBase, e: EventArgs): void;\r\n onConfigured?(sender: ComponentBase, e: EventArgs): void;\r\n onVisibilityChanged?(sender: ComponentBase, e: VisibilityChangedEventArgs): void;\r\n onActivated?(sender: ComponentBase, e: EventArgs): void;\r\n onDeactivated?(sender: ComponentBase, e: EventArgs): void;\r\n runover?: {\r\n initializeComponent?: (sender: ComponentBase) => void;\r\n }\r\n [key: string]: any;\r\n};\r\n\r\ntype LifecycleHandler = (sender: ComponentBase, e: EventArgs) => void;\r\ntype HookSlot = LifecycleHandler | LifecycleHandler[];\r\ninterface LifecycleStorage {\r\n _initializeComponentHandlers?: HookSlot;\r\n _onInitializeComponentHandlers?: HookSlot;\r\n _onBuildingHandlers?: HookSlot;\r\n _onBuiltHandlers?: HookSlot;\r\n _onMountedHandlers?: HookSlot;\r\n _onInitializingHandlers?: HookSlot;\r\n _onInitializedHandlers?: HookSlot;\r\n _onConfigHandlers?: HookSlot;\r\n _onConfiguredHandlers?: HookSlot;\r\n _onVisibilityChangedHandlers?: HookSlot;\r\n _onActivatedHandlers?: HookSlot;\r\n _onDeactivatedHandlers?: HookSlot;\r\n _onDisposingHandlers?: HookSlot;\r\n _onDisposedHandlers?: HookSlot;\r\n}\r\ninterface BaseCtx extends LifecycleStorage {\r\n owner: ComponentBase;\r\n prebinding_Activated: boolean;\r\n _offAll: () => void;\r\n _deactivateBindings: () => void;\r\n _activateBindings: () => void;\r\n _activatePreBindings: () => void;\r\n _reactivateBindings: () => void;\r\n _detachDomWithAnimation: () => void;\r\n _detachDomWithAnimationAsync: () => Promise<void>;\r\n _disposeShallow: () => void;\r\n _deepCleanup: () => void;\r\n emiters: ComponentEmiter;\r\n _emiters?: ComponentEmiter;\r\n itemRef?: any;\r\n [key: string]: any;\r\n}\r\n\r\nfunction fireLifecycle(component: any, name: string, ev: EventArgs): void {\r\n const base = component._baseCtx;\r\n if (base) base._emiters?.fire(name, ev);\r\n}\r\n\r\nfunction runHooks(base: any, listName: keyof LifecycleStorage, sender: any, ev: EventArgs, label: string): void {\r\n if (!base) return;\r\n let slot: HookSlot | undefined = base[listName];\r\n if (!slot) return;\r\n let from = 0;\r\n if (typeof slot === 'function') {\r\n const fn = slot;\r\n callReported(() => fn(sender, ev), 'MJX122', label);\r\n slot = base[listName];\r\n if (!Array.isArray(slot)) return;\r\n from = 1;\r\n }\r\n for (let i = from; i < slot.length; i++) {\r\n const fn = slot[i];\r\n callReported(() => fn(sender, ev), 'MJX122', label);\r\n }\r\n}\r\n\r\nfunction hasLifecycleHook(component: any, hook: string, listName: keyof LifecycleStorage, lowerName: string, legacyProp?: string): boolean {\r\n if (component[hook]) return true;\r\n const base = component._baseCtx;\r\n if (base?.[listName]) return true;\r\n if (legacyProp && component[legacyProp]) return true;\r\n return !!base?._emiters?.hasListeners(lowerName);\r\n}\r\n\r\nconst RESERVED_METHODS = ['build', 'setState', 'reState', 'setText', 'style', 'dispose', 'disposeAsync', 'using', 'doWork', 'getService', '$', 'useModel', 'context', 'siblings', 'serviceProvider', 'isWait'];\r\nconst checkedComponentClasses = new WeakSet<Function>();\r\n\r\nfunction callsSuper(fn: unknown, name: string): boolean {\r\n if (typeof fn !== 'function') return false;\r\n const escaped = name.replace(/\\$/g, '\\\\$');\r\n return new RegExp(`\\\\bsuper\\\\s*(\\\\.\\\\s*${escaped}(?![\\\\w$])|\\\\[)`).test(Function.prototype.toString.call(fn));\r\n}\r\n\r\nfunction reservedMemberProblems(c: ComponentBase): Array<[string, 'method' | 'field' | 'replaced']> {\r\n const problems: Array<[string, 'method' | 'field' | 'replaced']> = [];\r\n const own = (o: object, k: string) => Object.prototype.hasOwnProperty.call(o, k);\r\n for (const name of RESERVED_METHODS) {\r\n if (own(c, name)) { problems.push([name, 'field']); continue; }\r\n for (let p = Object.getPrototypeOf(c); p && p !== ComponentBase.prototype; p = Object.getPrototypeOf(p)) {\r\n const d = Object.getOwnPropertyDescriptor(p, name);\r\n if (!d) continue;\r\n const fns = 'value' in d ? [d.value] : [d.get, d.set].filter(Boolean);\r\n if (!fns.some(fn => callsSuper(fn, name))) problems.push([name, 'method']);\r\n break;\r\n }\r\n }\r\n const anyC = c as any;\r\n if (!(anyC.motif instanceof ComponentMotif)) problems.push(['motif', 'replaced']);\r\n if (!(anyC.controls instanceof ControlCollection)) problems.push(['controls', 'replaced']);\r\n if (!(anyC.class instanceof controlClass)) problems.push(['class', 'replaced']);\r\n if (!(anyC.attr instanceof controlAttribute)) problems.push(['attr', 'replaced']);\r\n if (!(anyC.bindings instanceof BindingCollection)) problems.push(['bindings', 'replaced']);\r\n if (anyC.element != null && typeof Node !== 'undefined' && !(anyC.element instanceof Node)) problems.push(['element', 'replaced']);\r\n if (anyC.parent != null && !(anyC.parent instanceof ComponentBase)) problems.push(['parent', 'replaced']);\r\n return problems;\r\n}\r\n\r\nexport function checkReservedMembers(c: ComponentBase): void {\r\n if (!isDevLike()) return;\r\n const ctor = (c as any)?.constructor;\r\n if (typeof ctor !== 'function' || checkedComponentClasses.has(ctor)) return;\r\n checkedComponentClasses.add(ctor);\r\n const name = ctor.name || 'An anonymous component class';\r\n for (const [member, how] of reservedMemberProblems(c)) {\r\n reportWarning('MJX128', [name, member, how]);\r\n }\r\n}\r\n\r\nconst ComponentHelper = {\r\n callInitializeComponent(component: ComponentBase | any) {\r\n const sender = component;\r\n const ev = { cancel: false } as EventArgs;\r\n if (!component || component.isDisposed) { return; }\r\n // 1) class method initializeComponent\r\n if (typeof component.initializeComponent === 'function') {\r\n callReported(() => component.initializeComponent(sender, ev), 'MJX122', 'initializeComponent');\r\n }\r\n // 2) aggregated extra initializeComponent handlers (örn, from props)\r\n const compiled = component._init;\r\n if (compiled) {\r\n callReported(() => compiled(sender, ev), 'MJX122', 'initializeComponent');\r\n }\r\n runHooks(component._baseCtx, '_initializeComponentHandlers', sender, ev, 'initializeComponent');\r\n // 3) class method oninitializeComponent \r\n if (typeof component.oninitializeComponent === 'function') {\r\n callReported(() => component.oninitializeComponent(sender, ev), 'MJX122', 'oninitializeComponent');\r\n }\r\n // 4) aggregated extra oninitializeComponent handlers (örn, from props)\r\n runHooks(component._baseCtx, '_onInitializeComponentHandlers', sender, ev, 'oninitializeComponent');\r\n },\r\n callDisposing(component: ComponentBase | any) {\r\n if (!component || component.isDisposed) { return; }\r\n if (!hasLifecycleHook(component, 'onDisposing', '_onDisposingHandlers', 'ondisposing', 'ondisposing')) { return; }\r\n const sender = component, ev = { cancel: false } as EventArgs;\r\n if (component.onDisposing) {\r\n callReported(() => component.onDisposing(sender, ev), 'MJX122', 'onDisposing');\r\n }\r\n runHooks(component._baseCtx, '_onDisposingHandlers', sender, ev, 'onDisposing');\r\n if (component.ondisposing) {\r\n callReported(() => component.ondisposing(sender, ev), 'MJX122', 'ondisposing');\r\n }\r\n fireLifecycle(component,'ondisposing', ev);\r\n },\r\n callActivated(component: ComponentBase | any) {\r\n if (!component || component.isDisposed) { return; }\r\n const sender = component, ev = { cancel: false } as EventArgs;\r\n if (component.onActivated) { callReported(() => component.onActivated(sender, ev), 'MJX122', 'onActivated'); }\r\n runHooks(component._baseCtx, '_onActivatedHandlers', sender, ev, 'onActivated');\r\n fireLifecycle(component,'onactivated', ev);\r\n },\r\n callDeactivated(component: ComponentBase | any) {\r\n if (!component || component.isDisposed) { return; }\r\n const sender = component, ev = { cancel: false } as EventArgs;\r\n if (component.onDeactivated) { callReported(() => component.onDeactivated(sender, ev), 'MJX122', 'onDeactivated'); }\r\n runHooks(component._baseCtx, '_onDeactivatedHandlers', sender, ev, 'onDeactivated');\r\n fireLifecycle(component,'ondeactivated', ev);\r\n },\r\n deactivateTree(component: ComponentBase | any, deep: boolean = true) {\r\n if (!component || component.isDisposed || !component.isBuilt || !component._base || component._base._inactive) { return; }\r\n component._base._inactive = true;\r\n ComponentHelper.callDeactivated(component);\r\n if (!deep || component.isDisposed) { return; }\r\n for (const c of childrenOf(component).slice()) {\r\n if (c && !c.isDisposed && c.isVisible && !c.isWait) {\r\n ComponentHelper.deactivateTree(c, true);\r\n }\r\n }\r\n },\r\n activateTree(component: ComponentBase | any, deep: boolean = true) {\r\n if (!component || component.isDisposed || !component._base || !component._base._inactive) { return; }\r\n component._base._inactive = false;\r\n ComponentHelper.callActivated(component);\r\n if (!deep || component.isDisposed) { return; }\r\n for (const c of childrenOf(component).slice()) {\r\n if (c && !c.isDisposed && c.isVisible && !c.isWait) {\r\n ComponentHelper.activateTree(c, true);\r\n }\r\n }\r\n },\r\n callDisposed(component: ComponentBase | any) {\r\n if (!component || (component._flags & F_DISPOSED_FIRED) !== 0) { return; }\r\n if (component.isDisposed && !component.element && component._baseCtx === undefined) { return; }\r\n component._flags |= F_DISPOSED_FIRED;\r\n if (hasLifecycleHook(component, 'onDisposed', '_onDisposedHandlers', 'ondisposed', 'ondisposed')) {\r\n const sender = component, ev = { cancel: false } as EventArgs;\r\n if (component.onDisposed) { callReported(() => component.onDisposed(sender, ev), 'MJX122', 'onDisposed'); }\r\n runHooks(component._baseCtx, '_onDisposedHandlers', sender, ev, 'onDisposed');\r\n if (component.ondisposed) { callReported(() => component.ondisposed(sender, ev), 'MJX122', 'ondisposed'); }\r\n fireLifecycle(component,'ondisposed', ev);\r\n }\r\n try { (globalThis as any).__MOTIF_DEVTOOLS_BUS__?.publish?.('component:disposed', { id: (component as any).id, type: component.constructor?.name }); } catch { }\r\n },\r\n callBuilt(component: ComponentBase | any) {\r\n if (!component || component.isDisposed) { return; }\r\n if (hasLifecycleHook(component, 'onBuilt', '_onBuiltHandlers', 'onbuilt', 'onbuilt')) {\r\n const sender = component, ev = { cancel: false } as EventArgs;\r\n if (component.onBuilt) { callReported(() => component.onBuilt(sender, ev), 'MJX122', 'onBuilt'); }\r\n runHooks(component._baseCtx, '_onBuiltHandlers', sender, ev, 'onBuilt');\r\n if (component.onbuilt) { callReported(() => component.onbuilt(sender, ev), 'MJX122', 'onbuilt'); }\r\n fireLifecycle(component,'onbuilt', ev);\r\n }\r\n try { (globalThis as any).__MOTIF_DEVTOOLS_BUS__?.publish?.('component:mounted', { id: (component as any).id, type: component.constructor?.name }); } catch { }\r\n },\r\n scheduleMounted(component: ComponentBase | any) {\r\n if (!component || component.isDisposed || component._baseCtx?._mountedScheduled) { return; }\r\n const hasHook = typeof component.onMounted === 'function'\r\n || !!component._baseCtx?._onMountedHandlers\r\n || typeof component.onmounted === 'function';\r\n if (!hasHook) { return; }\r\n component._base._mountedScheduled = true;\r\n const el = component.element as Element | null;\r\n if (!el || typeof (el as any).nodeType !== 'number') { return; }\r\n const stop = onElementAttached(el, () => {\r\n if (component.isDisposed) { return; }\r\n ComponentHelper.callMounted(component);\r\n });\r\n if (stop) {\r\n component._register(disposableCore.toDisposable(stop));\r\n }\r\n },\r\n callMounted(component: ComponentBase | any) {\r\n if (!component || component.isDisposed || component._base._mountedFired) { return; }\r\n component._base._mountedFired = true;\r\n const sender = component, ev = { cancel: false } as EventArgs;\r\n if (component.onMounted) { callReported(() => component.onMounted(sender, ev), 'MJX122', 'onMounted'); }\r\n runHooks(component._baseCtx, '_onMountedHandlers', sender, ev, 'onMounted');\r\n if (component.onmounted) { callReported(() => component.onmounted(sender, ev), 'MJX122', 'onmounted'); }\r\n fireLifecycle(component,'onmounted', ev);\r\n },\r\n callBuilding(component: ComponentBase | any) {\r\n if (!component || component.isDisposed) { return; }\r\n if (!hasLifecycleHook(component, 'onBuilding', '_onBuildingHandlers', 'onbuilding')) { return; }\r\n const sender = component, ev = { cancel: false } as EventArgs;\r\n if (component.onBuilding) { callReported(() => component.onBuilding(sender, ev), 'MJX122', 'onBuilding'); }\r\n runHooks(component._baseCtx, '_onBuildingHandlers', sender, ev, 'onBuilding');\r\n fireLifecycle(component,'onbuilding', ev);\r\n },\r\n callConfig(component: ComponentBase | any) {\r\n if (!component || component.isDisposed || component.isConfigured) { return; }\r\n component.isConfigured = true;\r\n\r\n const preconfig = component._motif?.options?._preconfig;\r\n if (preconfig) {\r\n safeCallSilent(() => preconfig(component), 'Component._preconfig');\r\n }\r\n\r\n if (!hasLifecycleHook(component, 'onConfig', '_onConfigHandlers', 'onconfig')) { return; }\r\n const sender = component, ev = { cancel: false } as EventArgs;\r\n if (component.onConfig) { callReported(() => component.onConfig(sender, ev), 'MJX122', 'onConfig'); }\r\n runHooks(component._baseCtx, '_onConfigHandlers', sender, ev, 'onConfig');\r\n fireLifecycle(component,'onconfig', ev);\r\n },\r\n callConfigured(component: ComponentBase | any) {\r\n if ((component._flags & F_POSTCONFIG) !== 0) {\r\n return;\r\n }\r\n if (component?._baseCtx?._configDeferred && !component.isConfigured) {\r\n ComponentHelper.callConfig(component);\r\n }\r\n component._flags |= F_POSTCONFIG;\r\n if (!component || component.isDisposed) { return; }\r\n if (!hasLifecycleHook(component, 'onConfigured', '_onConfiguredHandlers', 'onconfigured')) { return; }\r\n const sender = component, ev = { cancel: false } as EventArgs;\r\n if (component.onConfigured) { callReported(() => component.onConfigured(sender, ev), 'MJX122', 'onConfigured'); }\r\n runHooks(component._baseCtx, '_onConfiguredHandlers', sender, ev, 'onConfigured');\r\n fireLifecycle(component,'onconfigured', ev);\r\n },\r\n callOnInitialized(component: ComponentBase | any) {\r\n if (!component || component.isDisposed) { return; }\r\n component.isInitialized = true;\r\n if (!hasLifecycleHook(component, 'onInitialized', '_onInitializedHandlers', 'oninitialized')) { return; }\r\n const sender = component, ev = { cancel: false } as EventArgs;\r\n if (component.onInitialized) { callReported(() => component.onInitialized(sender, ev), 'MJX122', 'onInitialized'); }\r\n runHooks(component._baseCtx, '_onInitializedHandlers', sender, ev, 'onInitialized');\r\n fireLifecycle(component,'oninitialized', ev);\r\n },\r\n callOnInitializing(component: ComponentBase | any) {\r\n if (!component || component.isDisposed) { return; }\r\n if (!hasLifecycleHook(component, 'onInitializing', '_onInitializingHandlers', 'oninitializing')) { return; }\r\n const sender = component, ev = { cancel: false } as EventArgs;\r\n if (component.onInitializing) { callReported(() => component.onInitializing(sender, ev), 'MJX122', 'onInitializing'); }\r\n runHooks(component._baseCtx, '_onInitializingHandlers', sender, ev, 'onInitializing');\r\n fireLifecycle(component,'oninitializing', ev);\r\n },\r\n callVisibilityChanged(component: ComponentBase | any, visible: boolean) {\r\n if (!component || component.isDisposed) { return; }\r\n if (!hasLifecycleHook(component, 'onVisibilityChanged', '_onVisibilityChangedHandlers', 'onvisibilitychanged')) { return; }\r\n const sender = component, ev: VisibilityChangedEventArgs = { cancel: false, visible };\r\n if (component.onVisibilityChanged) { callReported(() => component.onVisibilityChanged(sender, ev), 'MJX122', 'onVisibilityChanged'); }\r\n runHooks(component._baseCtx, '_onVisibilityChangedHandlers', sender, ev, 'onVisibilityChanged');\r\n fireLifecycle(component,'onvisibilitychanged', ev);\r\n },\r\n findFragmentContent(c: ComponentBase) {\r\n const controlElement = c.element.nodeType == Node.COMMENT_NODE\r\n ? c.motif.options.cache\r\n : c.element as unknown as Node;\r\n\r\n if (c.element.nodeType == Node.COMMENT_NODE && controlElement?.childNodes.length == 0 && c.controls.length > 0) {\r\n c.motif.options.cache?.appendChild(c.element);\r\n c.controls.forEach(child => {\r\n c.motif.options.cache?.appendChild(child.element as unknown as Node);\r\n });\r\n c.motif.options.cache?.appendChild(c.motif.options.closeFragment!);\r\n }\r\n },\r\n backgroundCallback(callback: () => any) {\r\n callback();\r\n // if (!requestIdleCallback) {\r\n // if (!requestAnimationFrame) {\r\n // } else {\r\n\r\n // } else {\r\n },\r\n internalBuild(this: ComponentBase, c: ComponentBase) {\r\n if (this.isDisposed || c?.isDisposed) { return; }\r\n ComponentHelper.callConfigured(c);\r\n if (c.isDisposed) return;\r\n activatePreBindings(c);\r\n if (c.isWait) {\r\n if (this.isBuilt) placeTrace(this, c);\r\n return;\r\n }\r\n const cisBuilt = c.isBuilt;\r\n if (!this.isBuilt) {\r\n return;\r\n }\r\n if (c.isWait) {\r\n return;\r\n }\r\n const enterSeq = (c as any)._baseCtx?._enterSeq;\r\n if (!c.isBuilt) {\r\n c.build();\r\n } else if (c.parent != this) {\r\n c.parent?.controls.detach(c);\r\n c.parent = this;\r\n const pendingLeave = (c as any).__pendingLeave;\r\n if (pendingLeave) {\r\n pendingLeave.promise.then(() => {\r\n if (this.isDisposed || c.isDisposed || c.parent !== this) return;\r\n ComponentHelper.internalBuild.call(this, c);\r\n });\r\n return;\r\n }\r\n }\r\n\r\n\r\n if (c.isDisposed || this.isDisposed) return;\r\n c.parent = this;\r\n\r\n const ownItems = this.controls.items;\r\n const currentIndex = ownItems.length > 0 && ownItems[ownItems.length - 1] === c ? ownItems.length - 1 : ownItems.indexOf(c);\r\n\r\n const appendableElement = findAppendableComponent(this);\r\n var controlElement = (c.element as Node).nodeType == Node.COMMENT_NODE\r\n ? c.motif.options.cache\r\n : c.element as unknown as Node;\r\n\r\n\r\n if (cisBuilt && (c.element as Node).nodeType == Node.COMMENT_NODE && controlElement?.childNodes.length == 0 && c.controls.length > 0) {\r\n\r\n controlElement = ComponentHelper.getContent.call(c) as Node;\r\n }\r\n\r\n const insertHost = appendableElement?.element as Node | undefined;\r\n const trace = c.motif.options.placeholder as Node | undefined;\r\n const ownTrace = c.isVisible && trace && insertHost && trace.parentNode === insertHost ? trace : null;\r\n const referenceNode: Node | null = ownTrace ?? (insertHost ? followingAnchor(this, currentIndex + 1, insertHost) : null);\r\n\r\n if (!c.isVisible) {\r\n if (keepsTrace(c)) {\r\n if (!(c as any).motif.options.placeholder) {\r\n (c as any).motif.options.placeholder = dom.createComment(\"h\");\r\n }\r\n controlElement = ((c as any).motif.options.placeholder as unknown as Node);\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n if (insertHost && enterModeOf(this) === 'out-in') {\r\n const wait = pendingLeaves(insertHost, controlElement);\r\n if (wait) {\r\n c._base._enterSeq = (c._base._enterSeq ?? 0) + 1;\r\n wait.then(() => {\r\n if (this.isDisposed || c.isDisposed || c.parent !== this) return;\r\n ComponentHelper.internalBuild.call(this, c);\r\n });\r\n return;\r\n }\r\n }\r\n\r\n const parentNode = appendableElement?.element as Node | undefined;\r\n if (controlElement && parentNode && (controlElement === parentNode || controlElement.contains(parentNode))) {\r\n reportWarning('MJX104', []);\r\n\r\n } else {\r\n if (referenceNode) {\r\n try {\r\n appendableElement?.element.insertBefore(controlElement!, referenceNode);\r\n } catch {\r\n\r\n appendableElement?.element.appendChild(controlElement!);\r\n }\r\n } else {\r\n appendableElement?.element.appendChild(controlElement!);\r\n }\r\n if (ownTrace && ownTrace.parentNode) ownTrace.parentNode.removeChild(ownTrace);\r\n }\r\n if (c.isVisible) {\r\n const enteredInBuild = !cisBuilt && (c as any)._baseCtx?._enterSeq !== enterSeq;\r\n !enteredInBuild && wantsEnterTransition(c) && c.motif.options.transition.enterTransition(() => { });\r\n if (cisBuilt) {\r\n ComponentHelper.activateTree(c);\r\n }\r\n }\r\n },\r\n getContent(this: ComponentBase): any {\r\n if (this.isDisposed || !this.element) { return null; }\r\n if ((this.element as Node).nodeType == Node.COMMENT_NODE) {\r\n this.motif.options.cache?.appendChild(this.element as Node);\r\n this.controls.forEach(child => {\r\n const node = child.isWait || !child.isVisible\r\n ? (keepsTrace(child) ? ((child.motif.options as any).placeholder ??= dom.createComment(\"h\")) as Node : undefined)\r\n : ComponentHelper.getContent.call(child) as Node;\r\n if (node) this.motif.options.cache?.appendChild(node);\r\n });\r\n this.motif.options.cache?.appendChild(this.motif.options.closeFragment!);\r\n return this.motif.options.cache;\r\n } else {\r\n return this.element;\r\n }\r\n },\r\n routerClassing(this: ComponentBase, value: RouterClassingSettings) {\r\n try {\r\n const type = value.to;\r\n const path = value.path;\r\n if (this.isDisposed) return;\r\n\r\n const router = this.context?.router;\r\n if (!router) return;\r\n\r\n const requestPath = router.uri.startsWith('/') ? router.uri : '/' + router.uri;\r\n const targetPath = path ?? '';\r\n\r\n const exact = isExactMatch(requestPath, targetPath);\r\n\r\n /* ---------- Active (segment‑eşleşme, tam eşleşme dahil) ---------- */\r\n const active = exact || startsWithPath(requestPath, targetPath);\r\n\r\n if (value.activeClass && (type === 'all' || type === 'active')) {\r\n const clsList = value.activeClass.split(' ').filter((l: string) => l.trim().length);\r\n clsList.forEach((cls: string) => this.element.classList.toggle(cls, active));\r\n }\r\n\r\n if (active && (type === 'all' || type === 'active')) {\r\n value.onActive?.();\r\n } else if ((type === 'all' || type === 'active')) {\r\n value.offActive?.();\r\n }\r\n\r\n /* ---------- Exact (tam eşleşme) ---------- */\r\n if (value.exactClass && (type === 'all' || type === 'exact')) {\r\n const clsList = value.exactClass.split(' ').filter((l: string) => l.trim().length);\r\n clsList.forEach((cls: string) => this.element.classList.toggle(cls, exact));\r\n }\r\n\r\n if (exact && (type === 'all' || type === 'exact')) {\r\n value.onExact?.();\r\n } else if ((type === 'all' || type === 'exact')) {\r\n value.offExact?.();\r\n }\r\n } catch (error) {\r\n\r\n }\r\n\r\n }\r\n}\r\n\r\nfunction keepsTrace(c: ComponentBase): boolean {\r\n return optionsOf(c)?.hideStrategy !== 'detach';\r\n}\r\n\r\nexport function domAnchor(c: ComponentBase, host: Node): Node | null {\r\n const trace = optionsOf(c)?.placeholder as Node | undefined;\r\n if (trace && trace.parentNode === host) return trace;\r\n const node = c.element as unknown as Node | null;\r\n return node && node.parentNode === host ? node : null;\r\n}\r\n\r\nfunction followingAnchor(owner: ComponentBase, start: number, host: Node): Node | null {\r\n const siblings = owner.controls.items;\r\n for (let i = start; i < siblings.length; i++) {\r\n const anchor = siblings[i] ? domAnchor(siblings[i], host) : null;\r\n if (anchor) return anchor;\r\n }\r\n if ((owner.element as unknown as Node).nodeType === Node.COMMENT_NODE) {\r\n const close = optionsOf(owner)?.closeFragment as unknown as Node | undefined;\r\n return close && close.parentNode === host ? close : null;\r\n }\r\n return null;\r\n}\r\n\r\nfunction placeTrace(owner: ComponentBase, c: ComponentBase): void {\r\n if (!keepsTrace(c)) return;\r\n const host = findAppendableComponent(owner)?.element as unknown as Node | undefined;\r\n if (!host) return;\r\n const element = c.element as unknown as Node | null;\r\n if (element && element.parentNode === host) return;\r\n const opts: any = c.motif.options;\r\n const trace: Node = opts.placeholder ?? (opts.placeholder = dom.createComment(\"h\"));\r\n if (trace.parentNode === host) return;\r\n host.insertBefore(trace, followingAnchor(owner, owner.controls.items.indexOf(c) + 1, host));\r\n}\r\n\r\nfunction removeComponentDom(c: any, node: Node, alsoPlaceholder: boolean): void {\r\n const opts = optionsOf(c);\r\n const parent = node.parentNode;\r\n if (node.nodeType === Node.COMMENT_NODE) {\r\n if (parent) {\r\n const close = (opts?.closeFragment as unknown as Node | undefined) || null;\r\n if (close) {\r\n let current: Node | null = node;\r\n while (current) {\r\n const after: Node | null = current.nextSibling;\r\n try { parent.removeChild(current); } catch { }\r\n if (current === close) break;\r\n current = after;\r\n }\r\n } else {\r\n try { parent.removeChild(node); } catch { }\r\n }\r\n if (!alsoPlaceholder) return;\r\n }\r\n } else if (parent) {\r\n try { parent.removeChild(node); } catch { }\r\n if (!alsoPlaceholder) return;\r\n }\r\n const placeholder = opts?.placeholder as Node | undefined;\r\n if (placeholder && placeholder.parentNode) {\r\n try { placeholder.parentNode.removeChild(placeholder); } catch { }\r\n }\r\n}\r\n\r\nfunction detachDomWithAnimation(c: any): void {\r\n const node = c.element as unknown as Node | null;\r\n if (!node || c._keepElementOnDispose === true) return;\r\n const opts = c.motif.options;\r\n const t = opts?.[TRANSITION_SLOT] as TransitionApi | undefined;\r\n try {\r\n const skip = t?.skipNextLeave === true || c._forceInstantDetach === true;\r\n if (skip) {\r\n if (t) t.skipNextLeave = false;\r\n c._forceInstantDetach = false;\r\n removeComponentDom(c, node, true);\r\n return;\r\n }\r\n } catch { }\r\n if (!t && !opts?.transitionOut) {\r\n removeComponentDom(c, node, false);\r\n return;\r\n }\r\n try {\r\n opts.transition.leaveTransition(() => {\r\n removeComponentDom(c, node, false);\r\n });\r\n } catch {\r\n removeComponentDom(c, node, false);\r\n }\r\n}\r\n\r\nasync function detachDomWithAnimationAsync(c: any): Promise<void> {\r\n const node = c.element as unknown as Node | null;\r\n if (!node || c._keepElementOnDispose === true) return;\r\n const opts = c.motif.options;\r\n const t = opts?.[TRANSITION_SLOT] as TransitionApi | undefined;\r\n try {\r\n const skip = t?.skipNextLeave === true || c._forceInstantDetach === true;\r\n if (skip) {\r\n if (t) t.skipNextLeave = false;\r\n c._forceInstantDetach = false;\r\n removeComponentDom(c, node, true);\r\n return;\r\n }\r\n } catch { }\r\n if (!t && !opts?.transitionOut) {\r\n removeComponentDom(c, node, false);\r\n return;\r\n }\r\n return new Promise<void>((resolve) => {\r\n try {\r\n opts.transition.leaveTransition(() => {\r\n removeComponentDom(c, node, false);\r\n resolve();\r\n });\r\n } catch {\r\n removeComponentDom(c, node, false);\r\n resolve();\r\n }\r\n });\r\n}\r\n\r\nfunction disposeShallow(c: any): void {\r\n if (c.isDisposed) return;\r\n ComponentHelper.callDisposing.call(c, c);\r\n try {\r\n offAll(c);\r\n } catch {\r\n\r\n }\r\n c.motif.stopAnimations();\r\n\r\n deactivateBindings(c);\r\n if (childrenOf(c).length) {\r\n for (const child of c._controls.items) {\r\n try {\r\n disposeShallow(child);\r\n } catch {\r\n\r\n }\r\n }\r\n }\r\n ComponentHelper.callDisposed.call(c, c);\r\n safeCall(() => { c._baseCtx?._emiters?.clear(); }, 'disposeShallow.emiters');\r\n c.isDisposed = true;\r\n Disposable.prototype.dispose.call(c);\r\n}\r\n\r\nfunction deepCleanup(c: any): void {\r\n try { c.parent = null; } catch { }\r\n\r\n c._eventHandlers = undefined;\r\n\r\n try { c._class?._countsStore?.clear(); } catch { }\r\n try { c._class?._watchersStore?.clear(); } catch { }\r\n try { c._attr?._attrMapStore?.clear(); } catch { }\r\n try { c._attr?._watchersStore?.clear(); } catch { }\r\n try {\r\n const opts = c._motif?.options;\r\n if (opts) {\r\n opts.cache = undefined;\r\n opts.closeFragment = undefined;\r\n opts.placeholder = undefined;\r\n }\r\n } catch {\r\n\r\n }\r\n try { c.element = null; } catch { }\r\n try { c.props = undefined; } catch { }\r\n try { c.childs = undefined; } catch { }\r\n try { c.class = undefined; } catch { }\r\n try { c.attr = undefined; } catch { }\r\n try { c.parent = null; } catch { }\r\n\r\n try { if (c._motif) c._motif.options = undefined; } catch { }\r\n const keys = Object.keys(c);\r\n for (let i = 0; i < keys.length; i++) {\r\n const key = keys[i];\r\n if (key === '_motif' || key === '_flags') continue;\r\n try { c[key] = undefined; } catch { }\r\n }\r\n c._store = null;\r\n c._flags = F_DISPOSED | F_HIDDEN | F_DISPOSED_FIRED | F_POSTCONFIG | F_PREBOUND;\r\n}\r\n\r\nconst DISPOSE_STARTED = Promise.resolve();\r\n\r\nfunction subtreeDisposesSync(c: any, root: boolean): boolean {\r\n if (!root && c._disposing && !c.isDisposed) return false;\r\n if (c.disposeAsync !== ComponentBase.prototype.disposeAsync) return false;\r\n const opts = optionsOf(c);\r\n if (opts) {\r\n if (opts.transitionOut) return false;\r\n const t = opts[TRANSITION_SLOT] as TransitionApi | undefined;\r\n if (t) {\r\n if (t.activeAnimations && t.activeAnimations.length > 0) return false;\r\n if (t.activeCssCancel) return false;\r\n if (t.classes || (t.name && t.name.length > 0)) return false;\r\n }\r\n }\r\n const items = childrenOf(c);\r\n if (items.length) {\r\n for (let i = 0; i < items.length; i++) {\r\n const child = items[i];\r\n if (child && !child.isDisposed && !subtreeDisposesSync(child, false)) return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nconst teardownApplications = new WeakMap<object, Application>();\r\n\r\nfunction owningApplication(c: any): Application | null {\r\n for (let p = c; p; p = p.parent) {\r\n if (p.application) return p.application;\r\n const recorded = teardownApplications.get(p);\r\n if (recorded) return recorded;\r\n }\r\n return Application.main ?? null;\r\n}\r\n\r\nfunction disposePrefix(c: any, options: IDisposeOptions, asChild: boolean): void {\r\n const ctx = asChild ? 'disposeAsync' : 'dispose';\r\n if (Application._disposingCount > 0) {\r\n const app = owningApplication(c);\r\n if (app && app.state === 'disposing') teardownApplications.set(c, app);\r\n }\r\n if (!asChild && options?.skipLeaveTransition) {\r\n c.motif.options.transition.skipNextLeave = true;\r\n }\r\n safeCall(() => { ComponentHelper.callDisposing.call(c, c); }, ctx + '.callDisposing');\r\n offAll(c);\r\n deactivateBindings(c);\r\n safeCall(() => { c.parent?.controls?.silentDetach?.(c, true); }, ctx + '.silentDetach');\r\n}\r\n\r\nfunction disposeFinish(c: any, options: IDisposeOptions, asChild: boolean): void {\r\n c.isDisposed = true;\r\n Disposable.prototype.dispose.call(c);\r\n if (asChild) {\r\n if (c._controls) c._controls.items = [];\r\n safeCall(() => { ComponentHelper.callDisposed.call(c, c); }, 'disposeAsync.callDisposed');\r\n safeCall(() => { c._baseCtx?._emiters?.clear(); }, 'disposeAsync.emiters');\r\n if (options?.deep) {\r\n deepCleanup(c);\r\n }\r\n return;\r\n }\r\n c.element = null;\r\n safeCall(() => { ComponentHelper.callDisposed.call(c, c); }, 'dispose.callDisposed');\r\n safeCall(() => { c._baseCtx?._emiters?.clear(); }, 'dispose.emiters');\r\n offAll(c);\r\n deepCleanup(c);\r\n}\r\n\r\nasync function disposeRemainderAsync(c: any, options: IDisposeOptions, asChild: boolean, leave: Promise<void> | undefined): Promise<void> {\r\n if (leave) {\r\n await leave;\r\n } else {\r\n if (asChild) {\r\n await c.motif.stopAnimations();\r\n } else if (peekTransition(c)?.skipNextLeave) {\r\n await c.motif.stopAnimations();\r\n }\r\n await detachDomWithAnimationAsync(c);\r\n }\r\n if (!asChild && c.constructor.name !== 'TransportTo') {\r\n await disposeContentBlocks(c);\r\n }\r\n const childOptions: IDisposeOptions = { deep: options?.deep };\r\n await safeCallAsync(async () => {\r\n if (c.isDisposed) { return; }\r\n const ctrls = Array.from(childrenOf(c)) as any[];\r\n if (ctrls.length) {\r\n await Promise.all(ctrls.map(child => asChild\r\n ? safeCallAsync(async () => { await child.disposeAsync(childOptions); }, 'disposeAsync.disposeAsyncChildren.handler')\r\n : (async () => {\r\n try {\r\n await child.disposeAsync(childOptions);\r\n } catch (error) {\r\n reportError('MJX107', error);\r\n }\r\n })()));\r\n }\r\n }, asChild ? 'disposeAsync.disposeAsyncChildren' : 'dispose.disposeAsync');\r\n if (!asChild && c.isDisposed) { return; }\r\n disposeFinish(c, options, asChild);\r\n}\r\n\r\nfunction disposeRemainderSync(root: any, options: IDisposeOptions, asChild: boolean, rootDetached: boolean): Promise<void>[] | null {\r\n const childOptions: IDisposeOptions = { deep: options?.deep };\r\n const nodes: any[] = [root];\r\n const parents: number[] = [-1];\r\n let pending: Promise<void>[] | null = null;\r\n if (!rootDetached) detachDomWithAnimation(root);\r\n for (let n = 0; n < nodes.length; n++) {\r\n const node = nodes[n];\r\n if (node.isDisposed) continue;\r\n const items = childrenOf(node);\r\n if (items.length === 0) continue;\r\n const ctrls = Array.from(items) as any[];\r\n for (let j = 0; j < ctrls.length; j++) {\r\n const child = ctrls[j];\r\n if (child.isDisposed) continue;\r\n if (child._disposing) {\r\n (pending ??= []).push(child._disposing);\r\n continue;\r\n }\r\n try {\r\n retireServiceOwner(child);\r\n child._disposing = root._disposing;\r\n disposePrefix(child, childOptions, true);\r\n if ((child.element as Node | null)?.isConnected !== false) detachDomWithAnimation(child);\r\n nodes.push(child);\r\n parents.push(n);\r\n } catch (error) {\r\n reportError('MJX107', error);\r\n }\r\n }\r\n }\r\n const count = nodes.length;\r\n if (count > 1) {\r\n const heights = new Array<number>(count).fill(0);\r\n for (let i = count - 1; i >= 1; i--) {\r\n const p = parents[i];\r\n if (heights[i] + 1 > heights[p]) heights[p] = heights[i] + 1;\r\n }\r\n const order: number[] = [];\r\n for (let i = 1; i < count; i++) order.push(i);\r\n order.sort((a, b) => heights[a] - heights[b] || a - b);\r\n for (let k = 0; k < order.length; k++) {\r\n try {\r\n disposeFinish(nodes[order[k]], childOptions, true);\r\n } catch (error) {\r\n reportError('MJX107', error);\r\n }\r\n }\r\n }\r\n if (pending) return pending;\r\n if (!asChild && root.isDisposed) { return null; }\r\n disposeFinish(root, options, asChild);\r\n return null;\r\n}\r\n\r\nconst BASE_PROTO = {\r\n get emiters(): ComponentEmiter {\r\n const base = this as unknown as BaseCtx;\r\n return base._emiters ??= new ComponentEmiter(base.owner);\r\n },\r\n _offAll(this: BaseCtx): void {\r\n offAll(this.owner);\r\n },\r\n _deactivateBindings(this: BaseCtx): void {\r\n deactivateBindings(this.owner);\r\n },\r\n _activateBindings(this: BaseCtx): void {\r\n activateBindings(this.owner);\r\n },\r\n _reactivateBindings(this: BaseCtx): void {\r\n reactivateBindings(this.owner);\r\n },\r\n _activatePreBindings(this: BaseCtx): void {\r\n activatePreBindings(this.owner);\r\n },\r\n _detachDomWithAnimation(this: BaseCtx): void {\r\n detachDomWithAnimation(this.owner);\r\n },\r\n _detachDomWithAnimationAsync(this: BaseCtx): Promise<void> {\r\n return detachDomWithAnimationAsync(this.owner);\r\n },\r\n _disposeShallow(this: BaseCtx): void {\r\n disposeShallow(this.owner);\r\n },\r\n _deepCleanup(this: BaseCtx): void {\r\n deepCleanup(this.owner);\r\n },\r\n};\r\n\r\nconst EV_SELF = 1;\r\nconst EV_TRUSTED = 2;\r\nconst EV_PREVENT = 4;\r\nconst EV_STOP = 8;\r\nconst EV_CAPTURE = 16;\r\nconst EV_DOM = 32;\r\nconst EV_REMOVED = 64;\r\n\r\nconst NO_MODS: string[] = [];\r\n\r\nlet eventDispatchDepth = 0;\r\n\r\nclass EventRecord {\r\n owner: any;\r\n key: string;\r\n original: (sender: any, e: any) => any;\r\n type: string;\r\n flags: number;\r\n next: EventRecord | undefined;\r\n\r\n constructor(owner: any, key: string, original: (sender: any, e: any) => any, type: string, flags: number) {\r\n this.owner = owner;\r\n this.key = key;\r\n this.original = original;\r\n this.type = type;\r\n this.flags = flags;\r\n this.next = undefined;\r\n }\r\n\r\n handleEvent(ev: Event): void {\r\n const flags = this.flags;\r\n const owner = this.owner;\r\n if ((flags & EV_SELF) !== 0 && ev.target !== owner.element) return;\r\n if ((flags & EV_TRUSTED) !== 0 && !ev.isTrusted) return;\r\n const cb: any = this.original;\r\n let res: any;\r\n try {\r\n if (cb && cb.length <= 1) {\r\n res = cb(ev);\r\n } else if (cb) {\r\n res = cb(owner, ev);\r\n }\r\n } catch (error) {\r\n reportError('MJX123', error, this.type);\r\n }\r\n if (res && typeof res.then === 'function') {\r\n const type = this.type;\r\n res.then(undefined, (error: unknown) => reportError('MJX123', error, type));\r\n }\r\n if ((flags & EV_PREVENT) !== 0) { preventEvent(ev); }\r\n if ((flags & EV_STOP) !== 0) { stopEvent(ev); }\r\n if (res && (res as any).cancel === true) {\r\n preventEvent(ev);\r\n stopEvent(ev);\r\n }\r\n }\r\n}\r\n\r\nfunction preventEvent(ev: any): void {\r\n if (typeof ev?.preventDefault === 'function') ev.preventDefault();\r\n}\r\n\r\nfunction stopEvent(ev: any): void {\r\n if (typeof ev?.stopPropagation === 'function') ev.stopPropagation();\r\n}\r\n\r\nfunction addEventRecord(c: any, record: EventRecord): void {\r\n let last: EventRecord | undefined = c._eventHandlers;\r\n if (last === undefined) {\r\n c._eventHandlers = record;\r\n return;\r\n }\r\n while (last.next !== undefined) last = last.next;\r\n last.next = record;\r\n}\r\n\r\nfunction compactEventRecords(c: any): void {\r\n let head: EventRecord | undefined;\r\n let tail: EventRecord | undefined;\r\n for (let r: EventRecord | undefined = c._eventHandlers; r !== undefined; r = r.next) {\r\n if ((r.flags & EV_REMOVED) !== 0) continue;\r\n if (tail === undefined) head = r; else tail.next = r;\r\n tail = r;\r\n }\r\n if (tail !== undefined) tail.next = undefined;\r\n c._eventHandlers = head;\r\n}\r\n\r\nfunction hasEventKey(c: any, key: string): boolean {\r\n for (let r: EventRecord | undefined = c._eventHandlers; r !== undefined; r = r.next) {\r\n if ((r.flags & EV_REMOVED) === 0 && r.key === key) return true;\r\n }\r\n return false;\r\n}\r\n\r\nfunction offAll(c: any): void {\r\n const head: EventRecord | undefined = c._eventHandlers;\r\n if (head === undefined) return;\r\n for (let r: EventRecord | undefined = head; r !== undefined; r = r.next) {\r\n if ((r.flags & (EV_DOM | EV_REMOVED)) !== EV_DOM) { continue; }\r\n try {\r\n (c.element as any).removeEventListener(r.type, r, (r.flags & EV_CAPTURE) !== 0);\r\n } catch { }\r\n }\r\n c._eventHandlers = undefined;\r\n}\r\n\r\nfunction deactivateBindings(c: any): void {\r\n try { if (c._bindings?._items?.length) c._bindings.deactivateAll(); } catch { }\r\n}\r\n\r\nfunction activateBindings(c: any): void {\r\n try { c._bindings?.activateAll(); } catch { }\r\n}\r\n\r\nfunction reactivateBindings(c: any): void {\r\n try { c._bindings?.reActivateAll(); } catch { }\r\n}\r\n\r\nfunction activatePreBindings(c: any): void {\r\n if ((c._flags & F_PREBOUND) !== 0) return;\r\n const registered = c._bindings?._items as IBaseBinding[] | undefined;\r\n if (registered && registered.length > 0) {\r\n c._bindings.items.filter((x: IBaseBinding) => x.propertyName == \"isWait\" || x.propertyName == \"display\").forEach((b: IBaseBinding) => {\r\n b.activate();\r\n }\r\n );\r\n }\r\n c._flags |= F_PREBOUND;\r\n}\r\n\r\nfunction createBaseCtx(owner: ComponentBase): BaseCtx {\r\n const base: BaseCtx = Object.create(BASE_PROTO);\r\n base.owner = owner;\r\n return base;\r\n}\r\n\r\nfunction controlsOwner(collection: ControlCollection): any {\r\n return (collection as any).owner;\r\n}\r\n\r\nconst NO_CHILDREN: ComponentBase[] = Object.freeze([]) as any;\r\nconst NO_BINDINGS: IBaseBinding[] = Object.freeze([]) as any;\r\n\r\nfunction childrenOf(c: any): ComponentBase[] {\r\n return c._controls?.items ?? NO_CHILDREN;\r\n}\r\n\r\nfunction createOwnedControls(c: ComponentBase): ControlCollection {\r\n const controls = new ControlCollection(c);\r\n controls.onAdd = ownerControlAdded;\r\n controls.onAddBeforeBuild = ownerControlAddedBeforeBuild;\r\n controls.onRemove = ownerControlRemoved;\r\n return controls;\r\n}\r\n\r\nfunction ownerControlAdded(this: ControlCollection, c: ComponentBase) {\r\n const owner = controlsOwner(this);\r\n if (hasEventKey(owner, 'controladded')) owner.motif.trigger('controladded', { control: c });\r\n if (!owner.isVisible && (owner.element as Node)?.nodeType === Node.COMMENT_NODE) return;\r\n ComponentHelper.internalBuild.call(owner, c);\r\n}\r\n\r\nfunction ownerControlAddedBeforeBuild(this: ControlCollection, c: ComponentBase) {\r\n const owner = controlsOwner(this);\r\n if (hasEventKey(owner, 'controladded')) owner.motif.trigger('controladded', { control: c });\r\n}\r\n\r\nfunction ownerControlRemoved(this: ControlCollection, c: ComponentBase) {\r\n const owner = controlsOwner(this);\r\n if (hasEventKey(owner, 'controlremoved')) owner.motif.trigger('controlremoved', { control: c });\r\n}\r\n\r\nconst fragmentCloseMarkers = new WeakMap<Comment, Comment>();\r\n\r\nvar globalId = 0;\r\n\r\nconst LIFECYCLE_X_EVENTS = new Set([\r\n 'building', 'built', 'initializing', 'initialized', 'disposing', 'disposed',\r\n 'config', 'configured', 'visibilitychanged', 'activated', 'deactivated'\r\n]);\r\n\r\nexport interface IDisposeOptions {\r\n deep?: boolean;\r\n skipLeaveTransition?: boolean;\r\n}\r\n\r\nexport interface SiblingsApi {\r\n all: () => ComponentBase[] | undefined;\r\n next: () => ComponentBase | undefined;\r\n prev: () => ComponentBase | undefined;\r\n nextAll: () => any;\r\n prevAll: () => any;\r\n}\r\n\r\nconst RAW_APPLICATION = Symbol('motif.rawApplication');\r\nconst SCOPED_SUBSCRIBERS = new Set<PropertyKey>(['on', 'onRouterChanged']);\r\n\r\n/**\r\n * Uygulamanın bileşene bağlı görünümü. `on`/`onRouterChanged` aboneliklerini sahibin ömrüne\r\n * kaydeder; diğer tüm üyeler (alanlar, metotlar, atamalar) uygulamanın kendisine yönlenir.\r\n */\r\nfunction createScopedContext(app: Application, owner: ComponentBase): Application {\r\n const cache = new Map<PropertyKey, { fn: Function; bound: Function }>();\r\n return new Proxy(app, {\r\n get(target, prop) {\r\n if (prop === RAW_APPLICATION) { return target; }\r\n const value = Reflect.get(target, prop, target);\r\n if (typeof value !== 'function') { return value; }\r\n const hit = cache.get(prop);\r\n if (hit && hit.fn === value) { return hit.bound; }\r\n const bound = SCOPED_SUBSCRIBERS.has(prop)\r\n ? (...args: any[]) => owner._trackContextSubscription(value.apply(target, args))\r\n : value.bind(target);\r\n cache.set(prop, { fn: value, bound });\r\n return bound;\r\n },\r\n set(target, prop, value) {\r\n return Reflect.set(target, prop, value, target);\r\n },\r\n });\r\n}\r\n\r\nexport abstract class ComponentBase<TElement extends ElementType = any, TProps extends object = any> extends Disposable {\r\n\r\n private _motif?: ComponentMotif<this, TProps> = undefined;\r\n public get motif(): ComponentMotif<this, TProps> {\r\n return this._motif !== undefined ? this._motif : (this._motif = new ComponentMotif<this, TProps>(this, (this.isDisposed && !this.element ? undefined : new ComponentOptionsImpl(this)) as unknown as ComponentMotif<this, TProps>['options']));\r\n }\r\n\r\n public element: TElement;\r\n public props: TProps;\r\n private _flags: number = 0;\r\n public get isBuilt(): boolean {\r\n return (this._flags & F_BUILT) !== 0;\r\n }\r\n public set isBuilt(value: boolean) {\r\n this._flags = value ? this._flags | F_BUILT : this._flags & ~F_BUILT;\r\n }\r\n public get isInitialized(): boolean {\r\n return (this._flags & F_INITIALIZED) !== 0;\r\n }\r\n public set isInitialized(value: boolean) {\r\n this._flags = value ? this._flags | F_INITIALIZED : this._flags & ~F_INITIALIZED;\r\n }\r\n public get isDisposed(): boolean {\r\n return (this._flags & F_DISPOSED) !== 0;\r\n }\r\n public set isDisposed(value: boolean) {\r\n this._flags = value ? this._flags | F_DISPOSED : this._flags & ~F_DISPOSED;\r\n }\r\n public get isConfigured(): boolean {\r\n return (this._flags & F_CONFIGURED) !== 0;\r\n }\r\n public set isConfigured(value: boolean) {\r\n this._flags = value ? this._flags | F_CONFIGURED : this._flags & ~F_CONFIGURED;\r\n }\r\n public get isPainting(): boolean {\r\n return (this._flags & F_PAINTING) !== 0;\r\n }\r\n public set isPainting(value: boolean) {\r\n this._flags = value ? this._flags | F_PAINTING : this._flags & ~F_PAINTING;\r\n }\r\n public get isPainted(): boolean {\r\n return (this._flags & F_PAINTED) !== 0;\r\n }\r\n public set isPainted(value: boolean) {\r\n this._flags = value ? this._flags | F_PAINTED : this._flags & ~F_PAINTED;\r\n }\r\n public get isVisible(): boolean {\r\n return (this._flags & F_HIDDEN) === 0;\r\n }\r\n public set isVisible(value: boolean) {\r\n this._flags = value ? this._flags & ~F_HIDDEN : this._flags | F_HIDDEN;\r\n }\r\n private _controls?: ControlCollection = undefined;\r\n public get controls(): ControlCollection {\r\n return this._controls !== undefined || (this.isDisposed && !this.element) ? this._controls! : (this._controls = createOwnedControls(this));\r\n }\r\n public set controls(value: ControlCollection) {\r\n this._controls = value;\r\n }\r\n\r\n private _eventHandlers?: EventRecord;\r\n private _class?: IClass<TElement> = undefined;\r\n private _attr?: controlAttribute<TElement> = undefined;\r\n public get class(): IClass<TElement> {\r\n return this._class !== undefined || (this.isDisposed && !this.element) ? this._class! : (this._class = new controlClass(this as any) as any as IClass<TElement>);\r\n }\r\n public set class(value: IClass<TElement>) {\r\n this._class = value;\r\n }\r\n public get attr(): controlAttribute<TElement> {\r\n return this._attr !== undefined || (this.isDisposed && !this.element) ? this._attr! : (this._attr = new controlAttribute(this as any));\r\n }\r\n public set attr(value: controlAttribute<TElement>) {\r\n this._attr = value;\r\n }\r\n private _bindings?: BindingCollection = undefined;\r\n public get bindings(): BindingCollection {\r\n return this._bindings !== undefined || (this.isDisposed && !this.element) ? this._bindings! : (this._bindings = new BindingCollection(this));\r\n }\r\n public set bindings(value: BindingCollection) {\r\n this._bindings = value;\r\n }\r\n /** style(fn) izleyicisi: tek tek tutulur, yeniden çağrıda önceki durdurulur. */\r\n private _styleFx?: { stop: () => void; binding: IBaseBinding };\r\n\r\n public useModel<TModel>(modelCtor: TModel): UnwrapValueRefs<TModel> {\r\n return reactive<TModel>(modelCtor);\r\n }\r\n\r\n private _computeHideStrategy(): 'placeholder' | 'detach' {\r\n return keepsTrace(this) ? 'placeholder' : 'detach';\r\n }\r\n\r\n private _isInDom(): boolean {\r\n try {\r\n if (!this.element) return false;\r\n const node = this.element as unknown as Node;\r\n if (node.nodeType === Node.COMMENT_NODE) {\r\n return !!node.parentNode;\r\n }\r\n return !!node.parentNode;\r\n } catch { return false; }\r\n }\r\n public set isWait(value: boolean) {\r\n this._flags = value ? this._flags | F_WAIT : this._flags & ~F_WAIT;\r\n if (this.isBuilt) {\r\n if (value) {\r\n this.motif.hide();\r\n } else {\r\n this.motif.show();\r\n }\r\n return;\r\n }\r\n if (value === false && this.parent && this.parent.isBuilt) {\r\n ComponentHelper.internalBuild.call(this.parent, this);\r\n }\r\n\r\n }\r\n public get isWait(): boolean {\r\n return (this._flags & F_WAIT) !== 0;\r\n }\r\n\r\n constructor(element: TElement, props: TProps = {} as TProps) {\r\n super();\r\n const asComponentRoot = constructingComponentRoot;\r\n constructingComponentRoot = false;\r\n recordServiceOwner(this);\r\n if (this.onElementCreating) {\r\n this.element = this.onElementCreating.call(this);\r\n } else if ((props as any)?.onElementCreating) {\r\n this.element = (props as any).onElementCreating.call(this);\r\n } else {\r\n this.element = element;\r\n }\r\n if ((this.element as any)?.nodeType !== 3) {\r\n if (this._controls === undefined) this._controls = new ControlCollection(this);\r\n }\r\n\r\n const refs = props ? extractRefs(props, this) : [];\r\n\r\n if (props && ParseProps(props, this)) props = {} as TProps;\r\n applyComponentOptions((props as any)?.options, this);\r\n this.props = props;\r\n\r\n // (class/style/id/tabindex/role/aria-*/data-*) kök düğüme (root node) düşer, prop'lar this.props'ta kalır.\r\n if (props) {\r\n const ctor0 = new.target as any;\r\n const plain = !asComponentRoot && (ctor0 === ComponentBase || Object.getPrototypeOf(ctor0) === ComponentBase);\r\n if (plain) applyPlainElementProps(props, this);\r\n else applyFallthroughProps(props, this);\r\n }\r\n\r\n if (refs.length > 0) {\r\n for (const fn of takePendingRefs(this, refs)) {\r\n callReported(() => fn(this), 'MJX122', 'ref');\r\n }\r\n }\r\n\r\n ComponentHelper.callOnInitializing(this);\r\n if (this.isDisposed) return;\r\n const controls = this._controls;\r\n if (controls) {\r\n controls.onAdd = ownerControlAdded;\r\n controls.onAddBeforeBuild = ownerControlAddedBeforeBuild;\r\n controls.onRemove = ownerControlRemoved;\r\n }\r\n ComponentHelper.callOnInitialized(this);\r\n\r\n const ctor = new.target as any;\r\n const isBaseCtor = ctor === ComponentBase || Object.getPrototypeOf(ctor) === ComponentBase;\r\n if (isBaseCtor) {\r\n ComponentHelper.callConfig(this);\r\n } else {\r\n this._base._configDeferred = true;\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n public childs?: any[];\r\n private _baseCtx?: BaseCtx = undefined;\r\n private _init?: (sender: ComponentBase, e: EventArgs) => void = undefined;\r\n private _leaveContainer?: ComponentBase = undefined;\r\n protected get _base(): BaseCtx {\r\n return this._baseCtx !== undefined || (this.isDisposed && !this.element) ? this._baseCtx! : (this._baseCtx = createBaseCtx(this));\r\n }\r\n public parent: ComponentBase | null = null;\r\n public onElementCreating?(): TElement;\r\n public initializeComponent?(sender: ComponentBase): void;\r\n public onBuilding?(sender: ComponentBase, e: EventArgs): void;\r\n public onBuilt?(sender: ComponentBase, e: EventArgs): void;\r\n public onMounted?(sender: ComponentBase, e: EventArgs): void;\r\n public onInitializing?(sender: ComponentBase, e: EventArgs): void;\r\n public onInitialized?(sender: ComponentBase, e: EventArgs): void;\r\n public onDisposing?(sender: ComponentBase, e: EventArgs): void;\r\n public onDisposed?(sender: ComponentBase, e: EventArgs): void;\r\n public onConfig?(sender: ComponentBase, e: EventArgs): void;\r\n public onConfigured?(sender: ComponentBase, e: EventArgs): void;\r\n public onVisibilityChanged?(sender: ComponentBase, e: VisibilityChangedEventArgs): void;\r\n /** keepAlive rota bileşeni outlet'ten ayrılıp önbelleğe alındığında (RoutingEngine) tetiklenir. */\r\n public onDeactivated?(sender: ComponentBase, e: EventArgs): void;\r\n /** keepAlive rota bileşeni önbellekten outlet'e yeniden bağlandığında (RoutingEngine) tetiklenir. */\r\n public onActivated?(sender: ComponentBase, e: EventArgs): void;\r\n public view?(): ComponentBase;\r\n private _scopedContext?: Application;\r\n\r\n public get context(): Application {\r\n const parentCtx: any = this.parent?.context;\r\n const app: Application = parentCtx?.[RAW_APPLICATION] ?? parentCtx ?? teardownApplications.get(this) ?? Application.main;\r\n if (!app) { return app; }\r\n if ((this._scopedContext as any)?.[RAW_APPLICATION] !== app) {\r\n this._scopedContext = createScopedContext(app, this);\r\n }\r\n return this._scopedContext!;\r\n }\r\n /** @internal context üzerinden açılan aboneliği bileşenin ömrüne bağlar; iptal fonksiyonunu döndürür. */\r\n public _trackContextSubscription(off: () => void): () => void {\r\n if (typeof off !== 'function') { return off; }\r\n if (this.isDisposed) { off(); return off; }\r\n const d = this._register(disposableCore.toDisposable(off));\r\n return () => { this._disposables.detach(d); off(); };\r\n }\r\n\r\n public build(building: boolean = true) {\r\n checkReservedMembers(this);\r\n ComponentHelper.callConfigured(this);\r\n activatePreBindings(this);\r\n if (this.isDisposed || !this.element || this.isWait) { return; }\r\n if (this.isBuilt || this.isWait) {\r\n return;\r\n }\r\n\r\n ComponentHelper.callBuilding(this);\r\n if (this.isDisposed) { return; }\r\n var ph: any = this.element;\r\n if (building) {\r\n ph = dom.createDocumentFragment();\r\n }\r\n const isFragment = (typeof this.element !== 'string' && (this.element as unknown as Node).nodeType === Node.COMMENT_NODE);\r\n if (isFragment) {\r\n this.motif.options.cache = dom.createDocumentFragment();\r\n (this.element as any).textContent = \"[\";\r\n this.motif.options.cache!.appendChild(this.element as unknown as Node);\r\n }\r\n if (this.isBuilt) {\r\n return;\r\n }\r\n\r\n\r\n ComponentHelper.callInitializeComponent(this);\r\n if (this.isDisposed) { return; }\r\n\r\n if (this.view) {\r\n const templ = this.view();\r\n this.controls.add(templ);\r\n if (this.isDisposed) { return; }\r\n }\r\n\r\n const deferredSelectValue: IBaseBinding[] = (this.element as any)?.nodeName === 'SELECT'\r\n ? this.bindings.items.filter(b => b.propertyName === 'value')\r\n : NO_BINDINGS;\r\n if (deferredSelectValue.length) {\r\n try {\r\n this.bindings.items.filter(b => !deferredSelectValue.includes(b)).forEach(b => b.activate());\r\n } catch { }\r\n } else {\r\n activateBindings(this);\r\n }\r\n\r\n const kids = childrenOf(this);\r\n for (const element of kids.length ? kids.slice() : kids) {\r\n var target = isFragment ? this.motif.options.cache : this.element;\r\n if (!element.isWait) {\r\n element.parent = this;\r\n element.build(false);\r\n }\r\n if (element.isWait) {\r\n if (keepsTrace(element)) {\r\n const opts: any = element.motif.options;\r\n (building ? ph : target as any).appendChild(opts.placeholder ?? (opts.placeholder = dom.createComment(\"h\")));\r\n }\r\n continue;\r\n }\r\n if (building) {\r\n const cache = optionsOf(element)?.cache;\r\n if (cache) {\r\n ph.appendChild(cache);\r\n } else {\r\n ph.appendChild(element.element);\r\n }\r\n } else {\r\n const cache = optionsOf(element)?.cache;\r\n if (cache) {\r\n (target as any).appendChild(cache);\r\n } else {\r\n (target as any).appendChild(element.element);\r\n }\r\n }\r\n if ((element as any)._baseCtx?._inactive && element.isVisible) {\r\n ComponentHelper.activateTree(element);\r\n }\r\n\r\n }\r\n\r\n if (this.isDisposed) { return; }\r\n if (wantsEnterTransition(this)) {\r\n const node = this.element as unknown as Node | null;\r\n if (node && (node as any).isConnected) {\r\n this.motif.options.transition.enterTransition(() => { });\r\n } else {\r\n const seq = this._base._enterSeq;\r\n queueMicrotask(() => {\r\n if (!this.isDisposed && this.isVisible && this.motif.options?.transition && this._base._enterSeq === seq) {\r\n this.motif.options.transition.enterTransition(() => { });\r\n }\r\n });\r\n }\r\n } else {\r\n clearNavDirection(this);\r\n }\r\n if (building) {\r\n try {\r\n var target = isFragment ? this.motif.options.cache : this.element;\r\n if ((target as any).nodeType === Node.TEXT_NODE) {\r\n (target as Text).appendData(ph.textContent);\r\n } else {\r\n if ((target as any).appendChild) {\r\n (target as any).appendChild(ph);\r\n } else {\r\n (target as any).append(ph);\r\n }\r\n }\r\n } catch (error) {\r\n }\r\n\r\n }\r\n if (deferredSelectValue.length) {\r\n try { deferredSelectValue.forEach(b => b.activate()); } catch { }\r\n }\r\n if (isFragment) {\r\n this.motif.options.closeFragment = dom.createComment(\"]\");\r\n this.motif.options.cache!.appendChild(this.motif.options.closeFragment!);\r\n if ((this.element as Node).nodeType === Node.COMMENT_NODE && this.motif.options.closeFragment) {\r\n fragmentCloseMarkers.set(this.element as Comment, this.motif.options.closeFragment);\r\n }\r\n }\r\n\r\n this.isBuilt = true;\r\n ComponentHelper.callBuilt(this);\r\n ComponentHelper.scheduleMounted(this);\r\n\r\n }\r\n\r\n public setState() {\r\n this.controls.forEach(c => {\r\n c.setState();\r\n });\r\n reactivateBindings(this);\r\n }\r\n\r\n public reState() {\r\n reactivateBindings(this);\r\n this.controls.forEach(c => {\r\n c.reState();\r\n });\r\n }\r\n\r\n public setText(value: string) {\r\n if (this.isDisposed || !this.element) { return; }\r\n if (isComponentLike(value)) { warnComponentInTextBinding(this, value); return; }\r\n if (this.element) {\r\n (this.element as any).textContent = value;\r\n }\r\n }\r\n\r\n public style(content: CSSStyleDeclaration | string | Array<any> | Object | (() => any)) {\r\n if (this.isDisposed) { return this as any }\r\n const styleObj = (this.element as any)?.style as CSSStyleDeclaration | undefined;\r\n if (!styleObj) return this;\r\n if (typeof content === 'function') {\r\n this._stopStyleEffect();\r\n let prevKeys: string[] = [];\r\n let prevWasString = false;\r\n const run = () => effect(() => {\r\n const v = (content as () => any)();\r\n if (this.isDisposed) return;\r\n const so: any = (this.element as any)?.style;\r\n if (!so) return;\r\n if (typeof v === 'string') {\r\n so.cssText = v;\r\n prevKeys = [];\r\n prevWasString = true;\r\n } else if (v && typeof v === 'object') {\r\n if (prevWasString) { so.cssText = ''; prevWasString = false; }\r\n for (const k of prevKeys) {\r\n if (!(k in v)) { try { so[k] = ''; } catch { } }\r\n }\r\n Object.assign(so, v);\r\n prevKeys = Object.keys(v);\r\n } else {\r\n if (prevWasString) { so.cssText = ''; prevWasString = false; }\r\n for (const k of prevKeys) { try { so[k] = ''; } catch { } }\r\n prevKeys = [];\r\n }\r\n });\r\n let current = run();\r\n const stop = () => { try { current(); } catch { } };\r\n const binding: IBaseBinding = {\r\n propertyName: '__style',\r\n dataSource: null,\r\n activate() { /* no-op */ },\r\n reActivate() {\r\n stop();\r\n current = run();\r\n },\r\n deactivate() { stop(); }\r\n } as any;\r\n try { this.bindings.add(binding); } catch { }\r\n this._styleFx = { stop, binding };\r\n return this;\r\n }\r\n if (typeof content === 'string') {\r\n (styleObj as any).cssText = content;\r\n } else if (content && typeof content === 'object') {\r\n Object.assign(styleObj as any, content);\r\n }\r\n return this;\r\n }\r\n\r\n private _stopStyleEffect() {\r\n const fx = this._styleFx;\r\n if (!fx) return;\r\n this._styleFx = undefined;\r\n try { fx.stop(); } catch { }\r\n try { this.bindings.remove(fx.binding); } catch { }\r\n }\r\n\r\n private _addHandler(event: any, handler: (sender: ComponentBase, e: EventArgs) => void) {\r\n this.motif.on(event as any, handler as any);\r\n }\r\n private async _show(): Promise<any> {\r\n\r\n\r\n if (this.isDisposed || !this.element) { return; }\r\n if (this.isVisible) { return; }/* A*/\r\n if (this.isWait) { return; }\r\n\r\n if (this.parent && enterModeOf(this.parent) === 'out-in') {\r\n const showHost = ((this.motif.options.placeholder as Node | undefined)?.parentNode)\r\n ?? (findAppendableComponent(this.parent)?.element as Node | undefined);\r\n const wait = pendingLeaves(showHost, this.element as unknown as Node);\r\n if (wait) {\r\n const seq = this._base._showSeq = (this._base._showSeq ?? 0) + 1;\r\n return wait.then(() => {\r\n if (this.isDisposed || this._base._showSeq !== seq) return;\r\n return this._show();\r\n });\r\n }\r\n }\r\n\r\n if (peekTransition(this)?.activeAnimations?.length) {\r\n safeCall(async () => {\r\n await Promise.all(this.motif.options.transition.activeAnimations.map(a =>\r\n a.finished?.catch(() => { })\r\n ));\r\n }, 'show.waitForLeaveAnimations');\r\n }\r\n /** A*/\r\n const strategy = this._computeHideStrategy();\r\n if (strategy === 'detach') {\r\n\r\n ComponentHelper.callVisibilityChanged(this, true);\r\n if (this.isDisposed) { return; }\r\n const needAttach = !this._isInDom() && this.parent && this.parent.isBuilt && !this.isWait;\r\n this.isVisible = true;\r\n if (needAttach) {\r\n ComponentHelper.internalBuild.call(this.parent!, this);\r\n }\r\n return;\r\n } else {\r\n /** A*/\r\n const placeholderParent = (this.motif.options.placeholder as Node)?.parentElement;\r\n const expectedParent = findAppendableComponent(this.parent!)?.element;\r\n\r\n if (this.motif.options.placeholder && placeholderParent && placeholderParent !== expectedParent) {\r\n reportWarning('MJX106', []);\r\n ComponentHelper.callVisibilityChanged(this, true);\r\n if (this.isDisposed) { return; }\r\n this.isVisible = true;\r\n if (this.parent?.isBuilt) {\r\n ComponentHelper.internalBuild.call(this.parent, this);\r\n }\r\n return;\r\n }\r\n\r\n /** A*/\r\n wantsEnterTransition(this) && this.motif.options.transition.enterTransition(() => { });\r\n ComponentHelper.callVisibilityChanged(this, true);\r\n if (this.isDisposed) { return; }\r\n if ((this.element as Node).nodeType === Node.COMMENT_NODE) {\r\n this.controls.items.filter(c => !c.isBuilt).forEach(c => ComponentHelper.internalBuild.call(this, c));\r\n this.controls.forEach(c => {\r\n c.motif.show();\r\n });\r\n this.isVisible = true;\r\n ComponentHelper.activateTree(this, false);\r\n return;\r\n }\r\n if (!this.isBuilt) {\r\n this.isVisible = true;\r\n return;\r\n }\r\n var parent = (this.motif.options.placeholder as Node)?.parentElement;\r\n if (parent) {\r\n parent.replaceChild(this.element as Node, this.motif.options.placeholder!);\r\n this.isVisible = true;\r\n ComponentHelper.activateTree(this);\r\n }\r\n }\r\n }\r\n private async _hide(): Promise<any> {\r\n\r\n if (this.isDisposed || !this.element) { return; }\r\n this._base._showSeq = (this._base._showSeq ?? 0) + 1;\r\n if (!this.isVisible) { return; }\r\n\r\n const strategy = this._computeHideStrategy();\r\n if (strategy === 'detach') {\r\n ComponentHelper.callVisibilityChanged(this, false);\r\n if (this.isDisposed) { return; }\r\n await this._base._detachDomWithAnimationAsync();\r\n this.isVisible = false;\r\n ComponentHelper.deactivateTree(this);\r\n return;\r\n } else {\r\n const transition = this.motif.options.transition;\r\n const skip = transition.skipNextLeave === true;\r\n if (skip) transition.skipNextLeave = false;\r\n const finish = () => {\r\n ComponentHelper.callVisibilityChanged(this, false);\r\n if (this.isDisposed) { return; }\r\n if ((this.element as Node).nodeType === Node.COMMENT_NODE) {\r\n this.controls.forEach(c => {\r\n if (skip && c.isVisible && c.element && !c.isDisposed && c.motif.options?.transition) {\r\n c.motif.options.transition.skipNextLeave = true;\r\n }\r\n c.motif.hide();\r\n });\r\n this.isVisible = false;\r\n ComponentHelper.deactivateTree(this, false);\r\n return;\r\n }\r\n var parent = (this.element as Node).parentElement;\r\n // if (!parent) {\r\n // var parentComp = findAppendableComponent(this.parent!);\r\n // if (parentComp && parentComp.isBuilt) {\r\n // } else {\r\n if (parent) {\r\n if (!this.motif.options.placeholder) this.motif.options.placeholder = dom.createComment(\"h\");\r\n parent.replaceChild(this.motif.options.placeholder!, this.element as Node);\r\n\r\n }\r\n this.isVisible = false;\r\n ComponentHelper.deactivateTree(this);\r\n };\r\n if (skip) {\r\n finish();\r\n return;\r\n }\r\n return transition.leaveTransition(finish).finished;\r\n }\r\n\r\n }\r\n private _toggle() {\r\n if (this.isDisposed || !this.element) { return; }\r\n if (this.isVisible) {\r\n this.motif.hide();\r\n } else {\r\n this.motif.show();\r\n }\r\n }\r\n\r\n private async _on<K extends keyof HtmlElementEvents>(event: K, cb: (sender: ComponentBase | this, ev: HtmlElementEvents[K]) => any, domEvent: boolean = true): Promise<this> {\r\n if (this.isDisposed || !this.element) {\r\n return this;\r\n }\r\n\r\n const full = String(event);\r\n if (full.startsWith(\"x:\")) {\r\n const xName = full.slice(2).toLowerCase();\r\n if (xName === \"mounted\") {\r\n let sub: IDisposable | undefined;\r\n const stop = onElementAttached(this.element as Element, () => {\r\n if (sub) {\r\n this._base._mountedSubs?.get(cb)?.delete(sub);\r\n this._disposables.detach(sub);\r\n }\r\n if (this.isDisposed) { return; }\r\n const ev = { cancel: false } as EventArgs;\r\n callReported(() => (cb as any).length <= 1 ? (cb as any)(ev) : cb(this, ev as any), 'MJX122', 'x:mounted');\r\n });\r\n if (stop) {\r\n sub = this._register(disposableCore.toDisposable(stop));\r\n const subs: Map<Function, Set<IDisposable>> = this._base._mountedSubs ??= new Map();\r\n let set = subs.get(cb);\r\n if (!set) { set = new Set(); subs.set(cb, set); }\r\n set.add(sub);\r\n }\r\n return this;\r\n }\r\n if (LIFECYCLE_X_EVENTS.has(xName)) {\r\n this._base.emiters.on(\"on\" + xName, cb as any);\r\n return this;\r\n }\r\n }\r\n\r\n const colon = full.indexOf(\":\");\r\n const name = colon < 0 ? full : full.slice(0, colon);\r\n const mods = colon < 0 ? NO_MODS : full.slice(colon + 1).split(\":\");\r\n const evt = name.startsWith(\"on\") ? name.slice(2).toLowerCase() : name.toLowerCase();\r\n let flags = domEvent ? EV_DOM : 0;\r\n let options: AddEventListenerOptions | undefined;\r\n if (mods.length) {\r\n options = {};\r\n if (mods.includes(\"once\")) options.once = true;\r\n if (mods.includes(\"passive\")) options.passive = true;\r\n if (mods.includes(\"capture\")) { options.capture = true; flags |= EV_CAPTURE; }\r\n if (mods.includes(\"self\")) flags |= EV_SELF;\r\n if (mods.includes(\"trusted\")) flags |= EV_TRUSTED;\r\n if (mods.includes(\"prevent\")) flags |= EV_PREVENT;\r\n if (mods.includes(\"stop\")) flags |= EV_STOP;\r\n }\r\n\r\n const record = new EventRecord(this, full.toLowerCase(), cb as any, evt, flags);\r\n if (domEvent) {\r\n (this.element as any).addEventListener(evt, record, options);\r\n }\r\n addEventRecord(this, record);\r\n return this;\r\n }\r\n\r\n private async _trigger(event: any, ev: any): Promise<this> {\r\n if (this.isDisposed || !this.element) {\r\n return this;\r\n }\r\n const name = String(event).toLowerCase();\r\n safeCall(() => {\r\n eventDispatchDepth++;\r\n try {\r\n for (let r = this._eventHandlers; r !== undefined; r = r.next) {\r\n if ((r.flags & EV_REMOVED) !== 0 || r.key !== name) continue;\r\n try {\r\n r.handleEvent(ev);\r\n } catch {\r\n\r\n }\r\n }\r\n } finally {\r\n eventDispatchDepth--;\r\n }\r\n }, 'trigger');\r\n return this;\r\n }\r\n private async _off<K extends keyof HtmlElementEvents>(event: K, cb: (sender: ComponentBase | this, ev: HtmlElementEvents[K]) => any): Promise<this> {\r\n if (this.isDisposed || !this.element) {\r\n return this;\r\n }\r\n\r\n const full = String(event).toLowerCase();\r\n if (full.startsWith(\"x:\")) {\r\n const xName = full.slice(2);\r\n if (xName === \"mounted\") {\r\n const set = this._base._mountedSubs?.get(cb);\r\n if (set) {\r\n this._base._mountedSubs.delete(cb);\r\n for (const sub of set) {\r\n this._disposables.delete(sub);\r\n }\r\n }\r\n return this;\r\n }\r\n if (LIFECYCLE_X_EVENTS.has(xName)) {\r\n this._base._emiters?.off(\"on\" + xName, cb as any);\r\n }\r\n return this;\r\n }\r\n for (let r = this._eventHandlers; r !== undefined; r = r.next) {\r\n if ((r.flags & EV_REMOVED) !== 0 || r.key !== full || r.original !== (cb as any)) continue;\r\n if ((r.flags & EV_DOM) !== 0) {\r\n const rec = r;\r\n safeCall(() => { (this.element as any).removeEventListener(rec.type, rec, (rec.flags & EV_CAPTURE) !== 0); }, 'off.removeEventListener');\r\n }\r\n r.flags |= EV_REMOVED;\r\n break;\r\n }\r\n if (eventDispatchDepth === 0) compactEventRecords(this);\r\n return this;\r\n }\r\n /** Süren bertaraf: ikinci bir dispose/disposeAsync çağrısı yenisini başlatmaz, bunu bekler. */\r\n private _disposing?: Promise<void>;\r\n\r\n public override dispose(options: IDisposeOptions = { deep: true }): Promise<void> {\r\n if (this.isDisposed) { return Promise.resolve(); }\r\n if (this._disposing) { return this._disposing; }\r\n retireServiceOwner(this);\r\n this._disposing = DISPOSE_STARTED;\r\n return this._disposing = this._disposeCore(options, false);\r\n }\r\n\r\n private async _disposeCore(options: IDisposeOptions, asChild: boolean): Promise<void> {\r\n disposePrefix(this, options, asChild);\r\n let leave: Promise<void> | undefined;\r\n if (!asChild && !peekTransition(this)?.skipNextLeave) {\r\n leave = this._base._detachDomWithAnimationAsync();\r\n }\r\n await undefined;\r\n if (liveContentBlocks.live === 0 && subtreeDisposesSync(this, true)) {\r\n const pending = disposeRemainderSync(this, options, asChild, leave !== undefined);\r\n if (pending) {\r\n await Promise.all(pending);\r\n if (!asChild && this.isDisposed) { return; }\r\n disposeFinish(this, options, asChild);\r\n }\r\n return;\r\n }\r\n await disposeRemainderAsync(this, options, asChild, leave);\r\n }\r\n\r\n public disposeAsync(options: IDisposeOptions = { deep: true }): Promise<void> {\r\n if (this.isDisposed) { return Promise.resolve(); }\r\n if (this._disposing) { return this._disposing; }\r\n retireServiceOwner(this);\r\n this._disposing = DISPOSE_STARTED;\r\n return this._disposing = this._disposeCore(options, true);\r\n }\r\n\r\n\r\n protected async _clear(): Promise<any> {\r\n if (this.isDisposed == true) { return; }\r\n if (this.motif.options && this.motif.options.disableDisposal) { return; };\r\n await this.controls.clearAsync();\r\n //if (this.onupdated) this.onupdated(this as any, { data: this.model, field: '', source: 'clear' })\r\n // return new Promise((resolveOuter: any) => {\r\n // this.controls.forEach(async (control, index) => {\r\n // if (index === this.controls.length - 1) {\r\n // dom.window.setTimeout(resolveOuter, 0);\r\n // await control.dispose();\r\n }\r\n\r\n using<T>(waitable: Promise<any>, onfulfilled?: ((value: T) => T | PromiseLike<T>) | undefined | null, onrejected?: ((reason: any) => never | PromiseLike<never>) | undefined | null) {\r\n waitable.then(\r\n (value: T) => { this && !this.isDisposed && onfulfilled ? onfulfilled(value) : ''; },\r\n (reason: any) => { this && !this.isDisposed && onrejected ? onrejected(reason) : '' });\r\n }\r\n doWork<T>(waitable: Promise<T> | PromiseLike<T>): Promise<T> {\r\n return Promise.resolve(waitable).then((value: T) => {\r\n if (this && !this.isDisposed) {\r\n return value\r\n } else {\r\n return motifError('MJX108');\r\n };\r\n }) as Promise<T>;\r\n }\r\n\r\n private _siblingsApi?: SiblingsApi;\r\n private _siblingsSet?: boolean;\r\n\r\n get siblings(): SiblingsApi {\r\n if (this._siblingsSet) { return this._siblingsApi as SiblingsApi; }\r\n if (this.isDisposed && !this.motif?.options) { return this._siblingsApi as SiblingsApi; }\r\n return this._siblingsApi ??= this._createSiblingsApi();\r\n }\r\n\r\n set siblings(value: SiblingsApi) {\r\n this._siblingsApi = value;\r\n this._siblingsSet = true;\r\n }\r\n\r\n private _createSiblingsApi(): SiblingsApi {\r\n return {\r\n all: () => { return this.parent?.controls.items },\r\n next: () => {\r\n if (!this.parent) return undefined;\r\n const idx = this.parent.controls.items.indexOf(this);\r\n return this.parent.controls.items[idx + 1];\r\n },\r\n prev: () => {\r\n if (!this.parent) return undefined;\r\n const idx = this.parent.controls.items.indexOf(this);\r\n return this.parent.controls.items[idx - 1];\r\n },\r\n nextAll: () => {\r\n if (!this.parent) return undefined as any;\r\n const idx = this.parent.controls.items.indexOf(this);\r\n return this.parent.controls.items.slice(idx + 1);\r\n },\r\n prevAll: () => {\r\n if (!this.parent) return undefined as any;\r\n const idx = this.parent.controls.items.indexOf(this);\r\n return this.parent.controls.items.slice(0, idx);\r\n }\r\n };\r\n }\r\n\r\n public get serviceProvider(): ServiceProvider | null {\r\n let c: ComponentBase | null = this as unknown as ComponentBase;\r\n while (c) {\r\n const p = (c as any).provider as ServiceProvider | undefined;\r\n if (p) return p;\r\n const recorded = teardownApplications.get(c);\r\n if (recorded) return recorded.state === 'disposed' ? null : recorded.provider;\r\n c = c.parent;\r\n }\r\n try { return Application.main?.provider ?? null; } catch { return null; }\r\n }\r\n\r\n public getService<T>(token: (abstract new (...args: any) => T) | { prototype: T }): T | null;\r\n public getService<T = any>(token: string | symbol | object): T | null;\r\n public getService(token: any): any {\r\n try {\r\n\r\n const sp = this.serviceProvider;\r\n if (sp) {\r\n return sp._getFor(this, token);\r\n }\r\n reportWarning('MJX407', [describeServiceToken(token)], { token });\r\n } catch (err) {\r\n reportWarning('MJX408', [describeServiceToken(token), String((err as any)?.message ?? err)], { token, error: err });\r\n }\r\n return null;\r\n }\r\n $(selector: string) {\r\n if (this.isDisposed || !this.element) {\r\n return {\r\n fromDom: () => null,\r\n fromComponent: () => [] as ComponentBase[]\r\n };\r\n }\r\n var result = {\r\n fromDom: () => {\r\n var findContainer = findAppendableComponent(this)?.element;\r\n var findingTarget;\r\n if (!findContainer) {\r\n findingTarget = document;\r\n } else {\r\n findingTarget = findContainer;\r\n }\r\n if (findingTarget) {\r\n var elements = findingTarget.querySelectorAll(selector);\r\n return elements;\r\n }\r\n return null;\r\n },\r\n fromComponent: () => {\r\n const findingComponent = findAppendableComponent(this);\r\n const root = findingComponent ?? this;\r\n const found: ComponentBase[] = [];\r\n const walk = (cmp: ComponentBase) => {\r\n const el = cmp.element as any;\r\n if (el && el.nodeType === Node.ELEMENT_NODE) {\r\n const matches: ((sel: string) => boolean) | undefined = (el.matches || el.msMatchesSelector || el.webkitMatchesSelector);\r\n if (typeof matches === 'function') {\r\n try { if (matches.call(el, selector)) { found.push(cmp); } } catch { }\r\n }\r\n }\r\n if (cmp.controls && cmp.controls.items && cmp.controls.items.length) {\r\n for (const child of cmp.controls.items) { walk(child); }\r\n }\r\n };\r\n\r\n walk(root);\r\n return found;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n private async _stopAnimations() {\r\n const t = peekTransition(this);\r\n try { t?.activeCssCancel?.(); } catch { }\r\n try {\r\n if (t?.activeAnimations?.length) {\r\n try {\r\n await Promise.all(t.activeAnimations.map(a =>\r\n a.finished?.catch(() => { })\r\n ));\r\n } catch { /* ignore */ }\r\n }\r\n\r\n } catch (error) {\r\n\r\n }\r\n if (this.isDisposed) return;\r\n if (t) t.activeAnimations = [];\r\n }\r\n // return this;\r\n\r\n}\r\n\r\nObject.defineProperty(ComponentBase.prototype, 'motif', {\r\n ...Object.getOwnPropertyDescriptor(ComponentBase.prototype, 'motif'),\r\n set(this: any, value: unknown) {\r\n this._motif = value;\r\n },\r\n});\r\n\r\n\r\nfunction findContentBlocks(root: ComponentBase, results: ComponentBase[] = []): ComponentBase[] {\r\n if (!root || root.isDisposed) return results;\r\n\r\n if (root.constructor.name === 'TransportTo') {\r\n results.push(root);\r\n }\r\n if (root.controls && root.controls.items) {\r\n root.controls.items.forEach(child => findContentBlocks(child, results));\r\n }\r\n\r\n return results;\r\n}\r\n\r\nasync function disposeContentBlocks(root: ComponentBase): Promise<any> {\r\n if (liveContentBlocks.live === 0) return;\r\n const contentBlocks = findContentBlocks(root);\r\n return await Promise.all(contentBlocks.map(async (block) => {\r\n block.motif.options.transition.skipNextLeave = root.motif.options.transition.skipNextLeave;\r\n for (const element of block.controls.items) {\r\n element.motif.options.transition.skipNextLeave = block.motif.options.transition.skipNextLeave;\r\n element.dispose({ skipLeaveTransition: true });\r\n element.isDisposed = true;\r\n }\r\n await block.dispose()\r\n }));\r\n}\r\n\r\nconst _appliedRefs = new WeakMap<object, Set<Function>>();\r\n\r\nexport function takePendingRefs(component: ComponentBase, ref: any): Function[] {\r\n const fns: Function[] = (Array.isArray(ref) ? ref : [ref]).filter((fn: any) => typeof fn === 'function');\r\n if (fns.length === 0) return fns;\r\n let applied = _appliedRefs.get(component);\r\n if (!applied) {\r\n applied = new Set();\r\n _appliedRefs.set(component, applied);\r\n }\r\n const pending: Function[] = [];\r\n for (const fn of fns) {\r\n if (applied.has(fn)) continue;\r\n applied.add(fn);\r\n pending.push(fn);\r\n }\r\n return pending;\r\n}\r\n\r\nexport function disposeUnplacedChilds(owner: ComponentBase, kids: unknown): void {\r\n if (!Array.isArray(kids) || !kids.some(kid => kid instanceof ComponentBase)) return;\r\n owner.motif.setDisposable(() => {\r\n for (const kid of kids) {\r\n if (kid instanceof ComponentBase && !kid.isDisposed && !kid.parent) kid.dispose();\r\n }\r\n });\r\n}\r\n\r\nconst isCallableRef = (ref: any): boolean => typeof ref === 'function' || Array.isArray(ref);\r\n\r\nexport function extractRefs(props: any, component?: ComponentBase): any[] {\r\n const refs: any[] = [];\r\n if (!props || typeof props !== 'object') return refs;\r\n if (Object.prototype.hasOwnProperty.call(props, 'ref')) {\r\n if (isCallableRef(props.ref)) {\r\n refs.push(props.ref);\r\n delete props.ref;\r\n } else if (component && props.ref && typeof props.ref === 'object') {\r\n props.ref = component;\r\n }\r\n }\r\n const runover = props.runover;\r\n if (runover && typeof runover === 'object' && Object.prototype.hasOwnProperty.call(runover, 'ref')) {\r\n if (isCallableRef(runover.ref)) {\r\n refs.push(runover.ref);\r\n const rest = { ...runover };\r\n delete rest.ref;\r\n props.runover = rest;\r\n } else if (component && runover.ref && typeof runover.ref === 'object') {\r\n runover.ref = component;\r\n }\r\n }\r\n return refs.length === 0 ? refs : ([] as any[]).concat(...refs);\r\n}\r\n\r\nconst LIFECYCLE_HANDLER_LISTS: Record<string, keyof LifecycleStorage> = {\r\n 'initializecomponent': '_initializeComponentHandlers',\r\n 'oninitializecomponent': '_onInitializeComponentHandlers',\r\n 'onbuilding': '_onBuildingHandlers',\r\n 'onbuilt': '_onBuiltHandlers',\r\n 'onmounted': '_onMountedHandlers',\r\n 'oninitializing': '_onInitializingHandlers',\r\n 'oninitialized': '_onInitializedHandlers',\r\n 'onconfig': '_onConfigHandlers',\r\n 'onconfigured': '_onConfiguredHandlers',\r\n 'onvisibilitychanged': '_onVisibilityChangedHandlers',\r\n 'onactivated': '_onActivatedHandlers',\r\n 'ondeactivated': '_onDeactivatedHandlers',\r\n 'ondisposing': '_onDisposingHandlers',\r\n 'ondisposed': '_onDisposedHandlers',\r\n};\r\n\r\nfunction collectLifecycleHandlers(component: ComponentBase, lowerKey: string, value: any): boolean {\r\n const listName = Object.prototype.hasOwnProperty.call(LIFECYCLE_HANDLER_LISTS, lowerKey) ? LIFECYCLE_HANDLER_LISTS[lowerKey] : undefined;\r\n if (!listName) return false;\r\n const fns: any[] = Array.isArray(value) ? value : [value];\r\n if (fns.length === 0 || !fns.every(fn => typeof fn === 'function')) return false;\r\n const target = component as any;\r\n let from = 0;\r\n if (listName === '_initializeComponentHandlers') {\r\n if (target._init === undefined && !target._baseCtx?._initializeComponentHandlers) {\r\n target._init = fns[0];\r\n from = 1;\r\n }\r\n }\r\n if (from >= fns.length) return true;\r\n const base = target._base;\r\n for (let i = from; i < fns.length; i++) {\r\n const fn = fns[i];\r\n if (listName === '_initializeComponentHandlers' && fn === target._init) continue;\r\n const slot: HookSlot | undefined = base[listName];\r\n if (slot === undefined) base[listName] = fn;\r\n else if (typeof slot === 'function') { if (slot !== fn) base[listName] = [slot, fn]; }\r\n else if (!slot.includes(fn)) slot.push(fn);\r\n }\r\n return true;\r\n}\r\n\r\nexport function ParseProps(props: any, component: ComponentBase): boolean {\r\n if (props) {\r\n var keys = Object.keys(props);\r\n if (keys.length === 0) return false;\r\n keys.forEach(key => {\r\n if (key == 'initializeComponent' || key == 'oninitializeComponent' || key.startsWith('on')) {\r\n if (collectLifecycleHandlers(component, key.toLowerCase(), props[key])) {\r\n delete props[key];\r\n return;\r\n }\r\n } else if (key == 'childs') {\r\n const flat: ComponentBase[] = ([] as any[]).concat(...props[key] as any);\r\n component.childs = flat;\r\n disposeUnplacedChilds(component, flat);\r\n delete props[key];\r\n } else if (key === 'transition') {\r\n applyTransitionProp(props[key], component);\r\n delete props[key];\r\n } else if (componentMethods.hasOwnProperty(key.toLowerCase()) || componentMethods.hasOwnProperty(\"on\" + key.toLowerCase())) {\r\n var eventKey;\r\n if (!key.toLowerCase().startsWith(\"on\") && key.toLowerCase() !== \"initializecomponent\") {\r\n eventKey = \"on\" + key;\r\n } else {\r\n eventKey = key;\r\n }\r\n (component as any)[eventKey] = props[key];\r\n delete props[key];\r\n } else if (key.startsWith(\"on\")) {\r\n\r\n component.motif.on(key as any, props[key]);\r\n } else if (key.startsWith(\"x-\")) {\r\n\r\n var nkey = key.replace(\"x-\", \"on\");\r\n if (key.toLowerCase() == \"x-wait\") {\r\n component.bindings.wait(props[key]);\r\n\r\n } else if (key.toLowerCase() == \"x-display\") {\r\n component.bindings.display(props[key]);\r\n } else {\r\n if (collectLifecycleHandlers(component, nkey.toLowerCase(), props[key])) {\r\n delete props[key];\r\n return;\r\n }\r\n }\r\n\r\n\r\n delete props[key];\r\n } else if (key.startsWith(\"runover\")) {\r\n\r\n ParseProps(props[key], component);\r\n delete props[key];\r\n } else if (key.startsWith(\"preconfig\")) {\r\n component.motif.options._preconfig = props[key];\r\n delete props[key];\r\n } else if (key === '__childExpr') {\r\n delete props[key];\r\n } else {\r\n // var callback = props[key];\r\n // if (typeof callback === \"function\") {\r\n // } else {\r\n }\r\n });\r\n return typeof props === 'object' && Reflect.ownKeys(props).length === 0;\r\n }\r\n return false;\r\n}\r\n\r\nconst _transitionSources = new WeakMap<ComponentBase, any>();\r\n\r\nfunction setTransition(component: ComponentBase, value: any, live: boolean): void {\r\n const transition = component.motif.options.transition;\r\n if (typeof value === 'string' && value.length > 0) {\r\n transition.name = value;\r\n if (live) transition.classes = undefined;\r\n } else if (value && typeof value === 'object') {\r\n if (typeof value.name === 'string' && value.name.length > 0) {\r\n transition.name = value.name;\r\n }\r\n if (!('mode' in value)) {\r\n transition.classes = value;\r\n } else {\r\n const { mode, ...classes } = value;\r\n if (isTransitionMode(mode)) {\r\n transition.mode = mode;\r\n }\r\n if (Object.keys(classes).length > 0) {\r\n transition.classes = classes;\r\n }\r\n }\r\n } else if (live) {\r\n transition.name = '';\r\n transition.classes = undefined;\r\n }\r\n}\r\n\r\nexport function applyTransitionProp(value: any, component: ComponentBase): void {\r\n if (!component || component.isDisposed) return;\r\n if (value === undefined || value === null) return;\r\n if (_transitionSources.get(component) === value) return;\r\n _transitionSources.set(component, value);\r\n if (typeof value === 'function') {\r\n component.bindings.watch(() => {\r\n const current = value();\r\n if (component.isDisposed) return;\r\n setTransition(component, current, true);\r\n });\r\n return;\r\n }\r\n setTransition(component, value, false);\r\n}\r\n\r\nexport function isComponentLike(value: any): boolean {\r\n if (value instanceof ComponentBase) return true;\r\n return Array.isArray(value) && value.length > 0 && value.every(x => x instanceof ComponentBase);\r\n}\r\n\r\nconst _textBindingWarned = new WeakSet<object>();\r\n\r\nfunction warnComponentInTextBinding(component: ComponentBase, value: any): void {\r\n if (_textBindingWarned.has(component)) return;\r\n _textBindingWarned.add(component);\r\n reportWarning('MJX204', [], { value: Array.isArray(value) ? `ComponentBase[${value.length}]` : 'ComponentBase' });\r\n}\r\n\r\nconst COMPONENT_OPTION_KEYS = ['hideStrategy', 'disableDisposal'] as const;\r\n\r\nexport function applyComponentOptions(source: any, component: ComponentBase): void {\r\n if (!source || typeof source !== 'object' || !component || component.isDisposed) return;\r\n for (const key of COMPONENT_OPTION_KEYS) {\r\n if (source[key] !== undefined) (component.motif.options as any)[key] = source[key];\r\n }\r\n}\r\n\r\n/** `applyPlainElementProps`'un DOM'a yazmayacağı çerçeve anahtarları. */\r\nconst PLAIN_ELEMENT_SKIP = new Set([\r\n 'ref', 'key', 'indexkey', 'inject', 'options', 'props', 'settings', 'isSvg',\r\n 'childs', 'initializeComponent', 'runover', 'transition', 'preconfig', 'nodes', 'onElementCreating'\r\n]);\r\n\r\nconst SPREAD_HTML_KEYS = new Set(['innerhtml', 'srcdoc']);\r\nconst SPREAD_URL_ATTRIBUTES = new Set(['href', 'src', 'action', 'formaction', 'xlink:href']);\r\nconst JAVASCRIPT_URL = /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i;\r\n\r\nfunction isJavascriptUrl(value: unknown): boolean {\r\n if (value === undefined || value === null || typeof value === 'boolean') return false;\r\n try { return JAVASCRIPT_URL.test(String(value)); } catch { return false; }\r\n}\r\n\r\nfunction guardSpreadUrl(key: string, read: () => any): () => any {\r\n return () => {\r\n let value = read();\r\n if (typeof value === 'function') value = value();\r\n if (typeof value === 'function') value = value();\r\n if (!isJavascriptUrl(value)) return value;\r\n reportWarning('MJX125', [key]);\r\n return null;\r\n };\r\n}\r\n\r\nexport function applyPlainElementProps(props: any, component: ComponentBase): void {\r\n if (!props || typeof props !== 'object' || component.isDisposed) return;\r\n const keys = Object.keys(props);\r\n if (keys.length === 0) return;\r\n let attrs: Record<string, any> | null = null;\r\n let applied: Map<string, any> | null = null;\r\n for (const key of keys) {\r\n if (PLAIN_ELEMENT_SKIP.has(key)) continue;\r\n if (key.startsWith('x-') || key.startsWith('x:') || key.startsWith('__')) continue;\r\n let v = props[key];\r\n if (v === undefined) continue;\r\n if (/^on/i.test(key)) {\r\n if (typeof v === 'function') component.motif.on(key as any, v as any);\r\n continue;\r\n }\r\n if (typeof v === 'function' && v.length > 0) continue;\r\n const lowerKey = key.toLowerCase();\r\n if (SPREAD_HTML_KEYS.has(lowerKey)) {\r\n reportWarning('MJX124', [key]);\r\n continue;\r\n }\r\n if (SPREAD_URL_ATTRIBUTES.has(lowerKey)) {\r\n if (typeof v === 'function') {\r\n v = guardSpreadUrl(key, v);\r\n } else if (isJavascriptUrl(v)) {\r\n reportWarning('MJX125', [key]);\r\n continue;\r\n }\r\n }\r\n (applied ??= appliedDomProps(component)).set(key, v);\r\n if (key === 'class' || key === 'className') {\r\n component.class.add(v && typeof v === 'object' && !Array.isArray(v) ? [v] : v);\r\n } else if (key === 'style') {\r\n component.style(v);\r\n } else if (key === 'value' || key === 'checked' || key === 'selected') {\r\n component.bindings.add(key, v);\r\n } else {\r\n (attrs ??= {})[key] = v;\r\n }\r\n }\r\n if (attrs) component.attr.add(attrs);\r\n}\r\n\r\nconst _appliedDomProps = new WeakMap<ComponentBase, Map<string, any>>();\r\nfunction appliedDomProps(component: ComponentBase): Map<string, any> {\r\n let m = _appliedDomProps.get(component);\r\n if (!m) { m = new Map(); _appliedDomProps.set(component, m); }\r\n return m;\r\n}\r\n\r\n/** Bileşen etiketinden köke düşen ortak öznitelikler. */\r\nconst FALLTHROUGH_KEYS = new Set(['class', 'className', 'style', 'id', 'tabindex', 'role']);\r\nfunction isFallthroughKey(key: string): boolean {\r\n return FALLTHROUGH_KEYS.has(key) || key.startsWith('aria-') || key.startsWith('data-');\r\n}\r\n\r\nlet constructingComponentRoot = false;\r\n\r\nexport function constructComponentRoot<T>(make: () => T): T {\r\n constructingComponentRoot = true;\r\n try {\r\n return make();\r\n } finally {\r\n constructingComponentRoot = false;\r\n }\r\n}\r\n\r\nexport function applyFallthroughProps(props: any, component: ComponentBase): void {\r\n if (!props || typeof props !== 'object' || component.isDisposed) return;\r\n const applied = _appliedDomProps.get(component);\r\n let subset: Record<string, any> | null = null;\r\n for (const key of Object.keys(props)) {\r\n if (!isFallthroughKey(key)) continue;\r\n const v = props[key];\r\n if (v === undefined || v === null) continue;\r\n if (typeof v === 'function' && v.length > 0) continue;\r\n if (applied && applied.has(key) && Object.is(applied.get(key), v)) continue;\r\n (subset ??= {})[key] = v;\r\n }\r\n if (subset) applyPlainElementProps(subset, component);\r\n}\r\n\r\nconst componentMethods: Record<string, unknown> = {\r\n \"oninitializecomponent\": (sender: ComponentBase, e: EventArgs) => { },\r\n \"initializecomponent\": (sender: ComponentBase, e: EventArgs) => { },\r\n \"onconfigured\": (sender: ComponentBase, e: EventArgs) => { },\r\n \"onconfig\": (sender: ComponentBase, e: EventArgs) => { },\r\n \"onbuilding\": (sender: ComponentBase, e: EventArgs) => { },\r\n \"onbuilt\": (sender: ComponentBase, e: EventArgs) => { },\r\n \"onmounted\": (sender: ComponentBase, e: EventArgs) => { },\r\n \"oninitializing\": (sender: ComponentBase, e: EventArgs) => { },\r\n \"oninitialized\": (sender: ComponentBase, e: EventArgs) => { },\r\n \"ondisposing\": (sender: ComponentBase, e: EventArgs) => { },\r\n \"ondisposed\": (sender: ComponentBase, e: EventArgs) => { },\r\n \"onvisibilitychanged\": (sender: ComponentBase, e: EventArgs) => { },\r\n \"ondeactivated\": (sender: ComponentBase, e: EventArgs) => { },\r\n \"onactivated\": (sender: ComponentBase, e: EventArgs) => { },\r\n};\r\n\r\n\r\nfunction findAppendableComponent(component: ComponentBase): ComponentBase | null | undefined {\r\n\r\n return safeCall<ComponentBase | null | undefined>(() => {\r\n if (!component || component.isDisposed) return null;\r\n if (component.element.nodeType !== Node.COMMENT_NODE && component.element.nodeType !== Node.DOCUMENT_FRAGMENT_NODE && component.element.nodeType !== Node.TEXT_NODE) {\r\n return component;\r\n } else if (component.parent) {\r\n return findAppendableComponent(component.parent);\r\n }\r\n return null;\r\n }, 'findAppendableComponent', null);\r\n\r\n}\r\n\r\n\r\nfunction findParentElement(component: ComponentBase): ComponentBase | null {\r\n\r\n try {\r\n if (component.isDisposed) return null;\r\n if (component.element.nodeType !== Node.COMMENT_NODE && component.element.nodeType !== Node.DOCUMENT_FRAGMENT_NODE && component.element.nodeType !== Node.TEXT_NODE) {\r\n return component;\r\n } else if (component.parent) {\r\n return findParentElement(component.parent);\r\n }\r\n } catch (error) {\r\n throw error;\r\n }\r\n return null;\r\n}\r\n\r\n\r\ntype AttachWaiter = { element: Element; callback: () => any };\r\nconst attachWaiters = new Set<AttachWaiter>();\r\nlet attachObserver: MutationObserver | null = null;\r\n\r\nfunction releaseAttachObserver() {\r\n if (attachWaiters.size || !attachObserver) { return; }\r\n try { attachObserver.disconnect(); } catch { /* ignore */ }\r\n attachObserver = null;\r\n}\r\n\r\nfunction flushAttachWaiters() {\r\n for (const waiter of [...attachWaiters]) {\r\n if (!attachWaiters.has(waiter) || !document.contains(waiter.element)) { continue; }\r\n attachWaiters.delete(waiter);\r\n try {\r\n waiter.callback();\r\n } catch (error) {\r\n queueMicrotask(() => { throw error; });\r\n }\r\n }\r\n releaseAttachObserver();\r\n}\r\n\r\nfunction onElementAttached(element: Element, callback: () => any): (() => void) | null {\r\n if (document.contains(element)) {\r\n callback();\r\n return null;\r\n }\r\n\r\n const waiter: AttachWaiter = { element, callback };\r\n attachWaiters.add(waiter);\r\n if (!attachObserver) {\r\n attachObserver = new MutationObserver(flushAttachWaiters);\r\n attachObserver.observe(document.documentElement, {\r\n childList: true,\r\n subtree: true,\r\n });\r\n }\r\n\r\n return () => {\r\n if (attachWaiters.delete(waiter)) { releaseAttachObserver(); }\r\n };\r\n}\r\n\r\nexport function notifyActivated(component: ComponentBase): void {\r\n unpinServiceOwner(component);\r\n ComponentHelper.activateTree(component);\r\n}\r\nexport function notifyDeactivated(component: ComponentBase): void {\r\n pinServiceOwner(component);\r\n ComponentHelper.deactivateTree(component);\r\n}","import { ComponentBase } from \"./componentBase\";\nimport { reportError } from \"../common/diagnostics\";\n\nconst MAX_FACTORY_DEPTH = 100;\n\nexport function resolveComponent(input: unknown, props?: any): any {\n let current: any = input;\n let depth = 0;\n while (typeof current === \"function\") {\n if (current.prototype instanceof ComponentBase) {\n return new current(props);\n }\n if (++depth > MAX_FACTORY_DEPTH) {\n reportError('MJX112', undefined, MAX_FACTORY_DEPTH);\n return current;\n }\n current = current(props);\n }\n return current;\n}","import { dom } from \"../\";\nimport { ComponentBase, IBaseProp, ParseProps, applyComponentOptions, applyFallthroughProps, applyTransitionProp, extractRefs, safeCallSilent, takePendingRefs, untracked } from \"../\";\nimport { constructComponentRoot, disposeUnplacedChilds } from \"./componentBase\";\nimport { resolveComponent } from \"./resolveComponent\";\nimport { ElementType, EventArgs } from \"./types\";\nimport { callReported, motifError } from \"../common/diagnostics\";\n\nconst SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n\nfunction readElementTag(ctor: any): string | undefined {\n try {\n const tag = ctor?.elementTag;\n if (typeof tag === 'string') {\n const trimmed = tag.trim();\n if (trimmed) return trimmed;\n }\n } catch { /* ignore */ }\n return undefined;\n}\n\nfunction createDeclaredElement(tag: string, ctor: any, props: any): any {\n const declaredNs = typeof ctor?.elementNamespace === 'string' && ctor.elementNamespace\n ? ctor.elementNamespace as string\n : undefined;\n const isSvg = declaredNs === SVG_NAMESPACE || props?.options?.isSvg === true || props?.__isSvgElement === true;\n if (isSvg) {\n if (props && typeof props === 'object') { (props as any).isSvg = true; }\n return dom.createElementNS(declaredNs || SVG_NAMESPACE, tag, props);\n }\n return dom.createElement(tag, props);\n}\n\nexport class Component<TElement extends ElementType = any, TProps extends object = any> extends ComponentBase<TElement, TProps> {\n\n public static elementTag?: string;\n public static elementNamespace?: string;\n public static _placesChilds?: boolean;\n\n constructor(elementOrParams: TElement | string | IBaseProp<TProps>);\n constructor(element: TElement | string, options: IBaseProp<TProps>);\n constructor(elementOrParams: TElement | string | IBaseProp<TProps>, options?: IBaseProp<TProps>);\n constructor(elementOrParams?: TElement | string | IBaseProp<TProps>, options?: IBaseProp<TProps>);\n constructor() {\n const derivedCtor: any = new.target;\n var args = arguments;\n var elementOrParams;\n var options;\n if (args.length === 1) {\n elementOrParams = args[0];\n } else if (args.length === 2) {\n elementOrParams = args[0];\n options = args[1];\n }\n\n if (elementOrParams instanceof Function) {\n elementOrParams = resolveComponent(elementOrParams, options);\n if (isOptionsObject(elementOrParams)) {\n return materializeOptionsObject(elementOrParams, options);\n }\n }\n if (Array.isArray(elementOrParams)) {\n const letter = CreateFragment();\n super(letter, {} as TProps);\n var ops = Object.create(options || {});\n for (const key in elementOrParams) {\n const element = elementOrParams[key];\n this.controls.add(new Component(element, ops as any));\n }\n } else\n if (typeof elementOrParams === 'string' && elementOrParams.trim().length > 0) {\n // İlk parametre element ise\n if (!options) { options = {} as any; }\n\n if (options?.options && options.options.isSvg || options?.__isSvgElement) {\n const el = dom.createElementNS('http://www.w3.org/2000/svg', elementOrParams, options);\n (options as any)['isSvg'] = true;\n super(el as TElement, options as TProps);\n } else {\n const el = dom.createElement(elementOrParams, options);\n\n super(el as TElement, options as TProps);\n }\n // DOM prop'ları (spread/attr) ComponentBase ctor'ında uygulanır: düz Component'ta tümü,\n // alt sınıflarda yalnızca ortak öznitelikler (applyFallthroughProps).\n } else if (elementOrParams instanceof Node) {\n super(elementOrParams as any, options as TProps);\n } else if (elementOrParams instanceof ComponentBase) {\n // Hazır instance geldi; olduğu gibi kullan\n return elementOrParams as any;\n }\n else {\n // Constructor'a element verilmedi (undefined/null/boş) ya da element olarak\n // tanınmayan bir değer geldi. bu iki olasılığa neden olur :\n // a) Sınıf bir element türü bildirmiş → o türde gerçek element üretilir\n // b) Bildirmemiş → FRAGMENT: kök yorum düğümü (yer tutucu),\n // çocuklar açılış/kapanış işaretçileri arasına render edilir\n // Her bileşenin bir elementi olmak zorunda olduğundan, fragment kök olarak yorum düğümü kullanılır.\n // props hangi argümanda olduğu çağrı biçimine göre değişir:\n // new Component({ ...props }) → props İLK argüman\n // super(void 0, props) / super(null, props) → props İKİNCİ argüman\n const fragmentProps = (elementOrParams && typeof elementOrParams === 'object')\n ? elementOrParams\n : options;\n\n // Sınıf bir element türü bildirdiyse (statik elementTag — derleyici\n // Component<HTMLDivElement> generic'inden üretir fragment yerine\n // O TÜRDE gerçek element oluşturulur.\n const declaredTag = readElementTag(derivedCtor);\n if (declaredTag) {\n const declaredEl = createDeclaredElement(declaredTag, derivedCtor, fragmentProps);\n super(declaredEl as TElement, (fragmentProps ?? {}) as TProps);\n } else {\n super(CreateFragment(), (fragmentProps ?? {}) as TProps);\n }\n\n // Her iki durumda da JSX çocukları (props.childs) içeriğe eklenir.\n // Alt sınıflar initializeComponent'i ezdiği için FragmentNode.initializeComponent'e güvenilemez.\n const kids = this.childs;\n if (Array.isArray(kids) && kids.length) {\n if (derivedCtor?._placesChilds !== true) {\n for (const kid of kids) {\n if (kid) this.controls.add(kid);\n }\n }\n }\n }\n }\n\n\n}\n\n\ntype viewFn<P extends object> = (props: P) => any;\n\nexport function FNComponent<P extends object>(view: viewFn<P>) {\n\n return (props: P) => {\n //debugger; \n var comp = motifFragment({\n ...props as any,\n });\n comp.controls.add(view(props) as any);\n return comp;\n };\n}\n\nfunction applyJsxFrameworkProps(target: any, props: any, refs: any[]): any {\n if (!props || typeof props !== 'object') return target;\n if (!(target instanceof ComponentBase)) return target;\n\n applyRefs(target, refs.concat(extractRefs(props)));\n disposeUnplacedChilds(target, (props as any).childs);\n\n // Fonksiyon bileşeni etiketindeki ortak öznitelikler (class/id/aria-*…) döndürülen köke düşer.\n // Kök `<div {...props}/>` ise aynı değerler zaten uygulanmıştır; ikinci kez uygulanmaz.\n applyFallthroughProps(props, target as ComponentBase);\n applyComponentOptions((props as any).options, target as ComponentBase);\n if (Object.prototype.hasOwnProperty.call(props, 'transition')) {\n applyTransitionProp((props as any).transition, target as ComponentBase);\n }\n\n const runover = (props as any).runover;\n if (!runover || typeof runover !== 'object') return target;\n\n const configuredBefore = handlerCount(target, '_onConfigHandlers');\n const initializingBefore = handlerCount(target, '_onInitializingHandlers');\n const initializedBefore = handlerCount(target, '_onInitializedHandlers');\n ParseProps(runover, target as ComponentBase);\n\n callAddedHandlers(target, '_onInitializingHandlers', initializingBefore, 'onInitializing');\n callAddedHandlers(target, '_onInitializedHandlers', initializedBefore, 'onInitialized');\n\n // Fonksiyon bileşeninin kökü düz bir `Component` olduğunda config aşaması yapıcıda\n // ÇOKTAN çalışmıştır (`isConfigured`); sonradan kaydedilen preconfig/onConfig bir daha\n // çağrılmayacağı için burada elle koşulur. Yalnızca yeni eklenenler çalıştırılır.\n if ((target as any).isConfigured) {\n const pre = (target as any).motif.options?._preconfig;\n if (typeof pre === 'function') {\n safeCallSilent(() => pre(target), 'motifComponent.preconfig');\n }\n for (let i = configuredBefore; i < handlerCount(target, '_onConfigHandlers'); i++) {\n const fn = hookList(target, '_onConfigHandlers')[i];\n callReported(() => fn(target, { cancel: false } as EventArgs), 'MJX122', 'onConfig');\n }\n }\n return target;\n}\n\nfunction applyRefs(target: any, refs: any[]): any {\n if (target instanceof ComponentBase) {\n for (const fn of takePendingRefs(target, refs)) {\n callReported(() => fn(target), 'MJX122', 'ref');\n }\n }\n return target;\n}\n\nfunction hookList(target: any, listName: string): any[] {\n const slot = target._base?.[listName];\n return !slot ? [] : typeof slot === 'function' ? [slot] : slot;\n}\n\nfunction handlerCount(target: any, listName: string): number {\n return hookList(target, listName).length;\n}\n\nfunction callAddedHandlers(target: any, listName: string, from: number, hook: string): void {\n for (let i = from; i < handlerCount(target, listName); i++) {\n if (target.isDisposed) return;\n const fn = hookList(target, listName)[i];\n callReported(() => fn(target, { cancel: false } as EventArgs), 'MJX122', hook);\n }\n}\n\nfunction resolveChildExpression(probe: any): any {\n if (typeof probe !== 'function') return undefined;\n let value: any;\n try { value = untracked(probe); } catch { return undefined; }\n if (value instanceof ComponentBase) return value;\n if (Array.isArray(value) && value.length > 0 && value.every(x => x instanceof ComponentBase)) return value;\n return undefined;\n}\n\nexport function motifComponent(element: unknown, props?: any, lone?: number) {\n\n // Etiket adı: element yaratımı (HTML/SVG) ve spread prop uygulaması Component ctor'ının string parametresinde\n if (typeof element === \"string\") {\n if (typeof props === \"function\") {\n const compiled = new Component(element);\n (compiled as any)._init = props;\n return compiled;\n }\n if (lone === 1 && props !== null && typeof props === \"object\") {\n const init = props.initializeComponent;\n if (typeof init === \"function\") {\n const compiled = new Component(element);\n (compiled as any)._init = init;\n return compiled;\n }\n }\n if (element === \"text\" && props && props.__childExpr) {\n const resolved = resolveChildExpression(props.__childExpr);\n if (resolved !== undefined) return resolved;\n }\n return new Component(element, props);\n }\n\n if (element instanceof ComponentBase || element instanceof Component) {\n return element;\n }\n\n // Class component → new, function component/factory → çağır (try/catch tespiti yok)\n if (typeof element === \"function\") {\n const refs = element.prototype instanceof ComponentBase ? [] : extractRefs(props);\n const el = resolveComponent(element, props);\n if (typeof el == \"object\" && el !== null && 'el' in el) {\n return applyRefs(materializeOptionsObject(el, props), refs);\n }\n // Sınıf bileşeninde props yapıcıda işlendi; fonksiyon bileşeninde ise dış etiketin\n // çerçeve prop'ları (direktifler, initializeComponent, yaşam döngüsü) hiçbir yere uygulanmamıştı.\n return applyJsxFrameworkProps(el, props, refs);\n }\n\n if (typeof element == \"object\" && element !== null && 'el' in element) {\n return materializeOptionsObject(element, props);\n }\n return new Component(element, props);\n}\n\nfunction isOptionsObject(value: unknown): boolean {\n return typeof value == \"object\" && value !== null && !(value instanceof ComponentBase) && 'el' in value;\n}\n\nexport function unwrapModule(result: any): any {\n if (result && typeof result === \"object\" && !(result instanceof ComponentBase) && result.default != null) {\n return result.default;\n }\n return result;\n}\n\nfunction describeLoaded(value: any): string {\n if (value === null) return 'null';\n if (Array.isArray(value)) return 'array';\n if (typeof value === \"object\" && (Object.prototype.toString.call(value) === '[object Module]' || value.__esModule)) return 'module';\n return typeof value;\n}\n\nexport function assertLoadedComponent(value: unknown): void {\n if (value === null || typeof value !== \"object\") return;\n if (value instanceof ComponentBase || Array.isArray(value) || value instanceof Node) return;\n if (typeof (value as any).then === \"function\") return;\n throw motifError('MJX127', describeLoaded(value));\n}\n\nexport function resolveToComponent(input: unknown, props?: any): any {\n const resolved = resolveComponent(input, props);\n if (isOptionsObject(resolved)) {\n return materializeOptionsObject(resolved, undefined);\n }\n return resolved;\n}\n\nfunction materializeOptionsObject(spec: any, props: any): any {\n const result: any = typeof spec.el === 'string'\n ? constructComponentRoot(() => motifComponent(spec.el, props))\n : motifComponent(spec.el, props);\n Object.getOwnPropertyNames(spec).forEach(key => {\n if (key !== 'el' && key !== 'ctor') {\n result[key] = spec[key];\n }\n });\n if (typeof spec.ctor === 'function') {\n callReported(() => spec.ctor.call(result, props), 'MJX122', 'ctor');\n }\n return result;\n}\nexport function motifFragment(props?: any) {\n return new FragmentNode(props);\n}\n\nfunction CreateFragment() {\n const fragment = dom.createComment(\"\");\n return fragment;\n}\n\nexport class FragmentNode<TProps extends object = any> extends Component<Comment, TProps> {\n\n constructor(options?: IBaseProp<TProps>);\n constructor(element: any, props: any);\n constructor(arg1?: any, arg2?: any) {\n if (arguments.length <= 1) {\n super(CreateFragment() as any, arg1 as any);\n } else {\n super(CreateFragment() as any, arg2 as any);\n }\n }\n\n public override initializeComponent(sender: ComponentBase): void {\n const s = (this as any).childs as ComponentBase[] | undefined;\n if (Array.isArray(s) && s.length) {\n for (const child of s) {\n if (child) this.controls.add(child);\n }\n }\n safeCallSilent(() => {\n const nodes = (this.props as any)?.nodes as any[] | undefined;\n if (Array.isArray(nodes) && nodes.length) {\n for (const n of nodes) {\n if (n) this.controls.add(n);\n }\n }\n }, 'Fragment.initializeComponent.props.nodes');\n }\n}\n\n\nexport class motifDocument {\n public router: any = {};\n public context: any = {};\n public run(appElement: Node, app: Component): Component {\n const MainApp = new Component(appElement, {});\n app.parent = MainApp;\n MainApp.controls.add(app);\n //const renderer = new motifRenderer();\n //renderer.render(MainApp);\n MainApp.build();\n return MainApp;\n //console.warn(\"MainApp:\", MainApp);\n }\n}\n","import { IDisposable } from \"../\";\r\nimport { errorHandler } from \"../common/ErrorHandler\";\r\nimport { motifError, reportError } from \"../common/diagnostics\";\r\n\r\nconst glblths = globalThis as any;\r\nfunction getCurrentDom() {\r\n if (glblths && glblths.motifDom) {\r\n return glblths.motifDom.window.document;\r\n }\r\n return glblths.document;\r\n}\r\n\r\nexport function setDom(dom: any) {\r\n if (glblths) {\r\n glblths.motifDom = dom;\r\n }\r\n}\r\n\r\nexport const dom = {\r\n get window() {\r\n if (glblths && glblths.window) {\r\n return glblths.window;\r\n } else if (glblths && glblths) {\r\n return glblths.motifDom.window;\r\n } else {\r\n return glblths;\r\n }\r\n },\r\n _created: new Map<any, any>(),\r\n document: getCurrentDom(),\r\n createElement(tagName: string, options?: any): any {\r\n const doc = getCurrentDom();\r\n if (!doc) {\r\n throw motifError('MJX101', tagName);\r\n }\r\n if (tagName === \"text\") {\r\n return doc.createTextNode('');\r\n }\r\n if (!this._created.has(tagName)) {\r\n const view = doc.createElement(tagName, options);\r\n this._created.set(tagName, view);\r\n }\r\n const tpl = this._created.get(tagName);\r\n return tpl.cloneNode(false);\r\n },\r\n\r\n createDocumentFragment(): any {\r\n try {\r\n var cd = getCurrentDom();\r\n if (cd) {\r\n return cd.createDocumentFragment();\r\n }\r\n } catch (error) {\r\n errorHandler.reportSuppressed('dom.createDocumentFragment', error);\r\n }\r\n\r\n },\r\n createComment(content: any) {\r\n try {\r\n return getCurrentDom()?.createComment(content)\r\n } catch (error) {\r\n errorHandler.reportSuppressed('dom.createComment', error);\r\n }\r\n\r\n },\r\n createTextNode(content: any) {\r\n try {\r\n return getCurrentDom()?.createTextNode(content)\r\n } catch (error) {\r\n errorHandler.reportSuppressed('dom.createTextNode', error);\r\n }\r\n\r\n },\r\n querySelectorAll(selectors: string) {\r\n try {\r\n return getCurrentDom()?.querySelectorAll(selectors)\r\n } catch (error) {\r\n errorHandler.reportSuppressed('dom.querySelectorAll', error);\r\n }\r\n\r\n },\r\n createElementNS(namepsaceUri: string, tagName: string, options?: any): any {\r\n try {\r\n return getCurrentDom()?.createElementNS(namepsaceUri, tagName, options)\r\n } catch (error) {\r\n reportError('MJX103', error, tagName);\r\n }\r\n\r\n },\r\n convertToSvgElement(element: Element): Element {\r\n\r\n const SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\r\n const tagName = element.tagName.toLowerCase();\r\n const newSvgElement = document.createElementNS(SVG_NAMESPACE, tagName);\r\n\r\n for (const attr of element.attributes) {\r\n newSvgElement.setAttribute(attr.name, attr.value);\r\n }\r\n\r\n while (element.firstChild) {\r\n newSvgElement.appendChild(element.firstChild);\r\n }\r\n\r\n const parent = element.parentNode;\r\n if (parent) {\r\n parent.replaceChild(newSvgElement, element);\r\n }\r\n\r\n return newSvgElement;\r\n },\r\n\r\n get body() {\r\n return getCurrentDom()?.body;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\nconst SELECTOR_REGEX = /([\\w\\-]+)?(#([\\w\\-]+))?((\\.([\\w\\-]+))*)/;\r\nexport enum Namespace {\r\n HTML = 'http://www.w3.org/1999/xhtml',\r\n SVG = 'http://www.w3.org/2000/svg'\r\n}\r\n\r\n\r\nfunction _$<T extends Element>(namespace: Namespace, description: string, attrs?: { [key: string]: any }, ...children: Array<Node | string>): T {\r\n const match = SELECTOR_REGEX.exec(description);\r\n\r\n if (!match) {\r\n throw motifError('MJX102', description);\r\n }\r\n\r\n const tagName = match[1] || 'div';\r\n let result: T;\r\n\r\n if (namespace !== Namespace.HTML) {\r\n result = dom.createElementNS(namespace as string, tagName) as T;\r\n } else {\r\n result = dom.createElement(tagName) as unknown as T;\r\n }\r\n\r\n if (match[3]) {\r\n result.id = match[3];\r\n }\r\n if (match[4]) {\r\n result.className = match[4].replace(/\\./g, ' ').trim();\r\n }\r\n if (attrs) {\r\n Object.entries(attrs).forEach(([name, value]) => {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n\r\n if (/^on\\w+$/.test(name)) {\r\n (<any>result)[name] = value;\r\n } else if (name === 'selected') {\r\n if (value) {\r\n result.setAttribute(name, 'true');\r\n }\r\n\r\n } else {\r\n result.setAttribute(name, value);\r\n }\r\n });\r\n }\r\n result.append(...children);\r\n return result as T;\r\n}\r\n\r\nexport function $<T extends HTMLElement>(description: string, attrs?: { [key: string]: any }, ...children: Array<Node | string>): T {\r\n return _$(Namespace.HTML, description, attrs, ...children);\r\n}\r\n\r\n\r\n\r\nclass DomListener implements IDisposable {\r\n\r\n private _handler: (e: any) => void;\r\n private _node: EventTarget;\r\n private readonly _type: string;\r\n private readonly _options: boolean | AddEventListenerOptions;\r\n\r\n constructor(node: EventTarget, type: string, handler: (e: any) => void, options?: boolean | AddEventListenerOptions) {\r\n this._node = node;\r\n this._type = type;\r\n this._handler = handler;\r\n this._options = (options || false);\r\n this._node.addEventListener(this._type, this._handler, this._options);\r\n }\r\n\r\n dispose(): void {\r\n if (!this._handler) {\r\n // Already disposed\r\n return;\r\n }\r\n\r\n this._node.removeEventListener(this._type, this._handler, this._options);\r\n\r\n // Prevent leakers from holding on to the dom or handler func\r\n this._node = null!;\r\n this._handler = null!;\r\n }\r\n}\r\n\r\nexport function addDisposableListener<K extends keyof GlobalEventHandlersEventMap>(node: EventTarget, type: K, handler: (event: GlobalEventHandlersEventMap[K]) => void, useCapture?: boolean): IDisposable;\r\nexport function addDisposableListener(node: EventTarget, type: string, handler: (event: any) => void, useCapture?: boolean): IDisposable;\r\nexport function addDisposableListener(node: EventTarget, type: string, handler: (event: any) => void, options: AddEventListenerOptions): IDisposable;\r\nexport function addDisposableListener(node: EventTarget, type: string, handler: (event: any) => void, useCaptureOrOptions?: boolean | AddEventListenerOptions): IDisposable {\r\n return new DomListener(node, type, handler, useCaptureOrOptions);\r\n}\r\n\r\n\r\n\r\n","// import { dom } from \"../browser\";\nimport { TRANSITION_SLOT } from \"../component/optionsSlots\";\n// import { effect } from \"../store\";\nimport { dom } from \"../\";\nimport { Component, ComponentBase, resolveComponent, notifyDeactivated } from \"../\";\nimport { reportError } from \"../common/diagnostics\";\nimport { checkReservedMembers, domAnchor } from \"../component/componentBase\";\n\nexport class ControlCollection {\n constructor(private owner: ComponentBase) {\n\n }\n items: ComponentBase[] = [];\n\n add(...control: ComponentBase[]): ComponentBase[]\n add(index?: number, ...control: ComponentBase[]): ComponentBase[]\n add(): ComponentBase[] {\n const count = arguments.length;\n if (count === 0) return [] as ComponentBase[];\n const first = arguments[0];\n if (count === 1 && first instanceof ComponentBase) {\n if (first.isDisposed) return [] as ComponentBase[];\n return [this._insertOne(undefined, first)];\n }\n const args = Array.from(arguments) as any[];\n if (typeof args[0] === 'number' && args.length > 1) {\n const index = args[0] as number;\n const children = ([] as ComponentBase[]).concat(...args.slice(1));\n return this.insert(index, ...children);\n } else {\n const children = ([] as ComponentBase[]).concat(...args);\n return this.insert(undefined, ...children);\n }\n }\n insert(index?: number, ...controls: ComponentBase[]): ComponentBase[] {\n const flat: ComponentBase[] = ([] as any[]).concat(...controls as any);\n return flat.filter(x => x != undefined && !x.isDisposed).map(control => this._insertOne(index, control));\n }\n private _insertOne(index: number | undefined, control: ComponentBase): ComponentBase {\n control = resolveComponent(control);\n if (typeof control == 'string' || typeof control == 'number' || typeof control == 'boolean' || typeof control == 'bigint') {\n control = new Component(dom.createTextNode(control), null as any);\n }\n checkReservedMembers(control);\n if (control.parent) { control.parent.controls.detach(control); }\n\n if (index != undefined && index >= 0) {\n this.items.splice(index, 0, control);\n } else {\n this.items.push(control);\n }\n control.parent = this.owner;\n\n const pendingLeave = (control as any).__pendingLeave as PendingLeave | undefined;\n if (pendingLeave) {\n if (this.onAddBeforeBuild && !this.owner.isBuilt) {\n this.onAddBeforeBuild(control);\n }\n pendingLeave.promise.then(() => {\n if (control.isDisposed || this.owner.isDisposed || control.parent !== this.owner) return;\n if (this.onAdd && this.owner.isBuilt) this.onAdd(control);\n });\n return control;\n }\n\n if (this.onAdd && this.owner.isBuilt) {\n this.onAdd(control);\n }\n\n if (this.onAddBeforeBuild && !this.owner.isBuilt) {\n this.onAddBeforeBuild(control);\n }\n return control;\n }\n remove(control: ComponentBase) {\n var index = this.items.indexOf(control);\n if (index > -1) {\n this.items.splice(index, 1);\n try { control.dispose(); } catch { /* ignore */ }\n }\n }\n detach(control: ComponentBase): Promise<void> {\n const index = this.items.indexOf(control);\n if (index === -1) return Promise.resolve();\n this.items.splice(index, 1);\n if (control.isDisposed) return Promise.resolve();\n (control as any)._leaveContainer = this.owner;\n control.parent = null;\n return runLeaveThenDetach(control, () => { if (this.onRemove) this.onRemove(control); });\n }\n\n silentDetach(control: ComponentBase, unlinkOnly: boolean = false) {\n if (unlinkOnly) { this.silentUnlink(control); return; }\n const index = this.items.indexOf(control);\n if (index === -1) return;\n this.items.splice(index, 1);\n if (control.isDisposed) return;\n control.parent = null;\n try {\n detachComponentDom(control);\n } catch (error) {\n reportError('MJX117', error);\n }\n notifyDeactivated(control);\n }\n\n silentUnlink(control: ComponentBase) {\n const index = this.items.indexOf(control);\n if (index === -1) return;\n this.items.splice(index, 1);\n (control as any)._leaveContainer = this.owner;\n control.parent = null;\n }\n\n async clearAsync(): Promise<void> {\n const items = this.items.splice(0, this.items.length); \n await Promise.all(items.map(c => c.dispose())); \n }\n\n\n clear() {\n var items = this.items.splice(0, this.items.length);\n items.forEach(c => {\n try { c.dispose(); } catch { /* ignore */ }\n });\n }\n get length() {\n return this.items.length;\n }\n forEach(callbackfn: (value: ComponentBase, index: number, array: ComponentBase[]) => void) {\n this.items.forEach(callbackfn);\n }\n map(callbackfn: (value: ComponentBase, index: number, array: ComponentBase[]) => void) {\n return this.items.map(callbackfn);\n }\n onAdd?: (control: ComponentBase) => void;\n onRemove?: (control: ComponentBase) => void;\n onAddBeforeBuild?: (control: ComponentBase) => void;\n move(control: ComponentBase, before?: ComponentBase | null): void {\n if (!control || control.isDisposed) return;\n if (before === control) return;\n if (control.parent !== this.owner) return;\n if (before && before.parent !== this.owner) return;\n\n const oldIndex = this.items.indexOf(control);\n if (oldIndex === -1) return;\n const beforeIndex = before ? this.items.indexOf(before) : -1;\n if (before && beforeIndex === -1) return;\n\n const alreadyInPlace = before ? beforeIndex === oldIndex + 1 : oldIndex === this.items.length - 1;\n if (alreadyInPlace) return;\n\n\n this.items.splice(oldIndex, 1);\n\n if (!before) {\n this.items.push(control);\n } else {\n const newBeforeIndex = this.items.indexOf(before);\n const insertAt = newBeforeIndex >= 0 ? newBeforeIndex : this.items.length;\n this.items.splice(insertAt, 0, control);\n }\n\n const container = findAppendableElement(this.owner);\n if (!container || !domAnchor(control, container)) return;\n\n const at = before ? this.items.indexOf(before) : -1;\n moveComponentDomRange(control, container, at >= 0 ? anchorFrom(this.owner, this.items, at, container) : computeAppendReference(this.owner));\n }\n\n _reorder(order: ComponentBase[], stable: Set<number>): void {\n const container = findAppendableElement(this.owner);\n if (container) {\n let ref = computeAppendReference(this.owner);\n for (let i = order.length - 1; i >= 0; i--) {\n const control = order[i];\n const node = domAnchor(control, container);\n if (!node) continue;\n if (!stable.has(i)) moveComponentDomRange(control, container, ref);\n ref = node;\n }\n }\n const items = this.items;\n for (let i = 0; i < order.length; i++) items[i] = order[i];\n }\n\n moveToIndex(control: ComponentBase, index: number): void {\n if (!control || control.isDisposed) return;\n if (!Number.isFinite(index as any)) return;\n if (index < 0) index = 0;\n if (index > this.items.length) index = this.items.length;\n if (this.items.indexOf(control) === -1) return;\n const before = index >= this.items.length ? null : this.items[index];\n this.move(control, before);\n }\n}\n\n/** Owner için DOM'a eklenebilir gerçek element'i bulur. */\nfunction findAppendableElement(owner: ComponentBase): HTMLElement | Node | null {\n let c: ComponentBase | null = owner;\n while (c) {\n const node = c.element as any as Node;\n if (node && node.nodeType !== Node.COMMENT_NODE && node.nodeType !== Node.DOCUMENT_FRAGMENT_NODE && node.nodeType !== Node.TEXT_NODE) {\n return node as any;\n }\n c = c.parent;\n }\n return null;\n}\n\n/** Owner fragment ise sona ekleme referansını, değilse null döndürür. */\nfunction computeAppendReference(owner: ComponentBase): Node | null {\n const node = owner.element as any as Node;\n if (node && node.nodeType === Node.COMMENT_NODE) {\n return (owner as any).motif.options?.closeFragment || null;\n }\n return null;\n}\n\nfunction anchorFrom(owner: ComponentBase, items: ComponentBase[], start: number, container: Node): Node | null {\n for (let i = start; i < items.length; i++) {\n const anchor = domAnchor(items[i], container);\n if (anchor) return anchor;\n }\n return computeAppendReference(owner);\n}\n\n/** Bir component'in kök DOM aralığını (tek element veya fragment aralığı) referenceNode öncesine taşır. */\nfunction moveComponentDomRange(control: ComponentBase, container: Node, referenceNode: Node | null) {\n const node = domAnchor(control, container);\n if (!node) return;\n\n if (node.nodeType !== Node.COMMENT_NODE || node !== (control.element as unknown as Node)) {\n try { container.insertBefore(node, referenceNode); } catch { }\n return;\n }\n\n const open = node;\n const close = ((control as any).motif.options?.closeFragment as Node | undefined) || null;\n if (!close) { try { container.insertBefore(open, referenceNode); } catch { } return; }\n\n if (referenceNode && isNodeInRange(open, close, referenceNode)) {\n referenceNode = close.nextSibling;\n }\n\n const frag = (dom.createDocumentFragment && dom.createDocumentFragment()) || container.ownerDocument?.createDocumentFragment?.() || (function () { try { return document.createDocumentFragment(); } catch { return null as any; } })();\n if (!frag) {\n let current: Node | null = open;\n let maxIterations = 10000;\n while (current && maxIterations-- > 0) {\n const after: Node | null = current.nextSibling;\n try { container.insertBefore(current, referenceNode); } catch { }\n if (current === close) break;\n current = after;\n }\n if (maxIterations <= 0) {\n reportError('MJX119', undefined);\n }\n return;\n }\n\n let current: Node | null = open;\n let maxIterations = 10000;\n while (current && maxIterations-- > 0) {\n const after: Node | null = current.nextSibling;\n try { (frag as any).appendChild(current); } catch { }\n if (current === close) break;\n current = after;\n }\n if (maxIterations <= 0) {\n reportError('MJX119', undefined);\n }\n try { container.insertBefore(frag as any, referenceNode); } catch { }\n}\n\nfunction isNodeInRange(open: Node, close: Node, test: Node): boolean {\n let current: Node | null = open;\n let maxIterations = 10000;\n while (current && maxIterations-- > 0) {\n if (current === test) return true;\n if (current === close) break;\n current = current.nextSibling;\n }\n if (maxIterations <= 0) {\n reportError('MJX120', undefined);\n }\n return false;\n}\n\nfunction detachComponentDom(control: ComponentBase): void {\n const node = control.element as unknown as Node | null;\n if (!node) return;\n const opts: any = (control as any).motif.options;\n if (node.nodeType === Node.COMMENT_NODE && node.parentNode) {\n const close = (opts?.closeFragment as Node | undefined) || null;\n const cache: DocumentFragment = opts.cache ?? (opts.cache = dom.createDocumentFragment());\n let current: Node | null = node;\n let maxIterations = 10000;\n while (current && maxIterations-- > 0) {\n const after: Node | null = current.nextSibling;\n cache.appendChild(current);\n if (!close || current === close) break;\n current = after;\n }\n return;\n }\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n return;\n }\n const placeholder = opts?.placeholder as Node | undefined;\n if (placeholder && placeholder.parentNode) placeholder.parentNode.removeChild(placeholder);\n}\n\ninterface PendingLeave {\n promise: Promise<void>;\n finish: () => void;\n}\n\nfunction runLeaveThenDetach(control: ComponentBase, notify: () => void): Promise<void> {\n let resolveDone: () => void = () => { };\n const promise = new Promise<void>(resolve => { resolveDone = resolve; });\n let pending = 1;\n let finished = false;\n const finish = () => {\n if (finished) return;\n finished = true;\n if ((control as any).__pendingLeave?.promise === promise) delete (control as any).__pendingLeave;\n if (!control.isDisposed) {\n try {\n detachComponentDom(control);\n } catch (error) {\n reportError('MJX117', error);\n }\n notifyDeactivated(control);\n }\n try {\n notify();\n } catch (error) {\n reportError('MJX118', error);\n }\n resolveDone();\n };\n const arrive = () => {\n pending--;\n if (pending === 0) finish();\n };\n const visit = (c: ComponentBase) => {\n if (!c || c.isDisposed || !c.element || !c.isVisible || c.isWait) return;\n const node = c.element as unknown as Node;\n if (node.nodeType === Node.COMMENT_NODE) {\n c.controls.items.forEach(visit);\n return;\n }\n if (node.nodeType !== Node.ELEMENT_NODE) return;\n pending++;\n let arrived = false;\n const once = () => {\n if (arrived) return;\n arrived = true;\n arrive();\n };\n try {\n const opts: any = c.motif.options;\n if (!opts[TRANSITION_SLOT] && !opts.transitionOut) {\n once();\n return;\n }\n opts.transition.leaveTransition(once);\n } catch {\n once();\n }\n };\n (control as any).__pendingLeave = { promise, finish } as PendingLeave;\n visit(control);\n arrive();\n return promise;\n}\n","import { ComponentBase, IBaseProp } from \".\";\nimport { Component, assertLoadedComponent, resolveToComponent, unwrapModule } from \"./Component\";\nimport { Frame } from \"./Frame\";\nimport { disposableCore } from \"../disposable\";\nimport { motifError, reportError } from \"../common/diagnostics\";\n\nexport interface LazyOptions<T = any> { \n Loaderview?: ComponentBase; \n Placeholderview?: ComponentBase; \n Fallbackview?: ComponentBase;\n minDelayMs?: number;\n onError?: (error: unknown) => void;\n mapResult?: (result: T) => any; \n timeoutMs?: number;\n signal?: AbortSignal;\n retry?: number | LazyRetryOptions;\n onRetry?: (attempt: number, error: unknown) => void;\n}\n\nexport interface LazyRetryOptions {\n count: number;\n delayMs?: number;\n whenOnline?: boolean;\n}\n\nfunction normalizeRetry(retry: LazyOptions['retry']): Required<LazyRetryOptions> {\n if (typeof retry === 'number') return { count: Math.max(0, Math.floor(retry)), delayMs: 500, whenOnline: true };\n if (retry && typeof retry === 'object') {\n return {\n count: Math.max(0, Math.floor(retry.count || 0)),\n delayMs: Math.max(0, retry.delayMs ?? 500),\n whenOnline: retry.whenOnline !== false,\n };\n }\n return { count: 0, delayMs: 0, whenOnline: false };\n}\n\nfunction defaultMapper(result: any) {\n return unwrapModule(result);\n}\n\n\n\nexport function Lazy<T>(props: { caller: () => Promise<T>, options?: LazyOptions<T> }): Component;\nexport function Lazy(props: any): Component;\nexport function Lazy(props: any): Component {\n const opts: LazyOptions<any> = (props && props.options) || {};\n const frame = new Frame();\n const timers = new Set<ReturnType<typeof setTimeout>>();\n const trackTimer = (id: ReturnType<typeof setTimeout>) => { try { timers.add(id); } catch { } return id; };\n const clearAllTimers = () => {\n try { timers.forEach(id => { try { clearTimeout(id); } catch { } }); } catch { }\n try { timers.clear(); } catch { }\n };\n try { frame.motif.register(disposableCore.toDisposable(() => clearAllTimers())); } catch { }\n const initial = opts.Placeholderview ?? opts.Loaderview;\n if (initial != null) {\n frame.navigate(resolveToComponent(initial));\n }\n\n const attemptLoad = () => {\n if (!opts.timeoutMs && !opts.signal) {\n return props.caller();\n }\n const parts: Promise<any>[] = [props.caller()];\n if (opts.timeoutMs && opts.timeoutMs > 0) {\n parts.push(new Promise<any>((_, reject) => {\n const id = trackTimer(setTimeout(() => reject(motifError('MJX110', opts.timeoutMs!)), opts.timeoutMs));\n parts[0].finally(() => { try { clearTimeout(id); timers.delete(id); } catch { } }).catch(() => { /* noop */ });\n if (opts.signal) {\n const onAbortClear = () => { try { clearTimeout(id); timers.delete(id); } catch { } };\n try { opts.signal.addEventListener(\"abort\", onAbortClear, { once: true }); } catch { }\n }\n }));\n }\n if (opts.signal) {\n parts.push(new Promise<any>((_, reject) => {\n if (opts.signal!.aborted) {\n reject(motifError('MJX111'));\n return;\n }\n const onAbort = () => {\n opts.signal!.removeEventListener(\"abort\", onAbort);\n clearAllTimers();\n reject(motifError('MJX111'));\n };\n opts.signal!.addEventListener(\"abort\", onAbort, { once: true });\n }));\n }\n return Promise.race(parts);\n };\n\n const retry = normalizeRetry(opts.retry);\n const cleanups = new Set<() => void>();\n try { frame.motif.register(disposableCore.toDisposable(() => { cleanups.forEach(c => { try { c(); } catch { } }); cleanups.clear(); })); } catch { }\n\n const waitBeforeRetry = (attempt: number): Promise<boolean> => new Promise<boolean>(resolve => {\n let settled = false;\n const finish = (go: boolean) => {\n if (settled) return;\n settled = true;\n cleanups.delete(cancel);\n try { if (onlineHandler) window.removeEventListener('online', onlineHandler); } catch { }\n try { if (id !== undefined) { clearTimeout(id); timers.delete(id); } } catch { }\n try { opts.signal?.removeEventListener('abort', onAbort); } catch { }\n resolve(go);\n };\n const cancel = () => finish(false);\n const onAbort = () => finish(false);\n let onlineHandler: (() => void) | null = null;\n let id: ReturnType<typeof setTimeout> | undefined = undefined;\n cleanups.add(cancel);\n try { opts.signal?.addEventListener('abort', onAbort, { once: true }); } catch { }\n const schedule = () => { id = trackTimer(setTimeout(() => finish(true), retry.delayMs * attempt)); };\n const offline = retry.whenOnline && typeof navigator !== 'undefined' && navigator.onLine === false && typeof window !== 'undefined';\n if (offline) {\n onlineHandler = () => {\n try { window.removeEventListener('online', onlineHandler!); } catch { }\n onlineHandler = null;\n schedule();\n };\n window.addEventListener('online', onlineHandler);\n } else {\n schedule();\n }\n });\n\n const loadWithRetry = async (): Promise<any> => {\n let attempt = 0;\n for (; ;) {\n try {\n return await attemptLoad();\n } catch (err) {\n if (opts.signal?.aborted || (frame as any).isDisposed || attempt >= retry.count) throw err;\n attempt++;\n try { opts.onRetry?.(attempt, err); } catch { }\n const go = await waitBeforeRetry(attempt);\n if (!go || opts.signal?.aborted || (frame as any).isDisposed) throw err;\n }\n }\n };\n\n const loadPromise = retry.count > 0 ? loadWithRetry() : attemptLoad();\n\n const startTs = Date.now();\n\n const fail = (err: any) => {\n try { opts.onError?.(err); } catch { /* swallow */ }\n if (opts.signal?.aborted) return;\n if (opts.Fallbackview != null) {\n frame.navigate(resolveToComponent(opts.Fallbackview));\n } else {\n reportError('MJX126', err);\n try { frame.motif.clear().catch(() => { }); } catch { }\n }\n };\n\n const place = (target: any) => {\n let component: any;\n try {\n component = resolveToComponent(target);\n assertLoadedComponent(component);\n } catch (err) {\n fail(err);\n return;\n }\n frame.navigate(component);\n };\n\n loadPromise\n .then((result: any) => {\n if (opts.signal?.aborted) { return; }\n const mapper = opts.mapResult ?? defaultMapper;\n const target = mapper(result);\n const elapsed = Date.now() - startTs;\n const minDelay = Math.max(0, (opts.minDelayMs ?? 0));\n const remaining = Math.max(0, minDelay - elapsed);\n if (remaining > 0) {\n const id = trackTimer(setTimeout(() => {\n if (!opts.signal?.aborted) {\n place(target);\n }\n }, remaining));\n if (opts.signal) {\n const onAbortClearDelay = () => { try { clearTimeout(id); timers.delete(id); } catch { } };\n try { opts.signal.addEventListener(\"abort\", onAbortClearDelay, { once: true }); } catch { }\n }\n } else {\n place(target);\n }\n })\n .catch(fail);\n\n return frame;\n}\n","import { ComponentBase, IDisposeOptions } from \"./componentBase\";\nimport { resolveComponent } from \"./resolveComponent\";\nimport { Lazy } from \"./Lazy\";\nimport { reportError } from \"../common/diagnostics\";\n\nexport interface NavigationHost extends ComponentBase {\n current: ComponentBase | ComponentBase[] | null;\n previouspage: any;\n isBusy: boolean;\n _latestNavigateId: number;\n _navLock: Promise<void>;\n _navAbort?: AbortController;\n _navPending?: number;\n}\n\nexport function hasOwnTransition(component: ComponentBase | null | undefined, phase: 'enter' | 'leave'): boolean {\n const options: any = component?.motif?.options;\n if (!options) return false;\n const transition = options.transition;\n return !!((phase === 'enter' ? options.transitionIn : options.transitionOut) || (transition && (transition.classes || (transition.name && transition.name.length > 0))));\n}\n\nfunction playsLeave(target: ComponentBase | ComponentBase[] | null): boolean {\n if (!target) return false;\n if (Array.isArray(target)) return target.some(t => !!t && !t.isDisposed && hasOwnTransition(t, 'leave'));\n return !target.isDisposed && hasOwnTransition(target, 'leave');\n}\n\nexport function cancelAnimationsDeep(target: any): void {\n if (!target || target.isDisposed) return;\n if (Array.isArray(target)) {\n target.forEach(cancelAnimationsDeep);\n return;\n }\n try { target.motif.options?.transition?.activeCssCancel?.(); } catch { }\n try {\n const anims = target.motif.options?.transition?.activeAnimations;\n if (Array.isArray(anims)) {\n anims.forEach((anim: any) => {\n try {\n if (anim && typeof anim.cancel === 'function') {\n anim.cancel();\n }\n } catch { }\n });\n anims.length = 0;\n }\n } catch { }\n try {\n if (target.controls && target.controls.items) {\n for (const child of target.controls.items) {\n cancelAnimationsDeep(child);\n }\n }\n } catch { }\n}\n\nexport async function disposeNavigationTarget(target: ComponentBase | ComponentBase[] | null, options: IDisposeOptions = { deep: true }): Promise<void> {\n if (!target) return;\n const list = Array.isArray(target) ? target : [target];\n await Promise.all(list.map(async (xr) => {\n if (!xr || xr.isDisposed) return;\n try {\n await xr.dispose(options);\n } catch (err) {\n reportError('MJX115', err);\n }\n }));\n}\n\nexport async function navigateHost(host: NavigationHost, page: ComponentBase | ComponentBase[], keepOldControl: boolean = false): Promise<void> {\n if (host.isDisposed || page == null) return;\n if (host.current !== null && host.current === (page as any)) return;\n\n const navigateId = ++host._latestNavigateId;\n host.isBusy = true;\n\n const complete = (value: any) => {\n if (host.isDisposed) return;\n if (navigateId !== host._latestNavigateId) return;\n const xP = resolveComponent(value);\n host.current = xP;\n try {\n if (Array.isArray(xP)) {\n host.controls.add(...xP);\n } else {\n host.controls.add(xP);\n }\n } catch (error) {\n reportError('MJX114', error);\n }\n host.isBusy = false;\n host.previouspage = xP;\n };\n\n if (!(host._navPending ?? 0) && host.current === null && !(page instanceof Promise)) {\n try {\n complete(page);\n } catch (error) {\n reportError('MJX114', error);\n host.isBusy = false;\n }\n return;\n }\n\n host._navPending = (host._navPending ?? 0) + 1;\n const prevLock = host._navLock ?? Promise.resolve();\n host._navLock = (async () => {\n try {\n await prevLock;\n\n try { host._navAbort?.abort(); } catch { }\n host._navAbort = new AbortController();\n\n const oldPage = host.current;\n if (oldPage && !keepOldControl) {\n cancelAnimationsDeep(oldPage);\n cancelAnimationsDeep(host);\n const animated = playsLeave(oldPage);\n const leaving = disposeNavigationTarget(oldPage);\n if (animated) {\n leaving.catch(() => { });\n } else {\n await leaving;\n }\n }\n\n try {\n if (page instanceof Promise) {\n const caller = () => page;\n const lazyFrame = Lazy({ caller, options: { signal: host._navAbort?.signal } as any });\n complete(lazyFrame);\n } else {\n complete(page);\n }\n } catch (error) {\n reportError('MJX114', error);\n host.isBusy = false;\n }\n } finally {\n host._navPending = Math.max(0, (host._navPending ?? 1) - 1);\n }\n })();\n await host._navLock;\n}\n","import { dom } from \"../core\";\nimport { Component } from \"../\";\nimport { ComponentBase, IDisposeOptions } from \"../\";\nimport { Lazy, LazyOptions } from \"../\";\nimport { disposeNavigationTarget, navigateHost } from \"./navigation\";\n\n\nexport class Frame extends Component {\n public current: ComponentBase | ComponentBase[] | null = null;\n public _latestNavigateId = 0;\n public _navLock: Promise<void> = Promise.resolve();\n public _navAbort?: AbortController;\n isBusy: boolean = false;\n constructor(props?: any) {\n super(dom.createComment(''), props);\n if (props && props.childs && Array.isArray(props.childs) && props.childs.length > 0) {\n this.controls.add(props.childs);\n }\n }\n public async dispose(options: IDisposeOptions = { deep: true }) {\n await disposeNavigationTarget(this.current, options);\n await super.dispose(options);\n }\n public async flush() {\n await disposeNavigationTarget(this.current);\n }\n protected override async _clear() {\n await disposeNavigationTarget(this.current);\n }\n previouspage: any;\n public async navigate(page: ComponentBase | ComponentBase[], keepOldControl: boolean = false) {\n await navigateHost(this, page, keepOldControl);\n }\n\n public async navigateLazy<T>(caller: () => Promise<T>, options?: LazyOptions<T>, keepOldControl: boolean = false) {\n const lazyFrame = Lazy({ caller, options });\n await this.navigate(lazyFrame, keepOldControl);\n }\n}\n","const preprocessitem = new Set<Function>();\r\n\r\nexport function preProcessing(callback: () => any) {\r\n preprocessitem.add(callback);\r\n renderPreProcessing();\r\n}\r\n\r\nexport function renderPreProcessing() {\r\n preprocessitem.forEach(i => {\r\n i();\r\n })\r\n}","\r\nimport { Component, ComponentBase, EventArgs } from \"../\";\r\nimport { reportWarning } from \"../common/diagnostics\";\r\n\r\n\r\n// const ContentBodyCollection = new Map<string, ContentBody>();\r\nconst ContentBodyCollectionHandable = new Map<string, ContentBody>();\r\nconst changeBodyCollectionHandler = Symbol('changeBodyCollectionHandler')\r\n\r\n\r\ninterface ContentBlockProps {\r\n target: string\r\n}\r\nexport class ContentBlock extends Component<any, ContentBlockProps> {\r\n constructor(props: ContentBlockProps) {\r\n super(props);\r\n\r\n\r\n // var cb = ContentBodyCollectionHandable.get(props.target);\r\n // if (cb) {\r\n // } else {\r\n // var cb = ContentBodyCollectionHandable.get(props.target);\r\n // if (cb) {\r\n const forward = (control: ComponentBase) => {\r\n this.motif.trigger('controladded', { control });\r\n var cb = ContentBodyCollectionHandable.get(this.props.target);\r\n if (cb) {\r\n control.motif.options[\"ownerContentBlock\"] = this;\r\n cb.controls.add(control);\r\n }\r\n };\r\n this.controls.onAdd = forward;\r\n this.controls.onAddBeforeBuild = forward;\r\n if (this.childs) {\r\n this.controls.add(...this.childs);\r\n }\r\n\r\n }\r\n public onConfigured(sender: ComponentBase, e: EventArgs): void {\r\n\r\n var cb = ContentBodyCollectionHandable.get(this.props.target);\r\n if (cb) {\r\n this.controls.items.forEach(x => { x.motif.options[\"ownerContentBlock\"] = this; });\r\n cb.controls.add(...this.controls.items);\r\n } else {\r\n this.context.on(changeBodyCollectionHandler, () => {\r\n var cb = ContentBodyCollectionHandable.get(this.props.target);\r\n if (cb) {\r\n this.controls.items.forEach(x => { x.motif.options[\"ownerContentBlock\"] = this; });\r\n cb.controls.add(...this.controls.items);\r\n }\r\n });\r\n }\r\n }\r\n\r\n public onDisposing(sender: ComponentBase, e: EventArgs): void {\r\n var cb = ContentBodyCollectionHandable.get(this.props.target);\r\n if (cb) {\r\n for (const element of [...cb.controls.items]) {\r\n if (element.motif.options[\"ownerContentBlock\"] !== this) continue;\r\n cb.controls.remove(element);\r\n reportWarning('MJX109', [], element);\r\n }\r\n }\r\n\r\n }\r\n ondisposing(sender: Component<any, ContentBlockProps>) {\r\n // var cb = ContentBodyCollectionHandable.get(this.props.target);\r\n // if (cb) {\r\n }\r\n\r\n}\r\ninterface ContentBodyProps {\r\n name: string,\r\n onconfig?: any\r\n}\r\nexport class ContentBody extends Component<any, ContentBodyProps> {\r\n constructor(props: ContentBodyProps) {\r\n super(props);\r\n ContentBodyCollectionHandable.set(this.props.name, this);\r\n this.context.fire(changeBodyCollectionHandler);\r\n }\r\n ondisposing(sender: Component<any, ContentBodyProps>) {\r\n if (ContentBodyCollectionHandable.get(this.props.name) === this) {\r\n ContentBodyCollectionHandable.delete(this.props.name);\r\n }\r\n }\r\n}\r","import { ComponentBase } from \"./componentBase\";\r\nimport { Application } from \"../\";\r\n\r\nexport const SLOT_REGISTERED_EVENT = Symbol('slotRegistered');\r\nexport const SLOT_UNREGISTERED_EVENT = Symbol('slotUnregistered');\r\n\r\nexport class TransportRegistry {\r\n private static slots: Map<string, ComponentBase> = new Map();\r\n\r\n static registerSlot(name: string, slot: ComponentBase) {\r\n this.slots.set(name, slot);\r\n Application.main.fire(SLOT_REGISTERED_EVENT, { name, slot });\r\n }\r\n static unregisterSlot(name: string, slot: ComponentBase) {\r\n if (this.slots.get(name) === slot) {\r\n this.slots.delete(name);\r\n Application.main.fire(SLOT_UNREGISTERED_EVENT, { name, slot });\r\n }\r\n }\r\n static getSlot(name: string): ComponentBase | undefined {\r\n return this.slots.get(name);\r\n }\r\n}\r","import { Component } from \"./Component\";\r\nimport { ComponentBase } from \"./componentBase\";\r\nimport { TransportRegistry } from \"./TransportRegistry\";\r\n\r\nexport class Transport extends Component<any, { name: string, mode?: 'replace' | 'merge' }> {\r\n public mode: 'replace' | 'merge';\r\n constructor(props: { name: string, mode?: 'replace' | 'merge' }) {\r\n super(props);\r\n this.mode = props.mode || 'replace';\r\n }\r\n initializeComponent(sender: ComponentBase) {\r\n TransportRegistry.registerSlot(this.props.name, this);\r\n this.onDisposing = () => {\r\n [...(this.controls.items || [])].forEach(child => {\r\n this.controls.remove(child);\r\n child.dispose?.();\r\n });\r\n TransportRegistry.unregisterSlot(this.props.name, this);\r\n };\r\n }\r\n\r\n clearSlot() {\r\n [...(this.controls.items || [])].forEach(child => {\r\n this.controls.remove(child);\r\n child.dispose?.();\r\n });\r\n }\r\n}\r","import { ComponentBase } from \"./componentBase\";\r\nimport { motifError } from \"../common/diagnostics\";\r\n\r\nexport interface TransportOptions {\r\n index?: number;\r\n keepState?: boolean;\r\n owner?: any;\r\n}\r\n\r\nexport class Transporter {\r\n static transport(child: ComponentBase, newParent: ComponentBase, options: TransportOptions = {}) {\r\n if (!child || !newParent) return;\r\n if (child.parent === newParent && newParent.controls.items.includes(child)) return;\r\n if (child.parent && child.parent !== newParent) {\r\n child.parent.controls.silentDetach(child, true);\r\n }\r\n if (options.owner) {\r\n (child.motif.options as any).ownerTransporter = options.owner;\r\n }\r\n if (typeof options.index === \"number\") {\r\n if (!newParent.controls.items.includes(child)) {\r\n newParent.controls.items.splice(options.index, 0, child);\r\n }\r\n } else {\r\n if (!newParent.controls.items.includes(child)) {\r\n newParent.controls.add(child);\r\n }\r\n }\r\n child.parent = newParent;\r\n if (!options.keepState) {\r\n child.reState();\r\n }\r\n }\r\n\r\n static transportMany(children: ComponentBase[], newParent: ComponentBase, options: TransportOptions = {}) {\r\n if (!Array.isArray(children)) return;\r\n children.forEach(child => this.transport(child, newParent, options));\r\n }\r\n\r\n static createSlot(name: string, parent?: ComponentBase) {\r\n const slot = {\r\n name,\r\n children: [] as ComponentBase[],\r\n parent: parent as ComponentBase | undefined,\r\n mount(child: ComponentBase, options: TransportOptions = {}) {\r\n if (!this.parent) throw motifError('MJX113');\r\n if (!this.children.includes(child)) {\r\n Transporter.transport(child, this.parent, options);\r\n this.children.push(child);\r\n }\r\n },\r\n unmount(child: ComponentBase) {\r\n if (!this.parent) throw motifError('MJX113');\r\n this.children = this.children.filter(c => c !== child);\r\n this.parent.controls.remove(child);\r\n },\r\n detachAll() {\r\n if (!this.parent) return;\r\n this.children.forEach(child => {\r\n this.parent!.controls.remove(child);\r\n });\r\n this.children = [];\r\n }\r\n };\r\n return slot;\r\n }\r\n}\r\n","\r\nimport { TransportRegistry, SLOT_REGISTERED_EVENT, SLOT_UNREGISTERED_EVENT } from \"./TransportRegistry\";\r\nimport { Transporter } from \"./Transporter\";\r\nimport { ComponentBase } from \"./componentBase\";\r\nimport { Application, EventArgs, Transport, Component } from \"../\";\r\nimport { contentBlocks } from \"./contentBlockRegistry\";\r\n\r\nexport class TransportTo extends Component<any, { name: string }> {\r\n private _onAddRef?: (c: ComponentBase) => void;\r\n private _onRemoveRef?: (c: ComponentBase) => void;\r\n private _slotRegisteredListener?: () => void;\r\n private _slotUnregisteredListener?: () => void;\r\n private _transported: ComponentBase[] = [];\r\n private _countedLive = false;\r\n constructor(props: { name: string }) {\r\n super('div', props);\r\n contentBlocks.live++;\r\n this._countedLive = true;\r\n }\r\n\r\n private _handleSlotChange = (eventArgs: { name: string, slot: Transport }) => {\r\n if (eventArgs.name === this.props.name) {\r\n const slot = eventArgs.slot;\r\n if (slot.mode !== 'merge') {\r\n slot.clearSlot?.();\r\n }\r\n const all = [...(this.childs || []), ...this.controls.items];\r\n Transporter.transportMany(all, slot);\r\n this._rememberTransported(all);\r\n }\r\n };\r\n\r\n private _rememberTransported(children: ComponentBase[]) {\r\n const kept = this._transported.filter(c => !c.isDisposed);\r\n for (const child of children) {\r\n if (!kept.includes(child)) kept.push(child);\r\n }\r\n this._transported = kept;\r\n }\r\n\r\n private _clearChildrenFromSlot = (slot: ComponentBase) => {\r\n (this.childs || []).forEach(child => {\r\n slot.controls.remove(child);\r\n child.dispose();\r\n });\r\n (this.controls.items || []).forEach(child => {\r\n slot.controls.remove(child);\r\n child.dispose();\r\n });\r\n };\r\n\r\n initializeComponent(sender: ComponentBase) {\r\n let slot = TransportRegistry.getSlot(this.props.name) as Transport | undefined;\r\n if (slot) {\r\n if (slot.mode !== 'merge') {\r\n slot.clearSlot?.();\r\n }\r\n const all = [...(this.childs || []), ...this.controls.items];\r\n Transporter.transportMany(all, slot);\r\n this._rememberTransported(all);\r\n }\r\n\r\n this._slotRegisteredListener = Application.main.on(SLOT_REGISTERED_EVENT, this._handleSlotChange as any);\r\n this._slotUnregisteredListener = Application.main.on(SLOT_UNREGISTERED_EVENT, (eventArgs: { name: string, slot: ComponentBase } | any) => {\r\n if (eventArgs.name === this.props.name) {\r\n this._clearChildrenFromSlot(eventArgs.slot);\r\n }\r\n });;\r\n\r\n this._onAddRef = (child: ComponentBase) => {\r\n this.motif.trigger('controladded', { control: child });\r\n const currentSlot = TransportRegistry.getSlot(this.props.name);\r\n if (currentSlot) {\r\n Transporter.transport(child, currentSlot);\r\n this._rememberTransported([child]);\r\n }\r\n };\r\n this._onRemoveRef = (child: ComponentBase) => {\r\n const currentSlot = TransportRegistry.getSlot(this.props.name);\r\n if (currentSlot) {\r\n currentSlot.controls.remove(child);\r\n }\r\n this._transported = this._transported.filter(c => c !== child);\r\n };\r\n this.controls.onAdd = this._onAddRef;\r\n this.controls.onRemove = this._onRemoveRef;\r\n\r\n\r\n }\r\n\r\n public onDisposing(sender: ComponentBase, e: EventArgs): void {\r\n if (this._countedLive) {\r\n this._countedLive = false;\r\n contentBlocks.live--;\r\n }\r\n const currentSlot = TransportRegistry.getSlot(this.props.name);\r\n for (const child of this._transported || []) {\r\n currentSlot?.controls.remove(child);\r\n child.dispose();\r\n }\r\n\r\n if (this._slotRegisteredListener) {\r\n Application.main.off(SLOT_REGISTERED_EVENT, this._handleSlotChange as any);\r\n this._slotRegisteredListener = undefined;\r\n }\r\n if (this._slotUnregisteredListener) {\r\n Application.main.off(SLOT_UNREGISTERED_EVENT, this._slotUnregisteredListener);\r\n this._slotUnregisteredListener = undefined;\r\n }\r\n if (this.controls.onAdd === this._onAddRef) this.controls.onAdd = undefined;\r\n if (this.controls.onRemove === this._onRemoveRef) this.controls.onRemove = undefined;\r\n this._onAddRef = undefined;\r\n this._onRemoveRef = undefined;\r\n this._transported = [];\r\n }\r\n}\r","import { ReactiveEngine } from \"../ReactiveEngine\"\r\nimport { Flags, addArrayStack, closeSetup, hasOwn, isIntrinsicSymbol, isObject, pauseTracking, resetTracking, setupActive } from \"../common\"\r\nimport { track } from \"../reactivity-core\"\r\n\r\nconst ARRAY_MUTATORS = new Set(['push', 'pop', 'shift', 'unshift', 'splice', 'reverse', 'sort'])\r\n\r\nexport const NOT_META = Symbol('')\r\ntype MetaReader = (engine: ReactiveEngine, target: any, receiver: any) => unknown\r\n\r\nconst metaReaders = new Map<symbol, MetaReader>([\r\n [Flags.IS_REACTIVE, () => true],\r\n [Flags.IS_READONLY, engine => engine.isReadonly],\r\n [Flags.IS_SUPERFICIAL, engine => engine.superficial],\r\n [Flags.GET_SETUP, (_engine, target) => target],\r\n [Flags.RAW, (engine, target, receiver) => engine.ReactiveMap().get(target) === receiver ? target : NOT_META],\r\n])\r\n\r\nexport function readMeta(engine: ReactiveEngine, target: any, key: unknown, receiver: any): unknown {\r\n if (typeof key !== 'symbol') return NOT_META\r\n const reader = metaReaders.get(key)\r\n return reader === undefined ? NOT_META : reader(engine, target, receiver)\r\n}\r\n\r\nexport function createGetter(engine: ReactiveEngine) {\r\n return function (target: any, p: any, receiver: any) {\r\n const meta = readMeta(engine, target, p, receiver)\r\n if (meta !== NOT_META) return meta\r\n\r\n if (Array.isArray(target) && !engine.isReadonly) {\r\n const patched = engine.arrayMethods.get\r\n if (hasOwn(patched, p)) {\r\n const method = patched[p]\r\n if (ARRAY_MUTATORS.has(p)) addArrayStack(p)\r\n else track(target, p)\r\n return method\r\n }\r\n }\r\n if (setupActive) {\r\n pauseTracking();\r\n engine.track(target, p);\r\n closeSetup();\r\n resetTracking();\r\n }\r\n\r\n const value = Reflect.get(target, p, receiver)\r\n if (p === '__proto__' || isIntrinsicSymbol(p)) return value\r\n\r\n if (!engine.isReadonly) track(target, p)\r\n if (engine.superficial || !isObject(value)) return value\r\n return engine.reactive(value)\r\n }\r\n}\r\n","import { ReactiveEngine } from \"../ReactiveEngine\";\nimport { ITERATE_KEY, getRaw, hasOwn, isNumericKey, isReadonly, removeArrayStack } from \"../common\";\nimport { trigger } from \"../reactivity-core\";\n\n\nexport function createSetter(engine: ReactiveEngine) {\n return function (target: any, p: any, newValue: any, receiver: any) {\n if (isReadonly(target)) {\n return false;\n }\n\n const isArray = Array.isArray(target);\n const oldValue = (target as any)[p];\n const oldLength = isArray ? target.length : 0;\n const numeric = isArray && isNumericKey(p);\n const hadKey = numeric ? Number(p) < oldLength : hasOwn(target, p);\n\n const res = Reflect.set(target, p, newValue, receiver);\n\n if (engine.onValueChanged) {\n try { engine.onValueChanged({ raw: target, proxy: receiver }, p); } catch { }\n }\n\n if (getRaw(target) !== getRaw(receiver)) {\n return res;\n }\n if (!isArray && hadKey && Object.is(newValue, oldValue)) {\n return res;\n }\n\n trigger(target, p);\n if (!isArray && !hadKey) {\n trigger(target, ITERATE_KEY);\n }\n if (numeric && !hadKey) {\n trigger(target, 'length');\n }\n if (isArray && p === 'length') {\n const newLength = Number(newValue);\n for (let i = newLength; i < oldLength; i++) {\n trigger(target, String(i));\n }\n }\n removeArrayStack();\n return res;\n }\n}\n","import { ReactiveEngine } from \"../ReactiveEngine\";\r\nimport { ITERATE_KEY, hasOwn, isIntrinsicSymbol, pauseTracking, resetTracking } from \"../common\";\r\nimport { track, trigger } from \"../reactivity-core\";\r\n\r\nexport function createOwn(engine: ReactiveEngine) {\r\n return function ownKeys(target: any) {\r\n const shapeKey = Array.isArray(target) ? 'length' : ITERATE_KEY;\r\n track(target, shapeKey);\r\n return Reflect.ownKeys(target);\r\n }\r\n}\r\n\r\nexport function createHas(engine: ReactiveEngine) {\r\n return function has(target: any, p: any) {\r\n const found = Reflect.has(target, p);\r\n if (isIntrinsicSymbol(p)) return found;\r\n track(target, p);\r\n return found;\r\n }\r\n}\r\n\r\nexport function createDelete(engine: ReactiveEngine) {\r\n return function deleteProperty(target: any, p: any) {\r\n pauseTracking()\r\n try {\r\n const isOwned = hasOwn(target, p);\r\n const result = Reflect.deleteProperty(target, p);\r\n if (isOwned) {\r\n if (Array.isArray(target)) {\r\n trigger(target, 'length');\r\n } else {\r\n trigger(target, p);\r\n trigger(target, ITERATE_KEY);\r\n }\r\n }\r\n return result\r\n } finally { \r\n resetTracking();\r\n }\r\n }\r\n}","import { ReactiveEngine } from \"../ReactiveEngine\";\r\nimport { getRaw, pauseTracking, resetTracking } from \"../common\";\r\n\r\ntype PatchKind = 'lookup' | 'order' | 'join' | 'structural';\r\n\r\nconst PATCHED_ARRAY_METHODS: ReadonlyArray<readonly [string, PatchKind]> = [\r\n ['includes', 'lookup'],\r\n ['indexOf', 'lookup'],\r\n ['lastIndexOf', 'lookup'],\r\n ['sort', 'order'],\r\n ['concat', 'join'],\r\n ['push', 'structural'],\r\n ['pop', 'structural'],\r\n ['shift', 'structural'],\r\n ['unshift', 'structural'],\r\n ['splice', 'structural'],\r\n ['reverse', 'structural'],\r\n];\r\n\r\nconst isLookupMiss = (outcome: unknown) => outcome === false || outcome === -1;\r\n\r\nexport class ArrayMethods {\r\n constructor(public engine: ReactiveEngine) { }\r\n get: Record<string, Function> = this.createArrayMethods();\r\n\r\n createArrayMethods(): Record<string, Function> {\r\n const table: Record<string, Function> = {};\r\n for (const [name, kind] of PATCHED_ARRAY_METHODS) {\r\n table[name] = this.patch(name, kind);\r\n }\r\n return table;\r\n }\r\n\r\n private patch(name: string, kind: PatchKind): Function {\r\n const owner = this;\r\n switch (kind) {\r\n case 'lookup':\r\n return function (this: unknown[], ...needles: any[]) {\r\n const source = getRaw(this) as any;\r\n owner.engine.track(source, 'length');\r\n const direct = source[name](...needles);\r\n if (!isLookupMiss(direct)) return direct;\r\n return source[name](...needles.map(needle => getRaw(needle)));\r\n };\r\n case 'order':\r\n return function (this: unknown[], ...args: any[]) {\r\n const source = getRaw(this) as any;\r\n const size = this.length;\r\n for (let index = 0; index < size; index++) {\r\n owner.engine.track(source, String(index));\r\n }\r\n const sorted = source[name].apply(this, args);\r\n owner.engine.track(source, name);\r\n return sorted;\r\n };\r\n case 'join':\r\n return function (this: unknown[], ...args: any[]) {\r\n return Array.prototype.concat.apply(this, args);\r\n };\r\n default:\r\n return function (this: unknown[], ...args: any[]) {\r\n pauseTracking();\r\n const source = getRaw(this) as any;\r\n try {\r\n return source[name].apply(this, args);\r\n } finally {\r\n resetTracking();\r\n }\r\n };\r\n }\r\n }\r\n\r\n}\r\n","import { ReactiveEngine } from \"../ReactiveEngine\";\nimport { ITERATE_KEY, getRaw, hasOwn, isObject } from \"../common\";\nimport { track, trigger } from \"../reactivity-core\";\nimport { NOT_META, readMeta } from \"./getter\";\n\ntype AnyCollection = Map<any, any> | Set<any>;\n\nconst KEYS_KEY = Symbol('');\n\nfunction changed(target: object, key: unknown, keysChanged: boolean) {\n trigger(target, key as any);\n trigger(target, ITERATE_KEY);\n if (keysChanged) trigger(target, KEYS_KEY);\n}\n\nfunction lookupKey(target: AnyCollection, key: unknown) {\n return target.has(key) ? key : getRaw(key);\n}\n\nfunction wrapIterator(source: Iterator<any>, convert: (item: any) => any): IterableIterator<any> {\n return {\n next() {\n const step = source.next();\n return step.done ? step : { value: convert(step.value), done: false };\n },\n [Symbol.iterator]() {\n return this;\n },\n };\n}\n\nfunction createCollectionMethods(engine: ReactiveEngine): Record<PropertyKey, Function> {\n const wrap = (value: unknown) => isObject(value) ? engine.reactive(value) : value;\n const wrapEntry = (target: AnyCollection) =>\n target instanceof Map\n ? ([key, value]: [unknown, unknown]) => [key, wrap(value)]\n : ([value]: [unknown, unknown]) => { const item = wrap(value); return [item, item]; };\n\n return {\n get(this: Map<any, any>, key: unknown) {\n const target = getRaw(this);\n const found = lookupKey(target, key);\n track(target, found as any);\n return wrap(target.get(found));\n },\n has(this: AnyCollection, key: unknown) {\n const target = getRaw(this);\n const found = lookupKey(target, key);\n track(target, found as any);\n return target.has(found);\n },\n set(this: Map<any, any>, key: unknown, value: unknown) {\n const target = getRaw(this);\n const stored = lookupKey(target, key);\n const raw = getRaw(value);\n const existed = target.has(stored);\n const previous = target.get(stored);\n target.set(stored, raw);\n if (!existed) changed(target, stored, true);\n else if (!Object.is(previous, raw)) changed(target, stored, false);\n return this;\n },\n add(this: Set<any>, value: unknown) {\n const target = getRaw(this);\n const stored = lookupKey(target, value);\n if (!target.has(stored)) {\n target.add(stored);\n changed(target, stored, true);\n }\n return this;\n },\n delete(this: AnyCollection, key: unknown) {\n const target = getRaw(this);\n const found = lookupKey(target, key);\n const removed = target.delete(found);\n if (removed) changed(target, found, true);\n return removed;\n },\n clear(this: AnyCollection) {\n const target = getRaw(this);\n if (target.size === 0) return;\n const keys = Array.from(target.keys());\n target.clear();\n for (const key of keys) trigger(target, key);\n trigger(target, ITERATE_KEY);\n trigger(target, KEYS_KEY);\n },\n forEach(this: AnyCollection, callback: (value: any, key: any, collection: any) => void, thisArg?: unknown) {\n const target = getRaw(this);\n track(target, ITERATE_KEY);\n const owner = this;\n const isMap = target instanceof Map;\n target.forEach((value: any, key: any) => {\n const item = wrap(value);\n callback.call(thisArg, item, isMap ? key : item, owner);\n });\n },\n keys(this: AnyCollection) {\n const target = getRaw(this);\n if (target instanceof Map) {\n track(target, KEYS_KEY);\n return target.keys();\n }\n track(target, ITERATE_KEY);\n return wrapIterator(target.keys(), wrap);\n },\n values(this: AnyCollection) {\n const target = getRaw(this);\n track(target, ITERATE_KEY);\n return wrapIterator(target.values(), wrap);\n },\n entries(this: AnyCollection) {\n const target = getRaw(this);\n track(target, ITERATE_KEY);\n return wrapIterator(target.entries(), wrapEntry(target));\n },\n [Symbol.iterator](this: AnyCollection) {\n const target = getRaw(this);\n track(target, ITERATE_KEY);\n return target instanceof Map\n ? wrapIterator(target.entries(), wrapEntry(target))\n : wrapIterator(target.values(), wrap);\n },\n };\n}\n\nexport function createCollectionHandler(engine: ReactiveEngine): ProxyHandler<AnyCollection> {\n const methods = createCollectionMethods(engine);\n return {\n get(target, key, receiver) {\n const meta = readMeta(engine, target, key, receiver);\n if (meta !== NOT_META) return meta;\n if (key === 'size') {\n track(target, ITERATE_KEY);\n return target.size;\n }\n if ((typeof key === 'string' || key === Symbol.iterator) && hasOwn(methods, key) && key in target) {\n return methods[key as any];\n }\n const value = Reflect.get(target, key, target);\n return typeof value === 'function' ? value.bind(target) : value;\n },\n };\n}\n","\r\nimport { TargetType, UnwrapValueRefs, getRaw, getTargetType, isObject, pauseTracking, resetTracking, enableTracking } from \"./common\";\r\nimport { createGetter } from \"./handlers/getter\";\r\nimport { createSetter } from \"./handlers/setter\";\r\nimport { createDelete, createHas, createOwn } from \"./handlers/orhers\";\r\nimport { ArrayMethods } from \"./handlers/ArrayMethods\";\r\nimport { createCollectionHandler } from \"./handlers/collections\";\r\nimport { LinkedList } from \"../common/LinkedList\";\r\nimport { track, trigger } from \"./reactivity-core\";\r\nexport const ReactiveEngineMapper = new WeakSet<ReactiveEngine>();\r\n\r\nconst AllreactiveMap: WeakMap<any, any> = new WeakMap();\r\nfunction armgetter() { return AllreactiveMap; }\r\n\r\n\r\nexport class ReactiveEngine {\r\n _gci: any;\r\n public startGc(_intervalMs: number = 10000) { /* no-op */ }\r\n public stopGc() { if (this._gci) { try { clearInterval(this._gci); } catch { } this._gci = undefined; } }\r\n constructor() {\r\n ReactiveEngineMapper.add(this);\r\n this.startGc();\r\n }\r\n \r\n DisposeMapper = new LinkedList();\r\n arrayTriggerCache = new Map<any, { method: string, key: any, value: any }>();\r\n ReactiveMap: () => WeakMap<any, any> = () => armgetter();\r\n activeCallback: any;\r\n isReadonly: boolean = false;\r\n superficial: boolean = false;\r\n arrayMethods: ArrayMethods = new ArrayMethods(this);\r\n arrayHandler = {\r\n get: createGetter(this),\r\n set: createSetter(this),\r\n has: createHas(this),\r\n deleteProperty: createDelete(this),\r\n ownKeys: createOwn(this)\r\n }\r\n deepHandler = {\r\n get: createGetter(this),\r\n set: createSetter(this),\r\n has: createHas(this),\r\n deleteProperty: createDelete(this),\r\n ownKeys: createOwn(this)\r\n } as ProxyHandler<any>\r\n collectionHandler = createCollectionHandler(this) as ProxyHandler<any>\r\n reactive<T>(model: T): UnwrapValueRefs<T> {\r\n\r\n var self = this;\r\n if (!isObject(model)) {\r\n model = { value: model } as any;\r\n }\r\n const targetType = getTargetType(model);\r\n if (targetType === TargetType.SYSTEM || TargetType.INVALID) {\r\n return model as any\r\n }\r\n\r\n let existingProxy = AllreactiveMap.get(model)\r\n if (existingProxy) {\r\n return existingProxy as any\r\n }\r\n existingProxy = AllreactiveMap.get(getRaw(model))\r\n if (existingProxy) {\r\n return existingProxy as any\r\n }\r\n // if (targetType === TargetType.INVALID) {\r\n if (targetType === TargetType.COLLECTION) {\r\n var proxy = new Proxy(model, this.collectionHandler);\r\n AllreactiveMap.set(model, proxy);\r\n return proxy;\r\n } else if (Array.isArray(model)) {\r\n var proxy = new Proxy(model, this.arrayHandler);\r\n // var original = Object.getPrototypeOf(proxy);\r\n // original[\"copy\"] = () => { return model; }\r\n // return \"copied\";\r\n AllreactiveMap.set(model, proxy);\r\n // try { this.startGc(); } catch { }\r\n return proxy;\r\n } else {\r\n var proxy = new Proxy(model, this.deepHandler);\r\n AllreactiveMap.set(model, proxy);\r\n // try { this.startGc(); } catch { }\r\n return proxy;\r\n }\r\n }\r\n\r\n clearModel(model: any): void {\r\n if (model != null && model != undefined) {\r\n Object.keys(model).forEach((key) => {\r\n if (typeof model[key] === 'object') {\r\n if (AllreactiveMap.has(model[key]) || AllreactiveMap.has(getRaw(model[key]))) {\r\n this.clearModel(model[key])\r\n }\r\n }\r\n AllreactiveMap.delete(getRaw(model[key]));\r\n AllreactiveMap.delete(model[key]);\r\n })\r\n AllreactiveMap.delete(getRaw(model));\r\n AllreactiveMap.delete(model);\r\n }\r\n }\r\n\r\n track(model: any, key: any) {\r\n track(model, key);\r\n }\r\n trigger(model: any, key: any, value: any) {\r\n trigger(model, key);\r\n }\r\n ArrayTrigger(target: any, key: any, ...args: any) {\r\n this.trigger(target, key, args);\r\n }\r\n onValueChanged?: (info: { raw: any, proxy: any }, key: any) => any;\r\n toRaw(item: any) {\r\n return JSON.parse(JSON.stringify(this.deepClone(item)));\r\n }\r\n deepClone(item: any) {\r\n var self = this;\r\n if (!item) { return item; }\r\n var types = [Number, String, Boolean],\r\n result;\r\n types.forEach(function (type) {\r\n if (item instanceof type) {\r\n result = type(item);\r\n }\r\n });\r\n\r\n if (typeof result == \"undefined\") {\r\n if (Object.prototype.toString.call(item) === \"[object Array]\") {\r\n result = [];\r\n item.forEach(function (child: any, index: any, array: any[]) {\r\n result[index] = self.deepClone(child);\r\n });\r\n } else if (typeof item == \"object\") {\r\n if (item.nodeType && typeof item.cloneNode == \"function\") {\r\n result = item.cloneNode(true);\r\n } else if (!item.prototype) {\r\n if (item instanceof Date) {\r\n result = new Date(item);\r\n } else {\r\n result = <any>{};\r\n for (var i in item) {\r\n result[i] = self.deepClone(item[i]);\r\n }\r\n }\r\n } else {\r\n if (false && item.constructor) {\r\n result = new item.constructor();\r\n } else {\r\n result = item;\r\n }\r\n }\r\n } else {\r\n result = item;\r\n }\r\n }\r\n return result;\r\n }\r\n pauseTracking() {\r\n pauseTracking();\r\n }\r\n enableTracking() {\r\n enableTracking();\r\n }\r\n resetTracking() {\r\n resetTracking();\r\n }\r\n dispose() {\r\n var cnt = true;\r\n this.stopGc();\r\n while (cnt == true) {\r\n if (this.DisposeMapper.size > 0) {\r\n const element = this.DisposeMapper.pop();\r\n // if (ApplicationService.current?.Options?.onReactiveEffectRun) {\r\n AllreactiveMap.delete(element);\r\n } else {\r\n cnt = false\r\n }\r\n }\r\n this.DisposeMapper.clear();\r\n ReactiveEngineMapper.delete(this);\r\n // if (ApplicationService.current?.Options?.onReactiveEffectRun) {\r\n }\r\n\r\n}","\r\nimport { ReactiveEngine } from \"./ReactiveEngine\";\r\nimport { UnwrapValueRefs } from \"./common\";\r\nimport { Signal, Computed, LazyComputed } from \"./Signal\";\r\nexport const engine = new ReactiveEngine();\r\n\r\n\r\n/* @DEV-ONLY */ const reactiveRegistry: Array<{ name: string; value: any; type: string }> = [];\r\nconst isDevRegistryEnabled = () => {\r\n try {\r\n const g = globalThis as any;\r\n if (!g.__MOTIF_DEV__) return false;\r\n if (g.__MOTIF_STORE_REGISTRY__ !== reactiveRegistry) g.__MOTIF_STORE_REGISTRY__ = reactiveRegistry;\r\n return true;\r\n } catch { return false; }\r\n};\r\n\r\nexport function reactiveConfig(config: {\r\n onValueChanged?: (info: { raw: any, proxy: any }, key: any) => any\r\n onItemAdded?: (model: any, key: any, value: any) => any\r\n onItemRemoved?: (model: any, key: any, value: any) => any\r\n}) {\r\n engine.onValueChanged = config.onValueChanged;\r\n}\r\n\r\n// export * from \"./IStoreBinder\";\r\n\r\n// export function reactiveListeners(model?: any) {\r\n// if (model) {\r\n// /* @DEV-ONLY */return debugGetDeps(model) ?? new Map();\r\n// return debugGetDepMap();\r\n\r\n\r\nexport function reactive<T>(model: T): UnwrapValueRefs<T> {\r\n const result = engine.reactive<T>(model);\r\n /* @DEV-ONLY */ try {\r\n /* @DEV-ONLY */ if (isDevRegistryEnabled()) {\r\n /* @DEV-ONLY */ const name = (model as any)?.constructor?.name || 'reactive';\r\n /* @DEV-ONLY */ reactiveRegistry.push({ name, value: result, type: 'reactive' });\r\n /* @DEV-ONLY */ if (reactiveRegistry.length > 200) reactiveRegistry.shift();\r\n /* @DEV-ONLY */}\r\n /* @DEV-ONLY */\r\n /* @DEV-ONLY */ } catch { }\r\n return result;\r\n}\r\n\r\nexport function useModel<T>(model: T): UnwrapValueRefs<T> {\r\n const result = engine.reactive<T>(model);\r\n\r\n\r\n /* @DEV-ONLY */ try {\r\n /* @DEV-ONLY */ if (isDevRegistryEnabled()) {\r\n /* @DEV-ONLY */ const name = (model as any)?.constructor?.name || 'useModel';\r\n /* @DEV-ONLY */ reactiveRegistry.push({ name, value: result, type: 'reactive' });\r\n /* @DEV-ONLY */ if (reactiveRegistry.length > 200) reactiveRegistry.shift();\r\n /* @DEV-ONLY */ }\r\n/* @DEV-ONLY */\r\n /* @DEV-ONLY */ } catch { }\r\n return result;\r\n}\r\n\r\n\r\n\r\nexport function clearModel(model: any) {\r\n return engine.clearModel(model);\r\n}\r\n\r\n \r\n\r\nexport function deepClone(item: any) {\r\n return engine.deepClone(item);\r\n}\r\n\r\nexport function createSignal<T>(initialValue: T): Signal<T> {\r\n const sig = new Signal(initialValue);\r\n /* @DEV-ONLY */ try {\r\n /* @DEV-ONLY */ if (isDevRegistryEnabled()) {\r\n /* @DEV-ONLY */ const name = `signal_${reactiveRegistry.length}`;\r\n /* @DEV-ONLY */ reactiveRegistry.push({ name, value: sig.value, type: 'signal' });\r\n /* @DEV-ONLY */ if (reactiveRegistry.length > 200) reactiveRegistry.shift();\r\n /* @DEV-ONLY */}\r\n /* @DEV-ONLY */\r\n /* @DEV-ONLY */ } catch { }\r\n return sig;\r\n}\r\n\r\nexport function createComputed<T>(getter: () => T): Computed<T> {\r\n const comp = new Computed(getter);\r\n /* @DEV-ONLY */ try {\r\n /* @DEV-ONLY */ if (isDevRegistryEnabled()) {\r\n /* @DEV-ONLY */ const name = `computed_${reactiveRegistry.length}`;\r\n /* @DEV-ONLY */ reactiveRegistry.push({ name, value: comp.value, type: 'computed' });\r\n /* @DEV-ONLY */ if (reactiveRegistry.length > 200) reactiveRegistry.shift();\r\n /* @DEV-ONLY */}\r\n /* @DEV-ONLY */\r\n /* @DEV-ONLY */ } catch { }\r\n return comp;\r\n}\r\n\r\nexport function createLazyComputed<T>(getter: () => T): LazyComputed<T> {\r\n const comp = new LazyComputed(getter);\r\n /* @DEV-ONLY */ try {\r\n /* @DEV-ONLY */ if (isDevRegistryEnabled()) {\r\n /* @DEV-ONLY */ const name = `lazyComputed_${reactiveRegistry.length}`;\r\n /* @DEV-ONLY */ reactiveRegistry.push({ name, value: undefined, type: 'computed' });\r\n /* @DEV-ONLY */ if (reactiveRegistry.length > 200) reactiveRegistry.shift();\r\n /* @DEV-ONLY */}\r\n /* @DEV-ONLY */\r\n /* @DEV-ONLY */} catch { }\r\n return comp;\r\n}\r\n\r\nexport { ReactiveEngine };\r\nexport { configureReactivityLeakMonitor, track, trigger, effect, createScheduledEffect, asyncTracking, untracked } from \"./reactivity-core\";\r\nexport type { EffectFn, ScheduledEffect, AsyncTrackingToken } from \"./reactivity-core\";\r\nexport * from \"./Signal\";\r\nimport { untracked } from \"./reactivity-core\";\r\n","\r\nimport { Component, findAppendableComponent } from '../';\r\nimport { ComponentBase, notifyDeactivated } from '../';\r\nimport { effect, untracked } from '../store';\r\nimport { reportError, reportWarning } from '../common/diagnostics';\r\n\r\nexport interface VirtualizationDataRequest {\r\n page: number;\r\n pageSize: number;\r\n scrollTop: number;\r\n}\r\n\r\nexport interface VirtualizationDataResponse<T> {\r\n items: T[];\r\n totalCount: number;\r\n hasMore: boolean;\r\n}\r\n\r\nexport interface VirtualizationState<T> {\r\n isLoading: boolean;\r\n isInitialized: boolean;\r\n currentPage: number;\r\n totalCount: number;\r\n hasMore: boolean;\r\n error?: Error;\r\n data: T[];\r\n}\r\n\r\nexport interface VirtualizationProps<T> {\r\n dataRequest: (request: VirtualizationDataRequest) => Promise<VirtualizationDataResponse<T>>;\r\n itemTemplate: (item: T, index: number) => any;\r\n itemHeight: number | ((item: T, index: number) => number);\r\n pageSize?: number;\r\n renderMode?: 'item' | 'page';\r\n mainTemplate?: (content: Component, state: VirtualizationState<T>) => any;\r\n loadingTemplate?: (state: VirtualizationState<T>) => any;\r\n emptyTemplate?: () => any;\r\n errorTemplate?: (error: Error) => any;\r\n overscan?: number;\r\n autoLoad?: boolean;\r\n autoLoadThreshold?: number;\r\n overscanPages?: number;\r\n pageBuffer?: number;\r\n className?: string;\r\n style?: Partial<CSSStyleDeclaration>;\r\n filter?: (item: T[]) => T[];\r\n cacheSize?: number;\r\n \r\n autoRefresh?: boolean; \r\n watch?: () => unknown;\r\n}\r\n\r\nexport class Virtualization<T = any> extends Component<HTMLDivElement, VirtualizationProps<T>> {\r\n private readonly _state: VirtualizationState<T>;\r\n\r\n private _virtualContent!: Component<Comment>;\r\n private _topSpacer!: Component<HTMLDivElement>;\r\n private _bottomSpacer!: Component<HTMLDivElement>;\r\n private _cache = new Map<any, ComponentBase>();\r\n private _view: T[] = [];\r\n private _occurrence: number[] = [];\r\n private _occurrenceKeys = new WeakMap<object, object[]>();\r\n\r\n private _isLoadingMore = false;\r\n private _emptyRendered: boolean = false;\r\n private _renderPending = false;\r\n\r\n constructor(props: VirtualizationProps<T>) {\r\n super('div', props as any);\r\n\r\n if (props.className) this.class.add(props.className);\r\n if (props.style) Object.assign(this.element.style, props.style);\r\n\r\n this._state = this.useModel({\r\n isLoading: false,\r\n isInitialized: false,\r\n currentPage: 0,\r\n totalCount: 0,\r\n hasMore: true,\r\n error: undefined,\r\n data: []\r\n });\r\n\r\n this._loadMore = this._loadMore.bind(this);\r\n this._renderLoadingState = this._renderLoadingState.bind(this);\r\n this._renderErrorState = this._renderErrorState.bind(this);\r\n this._renderEmptyState = this._renderEmptyState.bind(this);\r\n this._loadInitial = this._loadInitial.bind(this);\r\n this.renderViewport = this.renderViewport.bind(this);\r\n this._makeView();\r\n }\r\n\r\n contentWrapper = new Component();\r\n wrapper!: Component;\r\n private _makeView() {\r\n\r\n this._topSpacer = new Component<HTMLDivElement>('div');\r\n this._topSpacer.element.style.cssText = 'height: 0px;';\r\n this._topSpacer.class.add('motif-virtualization-top-spacer');\r\n this._bottomSpacer = new Component<HTMLDivElement>('div');\r\n this._bottomSpacer.element.style.cssText = 'height: 0px;';\r\n this._bottomSpacer.class.add('motif-virtualization-bottom-spacer');\r\n\r\n this._virtualContent = new Component<Comment>(document.createComment('')); \r\n\r\n if (this.props.mainTemplate) {\r\n this.contentWrapper.controls.add(this._topSpacer, this._virtualContent, this._bottomSpacer); \r\n this.contentWrapper.onBuilding = ((s) => {\r\n var el = findAppendableComponent(s.parent!);\r\n if (el) {\r\n this.wrapper = el!;\r\n this._loadInitial();\r\n el.style({ overflowY: 'auto', position: 'relative' });\r\n el.motif.on('scroll', this._handleScroll);\r\n }\r\n });\r\n\r\n this.controls.add(this.props.mainTemplate(this.contentWrapper, this._state));\r\n } else {\r\n this.wrapper = this;\r\n this.element.style.cssText = 'overflow-y: auto; height: 100%; position: relative;';\r\n this.controls.add(this._topSpacer, this._virtualContent, this._bottomSpacer);\r\n this.motif.on('scroll', this._handleScroll); \r\n }\r\n }\r\n\r\n private _initialLoadStarted = false;\r\n onBuilding() {\r\n if (this.props.mainTemplate || this._initialLoadStarted) return;\r\n this._initialLoadStarted = true;\r\n this._loadInitial();\r\n }\r\n\r\n onMounted() {\r\n this._observeResize();\r\n if (this._renderPending) this.renderViewport();\r\n }\r\n\r\n onDisposing() {\r\n this._stopResizeObserver();\r\n this._stopDataWatch();\r\n this._clearContent();\r\n }\r\n\r\n private _offsets: number[] | null = null;\r\n private _resizeObserver?: ResizeObserver;\r\n private _observed?: Element;\r\n private _observedHeight = -1;\r\n\r\n private _fixedHeight(): number | null {\r\n const h = this.props.itemHeight;\r\n return typeof h === 'function' ? null : h;\r\n }\r\n\r\n private _computeOffsets(): void {\r\n const fn = this.props.itemHeight;\r\n if (typeof fn !== 'function') { this._offsets = null; return; }\r\n const view = this._view;\r\n const offsets = new Array<number>(view.length + 1);\r\n offsets[0] = 0;\r\n for (let i = 0; i < view.length; i++) {\r\n let h = 0;\r\n try { h = Number(fn(view[i], i)); } catch { h = 0; }\r\n offsets[i + 1] = offsets[i] + (h > 0 && Number.isFinite(h) ? h : 0);\r\n }\r\n this._offsets = offsets;\r\n }\r\n\r\n private _layoutOffsets(): number[] {\r\n if (!this._offsets || this._offsets.length !== this._view.length + 1) this._computeOffsets();\r\n return this._offsets!;\r\n }\r\n\r\n private _offsetOf(index: number): number {\r\n const h = this._fixedHeight();\r\n if (h !== null) return index * h;\r\n const offsets = this._layoutOffsets();\r\n return offsets[Math.min(Math.max(0, index), offsets.length - 1)];\r\n }\r\n\r\n private _indexAt(y: number, offsets: number[]): number {\r\n const total = offsets.length - 1;\r\n if (total <= 0) return 0;\r\n let lo = 0, hi = total - 1;\r\n while (lo < hi) {\r\n const mid = (lo + hi + 1) >> 1;\r\n if (offsets[mid] <= y) lo = mid; else hi = mid - 1;\r\n }\r\n return lo;\r\n }\r\n\r\n private _observeResize(): void {\r\n const el = this.wrapper?.element as unknown as HTMLElement | undefined;\r\n if (!el || this._observed === el || this.isDisposed) return;\r\n const RO = (globalThis as any).ResizeObserver;\r\n if (typeof RO !== 'function') return;\r\n this._stopResizeObserver();\r\n this._observedHeight = el.clientHeight;\r\n const observer: ResizeObserver = new RO(() => {\r\n if (this.isDisposed) return;\r\n const h = el.clientHeight;\r\n if (h === this._observedHeight) return;\r\n this._observedHeight = h;\r\n this.renderViewport();\r\n });\r\n observer.observe(el);\r\n this._resizeObserver = observer;\r\n this._observed = el;\r\n }\r\n\r\n private _stopResizeObserver(): void {\r\n try { this._resizeObserver?.disconnect(); } catch { }\r\n this._resizeObserver = undefined;\r\n this._observed = undefined;\r\n }\r\n\r\n \r\n private _loadSeq = 0;\r\n private _dataWatchStop?: () => void;\r\n private _reloadScheduled = false;\r\n private _reloadTimes: number[] = [];\r\n\r\n private _stopDataWatch(): void {\r\n this._dataWatchStop?.();\r\n this._dataWatchStop = undefined;\r\n }\r\n\r\n /**\r\n * dataRequest'i çağırır. `watch` açıksa çağrının senkron kısmında okunan reaktif veriyi izler;\r\n * değişince yeniden yükleme planlar. Aksi hâlde çağrı hiçbir dış effect'e bağımlılık sızdırmaz.\r\n */\r\n private _request(request: VirtualizationDataRequest, watch: boolean): Promise<VirtualizationDataResponse<T>> {\r\n const call = (): Promise<VirtualizationDataResponse<T>> => {\r\n try { return Promise.resolve(this.props.dataRequest(request)); }\r\n catch (error) { return Promise.reject(error); }\r\n };\r\n if (!watch || this.props.autoRefresh === false) return untracked(call);\r\n\r\n this._stopDataWatch();\r\n let result!: Promise<VirtualizationDataResponse<T>>;\r\n let first = true;\r\n this._dataWatchStop = effect(() => {\r\n if (first) {\r\n first = false;\r\n try { this.props.watch?.(); } catch (error) { reportError('MJX205', error); }\r\n result = call();\r\n return;\r\n }\r\n this._scheduleReload();\r\n });\r\n return result;\r\n }\r\n\r\n private _scheduleReload(): void {\r\n if (this._reloadScheduled || this.isDisposed) return;\r\n this._reloadScheduled = true;\r\n queueMicrotask(() => {\r\n this._reloadScheduled = false;\r\n if (this.isDisposed) return;\r\n // Sonsuz döngü koruması, 1 sn'de 30'u aşınca dur.\r\n const now = Date.now();\r\n this._reloadTimes = this._reloadTimes.filter(t => now - t < 1000);\r\n this._reloadTimes.push(now);\r\n if (this._reloadTimes.length > 30) {\r\n this._stopDataWatch();\r\n reportWarning('MJX206', []);\r\n return;\r\n }\r\n if (this._state.isInitialized) void this._reloadLoaded();\r\n else void this._loadInitial();\r\n });\r\n }\r\n\r\n /** Yüklü aralığı (0..currentPage) tek istekte yeniden alır; içerik yanıt gelene kadar kalır. */\r\n private async _reloadLoaded(): Promise<void> {\r\n const seq = ++this._loadSeq;\r\n const pageSize = this.props.pageSize || 50;\r\n const pages = this._state.currentPage + 1;\r\n try {\r\n const response = await this._request({\r\n page: 0,\r\n pageSize: pageSize * pages,\r\n scrollTop: this.wrapper?.element?.scrollTop ?? 0\r\n }, true);\r\n if (this.isDisposed || seq !== this._loadSeq) return;\r\n const el = this.wrapper?.element as HTMLElement | undefined;\r\n const top = el?.scrollTop ?? 0;\r\n this._state.currentPage = pages - 1;\r\n this._state.totalCount = response.totalCount;\r\n this._state.hasMore = response.hasMore;\r\n this._state.error = undefined;\r\n this._state.data = response.items;\r\n this._rebuildView();\r\n // Satırlar sökülürken içerik kısalmasın: kısalırsa tarayıcı kaydırmayı kırpar.\r\n // Boşluğu geçici olarak yeni listenin tam boyuna sabitle; renderViewport düzeltir.\r\n this._topSpacer.style({ height: '0px' });\r\n this._bottomSpacer.style({ height: this._offsetOf(this._view.length) + 'px' });\r\n this._clearContent();\r\n if (el && el.scrollTop !== top) el.scrollTop = top;\r\n this.renderViewport();\r\n } catch (error) {\r\n if (this.isDisposed || seq !== this._loadSeq) return;\r\n this._state.error = error as Error;\r\n this._renderErrorState(error as Error);\r\n }\r\n }\r\n\r\n private _handleScroll = (_sender: Component, _event: Event) => {\r\n this.renderViewport();\r\n if (this.props.autoLoad === false) return;\r\n if (!this._state.hasMore || this._isLoadingMore || !this._state.isInitialized) return;\r\n const el = this.wrapper.element as HTMLElement;\r\n const fixed = this._fixedHeight();\r\n const loadedBottom = fixed !== null ? this._state.data.length * fixed : this._offsetOf(this._view.length);\r\n const distanceToLoaded = loadedBottom - (el.scrollTop + el.clientHeight);\r\n if (distanceToLoaded < (this.props.autoLoadThreshold ?? 100)) void this._loadMore();\r\n }\r\n\r\n private async _loadInitial(): Promise<void> {\r\n const seq = ++this._loadSeq;\r\n this._state.isLoading = true;\r\n this._renderLoadingState();\r\n\r\n try {\r\n const pageSize = this.props.pageSize || 50;\r\n\r\n const response = await this._request({\r\n page: 0,\r\n pageSize,\r\n scrollTop: 0\r\n }, true);\r\n if (this.isDisposed || seq !== this._loadSeq) return;\r\n this._state.currentPage = 0;\r\n this._state.totalCount = response.totalCount;\r\n this._state.hasMore = response.hasMore;\r\n this._state.isInitialized = true;\r\n this._state.isLoading = false;\r\n this._state.error = undefined;\r\n this._state.data = response.items;\r\n this._clearContent();\r\n this._rebuildView();\r\n this.renderViewport();\r\n\r\n } catch (error) {\r\n if (this.isDisposed || seq !== this._loadSeq) return;\r\n this._state.isLoading = false;\r\n this._state.error = error as Error;\r\n this._renderErrorState(error as Error);\r\n }\r\n }\r\n\r\n private async _loadMore(): Promise<void> {\r\n if (this._isLoadingMore || !this._state.hasMore || !this._state.isInitialized) return;\r\n const seq = this._loadSeq;\r\n try {\r\n this._isLoadingMore = true;\r\n const nextPage = this._state.currentPage + 1;\r\n\r\n const pageSize = this.props.pageSize || 50;\r\n const response = await this._request({\r\n page: nextPage,\r\n pageSize,\r\n scrollTop: this.wrapper?.element?.scrollTop ?? 0\r\n }, false);\r\n if (this.isDisposed || seq !== this._loadSeq) return;\r\n this._state.totalCount = response.totalCount;\r\n this._state.currentPage = nextPage;\r\n this._state.hasMore = response.hasMore;\r\n this._state.error = undefined;\r\n this._state.data.push(...response.items);\r\n this._rebuildView();\r\n this.renderViewport();\r\n\r\n } catch (error) {\r\n if (this.isDisposed || seq !== this._loadSeq) return;\r\n this._state.error = error as Error;\r\n reportError('MJX207', error);\r\n } finally {\r\n this._isLoadingMore = false;\r\n }\r\n\r\n }\r\n\r\n\r\n private _rebuildView(): void {\r\n this._view = this.props.filter ? this.props.filter(this._state.data) : this._state.data;\r\n const seen = new Map<object, number>();\r\n this._occurrence = this._view.map(item => {\r\n if (typeof item !== 'object' || item === null) return 0;\r\n const n = seen.get(item) ?? 0;\r\n seen.set(item, n + 1);\r\n return n;\r\n });\r\n if (typeof this.props.itemHeight === 'function') this._computeOffsets();\r\n else this._offsets = null;\r\n }\r\n\r\n private _clearContent(): void {\r\n if (!this._virtualContent) return;\r\n const controls = this._virtualContent.controls;\r\n\r\n for (const c of this._cache.values()) {\r\n controls.silentUnlink(c);\r\n if (!c.isDisposed) void c.dispose();\r\n }\r\n this._cache.clear();\r\n controls.clear();\r\n this._emptyRendered = false;\r\n }\r\n\r\n private renderViewport(): void {\r\n if (this.isDisposed || !this.wrapper || !this._state.isInitialized) return;\r\n const el = this.wrapper.element as HTMLElement;\r\n this._observeResize();\r\n const view = this._view;\r\n const total = view.length;\r\n\r\n if (total === 0) {\r\n if (!this._emptyRendered) {\r\n this._clearContent();\r\n this._renderEmptyState();\r\n }\r\n this._topSpacer.style({ height: '0px' });\r\n this._bottomSpacer.style({ height: '0px' });\r\n return;\r\n }\r\n if (this._emptyRendered) this._clearContent();\r\n\r\n const h = this._fixedHeight();\r\n let overscan: number, first: number, last: number, topPx: number, bottomPx: number;\r\n if (h !== null) {\r\n const visible = Math.floor(el.clientHeight / h);\r\n if (visible <= 0) {\r\n this._renderPending = !(el as any).isConnected;\r\n return;\r\n }\r\n this._renderPending = false;\r\n\r\n overscan = Math.max(0, this.props.overscan ?? visible);\r\n const anchor = Math.min(Math.max(0, Math.floor(el.scrollTop / h)), total - 1);\r\n first = Math.max(0, anchor - overscan);\r\n last = Math.min(total, anchor + visible + overscan);\r\n topPx = first * h;\r\n bottomPx = Math.max(0, total - last) * h;\r\n } else {\r\n if (el.clientHeight <= 0) {\r\n this._renderPending = !(el as any).isConnected;\r\n return;\r\n }\r\n this._renderPending = false;\r\n\r\n const offsets = this._layoutOffsets();\r\n const top = Math.max(0, el.scrollTop);\r\n const bottom = top + el.clientHeight;\r\n const anchor = this._indexAt(top, offsets);\r\n let end = anchor;\r\n while (end < total && offsets[end] < bottom) end++;\r\n const visible = Math.max(1, end - anchor);\r\n overscan = Math.max(0, this.props.overscan ?? visible);\r\n first = Math.max(0, anchor - overscan);\r\n last = Math.min(total, Math.max(end, anchor + 1) + overscan);\r\n topPx = offsets[first];\r\n bottomPx = Math.max(0, offsets[total] - offsets[last]);\r\n }\r\n\r\n const rows: ComponentBase[] = new Array(last - first);\r\n const keep = new Set<ComponentBase>();\r\n for (let i = first; i < last; i++) {\r\n const c = this._rowFor(view[i], i);\r\n rows[i - first] = c;\r\n keep.add(c);\r\n }\r\n\r\n const inDom = this._virtualContent.controls.items;\r\n for (const c of inDom.slice()) {\r\n if (!keep.has(c)) this._detachRow(c);\r\n }\r\n\r\n for (let pos = 0; pos < rows.length; pos++) {\r\n const c = rows[pos];\r\n if (inDom[pos] === c) continue;\r\n if (c.parent === this._virtualContent) this._detachRow(c);\r\n this._virtualContent.controls.insert(pos, c);\r\n }\r\n this._topSpacer.style({ height: topPx + 'px' });\r\n this._bottomSpacer.style({ height: bottomPx + 'px' });\r\n\r\n this._evictCache(Math.max(200, (last - first) * 3));\r\n\r\n if (this.props.autoLoad !== false && this._state.hasMore && !this._isLoadingMore && total < last + overscan) {\r\n void this._loadMore();\r\n }\r\n }\r\n\r\n private _occurrenceKey(item: object, occurrence: number): object {\r\n let keys = this._occurrenceKeys.get(item);\r\n if (!keys) {\r\n keys = [];\r\n this._occurrenceKeys.set(item, keys);\r\n }\r\n return keys[occurrence] ??= {};\r\n }\r\n\r\n private _rowFor(item: T, index: number): ComponentBase {\r\n const occurrence = this._occurrence[index] ?? 0;\r\n const key = (typeof item === 'object' && item !== null)\r\n ? (occurrence === 0 ? item : this._occurrenceKey(item, occurrence))\r\n : index;\r\n let component = this._cache.get(key);\r\n if (component && component.isDisposed) {\r\n this._cache.delete(key);\r\n component = undefined;\r\n }\r\n if (component) {\r\n this._cache.delete(key);\r\n this._cache.set(key, component);\r\n return component;\r\n }\r\n const rendered = this.props.itemTemplate(item, index);\r\n component = rendered instanceof ComponentBase ? rendered : new Component(rendered);\r\n (component as any).__listItemRef = item;\r\n this._cache.set(key, component);\r\n return component;\r\n }\r\n\r\n private _detachRow(c: ComponentBase): void {\r\n const controls = this._virtualContent.controls;\r\n if (c.isDisposed) { controls.silentUnlink(c); return; }\r\n const node = c.element as unknown as Node;\r\n if (node.nodeType === Node.COMMENT_NODE) {\r\n controls.silentUnlink(c);\r\n const close = (c.motif.options as any).closeFragment as Node | undefined;\r\n const frag: DocumentFragment = (c.motif.options as any).cache ?? ((c.motif.options as any).cache = document.createDocumentFragment());\r\n let cur: Node | null = node;\r\n while (cur) {\r\n const next: Node | null = cur.nextSibling;\r\n frag.appendChild(cur);\r\n if (cur === close) break;\r\n cur = next;\r\n }\r\n notifyDeactivated(c);\r\n } else {\r\n controls.silentDetach(c);\r\n }\r\n }\r\n\r\n private _evictCache(limit: number): void {\r\n const max = this.props.cacheSize ?? limit;\r\n if (this._cache.size <= max) return;\r\n for (const [key, c] of this._cache) {\r\n if (this._cache.size <= max) break;\r\n if (c.parent === this._virtualContent) continue;\r\n this._cache.delete(key);\r\n if (!c.isDisposed) void c.dispose();\r\n }\r\n }\r\n\r\n private _renderLoadingState(): void {\r\n if (!this._virtualContent || !this.props.loadingTemplate) return;\r\n this._clearContent();\r\n const loadingElement = this.props.loadingTemplate(this._state);\r\n this._virtualContent.controls.add(loadingElement);\r\n }\r\n\r\n private _renderEmptyState(): void {\r\n if (!this._virtualContent || !this.props.emptyTemplate) return;\r\n this._clearContent();\r\n const emptyElement = this.props.emptyTemplate();\r\n this._virtualContent.controls.add(emptyElement);\r\n this._emptyRendered = true;\r\n }\r\n\r\n private _renderErrorState(error: Error): void {\r\n if (!this._virtualContent) {\r\n reportError('MJX207', error);\r\n return;\r\n }\r\n this._clearContent();\r\n if (this.props.errorTemplate) {\r\n const errorElement = this.props.errorTemplate(error);\r\n this._virtualContent.controls.add(errorElement);\r\n } else {\r\n reportError('MJX207', error);\r\n }\r\n }\r\n\r\n public refresh(): Promise<void> {\r\n this._state.data = [];\r\n this._state.currentPage = 0;\r\n this._state.isInitialized = false;\r\n this._state.hasMore = true;\r\n this._rebuildView();\r\n return this._loadInitial();\r\n }\r\n\r\n public setData(data: T[]) { \r\n this._loadSeq++;\r\n this._stopDataWatch();\r\n this._state.data = data;\r\n this._state.currentPage = 0;\r\n this._state.totalCount = data.length;\r\n this._state.hasMore = false;\r\n this._state.isInitialized = true;\r\n this._state.isLoading = false;\r\n this._state.error = undefined;\r\n this._clearContent();\r\n this._rebuildView();\r\n this.renderViewport();\r\n }\r\n\r\n public scrollToIndex(index: number): void {\r\n if (!this.wrapper) return;\r\n const total = this._view.length;\r\n const i = Math.min(Math.max(0, index), Math.max(0, total - 1));\r\n this.wrapper.element.scrollTop = this._offsetOf(i);\r\n this.renderViewport();\r\n }\r\n\r\n public getState(): Readonly<VirtualizationState<T>> {\r\n return { ...this._state };\r\n }\r\n\r\n}\r\n","import type { ServiceLifetime } from \"./ServiceCollection\";\r\n\r\nexport const autoRegistry = new Map<any, { lifetime?: ServiceLifetime, deps?: any[] }>();\r\n","import { ServiceProvider } from \"./ServiceProvider\";\nimport { autoRegistry } from \"./autoRegistry\";\nimport { motifError, reportWarning } from \"../common/diagnostics\";\n\nexport type ServiceLifetime = 'transient' | 'singleton' | 'scoped';\n\nexport type ServiceImplementation<V> = V extends abstract new (...args: any[]) => any\n ? V\n : V extends (...args: any[]) => any\n ? 'Use { useValue: fn } or { useFactory: fn } to register a function'\n : V;\n\nfunction isConstructor(fn: Function): boolean {\n try {\n Reflect.construct(String, [], fn);\n return true;\n } catch {\n return false;\n }\n}\n\nexport interface ServiceDescriptor<T = any> {\n token: any;\n lifetime: ServiceLifetime;\n useClass?: new (...args: any[]) => T;\n useFactory?: (...args: any[]) => T | Promise<T>;\n useValue?: T;\n deps?: any[];\n}\n\nexport class ServiceCollection {\n private descriptors: Map<any, ServiceDescriptor> = new Map();\n\n public reset(): void {\n this.descriptors.clear();\n }\n public addTransient<V>(token: any, impl: ServiceImplementation<V>): void {\n this._add(token, impl, 'transient');\n }\n public addSingleton<V>(token: any, impl: ServiceImplementation<V>): void {\n this._add(token, impl, 'singleton');\n }\n public addScoped<V>(token: any, impl: ServiceImplementation<V>): void {\n this._add(token, impl, 'scoped');\n }\n\n private _add(token: any, impl: any, lifetime: ServiceLifetime) {\n const desc: ServiceDescriptor = { token, lifetime };\n if (impl && typeof impl === 'object' && (impl.useClass || impl.useFactory || Object.prototype.hasOwnProperty.call(impl, 'useValue') || Array.isArray(impl.deps))) {\n desc.useClass = impl.useClass;\n desc.useFactory = impl.useFactory;\n desc.useValue = impl.useValue;\n desc.deps = Array.isArray(impl.deps) ? impl.deps : undefined;\n try {\n const sources = [\n desc.useClass ? 'useClass' : null,\n desc.useFactory ? 'useFactory' : null,\n (desc.useValue !== undefined) ? 'useValue' : null\n ].filter(Boolean);\n if ((sources as any).length > 1) {\n reportWarning('MJX410', [this._tokenName(token), sources.join(', ')], { token });\n }\n if (impl.deps && !Array.isArray(impl.deps)) {\n reportWarning('MJX411', [this._tokenName(token)], { token });\n }\n } catch { /* no-op */ }\n if (desc.useValue && typeof (desc.useValue as any).then === 'function') {\n const p = desc.useValue as any;\n desc.useFactory = async () => await p;\n desc.useValue = undefined;\n }\n } else if (typeof impl === 'function') {\n if (!isConstructor(impl)) throw motifError('MJX413', this._tokenName(token));\n desc.useClass = impl as any;\n } else {\n if (impl && typeof (impl as any).then === 'function') {\n const p = impl as any;\n desc.useFactory = async () => await p;\n } else {\n desc.useValue = impl;\n }\n }\n this.descriptors.set(token, desc);\n }\n\n private _tokenName(token: any): string {\n if (typeof token === 'string') return token;\n if (typeof token === 'symbol') return token.toString();\n if (typeof token === 'function') return token.name || '[AnonymousClass]';\n return String(token);\n }\n\n public getDescriptor(token: any): ServiceDescriptor | null {\n const existing = this.descriptors.get(token);\n if (existing) return existing;\n const meta = autoRegistry.get(token);\n if (meta) {\n this._add(token, {\n useClass: token,\n deps: meta.deps,\n useValue: undefined,\n useFactory: undefined\n }, meta.lifetime || 'transient');\n return this.descriptors.get(token) || null;\n }\n return null;\n }\n\n /** `@Injectable` ile işaretlenmiş ama henüz kaydedilmemiş bir token var mı? */\n public canAutoRegister(token: any): boolean {\n return !this.descriptors.has(token) && autoRegistry.has(token);\n }\n\n public getService(token: any): ServiceDescriptor | null {\n return this.getDescriptor(token);\n }\n\n public buildServiceProvider(): ServiceProvider {\n return new ServiceProvider(this);\n }\n\n\n public has(token: any): boolean {\n return this.descriptors.has(token);\n }\n\n\n public remove(token: any): boolean {\n return this.descriptors.delete(token);\n }\n\n\n public replace<V>(token: any, impl: ServiceImplementation<V>, lifetime?: ServiceLifetime): void {\n const existing = this.descriptors.get(token);\n const lt: ServiceLifetime = lifetime ?? (existing?.lifetime ?? 'transient');\n this._add(token, impl, lt);\n }\n\n\n public tryAddTransient<V>(token: any, impl: ServiceImplementation<V>): boolean {\n if (this.descriptors.has(token)) return false;\n this._add(token, impl, 'transient');\n return true;\n }\n public tryAddSingleton<V>(token: any, impl: ServiceImplementation<V>): boolean {\n if (this.descriptors.has(token)) return false;\n this._add(token, impl, 'singleton');\n return true;\n }\n public tryAddScoped<V>(token: any, impl: ServiceImplementation<V>): boolean {\n if (this.descriptors.has(token)) return false;\n this._add(token, impl, 'scoped');\n return true;\n }\n\n public autoRegisterInjectables() {\n for (const [target, meta] of autoRegistry.entries()) {\n if (this.descriptors.has(target)) continue;\n this._add(target, {\n useClass: target,\n deps: meta.deps,\n useValue: undefined,\n useFactory: undefined\n }, meta.lifetime || \"transient\");\n }\n }\n}","import type { RouteItem } from \"../routing/RouteItem\";\r\nimport { reportWarning } from \"../common/diagnostics\";\r\n\r\ntype RouteNode = RouteItem & { childs?: RouteItem[] };\r\n\r\nfunction joinPaths(parent: string, child: string): string {\r\n const p = (parent || '').trim();\r\n const c = (child || '').trim();\r\n const base = p && p !== '/' && p.endsWith('/') ? p.slice(0, -1) : p;\r\n if (c === '/') {\r\n return base || '/';\r\n }\r\n const seg = c ? (c.startsWith('/') ? c : '/' + c) : '';\r\n if (!base || base === '/') {\r\n return seg || '/';\r\n }\r\n return base + seg;\r\n}\r\n\r\nexport function lintRoutes(routes: RouteNode[]): void {\r\n const seenFull: Map<string, number> = new Map();\r\n const seenAlias: Map<string, number> = new Map();\r\n\r\n function visit(node: RouteNode, parentPath: string, depth: number) {\r\n const rawPath = node.path ?? '';\r\n const path = String(rawPath);\r\n const full = parentPath === '' ? path : joinPaths(parentPath, path);\r\n const isDefaultSlash = depth > 0 && path.trim() === '/';\r\n const isEmptyPath = path.trim() === '';\r\n\r\n if (isEmptyPath) {\r\n reportWarning('MJX310', [parentPath || '/'], { parentPath, path });\r\n }\r\n\r\n if (depth > 0 && path.length > 0 && path !== '/' && !path.startsWith('/') && !path.startsWith('*')) {\r\n reportWarning('MJX311', [path, parentPath || '/'], { parentPath, path });\r\n }\r\n\r\n if (parentPath && full === parentPath) {\r\n if (!isDefaultSlash && !isEmptyPath) {\r\n reportWarning('MJX312', [full], { parentPath, childPath: path });\r\n }\r\n }\r\n\r\n const cnt = (seenFull.get(full) || 0) + 1;\r\n seenFull.set(full, cnt);\r\n if (cnt > 1) {\r\n if (!isDefaultSlash && !isEmptyPath) {\r\n reportWarning('MJX313', [full], { full });\r\n }\r\n }\r\n\r\n const aliases = node.alias == null ? [] : (Array.isArray(node.alias) ? node.alias : [node.alias]);\r\n for (const rawAlias of aliases) {\r\n const alias = String(rawAlias ?? '');\r\n if (depth > 0 && alias.length > 0 && alias !== '/' && !alias.startsWith('/') && !alias.startsWith('*')) {\r\n reportWarning('MJX314', [alias, parentPath || '/'], { parentPath, alias });\r\n }\r\n const aliasFull = parentPath === '' ? alias : joinPaths(parentPath, alias);\r\n if (aliasFull === full) {\r\n reportWarning('MJX315', [aliasFull], { full, alias });\r\n }\r\n const aliasCount = (seenAlias.get(aliasFull) || 0) + 1;\r\n seenAlias.set(aliasFull, aliasCount);\r\n if (aliasCount > 1) {\r\n reportWarning('MJX316', [aliasFull], { aliasFull });\r\n }\r\n }\r\n\r\n\r\n const children = (node as any).childs as RouteNode[] | undefined;\r\n if (Array.isArray(children)) {\r\n for (const ch of children) visit(ch, full, depth + 1);\r\n }\r\n }\r\n\r\n for (const r of routes) visit(r as RouteNode, '', 0);\r\n}\r","import { Application, Component } from '..';\r\nimport { getWarnings, on, ensureDevtoolsFlagInitialized, isRequestedByFlag, getRoutes } from './devbus';\r\nimport { lintRoutes } from './routeLinter';\r\nimport { reportWarning } from '../common/diagnostics';\r\nlet overlayHost: HTMLDivElement | null = null;\r\nlet visible = false;\r\n\r\nfunction render() {\r\n return;\r\n // if (!overlayHost) return;\r\n // const warnings = getWarnings();\r\n\r\n // const bar = document.createElement('div');\r\n // bar.style.cssText = 'display:flex; align-items:center; gap:8px; padding:6px 8px; background:#111; color:#fff; border-bottom:1px solid #333;';\r\n // const title = document.createElement('div');\r\n // title.style.fontWeight = '600';\r\n // const closeBtn = document.createElement('button');\r\n // closeBtn.style.cssText = 'margin-left:auto; background:#333; color:#fff; border:0; padding:2px 6px; cursor:pointer;';\r\n\r\n // const list = document.createElement('div');\r\n // list.style.cssText = 'max-height:40vh; overflow:auto; padding:8px; background:#181818; color:#ddd; font:12px/1.4 monospace;';\r\n // for (const w of warnings) {\r\n // const item = document.createElement('div');\r\n // item.style.cssText = 'padding:6px 8px; border:1px solid #333; border-radius:4px; margin-bottom:6px; background:#1f1f1f;';\r\n // const code = document.createElement('div');\r\n // code.style.cssText = 'color:#ffb86c; font-weight:700;';\r\n // const msg = document.createElement('div');\r\n // const det = document.createElement('pre');\r\n // det.textContent = w.details ? JSON.stringify(w.details, null, 2) : '';\r\n // det.style.cssText = 'white-space:pre-wrap; color:#aaa; margin:6px 0 0 0;';\r\n // if (w.details) item.appendChild(det);\r\n}\r\n\r\nexport function toggle(force?: boolean) {\r\n if (!overlayHost) return;\r\n visible = typeof force === 'boolean' ? force : !visible;\r\n overlayHost.style.display = visible ? 'block' : 'none';\r\n if (visible) render();\r\n}\r\n\r\nexport function initOverlayIfEnabled() {\r\n ensureDevtoolsFlagInitialized();\r\n if (!isRequestedByFlag()) return;\r\n try {\r\n if (!overlayHost) {\r\n overlayHost = document.createElement('div');\r\n overlayHost.style.cssText = 'position:fixed; left:12px; bottom:12px; right:12px; z-index:2147483647; background:#111; color:#fff; border:1px solid #333; border-radius:8px; box-shadow:0 4px 14px rgba(0,0,0,0.4); display:none;';\r\n document.body.appendChild(overlayHost);\r\n window.addEventListener('keydown', (e) => {\r\n try {\r\n if ((e.ctrlKey || e.metaKey) && e.key === '`') {\r\n e.preventDefault();\r\n toggle();\r\n }\r\n } catch { }\r\n });\r\n on((ev) => { if (ev.type === 'warning' && visible) render(); });\r\n }\r\n } catch { }\r\n}\r\n\r\nlet devBtn: HTMLButtonElement | null = null;\r\nlet inAppPanelMounted = false;\r\nfunction ensureInAppPanel() {\r\n if (inAppPanelMounted) return;\r\n try {\r\n (async () => {\r\n try {\r\n //var mod = await import(\"@motifjs/devtools-inapp\");\r\n\r\n //const mod = mountInAppPanel;//await (Function('return import(\"@motifjs/devtools-inapp\")')() as Promise<any>);\r\n\r\n //if (mod && typeof mod.mountInAppPanel === 'function') {\r\n } catch (err) {\r\n reportWarning('MJX611', [], err);\r\n }\r\n })();\r\n } catch { }\r\n}\r\nexport function initDevtoolsButton() {\r\n try {\r\n\r\n if (typeof document === 'undefined') return;\r\n if (devBtn) return;\r\n devBtn = document.createElement('button');\r\n devBtn.setAttribute('type', 'button');\r\n devBtn.setAttribute('aria-label', 'Open MotifJS DevTools');\r\n devBtn.textContent = 'Dev';\r\n devBtn.style.cssText = [\r\n 'position:fixed',\r\n 'right:12px',\r\n 'bottom:12px',\r\n 'z-index:2147483646',\r\n 'width:40px',\r\n 'height:40px',\r\n 'border-radius:20px',\r\n 'border:1px solid #333',\r\n 'background:#111',\r\n 'color:#fff',\r\n 'font-weight:700',\r\n 'cursor:pointer',\r\n 'box-shadow:0 4px 10px rgba(0,0,0,0.35)'\r\n ].join(';');\r\n devBtn.onclick = () => {\r\n try {\r\n (window as any).__motif_DEVTOOLS = true;\r\n } catch { }\r\n try {\r\n ensureDevtoolsFlagInitialized();\r\n initOverlayIfEnabled();\r\n toggle(true);\r\n ensureInAppPanel();\r\n try {\r\n const rs = getRoutes();\r\n if (rs) lintRoutes(rs);\r\n } catch { }\r\n } catch { }\r\n };\r\n document.body.appendChild(devBtn);\r\n try { const qs = location.search || ''; if (Application.main.isDevelopmentModeEnabled) ensureInAppPanel(); } catch { }\r\n } catch { }\r\n}\r","export class RouterViewRegistry {\r\n private static outlets: Map<string, Map<string, any>> = new Map();\r\n static register(name: string, scopeId: string, instance: any) {\r\n if (!this.outlets.has(name)) this.outlets.set(name, new Map());\r\n this.outlets.get(name)!.set(scopeId, instance);\r\n }\r\n static unregister(name: string, scopeId: string) {\r\n this.outlets.get(name)?.delete(scopeId);\r\n if (this.outlets.get(name)?.size === 0) this.outlets.delete(name);\r\n }\r\n static find(name: string, scopeId?: string): any | null {\r\n if (scopeId && this.outlets.get(name)?.has(scopeId)) {\r\n return this.outlets.get(name)!.get(scopeId);\r\n }\r\n const group = this.outlets.get(name);\r\n if (group && group.size > 0) return Array.from(group.values())[0];\r\n return null;\r\n }\r\n static findAll(name: string): any[] {\r\n return Array.from(this.outlets.get(name)?.values() ?? []);\r\n }\r\n}\r","import { Component } from \"..\";\r\nimport { ComponentBase, IBaseProp } from \"../\";\r\nimport { disposeNavigationTarget, navigateHost } from \"../component/navigation\";\r\nimport { RouterViewRegistry } from \"./RouterViewRegistry\";\r\n\r\nexport interface RouterViewProps extends IBaseProp<{ name?: string }> { }\r\nexport const RouterViewBuilt = Symbol.for(\"RouterView.built\");;\r\nexport class RouterView extends Component {\r\n constructor(props: IBaseProp<RouterViewProps>) {\r\n super(props);\r\n }\r\n public _navLock: Promise<void> = Promise.resolve();\r\n public _navAbort?: AbortController;\r\n public get __isRouterView(): boolean {\r\n return true;\r\n }\r\n public get scopeId(): string {\r\n let p: any = this.parent, ids: string[] = [];\r\n while (p) {\r\n ids.push(p.constructor?.name ?? '');\r\n p = p.parent;\r\n }\r\n return ids.join('>');\r\n }\r\n public disposingChilds = false;\r\n previouspage: any;\r\n current: ComponentBase | ComponentBase[] | null = null;\r\n _latestNavigateId = 0;\r\n isBusy: boolean = false;\r\n\r\n public async navigate(page: ComponentBase | ComponentBase[], keepOldControl: boolean = false) {\r\n await navigateHost(this, page, keepOldControl);\r\n }\r\n\r\n public async disposeTarget(target: ComponentBase | ComponentBase[] | null): Promise<void> {\r\n await disposeNavigationTarget(target);\r\n }\r\n public override onBuilt() {\r\n try {\r\n\r\n RouterViewRegistry.register(this.props.name ?? 'default', this.scopeId, this);\r\n let p: any = this.parent;\r\n while (p) {\r\n p.motif.trigger(RouterViewBuilt, this);\r\n p = p.parent;\r\n }\r\n } catch { /* ignore */ }\r\n }\r\n\r\n public override onDisposed() {\r\n try {\r\n RouterViewRegistry.unregister(this.props.name ?? 'default', this.scopeId);\r\n } catch { /* ignore */ }\r\n }\r\n\r\n}","\nimport type { NavigationDirection, ScrollMemoryOptions } from './common';\n\nexport interface ScrollViewport {\n scrollTop(): number;\n scrollTo(top: number): void;\n scrollToAnchor(id: string, follow?: boolean): boolean;\n}\n\nconst STORAGE_KEY = 'motifjs:scroll';\nconst DEFAULT_LIMIT = 60;\nconst DEFAULT_SETTLE_MS = 1200;\n\nconst USER_INPUT = ['wheel', 'touchstart', 'keydown', 'mousedown'] as const;\n\nexport class ScrollMemory {\n private readonly options: ScrollMemoryOptions;\n private readonly viewport: ScrollViewport;\n private readonly positions = new Map<string, number>();\n\n private currentKey = '';\n private currentPath: string | null = null;\n\n private visited = false;\n private restoring = false;\n private cancelFrame: (() => void) | null = null;\n private disarmAbort: (() => void) | null = null;\n private readonly offs: Array<() => void> = [];\n\n public locationAnchor = true;\n\n constructor(options: ScrollMemoryOptions = {}, viewport?: ScrollViewport) {\n this.options = options;\n this.viewport = viewport ?? (options.container ? containerViewport(options.container) : windowViewport());\n this.load();\n\n try {\n if (typeof history !== 'undefined' && 'scrollRestoration' in history) {\n history.scrollRestoration = 'manual';\n }\n } catch { /* salt okunur bırakan gömülü tarayıcılar */ }\n\n if (typeof window !== 'undefined') {\n this.offs.push(listen(window, 'pagehide', () => this.persistNow()));\n this.offs.push(listen(document, 'visibilitychange', () => {\n if (document.visibilityState === 'hidden') this.persistNow();\n }));\n }\n }\n\n public leaving(): void {\n this.cancelRestore();\n if (!this.visited) return;\n this.remember(this.currentKey, this.viewport.scrollTop());\n this.persist();\n }\n\n public arrived(uri: string, direction?: NavigationDirection): void {\n this.visited = true;\n const { path, hash } = splitUri(uri);\n const inPage = !!hash && path === this.currentPath && (direction === 'push' || direction === 'replace' || direction === 'traverse');\n this.currentPath = path;\n this.currentKey = this.keyOf(path);\n this.restore(this.currentKey, this.options.anchor === false ? '' : hash || (this.locationAnchor ? locationHash() : ''), inPage);\n }\n\n public saved(key: string): number {\n return this.positions.get(this.keyOf(splitUri(key).path)) ?? 0;\n }\n\n public dispose(): void {\n this.cancelRestore();\n this.persistNow();\n for (const off of this.offs.splice(0)) off();\n this.positions.clear();\n }\n\n\n private keyOf(path: string): string {\n const key = this.options.key ? this.options.key(path) : path;\n return key || '/';\n }\n\n private remember(key: string, top: number): void {\n const limit = this.options.limit ?? DEFAULT_LIMIT;\n this.positions.delete(key);\n this.positions.set(key, Math.max(0, Math.round(top)));\n while (this.positions.size > limit) {\n const oldest = this.positions.keys().next();\n if (oldest.done) break;\n this.positions.delete(oldest.value);\n }\n }\n\n private restore(key: string, anchor: string, follow: boolean): void {\n this.cancelRestore();\n\n const target = this.positions.get(key) ?? 0;\n\n if (!anchor && target <= 0) {\n if (this.options.top !== false) this.viewport.scrollTo(0);\n return;\n }\n\n this.restoring = true;\n const settleMs = this.options.settleMs ?? DEFAULT_SETTLE_MS;\n const startedAt = Date.now();\n\n const attempt = (): void => {\n this.cancelFrame = null;\n const done = anchor ? this.viewport.scrollToAnchor(anchor, follow) : this.reached(target);\n if (done || Date.now() - startedAt >= settleMs) {\n this.cancelRestore();\n this.remember(key, this.viewport.scrollTop());\n return;\n }\n this.armAbort();\n this.cancelFrame = frame(attempt);\n };\n attempt();\n }\n\n private reached(target: number): boolean {\n this.viewport.scrollTo(target);\n return this.viewport.scrollTop() >= target - 1;\n }\n\n private armAbort(): void {\n if (this.disarmAbort || typeof window === 'undefined') return;\n const abort = () => this.cancelRestore();\n const removers = USER_INPUT.map((type) => listen(window, type, abort, { passive: true }));\n this.disarmAbort = () => { for (const remove of removers) remove(); };\n }\n\n private cancelRestore(): void {\n this.cancelFrame?.();\n this.cancelFrame = null;\n this.disarmAbort?.();\n this.disarmAbort = null;\n this.restoring = false;\n }\n private persistNow(): void {\n if (this.visited && !this.restoring) {\n this.remember(this.currentKey, this.viewport.scrollTop());\n }\n this.persist();\n }\n\n private get storage(): Storage | null {\n if (this.options.persist === false) return null;\n try {\n return typeof sessionStorage === 'undefined' ? null : sessionStorage;\n } catch {\n return null;\n }\n }\n\n private persist(): void {\n const storage = this.storage;\n if (!storage) return;\n try {\n storage.setItem(STORAGE_KEY, JSON.stringify([...this.positions]));\n } catch {\n }\n }\n\n private load(): void {\n const storage = this.storage;\n if (!storage) return;\n try {\n const raw = storage.getItem(STORAGE_KEY);\n if (!raw) return;\n const parsed: unknown = JSON.parse(raw);\n if (!Array.isArray(parsed)) return;\n for (const pair of parsed) {\n if (!Array.isArray(pair) || typeof pair[0] !== 'string') continue;\n const top = Number(pair[1]);\n if (Number.isFinite(top) && top > 0) this.positions.set(pair[0], top);\n }\n } catch {\n }\n }\n}\n\n/** Gerçek pencere (`documentElement`). */\nfunction windowViewport(): ScrollViewport {\n return {\n scrollTop: () => {\n try { return window.scrollY || document.documentElement?.scrollTop || 0; } catch { return 0; }\n },\n scrollTo: (top) => {\n try { window.scrollTo({ top, behavior: 'instant' }); }\n catch { try { window.scrollTo(0, top); } catch { } }\n },\n scrollToAnchor: (id, follow) => {\n try {\n const node = document.getElementById(id);\n if (!node) return false;\n if (follow) node.scrollIntoView();\n else {\n try { node.scrollIntoView({ behavior: 'instant' }); }\n catch { node.scrollIntoView(); }\n }\n return true;\n } catch { return false; }\n },\n };\n}\n\nfunction containerViewport(container: NonNullable<ScrollMemoryOptions['container']>): ScrollViewport {\n const fallback = windowViewport();\n const resolve = (): HTMLElement | null => {\n try {\n if (typeof container === 'string') return document.querySelector(container) as HTMLElement | null;\n if (typeof container === 'function') return container() ?? null;\n return container;\n } catch { return null; }\n };\n return {\n scrollTop: () => {\n const el = resolve();\n if (!el) return fallback.scrollTop();\n return el.scrollTop || 0;\n },\n scrollTo: (top) => {\n const el = resolve();\n if (!el) { fallback.scrollTo(top); return; }\n try { el.scrollTo({ top, behavior: 'instant' }); }\n catch { try { el.scrollTop = top; } catch { } }\n },\n scrollToAnchor: (id, follow) => fallback.scrollToAnchor(id, follow),\n };\n}\n\n/** `/docs/x#bolum` → `{ path: '/docs/x', hash: 'bolum' }`. */\nfunction splitUri(uri: string): { path: string; hash: string } {\n const index = uri.indexOf('#');\n if (index < 0) return { path: uri, hash: '' };\n return { path: uri.slice(0, index) || '/', hash: decodeHash(uri.slice(index + 1)) };\n}\n\nfunction locationHash(): string {\n try {\n const hash = location?.hash ?? '';\n return hash.length > 1 ? decodeHash(hash.slice(1)) : '';\n } catch { return ''; }\n}\n\nfunction decodeHash(value: string): string {\n try { return decodeURIComponent(value); } catch { return value; }\n}\n\nfunction frame(run: () => void): () => void {\n if (typeof requestAnimationFrame !== 'function') {\n const id = setTimeout(run, 16);\n return () => clearTimeout(id);\n }\n const id = requestAnimationFrame(run);\n return () => cancelAnimationFrame(id);\n}\n\nfunction listen(\n target: EventTarget,\n type: string,\n handler: () => void,\n options?: AddEventListenerOptions,\n): () => void {\n try {\n target.addEventListener(type, handler, options);\n return () => { try { target.removeEventListener(type, handler, options); } catch { } };\n } catch {\n return () => { };\n }\n}","import { ComponentBase, notifyDeactivated } from \"../\";\nimport { disposeNavigationTarget, hasOwnTransition } from \"../component/navigation\";\nimport { reportError } from \"../common/diagnostics\";\nimport type { NavigationDirection, RouteItem, StackEntryInfo, StackOptions, StackTransitionContext } from \"./\";\n\nexport type HistoryPoint = { index: number; session: string };\n\nexport type StackNavigation = {\n direction: NavigationDirection;\n from: HistoryPoint | null;\n to: HistoryPoint | null;\n uri: string;\n};\n\ntype SavedScroll = Array<[Element, number, number]>;\n\ntype SavedPresentation = {\n style: string | null;\n inert: boolean;\n ariaHidden: string | null;\n};\n\nexport type RetainedEntry = {\n point: HistoryPoint;\n uri: string;\n chain: RouteItem[];\n instances: ComponentBase[];\n top: ComponentBase;\n topIndex: number;\n outlet: any;\n attached: boolean;\n hidden: boolean;\n pendingDetach: boolean;\n saved: SavedPresentation | null;\n scroll: SavedScroll;\n};\n\ntype Gesture = {\n startX: number;\n startY: number;\n lastX: number;\n samples: Array<[number, number]>;\n dragging: boolean;\n width: number;\n top: HTMLElement;\n topSaved: string | null;\n under: RetainedEntry | null;\n underSaved: string | null;\n offs: Array<() => void>;\n};\n\nconst STORAGE_KEY = 'motifjs:stack';\nconst SLIDE_OFFSET = 30;\nconst EASING = 'cubic-bezier(0.2, 0.8, 0.2, 1)';\n\nconst isElement = (node: any): node is HTMLElement => !!node && node.nodeType === 1 && !!node.style;\n\nexport { hasOwnTransition };\n\nexport function markDirection(component: ComponentBase | null | undefined, direction: NavigationDirection): void {\n const el = component?.element as any;\n if (!component || component.isDisposed || !isElement(el)) return;\n try { el.setAttribute('data-nav-direction', direction); } catch { }\n (component.motif.options.transition as any)._markedDirection = true;\n}\n\nexport function unmarkDirection(component: ComponentBase | null | undefined): void {\n const transition: any = component?.motif?.options?.transition;\n if (!transition?._markedDirection) return;\n transition._markedDirection = false;\n try { (component!.element as any)?.removeAttribute?.('data-nav-direction'); } catch { }\n}\n\nexport function playLeave(component: ComponentBase): Promise<void> {\n return new Promise<void>((resolve) => {\n let settled = false;\n const done = () => { if (!settled) { settled = true; resolve(); } };\n try {\n const animation: any = component.motif.options.transition.leaveTransition(done);\n if (animation && typeof animation.addEventListener === 'function') animation.addEventListener('cancel', done);\n } catch {\n done();\n }\n });\n}\n\nfunction saveStyle(el: HTMLElement): string | null {\n return el.getAttribute('style');\n}\n\nfunction restoreStyle(el: HTMLElement, value: string | null): void {\n try {\n el.setAttribute('style', value ?? '');\n if (value === null) el.removeAttribute('style');\n } catch { }\n}\n\nfunction saveScroll(root: HTMLElement): SavedScroll {\n const saved: SavedScroll = [];\n try {\n const visit = (el: Element) => {\n const top = (el as HTMLElement).scrollTop || 0;\n const left = (el as HTMLElement).scrollLeft || 0;\n if (top || left) saved.push([el, top, left]);\n };\n visit(root);\n root.querySelectorAll('*').forEach(visit);\n } catch { }\n return saved;\n}\n\nfunction restoreScroll(saved: SavedScroll): void {\n for (const [el, top, left] of saved) {\n try {\n (el as HTMLElement).scrollTop = top;\n (el as HTMLElement).scrollLeft = left;\n } catch { }\n }\n}\n\nfunction prefersReducedMotion(): boolean {\n try {\n return typeof window !== 'undefined' && typeof window.matchMedia === 'function'\n && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n } catch { return false; }\n}\n\nfunction play(el: HTMLElement, keyframes: Keyframe[], duration: number, running: Animation[]): Promise<void> {\n if (typeof (el as any).animate !== 'function' || duration <= 0) return Promise.resolve();\n try {\n const animation = el.animate(keyframes, { duration, easing: EASING, fill: 'forwards' });\n running.push(animation);\n return animation.finished.then(() => undefined, () => undefined);\n } catch {\n return Promise.resolve();\n }\n}\n\nfunction overlay(floating: HTMLElement, anchor: HTMLElement, above: boolean): void {\n floating.style.position = 'absolute';\n floating.style.top = '0px';\n floating.style.left = '0px';\n floating.style.margin = '0px';\n floating.style.boxSizing = 'border-box';\n const a = anchor.getBoundingClientRect();\n const f = floating.getBoundingClientRect();\n floating.style.top = (a.top - f.top) + 'px';\n floating.style.left = (a.left - f.left) + 'px';\n floating.style.width = a.width + 'px';\n floating.style.height = a.height + 'px';\n floating.style.pointerEvents = 'none';\n floating.style.zIndex = above ? '2' : '0';\n if (!above) {\n let position = '';\n try { position = getComputedStyle(anchor).position; } catch { }\n if (!position || position === 'static') anchor.style.position = 'relative';\n anchor.style.zIndex = '1';\n }\n}\n\nexport class NavigationStack {\n readonly retainAttached: boolean;\n readonly depth: number;\n readonly persist: boolean;\n readonly animation: StackOptions['animation'];\n readonly duration: number;\n private readonly swipe: { edge: number; threshold: number } | null;\n\n private session: string | null = null;\n private readonly entries = new Map<number, RetainedEntry>();\n private readonly uris = new Map<number, string>();\n private loaded: { session: string; uris: Array<[number, string]> } | null = null;\n private current: HistoryPoint | null = null;\n private currentTop: ComponentBase | null = null;\n private readonly offs: Array<() => void> = [];\n private gesture: Gesture | null = null;\n private gestureCommitted = false;\n private awaitingGestureResult = false;\n private disposed = false;\n\n constructor(options: true | StackOptions) {\n const o: StackOptions = options === true ? {} : options;\n this.retainAttached = o.retain === true;\n this.depth = Math.max(0, Math.floor(o.depth ?? 5));\n this.persist = o.persist === true;\n this.animation = o.animation ?? 'none';\n this.duration = Math.max(0, o.duration ?? 300);\n const sb = o.swipeBack;\n this.swipe = sb\n ? {\n edge: (typeof sb === 'object' && typeof sb.edge === 'number' && sb.edge > 0) ? sb.edge : 24,\n threshold: (typeof sb === 'object' && typeof sb.threshold === 'number' && sb.threshold > 0) ? sb.threshold : 0.35,\n }\n : null;\n if (this.persist) this.load();\n if (this.swipe) this.installSwipe();\n }\n\n public get retainedCount(): number {\n return this.entries.size;\n }\n\n public isRetaining(nav: StackNavigation): boolean {\n return !!nav.from && !!nav.to && nav.from.session === nav.to.session && nav.to.index > nav.from.index;\n }\n\n public begin(nav: StackNavigation): void {\n const point = nav.to;\n if (!point) return;\n if (this.session !== point.session) {\n this.disposeAllEntries();\n this.uris.clear();\n this.session = point.session;\n if (this.loaded && this.loaded.session === point.session) {\n for (const [index, uri] of this.loaded.uris) this.uris.set(index, uri);\n }\n this.loaded = null;\n }\n if (nav.direction === 'push') {\n this.truncate(point.index);\n } else if (nav.direction === 'replace') {\n const stale = this.entries.get(point.index);\n if (stale) { this.entries.delete(point.index); void this.disposeEntry(stale); }\n }\n }\n\n public take(point: HistoryPoint | null): RetainedEntry | null {\n if (!point || point.session !== this.session) return null;\n const entry = this.entries.get(point.index);\n if (!entry) return null;\n this.entries.delete(point.index);\n entry.pendingDetach = false;\n return entry;\n }\n\n public retain(point: HistoryPoint, uri: string, chain: RouteItem[], instances: ComponentBase[], topIndex: number, outlet: any, deferHide: boolean): RetainedEntry {\n const top = instances[topIndex];\n const el = top.element as any;\n const entry: RetainedEntry = {\n point, uri, chain: chain.slice(), instances: instances.slice(), top, topIndex, outlet,\n attached: false, hidden: false, pendingDetach: false, saved: null,\n scroll: isElement(el) ? saveScroll(el) : [],\n };\n if (this.retainAttached && isElement(el)) {\n entry.attached = true;\n if (!deferHide) this.hide(entry);\n } else if (deferHide) {\n entry.pendingDetach = true;\n } else {\n try { top.parent?.controls.silentDetach(top); } catch { }\n }\n const previous = this.entries.get(point.index);\n if (previous && previous !== entry) void this.disposeEntry(previous);\n this.entries.set(point.index, entry);\n this.evict();\n return entry;\n }\n\n public settle(entry: RetainedEntry): void {\n if (entry.top.isDisposed || this.entries.get(entry.point.index) !== entry) return;\n if (entry.attached) {\n this.hide(entry);\n } else if (entry.pendingDetach) {\n entry.pendingDetach = false;\n try { entry.top.parent?.controls.silentDetach(entry.top); } catch { }\n }\n }\n\n public hide(entry: RetainedEntry): void {\n if (!entry.attached || entry.hidden) return;\n const el = entry.top.element as any;\n if (!isElement(el)) return;\n entry.saved = {\n style: saveStyle(el),\n inert: el.hasAttribute('inert'),\n ariaHidden: el.getAttribute('aria-hidden'),\n };\n try {\n el.style.setProperty('display', 'none', 'important');\n el.setAttribute('inert', '');\n el.setAttribute('aria-hidden', 'true');\n } catch { }\n entry.hidden = true;\n try { notifyDeactivated(entry.top); } catch { }\n }\n\n public reveal(entry: RetainedEntry): void {\n const el = entry.top.element as any;\n if (entry.hidden && entry.saved && isElement(el)) {\n restoreStyle(el, entry.saved.style);\n try {\n if (!entry.saved.inert) el.removeAttribute('inert');\n if (entry.saved.ariaHidden === null) el.removeAttribute('aria-hidden');\n else el.setAttribute('aria-hidden', entry.saved.ariaHidden);\n } catch { }\n }\n entry.hidden = false;\n entry.saved = null;\n }\n\n public restoreScroll(entry: RetainedEntry): void {\n restoreScroll(entry.scroll);\n }\n\n public record(nav: StackNavigation, top: ComponentBase | null): void {\n if (nav.to && nav.to.session === this.session) {\n this.uris.set(nav.to.index, nav.uri);\n if (nav.direction === 'push') {\n for (const index of Array.from(this.uris.keys())) {\n if (index > nav.to.index) this.uris.delete(index);\n }\n }\n this.current = nav.to;\n }\n this.currentTop = top;\n this.save();\n }\n\n public describe(): StackEntryInfo[] {\n const current = this.current?.index;\n return Array.from(this.uris.entries())\n .sort((a, b) => a[0] - b[0])\n .map(([index, uri]) => ({ index, uri, current: index === current, retained: this.entries.has(index) }));\n }\n\n public get gestureCommitPending(): boolean {\n return this.gestureCommitted;\n }\n\n public consumeGestureCommit(): boolean {\n const committed = this.gestureCommitted;\n this.gestureCommitted = false;\n return committed;\n }\n\n public traversalSettled(cancelled: boolean): void {\n if (!this.awaitingGestureResult) return;\n this.awaitingGestureResult = false;\n const g = this.gesture;\n if (!cancelled) {\n this.gesture = null;\n this.gestureCommitted = false;\n return;\n }\n this.gestureCommitted = false;\n if (g) void this.settleGesture(g, false);\n }\n\n public async transition(direction: NavigationDirection, entering: ComponentBase | null, leaving: ComponentBase | null): Promise<void> {\n if (this.consumeGestureCommit()) return;\n if (this.animation === 'none' || !this.animation) return;\n if (direction !== 'push' && direction !== 'back' && direction !== 'forward') return;\n const enteringEl = entering?.element as any;\n const leavingEl = leaving?.element as any;\n if (!isElement(enteringEl) || !isElement(leavingEl) || !enteringEl.isConnected || !leavingEl.isConnected) return;\n if (prefersReducedMotion()) return;\n\n const backwards = direction === 'back';\n const enteringStyle = saveStyle(enteringEl);\n const leavingStyle = saveStyle(leavingEl);\n const running: Animation[] = [];\n try {\n overlay(leavingEl, enteringEl, backwards);\n if (typeof this.animation === 'function') {\n const context: StackTransitionContext = { direction, entering: enteringEl, leaving: leavingEl };\n await this.animation(context);\n } else {\n const d = this.duration;\n if (backwards) {\n await Promise.all([\n play(leavingEl, [{ transform: 'translateX(0)' }, { transform: 'translateX(100%)' }], d, running),\n play(enteringEl, [{ transform: `translateX(-${SLIDE_OFFSET}%)` }, { transform: 'translateX(0)' }], d, running),\n ]);\n } else {\n await Promise.all([\n play(enteringEl, [{ transform: 'translateX(100%)' }, { transform: 'translateX(0)' }], d, running),\n play(leavingEl, [{ transform: 'translateX(0)' }, { transform: `translateX(-${SLIDE_OFFSET}%)` }], d, running),\n ]);\n }\n }\n } catch (error) {\n reportError('MJX308', error);\n } finally {\n for (const a of running) { try { a.cancel(); } catch { } }\n restoreStyle(enteringEl, enteringStyle);\n restoreStyle(leavingEl, leavingStyle);\n }\n }\n\n public async disposeEntry(entry: RetainedEntry): Promise<void> {\n const top = entry.top;\n if (!top || top.isDisposed) return;\n try { await disposeNavigationTarget(top, { deep: true, skipLeaveTransition: true }); } catch (error) { reportError('MJX307', error); }\n }\n\n public async dispose(): Promise<void> {\n if (this.disposed) return;\n this.disposed = true;\n for (const off of this.offs.splice(0)) { try { off(); } catch { } }\n if (this.gesture) { this.endGestureListeners(this.gesture); this.gesture = null; }\n await this.disposeAllEntries();\n this.uris.clear();\n this.current = null;\n this.currentTop = null;\n }\n\n private async disposeAllEntries(): Promise<void> {\n const all = Array.from(this.entries.values());\n this.entries.clear();\n for (const entry of all) await this.disposeEntry(entry);\n }\n\n private truncate(fromIndex: number): void {\n for (const [index, entry] of Array.from(this.entries)) {\n if (index >= fromIndex) {\n this.entries.delete(index);\n void this.disposeEntry(entry);\n }\n }\n }\n\n private evict(): void {\n while (this.entries.size > this.depth) {\n let oldest = Infinity;\n for (const index of this.entries.keys()) if (index < oldest) oldest = index;\n const entry = this.entries.get(oldest);\n this.entries.delete(oldest);\n if (entry) void this.disposeEntry(entry);\n }\n }\n\n private load(): void {\n try {\n if (typeof sessionStorage === 'undefined') return;\n const raw = sessionStorage.getItem(STORAGE_KEY);\n if (!raw) return;\n const parsed = JSON.parse(raw);\n if (!parsed || typeof parsed.session !== 'string' || !Array.isArray(parsed.uris)) return;\n const uris: Array<[number, string]> = [];\n for (const pair of parsed.uris) {\n if (Array.isArray(pair) && typeof pair[0] === 'number' && typeof pair[1] === 'string') uris.push([pair[0], pair[1]]);\n }\n this.loaded = { session: parsed.session, uris };\n } catch { }\n }\n\n private save(): void {\n if (!this.persist || !this.session) return;\n try {\n if (typeof sessionStorage === 'undefined') return;\n sessionStorage.setItem(STORAGE_KEY, JSON.stringify({ session: this.session, uris: Array.from(this.uris.entries()) }));\n } catch { }\n }\n\n private installSwipe(): void {\n if (typeof document === 'undefined') return;\n const onStart = (e: TouchEvent) => this.onTouchStart(e);\n try {\n document.addEventListener('touchstart', onStart as any, { passive: true });\n this.offs.push(() => { try { document.removeEventListener('touchstart', onStart as any); } catch { } });\n } catch { }\n }\n\n private onTouchStart(e: TouchEvent): void {\n if (this.disposed || this.gesture || this.awaitingGestureResult || !this.swipe) return;\n if (!e.touches || e.touches.length !== 1) return;\n const t = e.touches[0];\n if (!t || t.clientX > this.swipe.edge) return;\n if (!this.current || this.current.index <= 0) return;\n const topEl = this.currentTop?.element as any;\n if (!isElement(topEl) || !topEl.isConnected) return;\n\n const g: Gesture = {\n startX: t.clientX, startY: t.clientY, lastX: t.clientX, samples: [[t.clientX, Date.now()]],\n dragging: false, width: 0, top: topEl, topSaved: null, under: null, underSaved: null, offs: [],\n };\n const onMove = (ev: TouchEvent) => this.onTouchMove(g, ev);\n const onEnd = () => this.onTouchEnd(g);\n try {\n document.addEventListener('touchmove', onMove as any, { passive: false });\n document.addEventListener('touchend', onEnd);\n document.addEventListener('touchcancel', onEnd);\n g.offs.push(() => {\n try { document.removeEventListener('touchmove', onMove as any); } catch { }\n try { document.removeEventListener('touchend', onEnd); } catch { }\n try { document.removeEventListener('touchcancel', onEnd); } catch { }\n });\n } catch { }\n this.gesture = g;\n }\n\n private endGestureListeners(g: Gesture): void {\n for (const off of g.offs.splice(0)) { try { off(); } catch { } }\n }\n\n private beginDrag(g: Gesture): void {\n g.dragging = true;\n g.width = g.top.getBoundingClientRect().width || (typeof window !== 'undefined' ? window.innerWidth : 0) || 1;\n g.topSaved = saveStyle(g.top);\n const current = this.current;\n const under = current ? this.entries.get(current.index - 1) ?? null : null;\n if (under && under.attached && isElement(under.top.element) && (under.top.element as any).isConnected) {\n const el = under.top.element as any as HTMLElement;\n g.under = under;\n g.underSaved = saveStyle(el);\n if (under.saved) restoreStyle(el, under.saved.style);\n overlay(el, g.top, false);\n el.style.transform = `translateX(-${SLIDE_OFFSET}%)`;\n restoreScroll(under.scroll);\n }\n g.top.style.willChange = 'transform';\n }\n\n private applyDrag(g: Gesture, dx: number): void {\n const progress = Math.min(1, Math.max(0, dx / g.width));\n g.top.style.transform = `translateX(${Math.max(0, dx)}px)`;\n if (g.under) {\n (g.under.top.element as any as HTMLElement).style.transform = `translateX(-${SLIDE_OFFSET * (1 - progress)}%)`;\n }\n }\n\n private onTouchMove(g: Gesture, e: TouchEvent): void {\n const t = e.touches && e.touches[0];\n if (!t) return;\n const dx = t.clientX - g.startX;\n const dy = t.clientY - g.startY;\n if (!g.dragging) {\n if (Math.abs(dx) < 8 && Math.abs(dy) < 8) return;\n if (dx <= 0 || Math.abs(dy) > Math.abs(dx)) {\n this.endGestureListeners(g);\n this.gesture = null;\n return;\n }\n this.beginDrag(g);\n }\n if (e.cancelable) { try { e.preventDefault(); } catch { } }\n const now = Date.now();\n g.lastX = t.clientX;\n g.samples.push([t.clientX, now]);\n while (g.samples.length > 2 && now - g.samples[0][1] > 100) g.samples.shift();\n this.applyDrag(g, dx);\n }\n\n private onTouchEnd(g: Gesture): void {\n this.endGestureListeners(g);\n if (!g.dragging) { this.gesture = null; return; }\n const dx = g.lastX - g.startX;\n const progress = dx / g.width;\n const first = g.samples[0];\n const last = g.samples[g.samples.length - 1];\n const span = last && first ? last[1] - first[1] : 0;\n const idle = last ? Date.now() - last[1] : Infinity;\n const velocity = span >= 16 && idle <= 50 ? (last[0] - first[0]) / span : 0;\n const commit = progress > this.swipe!.threshold || (velocity > 0.5 && dx > 0);\n void this.settleGesture(g, commit);\n }\n\n private async settleGesture(g: Gesture, commit: boolean): Promise<void> {\n const running: Animation[] = [];\n const topEl = g.top;\n const underEl = g.under ? g.under.top.element as any as HTMLElement : null;\n const duration = prefersReducedMotion() ? 0 : Math.max(0, Math.round(this.duration * 0.6));\n const currentTop = topEl.style.transform || 'translateX(0px)';\n const currentUnder = underEl?.style.transform || `translateX(-${SLIDE_OFFSET}%)`;\n if (commit) {\n await Promise.all([\n play(topEl, [{ transform: currentTop }, { transform: 'translateX(100%)' }], duration, running),\n underEl ? play(underEl, [{ transform: currentUnder }, { transform: 'translateX(0)' }], duration, running) : Promise.resolve(),\n ]);\n topEl.style.transform = 'translateX(100%)';\n if (underEl) underEl.style.transform = 'translateX(0px)';\n for (const a of running) { try { a.cancel(); } catch { } }\n this.gestureCommitted = true;\n this.awaitingGestureResult = true;\n try { window.history.back(); } catch { this.traversalSettled(true); }\n return;\n }\n await Promise.all([\n play(topEl, [{ transform: currentTop }, { transform: 'translateX(0)' }], duration, running),\n underEl ? play(underEl, [{ transform: currentUnder }, { transform: `translateX(-${SLIDE_OFFSET}%)` }], duration, running) : Promise.resolve(),\n ]);\n for (const a of running) { try { a.cancel(); } catch { } }\n restoreStyle(topEl, g.topSaved);\n if (underEl && g.under) {\n restoreStyle(underEl, g.underSaved);\n }\n if (this.gesture === g) this.gesture = null;\n }\n}\n","export const enum CharacterCodes {\n slash = 0x2F, // /\n question = 0x3F, // ?\n colon = 0x3A, // :\n openBrace = 0x7B, // {\n closeBrace = 0x7D, // }\n equals = 0x3D, // =\n $ = 0x24,\n backslash = 0x5C, // \\\n}\n\n\n\n\nexport interface IToken {\n type: 'static' | 'optional' | 'parameter';\n regexs: [];\n input: string;\n default: string | undefined;\n parameterName: string;\n isOptinal: boolean;\n parameterIndex: number;\n sectionIndex: number;\n hasLeadingSlash?: boolean;\n leadingSlashTokenIndex?: number;\n hasLeadingStatic?: boolean;\n leadingStaticTokenIndex?: number;\n consumed?: boolean;\n}\nexport class Scanner {\n\n constructor(public source: string) {\n this.tokens = [];\n }\n currentColumn = 0;\n tokens: IToken[] = [];\n addToken(token: IToken) {\n this.tokens.push(token);\n }\n\n public parse(): RegExp {\n if (!this.source.startsWith(\"/\")) {\n this.source = \"/\" + this.source;\n }\n // Sondaki '/' karakterlerini normalize et (kök '/' hariç): '/app/' deseni '/app' ile aynı\n while (this.source.length > 1 && this.source.endsWith('/')) {\n this.source = this.source.slice(0, -1);\n }\n\n var currentType: 'static' | 'optional' | 'parameter' | 'defaultValue' = 'static';\n var parentTokenIndex = -1;\n var parameterIndex = 0;\n var sectionIndex = -1;\n this.tokens = [];\n this.currentColumn = 0;\n while (this.currentColumn < this.source.length) {\n\n var cpa = this.codePointAt(this.source, this.currentColumn);\n\n var currentToken = this.tokens[parentTokenIndex];\n switch (cpa) {\n case CharacterCodes.slash:\n sectionIndex++;\n if (currentToken === undefined || currentToken.input.length > 1) {\n this.tokens.push({ default: '', input: '/', isOptinal: false, regexs: [], type: 'static', parameterName: '', parameterIndex: parameterIndex, sectionIndex });\n parentTokenIndex = this.tokens.length - 1;\n }\n break;\n case CharacterCodes.openBrace:\n parameterIndex++;\n let hasLeadingSlash = false;\n let leadingSlashTokenIndex: number | undefined = undefined;\n let hasLeadingStatic = false;\n let leadingStaticTokenIndex: number | undefined = undefined;\n if (this.tokens.length > 0) {\n const prev = this.tokens[this.tokens.length - 1];\n if (prev && prev.type === 'static' && prev.input === '/' && !prev.consumed) {\n hasLeadingSlash = true;\n leadingSlashTokenIndex = this.tokens.length - 1;\n } else if (prev && prev.type === 'static' && prev.input !== '/' && prev.sectionIndex === sectionIndex && !prev.consumed) {\n hasLeadingStatic = true;\n leadingStaticTokenIndex = this.tokens.length - 1;\n }\n }\n this.tokens.push({ default: undefined, input: '', isOptinal: false, regexs: [], type: 'parameter', parameterName: '', parameterIndex: parameterIndex, sectionIndex, hasLeadingSlash, leadingSlashTokenIndex, hasLeadingStatic, leadingStaticTokenIndex });\n parentTokenIndex = this.tokens.length - 1;\n currentType = 'parameter';\n break;\n case CharacterCodes.closeBrace:\n currentType = 'static';\n parentTokenIndex = -1;\n break;\n case CharacterCodes.colon:\n currentType = 'defaultValue';\n break;\n\n case CharacterCodes.question:\n if (currentToken) {\n currentToken.isOptinal = true;\n }\n break;\n default:\n const ch = this.source[this.currentColumn];\n if (currentToken) {\n if (currentType === 'parameter') {\n currentToken.parameterName = `${currentToken.parameterName + ch}`;\n } else if (currentType === 'defaultValue') {\n currentToken.default = `${(currentToken.default ?? '') + ch}`;\n } else {\n if (currentToken.type === 'static') {\n currentToken.input = `${currentToken.input + ch}`;\n } else {\n this.tokens.push({ default: undefined, input: ch, isOptinal: false, regexs: [], type: 'static', parameterName: '', parameterIndex: parameterIndex, sectionIndex });\n parentTokenIndex = this.tokens.length - 1;\n }\n }\n } else {\n this.tokens.push({ default: undefined, input: ch, isOptinal: false, regexs: [], type: 'static', parameterName: '', parameterIndex: parameterIndex, sectionIndex });\n parentTokenIndex = this.tokens.length - 1;\n }\n break;\n }\n this.currentColumn++;\n }\n\n const escapeRegex = (s: string) => s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n const charClass = \"[\\\\w\\\\d\\\\_\\\\-\\\\%\\\\&\\\\$\\\\+\\\\#\\\\,\\\\.\\\\{\\\\}\\\\(\\\\)\\\\[\\\\]\\\\?\\\\:\\\\=\\\\;\\\\'\\\\\\\"\\\\~\\\\\\\\]\";\n\n for (const t of this.tokens) {\n if (t.type === 'parameter' && t.isOptinal && t.hasLeadingSlash && typeof t.leadingSlashTokenIndex === 'number') {\n const prev = this.tokens[t.leadingSlashTokenIndex];\n if (prev && prev.type === 'static' && prev.input === '/') {\n prev.consumed = true;\n }\n }\n if (t.type === 'parameter' && t.isOptinal && t.hasLeadingStatic && typeof t.leadingStaticTokenIndex === 'number') {\n const prev = this.tokens[t.leadingStaticTokenIndex];\n if (prev && prev.type === 'static' && prev.input && prev.sectionIndex === t.sectionIndex) {\n prev.consumed = true;\n }\n }\n }\n\n const escapeClassChar = (c: string) => c.replace(/[\\\\\\]\\^\\-]/g, '\\\\$&');\n\n const getNextDelimChar = (idx: number): string | undefined => {\n const t = this.tokens[idx];\n for (let j = idx + 1; j < this.tokens.length; j++) {\n const nx = this.tokens[j];\n if (nx.type === 'static' && nx.sectionIndex === t.sectionIndex) {\n if (nx.input && nx.input !== '/') {\n return nx.input[0];\n }\n }\n if (nx.type === 'static' && nx.input === '/') break;\n }\n return undefined;\n };\n const buildCapture = (idx: number, isOptional: boolean) => {\n const delim = getNextDelimChar(idx);\n const innerClass = delim ? `[^${escapeClassChar(escapeRegex(delim))}]` : charClass;\n const quant = isOptional ? '{0,255}' : '{1,255}';\n return `(${innerClass}${quant})`;\n };\n\n let pattern = '^';\n for (let i = 0; i < this.tokens.length;) {\n const tok = this.tokens[i];\n if (tok.type === 'static' && tok.input === '/') {\n if (!tok.consumed) pattern += '/';\n i++;\n continue;\n }\n const segStart = i;\n let segEnd = i;\n while (segEnd < this.tokens.length) {\n const t = this.tokens[segEnd];\n if (t.type === 'static' && t.input === '/' && segEnd !== segStart) break;\n if (t.type === 'static' && t.input === '/' && segEnd === segStart) { segEnd++; break; }\n segEnd++;\n }\n const visited: Record<number, boolean> = {};\n let k = segStart;\n while (k < segEnd) {\n if (visited[k]) { k++; continue; }\n const t = this.tokens[k];\n if (t.type === 'static') {\n if (!t.consumed) pattern += escapeRegex(t.input);\n visited[k] = true;\n k++;\n continue;\n }\n if (t.isOptinal && !t.hasLeadingStatic) {\n\n const firstIdx = k;\n let hasDependent = false;\n for (let jj = firstIdx + 1; jj < segEnd; jj++) {\n const sj = this.tokens[jj];\n const pj = this.tokens[jj + 1] as IToken | undefined;\n if (sj && sj.type === 'static' && pj && pj.type === 'parameter' && pj.isOptinal && pj.hasLeadingStatic && typeof pj.leadingStaticTokenIndex === 'number' && pj.leadingStaticTokenIndex === jj) {\n hasDependent = true;\n break;\n }\n if (sj && sj.type === 'static' && sj.input === '/') break;\n }\n\n let groupInner = '';\n if (t.hasLeadingSlash) groupInner += '/';\n groupInner += buildCapture(firstIdx, !hasDependent);\n visited[firstIdx] = true;\n let j = firstIdx + 1;\n while (j < segEnd) {\n const sj = this.tokens[j];\n if (sj.type === 'static' && this.tokens[j + 1] && this.tokens[j + 1].type === 'parameter') {\n const prm = this.tokens[j + 1] as IToken;\n if (prm.isOptinal && prm.hasLeadingStatic && typeof prm.leadingStaticTokenIndex === 'number' && prm.leadingStaticTokenIndex === j) {\n const lit = escapeRegex(sj.input);\n const cap = buildCapture(j + 1, true);\n groupInner += `(?:${lit}${cap})?`;\n visited[j] = true;\n visited[j + 1] = true;\n j += 2;\n continue;\n }\n }\n break;\n }\n pattern += `(?:${groupInner})?`;\n k = j;\n continue;\n } else {\n const cap = buildCapture(k, t.isOptinal);\n if (t.isOptinal) {\n if (t.hasLeadingSlash) {\n pattern += `(?:/${cap})?`;\n } else if (t.hasLeadingStatic && typeof t.leadingStaticTokenIndex === 'number') {\n const prev = this.tokens[t.leadingStaticTokenIndex];\n const lit = prev && prev.type === 'static' ? escapeRegex(prev.input) : '';\n pattern += `(?:${lit}${cap})?`;\n } else {\n pattern += `(?:${cap})?`;\n }\n } else {\n pattern += cap;\n }\n visited[k] = true;\n k++;\n }\n }\n i = segEnd;\n }\n\n pattern += '$';\n return new RegExp(pattern, \"i\");\n }\n public parameters: Record<string, any> = {};\n public exist(input: string, pageSearch?: string): boolean {\n const hashIdx = input.indexOf('#');\n const withoutHash = hashIdx >= 0 ? input.substring(0, hashIdx) : input;\n let path = withoutHash;\n let query = '';\n const qIdx = withoutHash.indexOf('?');\n if (qIdx >= 0) {\n path = withoutHash.substring(0, qIdx);\n query = withoutHash.substring(qIdx + 1);\n }\n\n // İstek yolundaki sondaki '/' karakterlerini yok say (kök '/' hariç):\n // '/app/' → '/app'; desen ^...$ tam eşleşme olduğundan aksi halde not-found olur.\n while (path.length > 1 && path.endsWith('/')) {\n path = path.slice(0, -1);\n }\n\n var tx = this.parse();\n var rx = tx.exec(path);\n\n if (rx) {\n var i = rx ? rx.length : 0;\n var arr = <any>[];\n\n this.parameters = {};\n rx?.forEach((t, indx) => {\n arr.push(t);\n })\n if (query && query.length) {\n const urlSearchParams = new URLSearchParams(query);\n const queryMap = new Map<string, string[]>();\n urlSearchParams.forEach((val, key) => {\n const existing = queryMap.get(key) || [];\n existing.push(val);\n queryMap.set(key, existing);\n });\n queryMap.forEach((values, key) => {\n if (values.length === 1) {\n this.parameters[key] = values[0];\n } else {\n this.parameters[key] = values;\n }\n });\n } else if (pageSearch) {\n const urlSearchParams = new URLSearchParams(pageSearch);\n const queryMap = new Map<string, string[]>();\n urlSearchParams.forEach((val, key) => {\n const existing = queryMap.get(key) || [];\n existing.push(val);\n queryMap.set(key, existing);\n });\n queryMap.forEach((values, key) => {\n if (values.length === 1) {\n this.parameters[key] = values[0];\n } else {\n this.parameters[key] = values;\n }\n });\n }\n\n if (rx.input === arr[0]) {\n rx?.forEach((t, indx) => {\n\n if (indx !== 0) {\n var all = this.tokens.find(t => t.parameterIndex == indx);\n if (all) {\n let val: any = t;\n if ((val === undefined || val === '') && all.isOptinal) {\n const def = (all.default === undefined || all.default === '') ? undefined : all.default;\n val = def;\n }\n if (val === undefined) {\n this.parameters[all.parameterName] = undefined;\n } else {\n this.parameters[all.parameterName] = val;\n }\n }\n }\n })\n /* TODO: route detayları ile ilgili mesajı Geliştirici Araçları'na gönder */\n return true;\n }\n }\n\n return false;\n }\n codePointAt: (s: string, i: number) =>\n number = (String.prototype as any).codePointAt ?\n (s, i) => (s as any).codePointAt(i) : function codePointAt(str, i): number {\n const size = str.length;\n if (i < 0 || i >= size) {\n return undefined!;\n }\n const first = str.charCodeAt(i);\n if (first >= 0xD800 && first <= 0xDBFF && size > i + 1) {\n const second = str.charCodeAt(i + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n return first;\n };\n\n}","import { RouteItem, RouteRecord } from \"./RouteItem\";\r\nimport { Scanner } from \"./scanner\";\r\n\r\n\r\n/** Bir fullPath'in statik (parametresiz) ve parametreli segment sayıları. */\r\nexport function routeSpecificity(fullPath: string): { statics: number; params: number } {\r\n let statics = 0, params = 0;\r\n for (const seg of (fullPath || '').split('/')) {\r\n if (!seg) continue;\r\n if (seg.startsWith('{') && seg.endsWith('}')) params++; else statics++;\r\n }\r\n return { statics, params };\r\n}\r\n\r\nexport function compareRouteRecords(a: RouteRecord, b: RouteRecord): number {\r\n const d = a.chain.length - b.chain.length;\r\n if (d !== 0) return d;\r\n const sa = routeSpecificity(a.fullPath), sb = routeSpecificity(b.fullPath);\r\n if (sa.statics !== sb.statics) return sb.statics - sa.statics;\r\n if (sa.params !== sb.params) return sa.params - sb.params;\r\n return b.fullPath.length - a.fullPath.length;\r\n}\r\n\r\nexport class RouteCollection {\r\n\r\n public records: RouteRecord[] = [];\r\n private routesMap: Map<any, RouteItem> = new Map();\r\n constructor(private routes: RouteItem[]) {\r\n this.build();\r\n }\r\n\r\n private build() {\r\n this.records = [];\r\n this.routesMap.clear();\r\n\r\n for (const r of this.routes) this.walk([], \"\", r);\r\n\r\n this.records.sort(compareRouteRecords);\r\n }\r\n\r\n walk = (chain: RouteItem[], parentPath: string, node: RouteItem, viaAlias: boolean = false) => {\r\n const fullPath = this.joinPaths(parentPath, node.path);\r\n if (!viaAlias) {\r\n const existing = (node as any).fullPath as string | null | undefined;\r\n if (existing == null || (typeof existing === 'string' && existing.trim() === '')) {\r\n (node as any).fullPath = fullPath;\r\n }\r\n if (node.name != null) {\r\n this.routesMap.set(node.name, node);\r\n }\r\n }\r\n const nextChain = [...chain, node];\r\n const aliases = node.alias == null ? [] : (Array.isArray(node.alias) ? node.alias : [node.alias]);\r\n const variants = [\r\n { path: fullPath, isAlias: viaAlias },\r\n ...aliases.map(a => ({ path: this.joinPaths(parentPath, a), isAlias: true }))\r\n ];\r\n for (const variant of variants) {\r\n this.records.push({\r\n fullPath: variant.path,\r\n chain: nextChain,\r\n leaf: node,\r\n scanner: new Scanner(variant.path),\r\n aliasOf: variant.isAlias ? ((node as any).fullPath ?? null) : null\r\n });\r\n if (node.childs && node.childs.length) {\r\n for (const child of node.childs) this.walk(nextChain, variant.path, child, variant.isAlias);\r\n }\r\n }\r\n }\r\n\r\n joinPaths(parent: string, child: string): string {\r\n parent = parent || \"\";\r\n child = child || \"\";\r\n\r\n const base = parent && parent !== \"/\" && parent.endsWith(\"/\") ? parent.slice(0, -1) : parent;\r\n\r\n if (child === \"/\") {\r\n return base || \"/\";\r\n }\r\n\r\n const seg = child ? (child.startsWith(\"/\") ? child : \"/\" + child) : \"\";\r\n\r\n if (!base || base === \"/\") {\r\n return seg || \"/\";\r\n }\r\n return base + seg;\r\n }\r\n}\r","import { Component, ComponentBase, assertLoadedComponent, resolveToComponent, unwrapModule, notifyActivated, notifyDeactivated } from \"../\";\nimport { cancelAnimationsDeep } from \"../component/navigation\";\nimport { errorHandler } from \"../common/ErrorHandler\";\nimport { callReported, reportError, reportWarning } from \"../common/diagnostics\";\nimport { NavigationDirection, NavigationOptions, ResolveResult } from \"./\";\nimport { RouterView, RouterViewBuilt } from \"./\";\nimport { UrlRoutingModule } from \"./\";\nimport { RouterViewRegistry } from \"./RouterViewRegistry\";\nimport { RouteItem } from \"./\";\nimport { Application } from \"../\";\nimport { pinServiceOwner, runInConstructionScope } from \"../dependencyInjection/ServiceProvider\";\nimport type { ServiceProvider } from \"../dependencyInjection/ServiceProvider\";\nimport { hasOwnTransition, markDirection, playLeave, unmarkDirection } from \"./NavigationStack\";\nimport type { NavigationStack, RetainedEntry, StackNavigation } from \"./NavigationStack\";\nimport type { RouteSnapshot } from \"./routerState\";\n\ntype StackLeave = { top: ComponentBase | null; retained: RetainedEntry | null; disposeAfter: ComponentBase[] };\ntype StackMotion = { animate: boolean; pages: boolean; direction: NavigationDirection };\ntype NavigationRun = { provider?: ServiceProvider; scope?: ServiceProvider; route: RouteSnapshot; committed: boolean; suppressed: ComponentBase[] };\n\nexport class RoutingEngine {\n\n public stack: NavigationStack | null = null;\n private _revealed: Set<ComponentBase> = new Set();\n\n private root!: ComponentBase;\n private application!: Application;\n private routingModule!: UrlRoutingModule;\n private _previousPath: ResolveResult | null = null;\n private _previousInstances: ComponentBase[] = [];\n\n public register(mainApp: ComponentBase, application: Application, routingModule: UrlRoutingModule) {\n this.root = mainApp;\n this.application = application;\n this.routingModule = routingModule;\n }\n\n private controlCache: Map<RouteItem, any> = new Map();\n\n public async evict(route?: RouteItem | null): Promise<void> {\n const targets: RouteItem[] = route ? [route] : Array.from(this.controlCache.keys());\n for (const r of targets) {\n const inst = this.controlCache.get(r);\n if (!inst || inst.isDisposed) { this.controlCache.delete(r); continue; }\n if (this._previousInstances.includes(inst)) continue;\n this.controlCache.delete(r);\n try { await inst.dispose(); } catch (error) { reportError('MJX307', error); }\n }\n }\n\n\n public async dispose(): Promise<void> {\n this._navVersion++;\n this._previousPath = null;\n this._previousInstances = [];\n this._revealed.clear();\n const stack = this.stack;\n this.stack = null;\n if (stack) { try { await stack.dispose(); } catch { } }\n await this.evict();\n }\n\n generatePathString(routeDefinition: string, params: Record<string, any>): string {\n const parts = routeDefinition.split('/');\n const result = parts.map(part => {\n if (part.startsWith('{') && part.endsWith('}')) {\n const paramDefinition = part.slice(1, -1);\n\n let [paramName, defaultValue] = paramDefinition.split(':');\n\n const isOptional = paramName.endsWith('?');\n if (isOptional) {\n paramName = paramName.slice(0, -1);\n }\n const value = params[paramName];\n if (value !== undefined && value !== null && value !== '') {\n return String(value);\n }\n return defaultValue ?? '';\n\n } else {\n return part;\n }\n })\n .filter(part => part !== '')\n .join('/');\n\n if (routeDefinition.startsWith('/')) {\n return '/' + (result ? result : '');\n }\n return result;\n }\n\n private _navVersion = 0;\n\n private _pendingActivate: Set<ComponentBase> = new Set();\n public async execute(path: ResolveResult, nav?: StackNavigation, route?: RouteSnapshot) {\n route ??= {\n target: path,\n chain: path.chain.map(r => this.generatePathString(r.path, path.params) || ''),\n direction: undefined,\n state: undefined,\n };\n const provider = this._rootProvider();\n const run: NavigationRun = { provider, scope: provider?._beginNavigation(), route, committed: false, suppressed: [] };\n try {\n await this._execute(path, nav, run);\n } finally {\n if (!run.committed && run.scope) provider!._abandonNavigation(run.scope);\n for (const inst of run.suppressed) if (!inst.isDisposed) inst.motif.options.transition._suppressEnter = false;\n }\n }\n\n private _commitNavigation(run: NavigationRun): void {\n if (run.committed) return;\n run.committed = true;\n if (run.scope) run.provider!._commitNavigation(run.scope);\n this.application?._routerState.commit(run.route);\n }\n\n private async _execute(path: ResolveResult, nav: StackNavigation | undefined, run: NavigationRun) {\n const navVersion = ++this._navVersion;\n const stack = this.stack && nav && nav.to ? this.stack : null;\n if (stack) stack.begin(nav!);\n const restored = stack ? stack.take(nav!.to) : null;\n const controlList: any[] = new Array(path.chain.length);\n\n const isSameRoute = !!(this._previousPath &&\n this._previousPath.route === path.route &&\n (this._previousPath.route != null || this._previousPath.fullPath === path.fullPath));\n\n var enableEnter = !!(this._previousPath && this._previousPath.uri === path.uri);\n let paramsChanged = false;\n\n\n if (isSameRoute && path.route) {\n\n const prevParams = this._previousPath!.params || {};\n const newParams = path.params || {};\n let changed = false;\n const allKeys = new Set([...Object.keys(prevParams), ...Object.keys(newParams)]);\n for (const k of allKeys) {\n if (prevParams[k] !== newParams[k]) { changed = true; break; }\n }\n if (changed) {\n paramsChanged = true;\n\n const leafRoute = path.route;\n if (leafRoute && !leafRoute.keepAlive && this.controlCache.has(leafRoute)) {\n if (stack) {\n this.controlCache.delete(leafRoute);\n } else {\n const oldInstance = this.controlCache.get(leafRoute);\n if (oldInstance && typeof oldInstance.dispose === 'function' && !oldInstance.isDisposed) {\n try { await oldInstance.dispose(); } catch { }\n }\n this.controlCache.delete(leafRoute);\n }\n }\n\n try {\n const globalHooks = this.routingModule.getHooks?.() || undefined;\n const updateHook = path.route.onUpdate || globalHooks?.onUpdate;\n if (updateHook) {\n const updateContext = {\n from: {\n path: this._previousPath!.uri || this._previousPath!.fullPath || '',\n params: prevParams\n },\n to: {\n path: path.uri || path.fullPath || '',\n params: newParams\n },\n meta: (path as any).meta ?? path.extend\n };\n await updateHook(updateContext);\n }\n } catch (error) {\n reportError('MJX306', error, 'onUpdate');\n }\n }\n }\n\n if ((!isSameRoute || paramsChanged) && path.route) {\n try {\n const metaInfo = (path as any).meta ?? path.extend;\n const enterContext: any = {\n path: path.uri || path.fullPath || '',\n params: path.params,\n meta: metaInfo,\n to: {\n path: path.uri || path.fullPath || '',\n params: path.params,\n meta: metaInfo\n }\n };\n const globalHooks = this.routingModule.getHooks?.() || undefined;\n const enterHook = path.route.onEntering || globalHooks?.onEntering;\n if (enterHook) {\n await enterHook(enterContext);\n }\n } catch (error) {\n reportError('MJX306', error, 'onEntering');\n }\n }\n\n const prepTasks: Promise<void>[] = [];\n for (let i = 0; i < path.chain.length; i++) {\n const element = path.chain[i];\n const kept = restored && restored.chain[i] === element ? restored.instances[i] : undefined;\n if (kept && !kept.isDisposed && !element.keepAlive) {\n controlList[i] = kept;\n this.controlCache.set(element, kept);\n continue;\n }\n if (this.controlCache.has(element)) {\n let control = this.controlCache.get(element);\n if (!control || control.isDisposed) {\n this.controlCache.delete(element);\n const task = this.createInstance(element.control, run.scope, run.route).then(inst => {\n this.controlCache.set(element, inst);\n controlList[i] = inst;\n });\n prepTasks.push(task);\n } else {\n controlList[i] = control;\n if (element.keepAlive && !this._previousInstances.includes(control)) {\n this._pendingActivate.add(control);\n }\n }\n } else {\n const task = this.createInstance(element.control, run.scope, run.route).then(inst => {\n this.controlCache.set(element, inst);\n controlList[i] = inst;\n });\n prepTasks.push(task);\n }\n }\n if (prepTasks.length) {\n await Promise.all(prepTasks);\n }\n let leave: StackLeave | null = null;\n let motion: StackMotion | null = null;\n const previousInstances = this._previousInstances;\n if (stack) {\n const animate = !!stack.animation && stack.animation !== 'none'\n && (nav!.direction === 'push' || nav!.direction === 'back' || nav!.direction === 'forward');\n motion = { animate, pages: !animate && !stack.gestureCommitPending, direction: nav!.direction };\n leave = await this._stackLeave(path.chain, controlList, nav!, stack, motion);\n if (restored) {\n const top = restored.top;\n if (!top.isDisposed && restored.outlet && top.parent === restored.outlet) {\n stack.reveal(restored);\n restored.outlet.current = top;\n restored.outlet.previouspage = top;\n this._revealed.add(top);\n }\n if (!top.isDisposed) this._pendingActivate.add(top);\n }\n } else {\n await this.disposeFromDivergencePoint(path.chain, controlList);\n }\n const entering: ComponentBase[] = motion ? controlList.filter(c => c && !previousInstances.includes(c)) : [];\n if (motion) {\n for (const inst of previousInstances) unmarkDirection(inst);\n for (const inst of entering) {\n if (motion.pages) markDirection(inst, motion.direction);\n else {\n inst.motif.options.transition._suppressEnter = true;\n run.suppressed.push(inst);\n }\n }\n }\n if (navVersion === this._navVersion) this._commitNavigation(run);\n await this.mountChain(controlList, path.chain, this.root, navVersion);\n if (motion?.pages) {\n if (restored?.attached && !restored.top.isDisposed && hasOwnTransition(restored.top, 'enter')) {\n restored.top.motif.options.transition.enterTransition(() => { });\n }\n for (const inst of entering) if (inst.isBuilt && !hasOwnTransition(inst, 'enter')) unmarkDirection(inst);\n }\n let enteringTop: ComponentBase | null = null;\n if (stack) {\n if (restored) stack.restoreScroll(restored);\n for (let i = 0; i < controlList.length; i++) {\n if (controlList[i] && controlList[i] !== previousInstances[i]) { enteringTop = controlList[i]; break; }\n }\n if (!enteringTop) enteringTop = controlList.length ? controlList[controlList.length - 1] : null;\n stack.record(nav!, enteringTop);\n }\n\n\n\n if (!enableEnter && path.route) {\n\n try {\n const metaInfo = (path as any).meta ?? path.extend;\n const enterContext: any = {\n path: path.uri || path.fullPath || '',\n params: path.params,\n meta: metaInfo,\n to: {\n path: path.uri || path.fullPath || '',\n params: path.params,\n meta: metaInfo\n }\n };\n const globalHooks = this.routingModule.getHooks?.() || undefined;\n const enterHook = path.route?.onEnter || globalHooks?.onEnter;\n if (enterHook) {\n await enterHook(enterContext);\n }\n } catch (error) {\n reportError('MJX306', error, 'onEnter');\n }\n }\n this._previousPath = path;\n this._previousInstances = controlList.slice();\n\n if (stack && leave) {\n if (leave.top && navVersion === this._navVersion && (leave.retained || leave.disposeAfter.length)) {\n await stack.transition(nav!.direction, enteringTop, leave.top);\n }\n if (leave.retained) stack.settle(leave.retained);\n for (const inst of leave.disposeAfter) {\n try { if (!inst.isDisposed) await inst.dispose({ deep: true, skipLeaveTransition: true }); } catch (error) { reportError('MJX307', error); }\n }\n }\n }\n\n private async _stackLeave(newChain: RouteItem[], newInstances: ComponentBase[], nav: StackNavigation, stack: NavigationStack, motion: StackMotion): Promise<StackLeave> {\n const result: StackLeave = { top: null, retained: null, disposeAfter: [] };\n const prevChain = this._previousPath?.chain ?? [];\n const prevInstances = this._previousInstances;\n if (!prevInstances.length) return result;\n\n let d = -1;\n for (let i = 0; i < prevInstances.length; i++) {\n const inst = prevInstances[i];\n if (inst && !newInstances.includes(inst)) { d = i; break; }\n }\n if (d < 0) return result;\n\n if (!prevInstances[d].isDisposed) pinServiceOwner(prevInstances[d]);\n\n const outletFor = (i: number): RouterView | null => {\n const container = i - 1 >= 0 ? prevInstances[i - 1] : this.root;\n const outletName = (prevChain[i]?.extend?.targetOutlet) || 'default';\n try { return container && !container.isDisposed ? this.findRouterView(container, outletName) : null; } catch { return null; }\n };\n\n const top = prevInstances[d];\n const topItem = prevChain[d];\n if (stack.isRetaining(nav) && top && !top.isDisposed && !topItem?.keepAlive) {\n const outlet = outletFor(d);\n if (outlet && outlet.current === top) {\n outlet.current = null;\n outlet.previouspage = null;\n }\n cancelAnimationsDeep(top);\n if (motion.pages && hasOwnTransition(top, 'leave')) {\n markDirection(top, motion.direction);\n await playLeave(top);\n unmarkDirection(top);\n }\n for (let i = d; i < prevInstances.length; i++) {\n const item = prevChain[i];\n if (item && !item.keepAlive && this.controlCache.get(item) === prevInstances[i]) this.controlCache.delete(item);\n }\n result.top = top;\n result.retained = stack.retain(nav.from!, this._previousPath?.uri ?? '', prevChain, prevInstances, d, outlet, motion.animate);\n return result;\n }\n\n const deferTop = motion.animate && !!top && !top.isDisposed && !topItem?.keepAlive;\n for (let i = prevInstances.length - 1; i >= d; i--) {\n const inst = prevInstances[i];\n const item = prevChain[i];\n if (!inst || newInstances.includes(inst)) continue;\n if (inst.isDisposed) {\n if (item && this.controlCache.get(item) === inst) this.controlCache.delete(item);\n continue;\n }\n if (deferTop && i > d && !item?.keepAlive) {\n if (item && this.controlCache.get(item) === inst) this.controlCache.delete(item);\n continue;\n }\n try {\n const outlet = outletFor(i);\n if (outlet && outlet.current === inst) {\n outlet.current = null;\n outlet.previouspage = null;\n }\n if (item?.keepAlive) {\n cancelAnimationsDeep(inst);\n try { inst.parent?.controls.silentDetach(inst); } catch { /* ignore */ }\n if (!this.controlCache.has(item)) this.controlCache.set(item, inst);\n notifyDeactivated(inst);\n } else {\n if (item && this.controlCache.get(item) === inst) this.controlCache.delete(item);\n if (deferTop && i === d) {\n result.top = inst;\n result.disposeAfter.push(inst);\n } else if (motion.pages) {\n markDirection(inst, motion.direction);\n await inst.dispose();\n } else {\n await inst.dispose({ deep: true, skipLeaveTransition: true });\n }\n }\n } catch (error) {\n reportError('MJX307', error);\n }\n }\n return result;\n }\n\n private async disposeFromDivergencePoint(newChain: RouteItem[], newInstances: ComponentBase[]): Promise<void> {\n if (!this._previousPath || !this._previousInstances.length) {\n return;\n }\n\n const prevChain = this._previousPath.chain;\n const prevInstances = this._previousInstances;\n\n let divergeIndex = 0;\n const minLength = Math.min(prevChain.length, newChain.length);\n\n for (let i = 0; i < minLength; i++) {\n if (prevChain[i] === newChain[i]) {\n divergeIndex = i + 1;\n } else {\n break;\n }\n }\n\n for (let i = prevInstances.length - 1; i >= divergeIndex; i--) {\n const inst = prevInstances[i];\n const item = prevChain[i];\n if (!inst || inst.isDisposed) {\n if (item && this.controlCache.get(item) === inst) this.controlCache.delete(item);\n continue;\n }\n try {\n const containerIndex = i - 1;\n const container = containerIndex >= 0 ? prevInstances[containerIndex] : this.root;\n const outletName = (item?.extend?.targetOutlet) || 'default';\n const outlet = this.findRouterView(container, outletName);\n\n if (outlet && outlet.current === inst) {\n outlet.current = null;\n outlet.previouspage = null;\n }\n\n if (item?.keepAlive) {\n cancelAnimationsDeep(inst);\n try { inst.parent?.controls.silentDetach(inst); } catch { /* ignore */ }\n if (!this.controlCache.has(item)) this.controlCache.set(item, inst);\n notifyDeactivated(inst);\n } else {\n if (this.controlCache.get(item) === inst) this.controlCache.delete(item);\n await inst.dispose();\n }\n } catch (error) {\n reportError('MJX307', error);\n }\n }\n }\n\n private _construct<T>(scope: ServiceProvider | undefined, route: RouteSnapshot | undefined, create: () => T): T {\n const state = this.application?._routerState;\n return runInConstructionScope(scope, () => state ? state.constructWith(route, create) : create());\n }\n\n private async parseControl(control: RouteItem['control'], scope?: ServiceProvider, route?: RouteSnapshot): Promise<any> {\n var instance = this._construct(scope, route, () => this._resolveFrom(scope, control));\n if (instance) {\n return instance;\n }\n let val = control as any;\n if (val instanceof Promise) {\n val = unwrapModule(await val);\n }\n\n instance = this._construct(scope, route, () => this._resolveFrom(scope, val));\n if (instance) {\n return instance;\n }\n\n if (typeof val === 'function') {\n return this.parseControl(this._construct(scope, route, () => resolveToComponent(val, this.application)), scope, route);\n }\n return resolveToComponent(val);\n }\n\n private _resolveFrom(scope: ServiceProvider | undefined, token: any): any {\n const provider = scope ?? this._rootProvider();\n if (!provider || !provider.getAllServices().getDescriptor(token)) return null;\n return provider.get(token);\n }\n\n private _rootProvider(): ServiceProvider | undefined {\n try { return this.application?.provider ?? Application.main?.provider; } catch { return undefined; }\n }\n\n private async createInstance(control: RouteItem['control'], scope?: ServiceProvider, route?: RouteSnapshot): Promise<any> {\n return await this._instanceCreator(control, scope, route);\n }\n\n private async _instanceCreator(control: RouteItem['control'], scope?: ServiceProvider, route?: RouteSnapshot): Promise<any> {\n let val = await this.parseControl(control, scope, route) as any;\n assertLoadedComponent(val);\n // if (val instanceof Promise) {\n // return result.default ? result.default : result;\n\n // if (typeof val === 'function') {\n // try {\n // return val(this.application);\n // } catch {\n // // fallback: try as constructor\n // return new (val as any)(this.application);\n\n\n // if (val && typeof val.then === 'function') {\n // return await val;\n return val;\n }\n\n private async activator(container: ComponentBase) {\n try {\n //const reflect: any = (Reflect as any)?.getMetadata ? Reflect : null;\n //const paramTypes: any[] | undefined = reflect ? (Reflect as any).getMetadata('design:paramtypes', container) as any[] : undefined;\n // if (Array.isArray(paramTypes) && paramTypes.length) {\n // const args: any[] = [];\n // let anyResolved = false;\n // for (const t of paramTypes) {\n // try {\n // // try resolve token; if not registered, provider.getAsync will throw\n // const inst = await sp.getAsync(t);\n // } catch {\n // if (anyResolved) {\n // // If it looks like a constructor, try `new`, otherwise call as function\n // try { return new (container as any)(...args); } catch { return (container as any)(...args); }\n } catch { /* ignore */ }\n }\n pendingMount: WeakMap<any, Promise<void>> = new WeakMap();\n private pendingListeners = new WeakMap<ComponentBase, Function>(); \n private static readonly OUTLET_WARN_MS = 3000;\n \n private async mountChain(instances: any[], chain: any[], container: ComponentBase, navVersion: number): Promise<void> { \n for (let index = 0; index < instances.length;) { \n if (navVersion !== this._navVersion) return;\n\n let inst = instances[index] as ComponentBase; \n if (inst?.isDisposed) {\n inst = await this.createInstance(chain[index].control, this._rootProvider()?._currentScope());\n instances[index] = inst;\n }\n const outletName = (chain[index] && chain[index].extend && chain[index].extend.targetOutlet) || 'default';\n \n const outlet = this.findRouterView(container, outletName);\n \n if (!outlet || !container.isBuilt) {\n this._waitForOutlet(container, instances.slice(index), chain.slice(index), navVersion, outletName);\n return;\n }\n\n const revealed = this._revealed.delete(inst);\n const alreadyShown = outlet.current === inst && !revealed;\n await outlet.navigate(inst);\n if (this._pendingActivate.delete(inst)) {\n notifyActivated(inst);\n }\n const showHook = (chain[index] as RouteItem | undefined)?.onShow;\n if (showHook && !alreadyShown && outlet.current === inst && navVersion === this._navVersion) {\n callReported(() => showHook(inst), 'MJX306', 'onShow');\n }\n container = inst;\n index++;\n }\n }\n \n private _waitForOutlet(container: ComponentBase, instances: any[], chain: any[], navVersion: number, outletName: string): void {\n \n const oldCleanup = this.pendingListeners.get(container);\n if (oldCleanup) {\n try { oldCleanup(); } catch { }\n this.pendingListeners.delete(container);\n }\n\n let done = false;\n let warnTimer: any = undefined;\n\n const handler = async (_s: any, _e: any) => {\n if (done) return;\n cleanup(); \n if (navVersion !== this._navVersion) return;\n await this.mountChain(instances, chain, container, navVersion);\n };\n\n const cleanup = () => {\n if (done) return;\n done = true;\n this.pendingListeners.delete(container);\n try { (container as any).motif?.off?.(RouterViewBuilt as any, handler); } catch { }\n if (warnTimer !== undefined) {\n try { clearTimeout(warnTimer); } catch { }\n warnTimer = undefined;\n }\n };\n\n container.motif.on(RouterViewBuilt as any, handler);\n this.pendingListeners.set(container, cleanup);\n\n if (errorHandler.isDevelopment()) {\n warnTimer = setTimeout(() => {\n if (!done && navVersion === this._navVersion) {\n reportWarning('MJX301', [outletName, RoutingEngine.OUTLET_WARN_MS]);\n }\n }, RoutingEngine.OUTLET_WARN_MS);\n }\n }\n\n\n\n\n private findRouterView(root: ComponentBase, name: string = 'default'): RouterView | null {\n // 1) Önce mevcut container'ın ALT AĞACINDA ara (yakınlık öncelikli)\n const stack: ComponentBase[] = (root.controls?.items || []).slice();\n while (stack.length) {\n const c = stack.shift()!;\n if (!c || c.isDisposed) continue;\n if ((c as any).__isRouterView) {\n const rv = c as any as RouterView;\n if ((rv.props.name || 'default') === name) return rv;\n }\n if (c.controls && c.controls.items && c.controls.items.length) {\n for (const ch of c.controls.items) stack.push(ch);\n }\n }\n\n // 2) Alt ağaçta bulunamadıysa ve isim 'default' ise: üst/yan dallara BAKMA.\n if (!name || name === 'default') {\n return null;\n }\n\n const scopeId = typeof (root as any).scopeId === 'function' ? (root as any).scopeId() : (root as any).scopeId ?? '';\n var x = RouterViewRegistry.find(name, scopeId);\n if (x) return x;\n\n // 3) İsimli outlet için ÜST AĞAÇLARDA arama: her bir üst ata için, o atanının\n let current: any = root;\n let parent: any = current?.parent;\n while (parent) {\n const siblings: ComponentBase[] = (parent.controls?.items || []).filter((it: any) => it !== current);\n const q: ComponentBase[] = siblings.slice();\n while (q.length) {\n const node = q.shift()!;\n if (!node || (node as any).isDisposed) continue;\n if ((node as any).__isRouterView) {\n const rv = node as any as RouterView;\n if ((rv.props.name || 'default') === name) return rv;\n }\n if ((node as any).controls && (node as any).controls.items && (node as any).controls.items.length) {\n for (const ch of (node as any).controls.items) q.push(ch);\n }\n }\n current = parent;\n parent = parent.parent;\n }\n\n // 4) Hiçbir yerde bulunmadı\n return null;\n }\n\n}","import { Application, Component, ComponentBase, dom, EventArgs, isExactMatch, startsWithPath } from \"../\";\r\nimport { Router } from \"./common\";\r\n\r\ntype RouterLinkOptions = {\r\n to: string;\r\n el?: string | Node;\r\n showHref?: boolean;\r\n text?: string;\r\n exactClass?: string;\r\n activeClass?: string;\r\n bypass?: boolean;\r\n target?: string;\r\n onExact?: () => void;\r\n offExact?: () => void;\r\n onActive?: () => void;\r\n offActive?: () => void;\r\n};\r\n\r\nexport class RouterLink extends Component<any, RouterLinkOptions> {\r\n constructor(props: RouterLinkOptions) {\r\n\r\n super(props.el ?? 'a', props);\r\n if (props.showHref !== false) this.attr.add({ href: props.to });\r\n if (props.target) this.attr.add({ target: props.target });\r\n\r\n this.motif.on('click', (s, e: MouseEvent) => {\r\n if (props.bypass) return;\r\n if (props.target && props.target !== '_self') return;\r\n if (e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return;\r\n e.preventDefault();\r\n const router: Router | undefined = Application.main.router;\r\n if (router) router.navigate(props.to);\r\n });\r\n\r\n if (this.childs && this.childs.length) {\r\n this.controls.add(...this.childs);\r\n } else if (props.text != null) {\r\n this.attr.add({ textContent: props.text });\r\n }\r\n\r\n }\r\n\r\n public onBuilt(sender: ComponentBase, e: EventArgs): void {\r\n this.motif.options.enableRouterClassing = {\r\n to: 'all',\r\n path: this.props.to,\r\n activeClass: this.props.activeClass,\r\n exactClass: this.props.exactClass,\r\n onActive: this.props.onActive,\r\n offActive: this.props.offActive,\r\n onExact: this.props.onExact,\r\n offExact: this.props.offExact\r\n }\r\n }\r\n\r\n}\r","import { $, Application, dom, safeCallSilentAsync } from \"..\";\nimport { Component } from \"../\";\nimport { NavigationDirection, NavigationOptions, ResolveResult, RouteInfo, RouteResolveContext, RouterOptions, StackEntryInfo } from \"./\";\nimport type { RouteSnapshot } from \"./routerState\";\nimport { ScrollMemory } from \"./scrollMemory\";\nimport { NavigationStack, StackNavigation } from \"./NavigationStack\";\nimport { RouteCollection, compareRouteRecords } from \"./\";\nimport { RouteItem, RouteRecord, RouterValidateEventArgs } from \"./\";\nimport { RoutingEngine } from \"./\";\nimport { errorHandler } from \"../common/ErrorHandler\";\nimport { motifError, reportError, reportWarning } from \"../common/diagnostics\";\n\nconst pathOf = (uri: string): string => uri.split('#')[0].split('?')[0];\n\ntype HistoryStamp = { index: number; session: string; hasState?: boolean };\n\ntype TraversalInfo = { direction: NavigationDirection; state: any; from: HistoryStamp | null };\n\nconst newHistorySession = (): string => Math.random().toString(36).slice(2, 10) + Date.now().toString(36);\n\nexport class UrlRoutingModule {\n private static readonly MAX_REDIRECTS = 10;\n private _routerOptions: RouterOptions;\n private routingEngine: RoutingEngine;\n routeCollection!: RouteCollection\n private routesMap: Map<any, RouteItem> = new Map();\n private mainApp!: Component;\n private application: Application;\n private _suppressBeforeEachOnce: boolean = false;\n private _suppressMiddlewaresOnce: boolean = false;\n private _scroll: ScrollMemory | null = null;\n\n constructor(options: RouterOptions, application: Application) {\n this._routerOptions = options;\n this.routeCollection = new RouteCollection(options.RouteItems);\n this.routingEngine = new RoutingEngine();\n this.application = application;\n this._installLinkInterceptor();\n\n const scrollMemory = options.scrollMemory;\n if (scrollMemory) {\n this._scroll = new ScrollMemory(scrollMemory === true ? {} : scrollMemory);\n this._scroll.locationAnchor = this._addressMode() === 'history';\n }\n\n if (options.stack && options.mode !== 'shell') {\n this._stack = new NavigationStack(options.stack);\n this.routingEngine.stack = this._stack;\n }\n }\n\n private _stack: NavigationStack | null = null;\n public getHooks(): RouterOptions['hooks'] | undefined {\n return this._routerOptions.hooks;\n }\n\n private _windowNavListener: ((this: Window, ev: Event) => any) | null = null;\n public start(mainApp: Component, shellUri?: string) {\n this.mainApp = mainApp;\n this.routingEngine.register(this.mainApp, this.application, this);\n const path = this._routerOptions.mode === 'shell' ? (shellUri ?? '/') : this._getCurrentUri();\n this._seedHistoryIndex();\n this._suppressMiddlewaresOnce = true;\n this.navigate(path);\n if (this._routerOptions.mode === 'shell') return;\n this._windowNavListener = () => {\n void this._onHistoryTraversal();\n };\n window.addEventListener(\n this._routerOptions.mode === 'hash' || this._routerOptions.mode === 'file' ? 'hashchange' : 'popstate',\n this._windowNavListener\n );\n }\n\n public get shownUri(): string | undefined {\n return this._previousRoute ? this._currentUri : undefined;\n }\n\n private _getCurrentUri(): string {\n try {\n const w = window as any;\n const mode = this._routerOptions.mode || (w?.location?.protocol === 'file:' ? 'hash' : 'history');\n if (mode === 'hash' || mode === 'file') {\n const h = w?.location?.hash || '';\n return h && h.startsWith('#') ? h.slice(1) || '/' : '/';\n }\n return (w?.location?.pathname || '/') + (w?.location?.search || '') + (w?.location?.hash || '');\n } catch { return '/'; }\n }\n\n private static readonly HISTORY_STAMP_KEY = '__motifHistory';\n private _historyStamp: HistoryStamp | null = null;\n\n private _addressMode(): NonNullable<RouterOptions['mode']> {\n const w = window as any;\n return this._routerOptions.mode || (w?.location?.protocol === 'file:' ? 'hash' : 'history');\n }\n\n private _readHistoryStamp(): HistoryStamp | null {\n try {\n const state = (window as any)?.history?.state;\n const stamp = state && typeof state === 'object' ? state[UrlRoutingModule.HISTORY_STAMP_KEY] : null;\n if (stamp && typeof stamp === 'object' && typeof stamp.index === 'number' && Number.isFinite(stamp.index) && typeof stamp.session === 'string') {\n return { index: stamp.index, session: stamp.session };\n }\n } catch { }\n return null;\n }\n\n private static _isPlainObject(value: any): boolean {\n if (!value || typeof value !== 'object') return false;\n const proto = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n }\n\n private _withHistoryStamp(state: any, stamp: HistoryStamp): any {\n if (state == null) return { [UrlRoutingModule.HISTORY_STAMP_KEY]: stamp };\n if (UrlRoutingModule._isPlainObject(state)) {\n return { ...state, [UrlRoutingModule.HISTORY_STAMP_KEY]: stamp };\n }\n return state;\n }\n\n private _routerState(userState: any, stamp: HistoryStamp): any {\n return userState\n ? this._withHistoryStamp(userState, { ...stamp, hasState: true })\n : this._withHistoryStamp(null, stamp);\n }\n\n private _userStateOf(historyState: any): any {\n if (historyState == null) return undefined;\n if (!UrlRoutingModule._isPlainObject(historyState)) return historyState;\n const key = UrlRoutingModule.HISTORY_STAMP_KEY;\n if (!(key in historyState)) return historyState;\n const stamp = historyState[key];\n if (!stamp || stamp.hasState !== true) return undefined;\n const { [key]: _omit, ...rest } = historyState;\n return rest;\n }\n\n private _currentHistoryUserState(): any {\n if (this._addressMode() === 'shell') return undefined;\n try { return this._userStateOf((window as any)?.history?.state); } catch { return undefined; }\n }\n\n private _nextHistoryStamp(push: boolean): HistoryStamp {\n const base = this._historyStamp;\n if (!base) return { index: 0, session: newHistorySession() };\n return { index: push ? base.index + 1 : base.index, session: base.session };\n }\n\n private _stampCurrentEntry(stamp: HistoryStamp, userState?: any): void {\n try {\n const w = window as any;\n if (!w?.history || typeof w.history.replaceState !== 'function') return;\n const current = w.history.state;\n let next: any;\n if (userState) {\n next = this._routerState(userState, stamp);\n } else {\n const hasState = UrlRoutingModule._isPlainObject(current) && Object.keys(current).length > 0;\n next = this._withHistoryStamp(current, hasState ? { ...stamp, hasState: true } : stamp);\n }\n if (next !== current) w.history.replaceState(next, '');\n } catch { }\n }\n\n private _seedHistoryIndex(): void {\n if (this._addressMode() === 'shell') return;\n const existing = this._readHistoryStamp();\n if (existing) {\n this._historyStamp = existing;\n return;\n }\n const stamp: HistoryStamp = { index: 0, session: newHistorySession() };\n this._stampCurrentEntry(stamp);\n this._historyStamp = stamp;\n }\n\n private _pendingTraversal: TraversalInfo | null = null;\n\n private async _onHistoryTraversal(): Promise<void> {\n const shown = this._historyStamp;\n const arrived = this._readHistoryStamp();\n this._historyStamp = arrived;\n let direction: NavigationDirection = 'traverse';\n if (shown && arrived && shown.session === arrived.session && shown.index !== arrived.index) {\n direction = arrived.index < shown.index ? 'back' : 'forward';\n }\n this._pendingTraversal = { direction, state: this._currentHistoryUserState(), from: shown };\n let result: any;\n try {\n result = await this.navigate(this._getCurrentUri());\n } finally {\n this._pendingTraversal = null;\n }\n const cancelled = !!result && result.cancelled === true;\n try { this._stack?.traversalSettled(cancelled); } catch { }\n if (!cancelled) return;\n const now = this._readHistoryStamp();\n this._historyStamp = now;\n if (!shown || !now || now.session !== shown.session) return;\n const delta = shown.index - now.index;\n if (delta === 0) return;\n try { (window as any).history.go(delta); } catch { }\n }\n\n private _currentUri: string = '___startup___';\n private _previousRoute: any = null;\n\n public get currentUri(): string {\n return this._currentUri;\n }\n\n public async navigate(uri: string, options?: NavigationOptions): Promise<any> {\n const traversal = this._pendingTraversal;\n this._pendingTraversal = null;\n\n return await safeCallSilentAsync(async () => {\n\n try { (globalThis as any).__MOTIF_DEVTOOLS_BUS__?.publish?.('route:navigation-start', { uri }); } catch { }\n const suppressBeforeEachThisCall = this._suppressBeforeEachOnce;\n if (suppressBeforeEachThisCall) {\n this._suppressBeforeEachOnce = false;\n }\n const suppressMiddlewaresThisCall = this._suppressMiddlewaresOnce;\n if (suppressMiddlewaresThisCall) {\n this._suppressMiddlewaresOnce = false;\n }\n const navOptions: NavigationOptions = options || {};\n const force = navOptions.force || false;\n\n if (uri === this._currentUri && !force) {\n return { ok: true, skipped: true, uri };\n }\n\n let gate: { proceed: boolean; uri: string };\n if (suppressMiddlewaresThisCall) {\n gate = { proceed: true, uri };\n } else {\n gate = await this._runMiddlewares(uri);\n }\n\n if (!gate.proceed) {\n return {\n ok: false,\n uri: gate.uri,\n cancelled: true,\n reason: 'middleware'\n };\n }\n uri = gate.uri;\n\n let target = this.resolve(uri);\n\n let redirectedFrom: string | undefined;\n let redirectError: Error | undefined;\n let redirectChain = '';\n if (target.ok && target.route?.redirect) {\n const requested = uri;\n const visited: string[] = [requested];\n while (target.ok && target.route?.redirect) {\n const next = this._resolveRedirect(target, uri);\n if (!next) break;\n if (visited.length > UrlRoutingModule.MAX_REDIRECTS || visited.some(v => pathOf(v) === pathOf(next))) {\n redirectChain = [...visited, next].join(' → ');\n redirectError = motifError('MJX303', redirectChain);\n break;\n }\n visited.push(next);\n uri = next;\n target = this.resolve(uri);\n }\n if (redirectError) {\n reportWarning('MJX303', [redirectChain]);\n uri = requested;\n target = this._buildFallbackResult(uri, 'error', { path: uri, error: redirectError });\n } else if (uri !== requested) {\n redirectedFrom = requested;\n if (uri === this._currentUri && !force) {\n return { ok: true, skipped: true, uri };\n }\n }\n }\n\n const wasInitialNavigation = !this._previousRoute;\n const direction: NavigationDirection = wasInitialNavigation\n ? 'initial'\n : traversal ? traversal.direction : (navOptions.replace ? 'replace' : 'push');\n const entryState = traversal\n ? traversal.state\n : (wasInitialNavigation && navOptions.state === undefined ? this._currentHistoryUserState() : (navOptions.state || undefined));\n\n const toRoute = {\n path: target.uri || uri,\n params: target.params,\n meta: (target as any).meta ?? target.extend,\n options: options,\n redirectedFrom,\n direction,\n state: entryState\n };\n\n const fromRoute = this._previousRoute ? {\n path: this._previousRoute.path,\n params: this._previousRoute.params,\n meta: this._previousRoute.meta,\n options: this._previousRoute.options\n } : null;\n\n if (this._previousRoute && this._previousRoute.routeItem) {\n const currentRouteItem = this._previousRoute.routeItem as RouteItem;\n const leaveHook = currentRouteItem.onLeave || this._routerOptions.hooks?.onLeave;\n if (leaveHook) {\n try {\n const leaveContext = {\n from: {\n path: this._previousRoute.path,\n params: this._previousRoute.params,\n meta: this._previousRoute.meta\n },\n to: toRoute\n };\n const leaveResult = await leaveHook(leaveContext);\n if (leaveResult === false) {\n return { ok: false, cancelled: true, reason: 'onLeave' };\n }\n if (leaveResult && typeof leaveResult === 'object' && (leaveResult as any).cancel === true) {\n const customReason = (leaveResult as any).reason || 'onLeave';\n return { ok: false, cancelled: true, reason: customReason };\n }\n } catch (error) {\n reportError('MJX306', error, 'onLeave');\n }\n }\n }\n\n let guardResult: string | false | true = true;\n if (!suppressBeforeEachThisCall) {\n guardResult = await this.application._runBeforeEachGuards(toRoute, fromRoute);\n }\n\n if (guardResult === false) {\n return { ok: false, cancelled: true, reason: 'guard' };\n }\n\n if (typeof guardResult === 'string') {\n const addressShowsBlocked = this._addressShows(uri, redirectedFrom);\n return await this.navigate(guardResult, addressShowsBlocked ? { ...navOptions, replace: true } : options);\n }\n\n const snapshotOf = (result: ResolveResult): RouteSnapshot => ({\n target: result,\n chain: this.chainOf(result),\n direction,\n state: entryState,\n });\n\n if (!target.ok && !redirectError) {\n target = this._buildFallbackResult(uri, 'notFound', { path: uri });\n }\n this._currentUri = uri;\n this._previousRoute = {\n path: target.uri,\n params: target.params,\n meta: (target as any).meta ?? target.extend,\n routeItem: target.route\n };\n\n let appliedPath = target.uri;\n\n this._scroll?.leaving();\n\n const leavingStamp = traversal ? traversal.from : this._historyStamp;\n try {\n const replaceSource = !!redirectedFrom && this._addressShows(redirectedFrom);\n this._applyUrl(appliedPath, replaceSource ? { ...navOptions, replace: true } : navOptions);\n } catch { }\n const stackNav: StackNavigation | undefined = this._stack\n ? { direction, from: leavingStamp, to: this._historyStamp, uri: appliedPath }\n : undefined;\n\n try {\n await this.routingEngine.execute(target, stackNav, snapshotOf(target));\n } catch (error) {\n reportError('MJX304', error);\n target = this._buildFallbackResult(uri, 'error', { path: uri, error });\n try { await this.routingEngine.execute(target, stackNav, snapshotOf(target)); } catch (e2) { reportError('MJX305', e2); }\n }\n if (this._stack) this.application._routerState.touch();\n if (navOptions.scroll) { \n this._handleScrollBehavior(navOptions.scroll);\n } else {\n this._scroll?.arrived(this._uriWithHash(appliedPath, uri), direction);\n }\n this.application.fire?.('motifjs-router-navigated', {\n uri: appliedPath,\n params: target.params,\n meta: (target as any).meta ?? target.extend,\n route: target.ok ? target.route : null,\n ok: target.ok,\n initial: wasInitialNavigation,\n redirectedFrom,\n direction,\n state: entryState\n });\n try { (globalThis as any).__MOTIF_DEVTOOLS_BUS__?.publish?.('route:navigation-end', { uri: appliedPath, params: target.params }); } catch { }\n\n return target;\n\n }, 'UrlRoutingModule.navigate');\n\n }\n \n public describeStack(): StackEntryInfo[] | undefined {\n return this._stack ? this._stack.describe() : undefined;\n }\n\n public routeInfos(): RouteInfo[] {\n const out: RouteInfo[] = [];\n const visit = (node: RouteItem, chain: RouteItem[]) => {\n const nextChain = [...chain, node];\n out.push({\n fullPath: node.fullPath || node.path,\n name: node.name ?? null,\n meta: node.meta ?? node.extend ?? {},\n route: node,\n chain: nextChain,\n });\n for (const child of node.childs || []) visit(child, nextChain);\n };\n for (const node of this.routeCollection?.['routes'] || []) visit(node, []);\n return out;\n }\n\n public href(name: string, params?: Record<string, any>): string {\n const routeItem = this.routeCollection['routesMap']?.get(name);\n if (!routeItem) throw motifError('MJX302', name);\n const path = routeItem.fullPath || routeItem.path;\n return this.routingEngine.generatePathString(path, params || {}) || path;\n }\n\n public async evict(route?: RouteItem | string | null): Promise<void> {\n let item: RouteItem | null | undefined = null;\n if (typeof route === 'string') {\n item = this.routeCollection['routesMap']?.get(route);\n if (!item) throw motifError('MJX302', String(route));\n } else {\n item = route;\n }\n await this.routingEngine.evict(item);\n }\n\n private _fallbackRoutes: { notFound?: RouteItem; error?: RouteItem } = {};\n\n private _getFallbackRoute(kind: 'notFound' | 'error'): RouteItem {\n const existing = this._fallbackRoutes[kind];\n if (existing) return existing;\n const custom = this._routerOptions.fallbacks?.[kind];\n const control = custom ?? (kind === 'notFound' ? UrlRoutingModule._builtinNotFound : UrlRoutingModule._builtinError);\n const item: RouteItem = {\n path: '',\n fullPath: null,\n control,\n name: kind === 'notFound' ? 'not-found' : 'error',\n childs: [],\n extend: {},\n meta: {},\n validate: undefined,\n keepAlive: false,\n };\n this._fallbackRoutes[kind] = item;\n return item;\n }\n\n private _buildFallbackResult(uri: string, kind: 'notFound' | 'error', params: Record<string, any>): ResolveResult {\n const fallback = this._getFallbackRoute(kind);\n const prefix = this._findLayoutPrefix(uri);\n const chain = [...(prefix?.chain ?? []), fallback];\n const mergedExtend: Record<string, any> = {};\n const mergedMeta: Record<string, any> = {};\n for (const item of chain) {\n if (item?.extend && typeof item.extend === 'object') Object.assign(mergedExtend, item.extend);\n if (item?.meta && typeof item.meta === 'object') Object.assign(mergedMeta, item.meta);\n }\n return {\n ok: false,\n uri,\n fullPath: null,\n route: fallback,\n chain,\n params: { ...(prefix?.params ?? {}), ...params },\n extend: mergedExtend,\n meta: mergedMeta,\n };\n }\n\n private _findLayoutPrefix(uri: string): { chain: RouteItem[]; params: Record<string, any> } | null {\n const path = uri.split('?')[0].split('#')[0];\n const segs = path.split('/').filter(Boolean);\n let best: { rec: RouteRecord; params: Record<string, any>; depth: number } | null = null;\n for (const rec of this.routeCollection?.records || []) {\n if (!rec.leaf.childs || !rec.leaf.childs.length) continue;\n const depth = rec.fullPath.split('/').filter(Boolean).length;\n if (depth > segs.length) continue;\n const prefix = '/' + segs.slice(0, depth).join('/');\n let matched = false;\n try { matched = rec.scanner.exist(prefix, this._pageSearch()); } catch { matched = false; }\n if (!matched) continue;\n const params = { ...rec.scanner.parameters };\n if (!this.validateChain(prefix, rec, params)) continue;\n if (!best || rec.chain.length > best.rec.chain.length || (rec.chain.length === best.rec.chain.length && depth > best.depth)) {\n best = { rec, params, depth };\n }\n }\n return best ? { chain: best.rec.chain, params: best.params } : null;\n }\n\n private static _builtinNotFound = () => new Component('div', {\n initializeComponent(sender: Component) {\n sender.style({\n padding: '20px', fontFamily: 'Arial, sans-serif', display: 'flex', 'flex-direction': 'column', 'align-items': 'center'\n });\n (sender.element as HTMLElement).appendChild($('h2', {}, ...['404 - Not Found']));\n (sender.element as HTMLElement).appendChild($('p', {}, ...['The requested page was not found.']));\n },\n });\n\n private static _builtinError = () => new Component('div', {\n initializeComponent(sender: Component) {\n sender.style({\n padding: '20px', fontFamily: 'Arial, sans-serif', display: 'flex', 'flex-direction': 'column', 'align-items': 'center'\n });\n (sender.element as HTMLElement).appendChild($('h2', {}, ...['Error']));\n (sender.element as HTMLElement).appendChild($('p', {}, ...['The requested page could not be loaded.']));\n },\n });\n\n public async navigateByName(name: string, params?: Record<string, any>, options?: NavigationOptions): Promise<any> {\n\n return await this.navigate(this.href(name, params), options);\n }\n\n private async _runMiddlewares(initialUri: string): Promise<{ proceed: boolean, uri: string }> {\n let urix = initialUri;\n const ctx: RouteResolveContext = {\n uri: urix,\n rewritePath: (uri: string) => {\n urix = uri;\n (ctx as any).uri = uri;\n },\n context: this.application\n };\n let proceed = false;\n const stack = this._routerOptions.middlewareCollections ? this._routerOptions.middlewareCollections() || [] : [];\n const dispatch = async (i: number): Promise<void> => {\n if (i === stack.length) { proceed = true; return; }\n const fn = stack[i];\n await fn(ctx, async () => { await dispatch(i + 1); });\n };\n if (stack.length === 0) {\n proceed = true;\n } else {\n await dispatch(0);\n }\n return { proceed, uri: urix };\n }\n\n public chainOf(result: ResolveResult): string[] {\n return result.chain.map(r => this.routingEngine.generatePathString(r.path, result.params) || '');\n }\n\n public resolve(uri: string): ResolveResult {\n const candidates: Array<{ rec: RouteRecord; params: Record<string, any> }> = [];\n const pageSearch = this._pageSearch();\n for (const rec of this.routeCollection?.records! || []) {\n if (!rec.scanner.exist(uri, pageSearch)) continue;\n const params = { ...rec.scanner.parameters };\n if (!this.validateChain(uri, rec, params)) continue;\n candidates.push({ rec, params });\n }\n\n if (candidates.length === 0) {\n const catchAll = (this.routeCollection?.records || []).find(r => r.scanner.exist('/*'));\n if (catchAll) {\n const mergedExtend: Record<string, any> = {};\n try {\n for (const item of catchAll.chain) {\n if (item && item.extend && typeof item.extend === 'object') {\n Object.assign(mergedExtend, item.extend);\n }\n }\n } catch { /* ignore */ }\n\n return {\n ok: true,\n uri,\n fullPath: catchAll.fullPath,\n route: catchAll.leaf,\n chain: catchAll.chain,\n params: {},\n extend: mergedExtend || {},\n meta: (catchAll as any).meta || {}\n };\n }\n\n return {\n ok: false,\n uri,\n fullPath: null,\n route: null,\n chain: [],\n params: {},\n extend: {}\n };\n }\n\n let best = candidates[0];\n const groups = new Map<string, Array<{ rec: RouteRecord; params: Record<string, any> }>>();\n for (const c of candidates) {\n // Aynı path grubunda en uzun zincirli olanı seç.\n const key = c.rec.fullPath;\n const arr = groups.get(key) || [];\n arr.push(c); groups.set(key, arr);\n }\n let pickedFromDuplicate = false;\n for (const [key, arr] of groups) {\n if (arr.length > 1) {\n // Legacy sıralamaya dön: sığ zincir önce, sonra uzun fullPath. \n const pool = arr.some(c => !c.rec.aliasOf) ? arr.filter(c => !c.rec.aliasOf) : arr;\n const deepest = pool.reduce((a, b) => a.rec.chain.length >= b.rec.chain.length ? a : b);\n best = deepest;\n pickedFromDuplicate = true;\n break;\n }\n }\n if (!pickedFromDuplicate) {\n // En iyi adayı ResolveResult'a dönüştür.\n // Ortak tercih kuralı (RouteCollection.compareRouteRecords): sığ zincir, statik segment, az parametre, uzun path\n best = candidates.reduce((a, b) => compareRouteRecords(a.rec, b.rec) <= 0 ? a : b, candidates[0]);\n }\n\n const rec = best.rec;\n const params = best.params;\n const mergedExtend: Record<string, any> = {};\n try {\n for (const item of rec.chain) {\n if (item && item.extend && typeof item.extend === 'object') {\n Object.assign(mergedExtend, item.extend);\n }\n }\n } catch { /* ignore */ }\n return {\n ok: true,\n uri,\n fullPath: rec.fullPath,\n aliasOf: rec.aliasOf ?? null,\n route: rec.leaf,\n chain: rec.chain,\n params,\n extend: mergedExtend,\n meta: (() => {\n const mergedMeta: Record<string, any> = {};\n try {\n for (const item of rec.chain) {\n if (item && (item as any).meta && typeof (item as any).meta === 'object') {\n Object.assign(mergedMeta, (item as any).meta);\n }\n }\n } catch { /* ignore */ }\n return mergedMeta;\n })()\n };\n }\n\n // Doğrulama başarısızsa zincir geçersiz.\n private validateChain(uri: string, rec: RouteRecord, params: Record<string, any>): boolean {\n for (const item of rec.chain) {\n if (typeof item.validate === 'function') {\n const e: RouterValidateEventArgs = {\n uri,\n key: item.name ?? rec.fullPath,\n // createInstance: control alanından gerçek component instance'ını üretir.\n routes: this.routesMap,\n params\n };\n // Fonksiyon ise: doğrudan çağırmayı dener (factory gibi).\n if (!item.validate(e)) return false;\n }\n }\n return true;\n }\n\n private _navHandler: ((e: Event) => void) | null = null;\n private _installLinkInterceptor() {\n try {\n if (this._navHandler) return;\n this._navHandler = (ev: Event) => {\n const w = window as any;\n const mode = this._routerOptions.mode || (w?.location?.protocol === 'file:' ? 'hash' : 'history');\n let el = ev.target as HTMLElement | null;\n while (el && el !== document.body) {\n if (el instanceof HTMLAnchorElement) break;\n el = el.parentElement;\n }\n if (!el || !(el instanceof HTMLAnchorElement)) return;\n // opt-in via data-router-link veya rel=\"router\"\n const rel = el.getAttribute('rel') || '';\n const optIn = el.getAttribute(\"x-command\") == 'router' || el.hasAttribute('data-router-link') || rel.toLowerCase() === 'router';\n if (!optIn) return;\n // modifier keys veya target=\"_blank\" => ignore\n const a = el as HTMLAnchorElement;\n if (a.target && a.target !== '_self') return;\n if ((ev as MouseEvent).metaKey || (ev as MouseEvent).ctrlKey || (ev as MouseEvent).shiftKey || (ev as MouseEvent).altKey) return;\n let href = a.getAttribute('href') || '';\n if (!href) {\n href = a.getAttribute('x-to') || '';\n };\n if (!href) return;\n // same-origin kontorlü (history mode için)\n if (mode === 'history') {\n const u = new URL(href, w.location.href);\n if (u.origin !== w.location.origin) return;\n ev.preventDefault();\n const path = u.pathname + u.search + u.hash;\n this.navigate(path);\n return;\n }\n ev.preventDefault();\n const path = href.startsWith('#') ? href.slice(1) : href;\n this.navigate(path);\n };\n document.addEventListener('click', this._navHandler);\n } catch { }\n }\n\n private _applyUrl(uri: string, options: NavigationOptions = {}) {\n try {\n const w = window as any;\n const mode = this._routerOptions.mode || (w?.location?.protocol === 'file:' ? 'hash' : 'history');\n if (mode === 'shell') return; // shell mode'da URL değişikliğine izin verme\n\n if (mode === 'hash' || mode === 'file') {\n const target = uri.startsWith('#') ? uri : ('#' + uri);\n if (w?.location?.hash !== target) {\n if (options.replace && w?.history && typeof w.history.replaceState === 'function') {\n const stamp = this._nextHistoryStamp(false);\n w.history.replaceState(this._routerState(options.state, stamp), '', target);\n this._historyStamp = stamp;\n } else {\n w.location.hash = target;\n const stamp = this._nextHistoryStamp(true);\n this._stampCurrentEntry(stamp, options.state);\n this._historyStamp = stamp;\n }\n }\n return;\n }\n\n if (w?.history && typeof w.history.pushState === 'function') {\n const current = (w.location.pathname || '/') + (w.location.search || '') + (w.location.hash || '');\n let wanted = uri;\n try {\n const url = new URL(uri, w.location.href);\n wanted = url.pathname + url.search + url.hash;\n } catch { }\n if (current !== wanted) {\n if (options.replace) {\n const stamp = this._nextHistoryStamp(false);\n w.history.replaceState(this._routerState(options.state, stamp), '', uri);\n this._historyStamp = stamp;\n } else {\n const stamp = this._nextHistoryStamp(true);\n w.history.pushState(this._routerState(options.state, stamp), '', uri);\n this._historyStamp = stamp;\n }\n }\n }\n } catch { }\n }\n\n private _resolveRedirect(target: ResolveResult, uri: string): string | null {\n const redirect = target.route?.redirect;\n if (!redirect) return null;\n if (typeof redirect === 'function') {\n const result = redirect({\n path: target.uri,\n params: target.params,\n meta: (target as any).meta ?? target.extend\n });\n return typeof result === 'string' && result.length > 0 ? result : null;\n }\n const path = this.routingEngine.generatePathString(redirect, target.params || {});\n const hashIndex = uri.indexOf('#');\n const hash = hashIndex >= 0 ? uri.slice(hashIndex) : '';\n const beforeHash = hashIndex >= 0 ? uri.slice(0, hashIndex) : uri;\n const queryIndex = beforeHash.indexOf('?');\n const query = queryIndex >= 0 ? beforeHash.slice(queryIndex) : '';\n const ownHashIndex = path.indexOf('#');\n const ownHash = ownHashIndex >= 0 ? path.slice(ownHashIndex) : '';\n let result = ownHashIndex >= 0 ? path.slice(0, ownHashIndex) : path;\n if (query && !result.includes('?')) result += query;\n return result + (ownHash || hash);\n }\n\n private _pageSearch(): string | undefined {\n try {\n const w = window as any;\n const mode = this._routerOptions.mode || (w?.location?.protocol === 'file:' ? 'hash' : 'history');\n if (mode === 'history' || mode === 'shell') return undefined;\n return w?.location?.search || undefined;\n } catch { return undefined; }\n }\n\n private _addressShows(...uris: Array<string | undefined>): boolean {\n const current = this._getCurrentUri().split('#')[0];\n return uris.some(u => !!u && u.split('#')[0] === current);\n }\n\n private _uriWithHash(appliedPath: string, requestedUri: string): string {\n const index = requestedUri.indexOf('#');\n if (index < 0 || appliedPath.indexOf('#') >= 0) return appliedPath;\n return appliedPath + requestedUri.slice(index);\n }\n\n private _handleScrollBehavior(scrollOption?: NavigationOptions['scroll']) {\n if (!scrollOption) return;\n\n try {\n if (scrollOption === 'top') {\n window.scrollTo({ top: 0, behavior: 'auto' });\n } else if (scrollOption === 'smooth') {\n window.scrollTo({ top: 0, behavior: 'smooth' });\n } else if (scrollOption === 'instant') {\n window.scrollTo({ top: 0, behavior: 'instant' });\n } else if (typeof scrollOption === 'object') {\n window.scrollTo({\n top: scrollOption.top || 0,\n left: scrollOption.left || 0,\n behavior: scrollOption.behavior || 'auto'\n });\n }\n } catch { }\n }\n\n public dispose(): Promise<void> {\n try { this._scroll?.dispose(); } catch { }\n this._scroll = null;\n this._historyStamp = null;\n let done: Promise<void> = Promise.resolve();\n try {\n // keepAlive önbelleğindeki örnekleri bırak\n try { done = this.routingEngine.dispose(); } catch { }\n if (this._navHandler) {\n try { document.removeEventListener('click', this._navHandler); } catch { }\n this._navHandler = null;\n }\n if (this._windowNavListener) {\n const evt = this._routerOptions.mode === 'hash' || this._routerOptions.mode === 'file' ? 'hashchange' : 'popstate';\n try { window.removeEventListener(evt, this._windowNavListener); } catch { }\n this._windowNavListener = null;\n }\n } catch { }\n return done;\n }\n\n}","import { Signal } from \"../store/Signal\";\nimport { motifError } from \"../common/diagnostics\";\nimport type { UrlRoutingModule } from \"./UrlRoutingModule\";\nimport type { NavigationDirection, NavigationOptions, ResolveResult, Router } from \"./common\";\nimport type { RouteItem } from \"./RouteItem\";\n\nexport type RouteSnapshot = {\n target: ResolveResult;\n chain: string[];\n direction: NavigationDirection | undefined;\n state: any;\n};\n\nexport class RouterState {\n readonly version = new Signal(0);\n private _current: RouteSnapshot | null = null;\n private _constructing: RouteSnapshot | null = null;\n\n read(): RouteSnapshot | null {\n this.version.value;\n return this._constructing ?? this._current;\n }\n\n commit(snapshot: RouteSnapshot): void {\n this._current = snapshot;\n this.touch();\n }\n\n reset(): void {\n this._current = null;\n this.touch();\n }\n\n touch(): void {\n this.version.value = this.version.peek() + 1;\n }\n\n constructWith<T>(snapshot: RouteSnapshot | undefined, create: () => T): T {\n if (!snapshot) return create();\n const previous = this._constructing;\n this._constructing = snapshot;\n try {\n return create();\n } finally {\n this._constructing = previous;\n }\n }\n}\n\nexport function createRouter(state: RouterState, module: () => UrlRoutingModule | undefined): Router {\n const required = (): UrlRoutingModule => {\n const current = module();\n if (!current) throw motifError('MJX309');\n return current;\n };\n const target = () => state.read()?.target;\n return {\n get params() { return target()?.params ?? {}; },\n get route() { return target()?.route ?? null; },\n get ok() { return target()?.ok ?? false; },\n get uri() { return target()?.uri ?? ''; },\n get fullPath() { return target()?.fullPath ?? null; },\n get aliasOf() { return target()?.aliasOf ?? null; },\n get extend() { return target()?.extend ?? {}; },\n get meta() {\n const current = target();\n return current ? ((current as any).meta ?? current.extend) : {};\n },\n get chain() { return state.read()?.chain ?? []; },\n get direction() { return state.read()?.direction; },\n get state() { return state.read()?.state; },\n get stack() {\n state.version.value;\n return module()?.describeStack();\n },\n get routes() {\n state.version.value;\n return module()?.routeInfos() ?? [];\n },\n navigate: async (uri: string, options?: NavigationOptions) => {\n return await required().navigate(uri, options);\n },\n navigateByName: async (name: string, params?: Record<string, any>, options?: NavigationOptions) => {\n return await required().navigateByName(name, params, options);\n },\n evict: async (route?: RouteItem | string | null) => {\n await required().evict(route);\n },\n resolve: (uri: string) => {\n const current = required();\n const result = current.resolve(uri);\n return { chain: current.chainOf(result), result };\n },\n href: (name: string, params?: Record<string, any>) => required().href(name, params),\n };\n}\n","import { ServiceCollection } from \"./dependencyInjection/ServiceCollection\";\nimport { ServiceProvider } from \"./dependencyInjection/ServiceProvider\";\nimport { Component } from \"./component/Component\";\nimport { RouteItem } from \"./routing/RouteItem\";\nimport { ensureDevtoolsFlagInitialized, setRoutes, setDevtoolsEnabled, isEnabled as isDevtoolsEnabled } from \"./devtools/devbus\";\nimport { lintRoutes } from \"./devtools/routeLinter\";\nimport { initOverlayIfEnabled, initDevtoolsButton } from \"./devtools/overlay\";\nimport { RouterView } from \"./routing/RouterView\";\nimport { UrlRoutingModule } from \"./routing/UrlRoutingModule\";\nimport { RouterState, createRouter } from \"./routing/routerState\";\nimport { NavigationDirection, NavigationOptions, Router, RouteResolveContext, RouterNavigatedEventArgs, RouterEvents, RouterOptions, ScrollMemoryOptions, StackOptions } from \"./routing\";\nimport { errorHandler, safeCall, safeCallSilent, setErrorConsoleLogging } from \"./common/ErrorHandler\";\nimport { engine, configureReactivityLeakMonitor } from \"./store\";\nimport { MotifError, callReported, formatMotifMessage, motifError, reportError } from \"./common/diagnostics\";\nimport { flushCompilerContractWarnings } from \"./common/compilerContract\";\nimport { isTransitionMode, transitionSettings, TransitionMode } from \"./common/transitionRegistry\";\nimport { ComponentBase } from \"./component\";\nexport interface IStartup {\n configuration?: (services: any) => void;\n\n}\n\nlet _globalApplication: Application | null = null;\n\nexport type ApplicationState = 'initializing' | 'running' | 'disposing' | 'disposed';\nlet _globalBuilder: ApplicationBuilder | null = null;\nlet startedApplicationBuilder = false;\nconst _applicationStack = new Map<string | symbol, { builder: ApplicationBuilder, app: Application }>();\n\nexport class ApplicationBuilder {\n\n public services: ServiceCollection = new ServiceCollection();\n\n constructor() {\n if ((_globalApplication && _globalApplication.state !== 'disposing') || startedApplicationBuilder) {\n throw new MotifError('MJX405', formatMotifMessage('MJX405'), { cause: _globalApplication });\n }\n startedApplicationBuilder = true;\n }\n\n build() {\n // if (_globalApplication) {\n // throw new Error(\"ApplicationBuilder: Only one instance of ApplicationBuilder is allowed.\");\n this.services.autoRegisterInjectables();\n const provider = this.services.buildServiceProvider();\n this.services.addSingleton(ServiceProvider, provider);\n var app = new Application(provider);\n this.services.addSingleton(Application, app);\n _globalApplication = app;\n return app;\n }\n\n rebuild() {\n if (_globalApplication) {\n _globalApplication.provider.dispose();\n _globalApplication.provider = this.services.buildServiceProvider();\n return _globalApplication;\n }\n return this.build();\n }\n}\n\ninterface ApplicationEvents {\n 'router-changed': 'motifjs-router-navigated';\n}\nexport type AppLifecycleState = 'visible' | 'hidden' | 'frozen' | 'resumed' | 'restored' | 'online' | 'offline';\n\nexport type AppLifecycleEventArgs = {\n state: AppLifecycleState;\n visible: boolean;\n online: boolean;\n};\n\nexport type NavigationGuardContext = {\n to: { path: string; params: Record<string, any>; meta: Record<string, any>, options?: NavigationOptions, redirectedFrom?: string, direction?: NavigationDirection, state?: any };\n from: { path: string; params: Record<string, any>; meta: Record<string, any>, options?: NavigationOptions } | null;\n};\n\nexport type NavigationGuard = (\n context: NavigationGuardContext,\n next: (redirect?: string | false) => void\n) => void | Promise<void>;\n\nexport type ContainerGroups = {\n [key: string]: {\n registry: () => any;\n initialize: () => any\n };\n}\n\nexport class Application {\n public static get main(): Application {\n return _globalApplication!;\n }\n\n constructor(public provider: ServiceProvider) { }\n public static _disposingCount = 0;\n private _state: ApplicationState = 'initializing';\n private _disposing?: Promise<void>;\n public get state(): ApplicationState {\n return this._state;\n }\n private _middlewares: Array<(ctx: RouteResolveContext, next: () => Promise<void>) => any> = [];\n private _beforeEachGuards: NavigationGuard[] = [];\n public readonly _routerState = new RouterState();\n public readonly router: Router = createRouter(this._routerState, () => this.urlRoutingModule);\n private events: Map<any, Set<any>> = new Map();\n\n public static CreateBuilder(): ApplicationBuilder {\n return new ApplicationBuilder();\n }\n private appShell!: Component;\n public getAppShell(): Component {\n return this.appShell;\n }\n public run(host: HTMLElement | string | Node, appRoot?: any): void {\n safeCallSilent(() => {\n engine.startGc();\n }, 'Application.run.engine.startGc');\n let target: HTMLElement | null;\n if (typeof host === 'string') {\n target = document.querySelector(host) as HTMLElement | null;\n if (!target) throw motifError('MJX406', host);\n } else {\n target = host as HTMLElement;\n }\n let rootInstance: any = appRoot;\n\n\n this._state = 'running';\n const AppShell = new Component(target);\n this.appShell = AppShell;\n safeCallSilent(() => {\n (AppShell as any)._keepElementOnDispose = true;\n (AppShell as any).application = this;\n (AppShell as any).provider = this.provider;\n\n }, 'Application.run.setupAppShell');\n\n if (!rootInstance) {\n rootInstance = AppShell;\n rootInstance.controls.add(new RouterView({ name: 'default' }));\n } else {\n rootInstance.parent = AppShell;\n AppShell.controls.add(rootInstance);\n }\n AppShell.build();\n this._routerRoot = rootInstance;\n if (this.urlRoutingModule) {\n this.urlRoutingModule.start(rootInstance);\n this._startedRouter = this.urlRoutingModule;\n } else {\n } \n try {\n } catch { }\n }\n\n public insert(component: Component): void {\n this.appShell.controls.add(component);\n }\n public remove(component: Component): void {\n this.appShell.controls.remove(component);\n }\n\n public attach(component: Component): void {\n this.appShell.controls.add(component);\n }\n\n public detach(component: Component): void {\n this.appShell.controls.detach(component);\n }\n\n public appendToMainHost(component: Node): void {\n this.appShell.element?.appendChild(component);\n }\n\n public dispose(): Promise<void> {\n if (this._disposing) return this._disposing;\n this._state = 'disposing';\n Application._disposingCount++;\n startedApplicationBuilder = false;\n let routerDone: Promise<void> | undefined;\n safeCallSilent(() => { this._removeLifecycleListeners(); }, 'Application.dispose.lifecycle');\n safeCallSilent(() => { routerDone = (this as any).urlRoutingModule?.dispose?.(); }, 'Application.dispose.router');\n safeCallSilent(() => { engine.stopGc(); }, 'Application.dispose.gcStop');\n safeCallSilent(() => {\n try {\n const w = window as any;\n if (w && w.history && typeof w.history.replaceState === 'function') {\n // Normalize to root path; for hash mode also clear the hash\n w.history.replaceState({}, '', '/');\n }\n } catch { /* ignore */ }\n }, 'Application.dispose.resetUrl');\n transitionSettings.mode = 'concurrent';\n const shell = this.appShell;\n return this._disposing = (async () => {\n try { await routerDone; } catch (error) { reportError('MJX307', error); }\n if (shell && !shell.isDisposed) {\n try { await shell.dispose(); } catch (error) { reportError('MJX307', error); }\n }\n try { await this.provider.dispose(); } catch { }\n if (_globalApplication === this) _globalApplication = null;\n this._state = 'disposed';\n Application._disposingCount--;\n })();\n }\n\n public useTransitions(options: { mode?: TransitionMode }): Application {\n if (isTransitionMode(options?.mode)) transitionSettings.mode = options.mode;\n return this;\n }\n\n public use(callback: (ctx: RouteResolveContext, next: () => Promise<void>) => any): Application {\n this._middlewares.push(callback);\n return this;\n }\n\n public useGuard(guard: NavigationGuard): Application {\n this._beforeEachGuards.push(guard);\n return this;\n }\n\n public async _runBeforeEachGuards(to: any, from: any): Promise<string | false | true> {\n const context: NavigationGuardContext = { to, from };\n\n for (const guard of this._beforeEachGuards) {\n let redirectPath: string | false | undefined;\n let guardResolved = false;\n\n const next = (redirect?: string | false) => {\n guardResolved = true;\n redirectPath = redirect;\n };\n\n try {\n await guard(context, next);\n } catch (error) {\n reportError('MJX306', error, 'guard');\n return false;\n }\n\n if (!guardResolved) {\n return false;\n }\n\n if (redirectPath === false) {\n return false;\n }\n\n if (typeof redirectPath === 'string') {\n return redirectPath;\n }\n }\n\n return true; \n }\n\n private urlRoutingModule!: UrlRoutingModule;\n private _routerConfig: RouterOptions | null = null;\n private _routerRoot: Component | null = null;\n private _startedRouter: UrlRoutingModule | null = null;\n public useRouter(options: RouteItem[] | {\n routes: RouteItem[],\n mode?: 'history' | 'hash' | 'file' | 'shell',\n fallbacks?: { notFound?: any, error?: any },\n hooks?: RouterEvents,\n scrollMemory?: boolean | ScrollMemoryOptions,\n stack?: boolean | StackOptions\n }): Application {\n let routes: RouteItem[];\n let mode: 'history' | 'hash' | 'file' | 'shell' | undefined;\n let fallbacks: { notFound?: any, error?: any } | undefined;\n let hooks: RouterEvents | undefined;\n let scrollMemory: boolean | ScrollMemoryOptions | undefined;\n let stack: boolean | StackOptions | undefined;\n if (Array.isArray(options)) {\n routes = options;\n } else {\n routes = options.routes;\n mode = options.mode;\n fallbacks = options.fallbacks;\n hooks = options.hooks;\n scrollMemory = options.scrollMemory;\n stack = options.stack;\n }\n\n if (this.urlRoutingModule) {\n this.urlRoutingModule.dispose();\n }\n\n this._routerConfig = {\n mode,\n fallbacks,\n middlewareCollections: () => this._middlewares,\n RouteItems: routes,\n hooks,\n scrollMemory,\n stack,\n };\n this.urlRoutingModule = new UrlRoutingModule(this._routerConfig, this);\n\n this._routerState.reset();\n\n\n\n safeCallSilent(() => {\n ensureDevtoolsFlagInitialized();\n initOverlayIfEnabled();\n setRoutes(routes as any);\n if (this._isDevelopment || (globalThis as any).__MOTIF_DEV__ === true || isDevtoolsEnabled()) {\n lintRoutes(routes as any);\n }\n }, 'Application.useRouter.devtools');\n\n return this;\n }\n\n public restartRouter() {\n const root = this._routerRoot;\n if (!root || !this._routerConfig) return this;\n const previous = this._startedRouter;\n const shownUri = previous?.shownUri;\n let fresh = this.urlRoutingModule;\n if (!fresh || fresh === previous) {\n previous?.dispose();\n fresh = new UrlRoutingModule(this._routerConfig, this);\n this.urlRoutingModule = fresh;\n }\n this._routerState.reset();\n this._startedRouter = fresh;\n fresh.start(root, shownUri);\n return this;\n }\n\n public async navigate(uri: string, options?: NavigationOptions) {\n if (this.urlRoutingModule) {\n return await this.urlRoutingModule.navigate(uri, options);\n } else {\n throw motifError('MJX309');\n }\n }\n\n public async navigateByName(name: string, params?: Record<string, any>, options?: NavigationOptions) {\n if (this.urlRoutingModule) {\n return await this.urlRoutingModule.navigateByName(name, params, options);\n } else {\n throw motifError('MJX309');\n }\n }\n\n public on<T>(event: ApplicationEvents[keyof ApplicationEvents & string] | any, handler: (args?: T) => void): any {\n var e = this.events.get(event);\n if (!e) {\n this.events.set(event, new Set());\n e = this.events.get(event);\n }\n if (e) {\n e.add(handler);\n }\n return () => this.off(event, handler);\n }\n public off<T>(event: any, handler: (args?: T) => void): void {\n var e = this.events.get(event);\n if (e) {\n e.delete(handler);\n }\n }\n\n public fire<T>(event: any, args?: T): void {\n var e = this.events.get(event);\n if (e) {\n e.forEach(handler => {\n callReported(() => handler(args), 'MJX123', String(event));\n });\n }\n }\n\n public onRouterChanged(handler: (args?: RouterNavigatedEventArgs) => unknown): any {\n return this.on<RouterNavigatedEventArgs>('motifjs-router-navigated', handler);\n }\n\n public get isVisible(): boolean {\n try { return typeof document === 'undefined' || document.visibilityState !== 'hidden'; } catch { return true; }\n }\n\n public get isOnline(): boolean {\n try { return typeof navigator === 'undefined' || navigator.onLine !== false; } catch { return true; }\n }\n\n private _lifecycleOff: Array<() => void> | null = null;\n\n public onLifecycle(handler: (args?: AppLifecycleEventArgs) => unknown): () => void {\n this._installLifecycleListeners();\n return this.on<AppLifecycleEventArgs>('motifjs-app-lifecycle', handler);\n }\n\n private _emitLifecycle(state: AppLifecycleState): void {\n this.fire<AppLifecycleEventArgs>('motifjs-app-lifecycle', { state, visible: this.isVisible, online: this.isOnline });\n }\n\n private _installLifecycleListeners(): void {\n if (this._lifecycleOff) return;\n const offs: Array<() => void> = [];\n const listen = (target: EventTarget | undefined, type: string, fn: (e: any) => void) => {\n if (!target) return;\n try {\n target.addEventListener(type, fn);\n offs.push(() => { try { target.removeEventListener(type, fn); } catch { } });\n } catch { }\n };\n const doc = typeof document !== 'undefined' ? document : undefined;\n const win = typeof window !== 'undefined' ? window : undefined;\n listen(doc, 'visibilitychange', () => this._emitLifecycle(this.isVisible ? 'visible' : 'hidden'));\n listen(doc, 'freeze', () => this._emitLifecycle('frozen'));\n listen(doc, 'resume', () => this._emitLifecycle('resumed'));\n listen(win, 'pageshow', (e: PageTransitionEvent) => { if (e && e.persisted) this._emitLifecycle('restored'); });\n listen(win, 'online', () => this._emitLifecycle('online'));\n listen(win, 'offline', () => this._emitLifecycle('offline'));\n this._lifecycleOff = offs;\n }\n\n private _removeLifecycleListeners(): void {\n const offs = this._lifecycleOff;\n this._lifecycleOff = null;\n if (offs) for (const off of offs) off();\n }\n\n\n private _isDevelopment: boolean = false;\n private _enableErrorLogging: boolean = true;\n public get isDevelopmentModeEnabled(): boolean {\n return this._isDevelopment;\n }\n\n /** Enable reactive leak monitoring (dev önerilir) */\n public useReactiveMonitor(opts: { enabled?: boolean; threshold?: number; name?: string } = {}): this {\n safeCallSilent(() => { configureReactivityLeakMonitor(opts); }, 'Application.useReactiveMonitor.core');\n return this;\n }\n\n public useDevelopment(isDev: boolean = true): this {\n this._isDevelopment = isDev;\n errorHandler.setDevelopmentMode(isDev);\n safeCallSilent(() => { (globalThis as any).__MOTIF_DEV__ = isDev; }, 'Application.useDevelopment.flag');\n safeCallSilent(() => { setDevtoolsEnabled(isDev); }, 'Application.useDevelopment.devtools');\n if (isDev) flushCompilerContractWarnings();\n return this;\n }\n\n public useLogging(enabled: boolean = true): this {\n this._enableErrorLogging = enabled;\n setErrorConsoleLogging(enabled);\n return this;\n }\n\n\n\n\n}\n\n\nexport class ApplicationService {\n public static get current(): Application {\n return Application.main;\n }\n public static initialized: boolean = false;\n public static addToMain(...components: ComponentBase[]) {\n this.current && this.current.getAppShell().controls.add(...components);\n }\n}\n\nexport function useNavigation(): Router {\n return Application.main.router;\n}\n\nexport function useApplication() {\n return {\n application: Application.main,\n services: Application.main.provider,\n router: Application.main.router,\n attach(...components: ComponentBase[]) {\n Application.main && Application.main.getAppShell().controls.add(...components);\n }\n }\n}","import { Application, ServiceLifetime } from \"..\";\nimport { autoRegistry } from \"./autoRegistry\";\nimport { reportWarning } from \"../common/diagnostics\";\n\n\n\nexport function Injectable(options?: {\n lifetime?: ServiceLifetime,\n deps?: any[]\n}): (target: any, context?: ClassDecoratorContext) => void {\n\n return (target: any) => {\n autoRegistry.set(target, {\n lifetime: options?.lifetime ?? \"transient\",\n deps: options?.deps\n });\n };\n}\n\n\n\nexport function FromService<T>(token: (abstract new (...args: any) => T) | { prototype: T }): T;\nexport function FromService<T = any>(token: string | symbol | object): T;\nexport function FromService(token: any): any {\n try {\n return Application.main.provider.get(token);\n } catch (error) {\n reportWarning('MJX414', [describeServiceToken(token), String((error as any)?.message ?? error)], { token, error });\n return null as any;\n }\n}\n\nfunction describeServiceToken(token: any): string {\n if (typeof token === 'function') return token.name || '[AnonymousClass]';\n return String(token);\n}\n","import { MotifError, formatMotifMessage, motifError } from \"./diagnostics\";\r\n\r\ntype AsyncOrSync<T> = Promise<T> | T;\r\n\r\nexport interface ResilienceContext {\r\n [key: string]: any;\r\n}\r\n\r\ntype Context = ResilienceContext;\r\n\r\nexport type ResilienceAction<T> = (ctx?: ResilienceContext) => AsyncOrSync<T>;\r\n\r\ntype Action<T> = ResilienceAction<T>;\r\n\r\ntype ShouldHandlePredicate = (err: any) => boolean;\r\n\r\nexport interface ResiliencePolicy {\r\n execute<T>(action: ResilienceAction<T>, ctx?: ResilienceContext): Promise<T>;\r\n}\r\n\r\nfunction isTimeoutError(err: any) {\r\n return err && err.name === 'TimeoutError';\r\n}\r\n\r\nclass TimeoutError extends MotifError {\r\n constructor() {\r\n super('MJX605', formatMotifMessage('MJX605'));\r\n this.name = 'TimeoutError';\r\n }\r\n}\r\n\r\nfunction delay(ms: number) {\r\n return new Promise<void>(res => setTimeout(res, ms));\r\n}\r\n\r\nfunction addJitter(base: number, jitterFactor = 0.1) {\r\n const jitter = (Math.random() * 2 - 1) * jitterFactor * base;\r\n return Math.max(0, Math.floor(base + jitter));\r\n}\r\n\r\n\r\nabstract class Policy implements ResiliencePolicy {\r\n abstract execute<T>(action: Action<T>, ctx?: Context): Promise<T>;\r\n}\r\n\r\n\r\nexport interface RetryOptions {\r\n retries?: number;\r\n backoff?: 'fixed' | 'exponential' | 'none';\r\n delay?: number;\r\n jitter?: number;\r\n shouldHandle?: ShouldHandlePredicate;\r\n onRetry?: (attempt: number, err: any, delayMs: number, ctx?: Context) => void | Promise<void>;\r\n}\r\n\r\nclass RetryPolicy extends Policy {\r\n private retries: number;\r\n private backoff: 'fixed' | 'exponential' | 'none';\r\n private delayMs: number;\r\n private jitter: number;\r\n private shouldHandle: ShouldHandlePredicate;\r\n private onRetry?: (attempt: number, err: any, delayMs: number, ctx?: Context) => void | Promise<void>;\r\n\r\n constructor(options: RetryOptions = {}) {\r\n super();\r\n this.retries = options.retries ?? 3;\r\n this.backoff = options.backoff ?? 'exponential';\r\n this.delayMs = options.delay ?? 100;\r\n this.jitter = Math.min(Math.max(options.jitter ?? 0.1, 0), 1);\r\n this.shouldHandle = options.shouldHandle ?? ((err) => !!err && !isTimeoutError(err));\r\n this.onRetry = options.onRetry;\r\n }\r\n\r\n private calcDelay(attempt: number) {\r\n if (this.backoff === 'none') return 0;\r\n if (this.backoff === 'fixed') return addJitter(this.delayMs, this.jitter);\r\n const base = this.delayMs * Math.pow(2, attempt - 1);\r\n return addJitter(base, this.jitter);\r\n }\r\n\r\n async execute<T>(action: Action<T>, ctx?: Context): Promise<T> {\r\n let lastErr: any;\r\n\r\n for (let attempt = 1; attempt <= this.retries + 1; attempt++) {\r\n try {\r\n return await Promise.resolve(action(ctx));\r\n } catch (err) {\r\n lastErr = err;\r\n if (!this.shouldHandle(err) || attempt > this.retries) break;\r\n const wait = this.calcDelay(attempt);\r\n if (this.onRetry) await this.onRetry(attempt, err, wait, ctx);\r\n if (wait > 0) await delay(wait);\r\n }\r\n }\r\n\r\n throw lastErr;\r\n }\r\n}\r\n\r\n\r\nexport interface TimeoutOptions {\r\n timeoutMs: number;\r\n}\r\n\r\nclass TimeoutPolicy extends Policy {\r\n private timeoutMs: number;\r\n\r\n constructor(opts: TimeoutOptions) {\r\n super();\r\n this.timeoutMs = opts.timeoutMs;\r\n }\r\n\r\n async execute<T>(action: Action<T>, ctx?: Context): Promise<T> {\r\n let timer: any;\r\n const p = Promise.resolve(action(ctx));\r\n const t = new Promise<never>((_, rej) => {\r\n timer = setTimeout(() => rej(new TimeoutError()), this.timeoutMs);\r\n });\r\n\r\n try {\r\n return await Promise.race([p, t]);\r\n } finally {\r\n clearTimeout(timer);\r\n }\r\n }\r\n}\r\n\r\n\r\nexport type CircuitState = 'CLOSED' | 'OPEN' | 'HALF_OPEN';\r\n\r\nexport interface CircuitBreakerOptions {\r\n failureThreshold?: number;\r\n successThreshold?: number;\r\n durationOfBreakMs?: number;\r\n shouldHandle?: ShouldHandlePredicate;\r\n onStateChange?: (oldState: CircuitState, newState: CircuitState) => void | Promise<void>;\r\n}\r\n\r\nclass CircuitBreakerPolicy extends Policy {\r\n private failureThreshold: number;\r\n private successThreshold: number;\r\n private durationOfBreakMs: number;\r\n private shouldHandle: ShouldHandlePredicate;\r\n private onStateChange?: (oldState: CircuitState, newState: CircuitState) => void | Promise<void>;\r\n\r\n private state: CircuitState = 'CLOSED';\r\n private failureCount = 0;\r\n private successCount = 0;\r\n private nextAttemptTime = 0; \r\n\r\n constructor(opts: CircuitBreakerOptions = {}) {\r\n super();\r\n this.failureThreshold = opts.failureThreshold ?? 5;\r\n this.successThreshold = opts.successThreshold ?? 2;\r\n this.durationOfBreakMs = opts.durationOfBreakMs ?? 60000; \r\n this.shouldHandle = opts.shouldHandle ?? ((err) => !!err && !isTimeoutError(err));\r\n this.onStateChange = opts.onStateChange;\r\n }\r\n\r\n private async changeState(newState: CircuitState) {\r\n const old = this.state;\r\n this.state = newState;\r\n this.failureCount = 0;\r\n this.successCount = 0;\r\n if (newState === 'OPEN') this.nextAttemptTime = Date.now() + this.durationOfBreakMs;\r\n if (this.onStateChange) await this.onStateChange(old, newState);\r\n }\r\n\r\n async execute<T>(action: Action<T>, ctx?: Context): Promise<T> {\r\n if (this.state === 'OPEN') {\r\n if (Date.now() >= this.nextAttemptTime) {\r\n await this.changeState('HALF_OPEN');\r\n } else {\r\n throw motifError('MJX602');\r\n }\r\n }\r\n\r\n try {\r\n const result = await Promise.resolve(action(ctx));\r\n if (this.state === 'HALF_OPEN') {\r\n this.successCount++;\r\n if (this.successCount >= this.successThreshold) await this.changeState('CLOSED');\r\n } else if (this.state === 'CLOSED') {\r\n this.failureCount = 0;\r\n }\r\n return result;\r\n } catch (err) {\r\n if (this.shouldHandle(err)) {\r\n this.failureCount++;\r\n if (this.state === 'HALF_OPEN' || (this.state === 'CLOSED' && this.failureCount >= this.failureThreshold)) {\r\n await this.changeState('OPEN');\r\n }\r\n }\r\n throw err;\r\n }\r\n }\r\n\r\n getState() {\r\n return this.state;\r\n }\r\n}\r\n\r\n\r\nexport interface BulkheadOptions {\r\n maxConcurrent?: number;\r\n maxQueue?: number;\r\n}\r\n\r\nclass BulkheadPolicy extends Policy {\r\n private maxConcurrent: number;\r\n private maxQueue: number;\r\n private active = 0;\r\n private queue: Array<() => void> = [];\r\n\r\n constructor(opts: BulkheadOptions = {}) {\r\n super();\r\n this.maxConcurrent = opts.maxConcurrent ?? 10;\r\n this.maxQueue = opts.maxQueue ?? 50;\r\n }\r\n\r\n private dequeue() {\r\n if (this.queue.length === 0) return;\r\n if (this.active >= this.maxConcurrent) return;\r\n const resolver = this.queue.shift()!;\r\n resolver();\r\n }\r\n\r\n async execute<T>(action: Action<T>, ctx?: Context): Promise<T> {\r\n if (this.active >= this.maxConcurrent) {\r\n if (this.queue.length >= this.maxQueue) {\r\n throw motifError('MJX603');\r\n }\r\n await new Promise<void>((res) => {\r\n this.queue.push(res);\r\n });\r\n }\r\n\r\n this.active++;\r\n try {\r\n const result = await Promise.resolve(action(ctx));\r\n return result;\r\n } finally {\r\n this.active--;\r\n this.dequeue();\r\n }\r\n }\r\n}\r\n\r\n\r\nexport interface RateLimiterOptions {\r\n tokensPerInterval?: number;\r\n intervalMs?: number;\r\n capacity?: number;\r\n}\r\n\r\nclass RateLimiterPolicy extends Policy {\r\n private tokensPerInterval: number;\r\n private intervalMs: number;\r\n private capacity: number;\r\n private tokens: number;\r\n private lastRefill: number;\r\n\r\n constructor(opts: RateLimiterOptions = {}) {\r\n super();\r\n this.tokensPerInterval = opts.tokensPerInterval ?? 1;\r\n this.intervalMs = opts.intervalMs ?? 1000;\r\n this.capacity = opts.capacity ?? this.tokensPerInterval;\r\n this.tokens = this.capacity;\r\n this.lastRefill = Date.now();\r\n }\r\n\r\n private refill() {\r\n const now = Date.now();\r\n const elapsed = now - this.lastRefill;\r\n if (elapsed <= 0) return;\r\n const tokensToAdd = Math.floor(elapsed / this.intervalMs) * this.tokensPerInterval;\r\n if (tokensToAdd > 0) {\r\n this.tokens = Math.min(this.capacity, this.tokens + tokensToAdd);\r\n this.lastRefill = now;\r\n }\r\n }\r\n\r\n async execute<T>(action: Action<T>, ctx?: Context): Promise<T> {\r\n this.refill();\r\n if (this.tokens <= 0) {\r\n throw motifError('MJX604');\r\n }\r\n this.tokens -= 1;\r\n return Promise.resolve(action(ctx));\r\n }\r\n}\r\n\r\n\r\nexport interface FallbackOptions<T> {\r\n fallback: (err: any, ctx?: Context) => AsyncOrSync<T>;\r\n shouldHandle?: ShouldHandlePredicate;\r\n}\r\n\r\nclass FallbackPolicy<T> extends Policy {\r\n private fallback: (err: any, ctx?: Context) => AsyncOrSync<T>;\r\n private shouldHandle: ShouldHandlePredicate;\r\n\r\n constructor(opts: FallbackOptions<T>) {\r\n super();\r\n this.fallback = opts.fallback;\r\n this.shouldHandle = opts.shouldHandle ?? (() => true);\r\n }\r\n\r\n async execute<T>(action: Action<T>, ctx?: Context): Promise<T> {\r\n\r\n try {\r\n return await Promise.resolve(action(ctx)) as T;\r\n } catch (err) {\r\n if (!this.shouldHandle(err)) throw err;\r\n return await Promise.resolve(this.fallback(err, ctx)) as unknown as T;\r\n }\r\n\r\n }\r\n}\r\n\r\nclass PolicyWrap extends Policy {\r\n private policies: Policy[];\r\n\r\n constructor(...policies: Policy[]) {\r\n super();\r\n this.policies = policies;\r\n }\r\n\r\n async execute<T>(action: Action<T>, ctx?: Context): Promise<T> {\r\n const wrapped = this.policies.reduceRight((next: Action<T>, p: Policy) => {\r\n return (c?: Context) => p.execute(() => next(c), c);\r\n }, action);\r\n\r\n return wrapped(ctx);\r\n }\r\n}\r\n\r\n\r\nconst resilience = {\r\n retry: (opts?: RetryOptions) => new RetryPolicy(opts),\r\n timeout: (opts: TimeoutOptions) => new TimeoutPolicy(opts),\r\n circuitBreaker: (opts?: CircuitBreakerOptions) => new CircuitBreakerPolicy(opts),\r\n bulkhead: (opts?: BulkheadOptions) => new BulkheadPolicy(opts),\r\n rateLimiter: (opts?: RateLimiterOptions) => new RateLimiterPolicy(opts),\r\n fallback: <T>(opts: FallbackOptions<T>) => new FallbackPolicy<T>(opts),\r\n wrap: (...policies: Policy[]) => new PolicyWrap(...policies),\r\n};\r\n\r\n\r\nexport function decorate<T>(policy: ResiliencePolicy, fn: ResilienceAction<T>) {\r\n return (ctx?: ResilienceContext) => policy.execute(fn, ctx);\r\n}\r\n\r\nexport class Resilience implements ResiliencePolicy {\r\n static get create(): Resilience {\r\n return new Resilience();\r\n }\r\n private resiliences: Policy[] = [];\r\n retry = (opts?: RetryOptions): Resilience => {\r\n this.resiliences.push(resilience.retry(opts));\r\n return this;\r\n }\r\n timeout = (opts: TimeoutOptions): Resilience => {\r\n this.resiliences.push(resilience.timeout(opts));\r\n return this;\r\n }\r\n\r\n circuitBreaker = (opts?: CircuitBreakerOptions): Resilience => {\r\n this.resiliences.push(resilience.circuitBreaker(opts));\r\n return this;\r\n }\r\n\r\n bulkhead = (opts?: BulkheadOptions): Resilience => {\r\n this.resiliences.push(resilience.bulkhead(opts));\r\n return this;\r\n }\r\n\r\n rateLimiter = (opts?: RateLimiterOptions): Resilience => {\r\n this.resiliences.push(resilience.rateLimiter(opts));\r\n return this;\r\n }\r\n fallback = <T>(opts: FallbackOptions<T>): Resilience => {\r\n this.resiliences.push(resilience.fallback<T>(opts));\r\n return this;\r\n }\r\n\r\n async execute<T>(action: Action<T>, ctx?: Context): Promise<T> {\r\n return resilience.wrap(...this.resiliences).execute(action, ctx);\r\n }\r\n}\r"],"names":["rethrowLater","error","setTimeout","ErrorHandler","constructor","this","unexpectedErrorHandler","listeners","_isDevelopment","_enableConsoleLogging","setDevelopmentMode","isDev","setConsoleLogging","enabled","isDevelopment","globalThis","__MOTIF_DEV__","reportSuppressed","context","logIfDev","report","undefined","cause","console","message","bus","__MOTIF_DEVTOOLS_BUS__","publish","code","name","serializeError","emit","Error","stack","JSON","parse","stringify","String","addListener","listener","push","index","indexOf","splice","slice","setUnexpectedErrorHandler","handler","getUnexpectedErrorHandler","onUnexpectedError","safeCall","fn","fallback","safeCallAsync","safeCallSilent","safeCallSilentAsync","wrapSafe","args","wrapSafeAsync","async","errorHandler","state","Set","warnings","routes","isDevLike","isRequestedByFlag","window","__motif_DEVTOOLS","__MOTIF_DEVTOOLS__","__MOTIF_DEVTOOLS_FLAG","exposeBus","visible","__motifDevBus","on","warn","getWarnings","isEnabled","setRoutes","getRoutes","ensureDevtoolsFlagInitialized","add","delete","type","payload","ev","l","details","w","motifMessages","MJX101","tag","MJX102","description","MJX103","MJX104","MJX105","MJX106","MJX107","MJX108","MJX109","MJX110","ms","MJX111","MJX112","depth","MJX113","MJX114","MJX115","MJX116","MJX117","MJX118","MJX119","MJX120","MJX121","compiled","runtime","MJX122","hook","MJX123","event","MJX124","key","MJX125","MJX126","MJX127","got","MJX128","cls","member","how","MJX201","MJX202","MJX203","max","MJX204","MJX205","MJX206","MJX207","MJX208","MJX301","outlet","MJX302","MJX303","chain","MJX304","MJX305","MJX306","MJX307","MJX308","MJX309","MJX310","parentPath","MJX311","path","MJX312","full","MJX313","MJX314","alias","MJX315","MJX316","MJX401","token","MJX402","MJX403","MJX404","MJX405","MJX406","selector","MJX407","MJX408","reason","MJX409","MJX410","sources","MJX411","MJX413","MJX414","MJX501","MJX502","MJX503","MJX504","MJX505","MJX507","limit","count","MJX601","MJX602","MJX603","MJX604","MJX605","MJX607","MJX608","MJX609","MJX610","MJX611","MotifError","options","super","formatMotifMessage","motifError","reportError","callReported","result","then","reportWarning","devWarn","disposableCore","disposableTracker","notifyCreated","target","trackDisposable","notifyDisposed","markAsDisposed","notifyOwner","owner","setParent","toDisposable","pending","handle","dispose","DisposableStore","_closed","isDisposed","item","_items","detach","clear","items","size","failures","length","AggregateError","closedStore","Disposable","_disposables","store","_store","owned","disposable","_register","Flags","IS_REACTIVE","Symbol","for","IS_READONLY","IS_SUPERFICIAL","RAW","GET_SETUP","ITERATE_KEY","followTracking","arrayScope","getRaw","value","current","hasOwn","Object","prototype","hasOwnProperty","call","isObject","intrinsicSymbols","values","getOwnPropertyDescriptors","map","descriptor","filter","isIntrinsicSymbol","has","proxyableTags","Map","canonicalIndex","savedTracking","trackingDepth","enterTracking","pauseTracking","resetTracking","arrayStack","ListBinding","component","itemsFn","renderFn","propertyName","_isActive","_rendered","_identityMap","WeakMap","container","motifFragment","olditems","controls","activate","_setupBinding","deactivate","_effectCleanup","_disposeAll","reActivate","forEach","c","_toArray","src","Array","isArray","iterator","from","_getComponentKey","comp","p","props","indexkey","k","motif","__key","isPreCreated","element","parent","_render","idx","untracked","rendered","processRendered","resolveComponent","ComponentBase","_base","itemRef","__fromList","__listAdopted","_indexSensitive","_isPrimitive","v","update","source","rawSource","i","prevItems","prevComponents","currentRaws","old","raw","list","get","newComponents","usedComponents","seenKeys","claimed","positionalReuse","isReusable","shared","Math","min","it","is","set","valuePool","prev","queue","occurrences","occurrence","existing","reused","shift","userKey","_syncContainer","effect","appendOnly","oldIndex","oi","stable","predecessors","fill","tails","lo","hi","mid","u","reverse","longestIncreasingIndices","components","seen","Uint8Array","s","isPermutation","_reorder","anchor","at","move","NameValuePair","List","__list","_map","Dispose","Add","ItemAdded","AddBefore","unshift","ItemAddedBefore","Insert","start","ItemSplice","remove","FindFromKey","removeIndex","deleted","t","callbackfn","ReverseClone","normalizePath","replace","findAppendableComponent","nodeType","Node","COMMENT_NODE","DOCUMENT_FRAGMENT_NODE","TEXT_NODE","LeakMonitor","threshold","_origins","_quietChecks","check","origin","_busiestOrigin","busiest","entry","Dictionary","__values","Key","Value","n","OnItemAdded","x","callback","find","predicate","thisArg","createRing","ring","linked","before","after","LinkedList","_ring","_count","isEmpty","_link","pop","_take","link","previous","_unlink","toGetter","read","compareKeys","a","b","Query","where","select","orderBy","keySelector","sort","orderByDescending","distinctBy","groupBy","group","first","firstOrDefault","any","some","all","every","aggregate","seed","func","reduce","toArray","SUPPORTED_CONTRACTS","reported","motifCompiled","contract","includes","NodeTypes","Effect","deps","active","running","run","cleanup","effectStack","stop","depMap","effectQueue","leakMonitor","isFlushing","leakEnabled","leakThreshold","leakCleanups","configureReactivityLeakMonitor","opts","track","rawTarget","dep","m","trigger","effects","queued","scheduler","runReported","Promise","resolve","runCounts","batch","e","runs","MAX_EFFECT_RUNS_PER_FLUSH","flushEffects","keyMap","depSet","onValueChanged","popAsyncTracking","pushed","lastIndexOf","asyncTracking","capture","suspend","resume","end","UNTRACKED_SENTINEL","isCheckedInput","el","tagName","toLowerCase","readModelValue","checked","isNumericInput","valueAsNumber","Number","isFinite","Binding","dataSource","dataMember","formatString","formatInfo","updateMode","_memberPath","_component","split","_memberPathSource","functional","getValue","prop","_applyFormat","converter","updateTarget","_updateComponentProperty","isWaiting","isBuilt","isWait","setText","innerHTML","show","hide","style","format","locale","currency","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","decimals","parseInt","match","Date","toLocaleDateString","toLocaleTimeString","toString","RAW_KEY","overridesBelow","instance","proto","getPrototypeOf","lazyBindMethods","names","defineProperty","configurable","enumerable","o","bound","bind","writable","resolveValue","isWritablePathKey","BindingCollection","_branchScope","_own","register","when","computeFn","frame","Frame","last","shown","navigate","text","cb","binding","wait","display","html","loop","method","host","place","next","insert","Component","dom","createTextNode","ternary","conditionFn","trueFn","falseFn","_ternaryCallTop","_ternarySchedule","condFn","onTrue","onFalse","defer","stopped","inner","stopInner","stopEffect","condition","outer","ternaryCall","queueMicrotask","watch","ef","activateAll","model","tn","setter","write","converterBack","_modelWriters","lowerTag","writeBack","writeModel","writers","written","deactivateAll","reActivateAll","switchCase","discriminatorFn","cases","defaultFn","currentValue","defaultRunned","caseKey","Emitter","_subscriptions","_disposed","_subscribe","thisArgs","disposables","subscription","_writable","_unsubscribe","fire","_resume","_delivery","targets","delivery","ComponentEmiter","hasListeners","eventName","_emitters","createEvent","off","lower","_listenerDisposables","d","getOrCreateEmitter","emitters","lowerFull","startsWith","invoke","res","disp","addSource","forward","_sourceDisposables","srcs","agg","keys","METHOD_ATTRS","OPEN_METHODS","showModal","showPopover","WHEN_TRUTHY_METHODS","ARGUMENT_METHODS","PROPERTY_FIRST","controlAttribute","_parent","_attrMap","_attrMapStore","_watchers","_watchersStore","attributes","entries","attribute","bag","Reflect","ownKeys","stopper","bindings","_getElement","removeAttribute","HTMLElement","Element","hasAttribute","getAttribute","val","_applyValue","arg","apply","schedule","cacheValue","blur","inp","setSelectionRange","document","fullscreenElement","exitFullscreen","exitPointerLock","catch","pause","exitPictureInPicture","other","srcObject","setAttribute","isBool","input","isComponentLike","hasMethodState","getMethodState","activeElement","selectionStart","selectionEnd","controlClass","_watcherSeq","_counts","_countsStore","_staticSet","_staticSetStore","_addReactive","_addStaticFromArray","_addStaticFromObject","_addStaticNames","_splitClasses","classNames","cn","_applySourceDiff","id","className","trim","classList","contains","test","_normalizeToSet","obj","sourceId","now","prevCount","staticSet","fresh","join","arr","rec","el2","shimAnimation","cancel","addEventListener","removeEventListener","oncancel","playState","cssTimeToMs","amount","substring","sampleTiming","styles","kind","listOf","aspect","delays","durations","longest","Infinity","total","tracks","transformTrack","computeTransitionInfo","Type","timeout","propCount","hasTransform","samples","transition","animation","winner","forced","transitionProperty","getTransitionInfo","isConnected","getComputedStyle","fxElement","createElement","body","appendChild","runCssTransition","phase","done","appear","css","classes","enter","enterFromClass","enterActiveClass","to","enterToClass","appearFromClass","appearActiveClass","appearToClass","leaveFromClass","leaveActiveClass","leaveToClass","resolveTransitionClasses","addC","removeC","guardTimer","finished","endEvent","endHandler","finish","clearTimeout","offsetHeight","raf","requestAnimationFrame","nextFrame","expectedEnds","dur","duration","leave","info","getTransitionInfoFromElement","ended","ComponentMotif","toggle","domEvent","addHandler","setDisposable","stopAnimations","SIGNAL_TARGET","SIGNAL_KEY","Signal","create","initialValue","equals","_value","_target","_key","_equals","newValue","peek","updater","mutate","mutator","notify","asReadonly","self","valueOf","Computed","getter","_dirty","_computing","_getter","_cleanup","newVal","changed","LazyComputed","_runner","createScheduledEffect","_refresh","isDirty","activeResolver","activeSlot","rawScopedIn","constructionScope","navigatingRoot","slotsByOwner","handlesBySlot","pins","builtIn","boundMethods","runWithResolver","resolver","runWith","slot","previousSlot","previousRaw","pinnedScopeOf","pin","scope","built","_pending","inject","describeInjectToken","recordServiceOwner","pinServiceOwner","root","live","_currentScope","_livePins","retireServiceOwner","_releaseLivePin","ServiceProvider","services","scopedCache","transientSet","_autoDisposeTransients","pendingScoped","_ownerlessSlot","ownerless","_navigationDisposed","describeToken","singletonCache","pendingSingleton","createScope","scoped","scopeName","enableAutoDisposeTransients","enable","desc","getDescriptor","resolveDescriptorSync","getAsync","resolveDescriptorAsync","_getFor","getAllServices","_beginNavigation","navigation","_navigation","version","scopes","_commitNavigation","_touch","_releaseIfUnused","_abandonNavigation","_scopeFor","pinned","_handle","handles","_createHandle","_scopedInstanceSync","_handleAsync","_scopedInstanceAsync","Proxy","_","cache","hit","bindTo","_isSystemScope","inst","instantiateSync","promise","instantiateAsyncIn","checkCycle","lifetime","instantiateAsync","construct","useValue","useFactory","resolveDepsSync","injectionResolver","describeTokenWithSource","useClass","resolveDepsAsyncIn","callDispose","close","ad","asyncDispose","getDeps","resolveTokenSync","results","resolveTokenAsync","dependencies","nextPath","concat","firstIndex","contentBlocks","OPTIONS_OWNER","TRANSITION_SLOT","transitionSettings","mode","noop","createTracker","node","via","parentNode","release","r","settled","except","waits","leaves","enters","trackLeave","pendingLeaves","trackEnter","pendingEnters","isTransitionMode","describeServiceToken","F_DISPOSED_FIRED","optionsOf","_motif","peekTransition","clearNavDirection","_markedDirection","enterModeOf","_leaveContainer","wantsEnterTransition","transitionIn","createTransitionApi","cur","transitionInfo","in","out","activeCssCancel","activeCssPhase","cssProps","skipNextLeave","_suppressEnter","op","transitionOut","enterTransition","base","_enterPlayed","_enterSeq","attempt","_enterRun","placeholder","keyframes","_runCss","leaveTransition","play","deferUntilEntered","activeAnimations","animate","cleanedUp","safeCleanup","g","Animation","ComponentOptionsImpl","enableRouterClassing","ins","onRouterChanged","ComponentHelper","routerClassing","getInstance","isVisible","hasEvent","hasEventKey","fireLifecycle","_baseCtx","_emiters","runHooks","listName","sender","label","hasLifecycleHook","lowerName","legacyProp","RESERVED_METHODS","checkedComponentClasses","WeakSet","callsSuper","escaped","RegExp","Function","checkReservedMembers","ctor","problems","own","getOwnPropertyDescriptor","Boolean","anyC","ControlCollection","class","attr","reservedMemberProblems","callInitializeComponent","initializeComponent","_init","oninitializeComponent","callDisposing","onDisposing","ondisposing","callActivated","onActivated","callDeactivated","onDeactivated","deactivateTree","deep","_inactive","childrenOf","activateTree","callDisposed","_flags","onDisposed","ondisposed","callBuilt","onBuilt","onbuilt","scheduleMounted","_mountedScheduled","onMounted","_onMountedHandlers","onmounted","onElementAttached","callMounted","_mountedFired","callBuilding","onBuilding","callConfig","isConfigured","preconfig","_preconfig","onConfig","callConfigured","_configDeferred","onConfigured","callOnInitialized","isInitialized","onInitialized","callOnInitializing","onInitializing","callVisibilityChanged","onVisibilityChanged","findFragmentContent","controlElement","childNodes","child","closeFragment","backgroundCallback","internalBuild","activatePreBindings","keepsTrace","trace","createComment","insertBefore","followingAnchor","placeTrace","cisBuilt","enterSeq","pendingLeave","__pendingLeave","build","ownItems","currentIndex","appendableElement","getContent","insertHost","ownTrace","referenceNode","removeChild","router","requestPath","uri","targetPath","exact","strip","isExactMatch","prefix","rp","pp","startsWithPath","activeClass","offActive","onActive","exactClass","offExact","onExact","hideStrategy","domAnchor","siblings","removeComponentDom","alsoPlaceholder","nextSibling","detachDomWithAnimation","_keepElementOnDispose","_forceInstantDetach","detachDomWithAnimationAsync","disposeShallow","offAll","deactivateBindings","_controls","deepCleanup","_eventHandlers","_class","_attr","childs","F_DISPOSED","DISPOSE_STARTED","subtreeDisposesSync","_disposing","disposeAsync","teardownApplications","disposePrefix","asChild","ctx","Application","_disposingCount","app","application","recorded","main","owningApplication","skipLeaveTransition","silentDetach","disposeFinish","disposeRemainderAsync","liveContentBlocks","findContentBlocks","block","disposeContentBlocks","childOptions","ctrls","BASE_PROTO","emiters","_offAll","_deactivateBindings","_activateBindings","activateBindings","_reactivateBindings","reactivateBindings","_activatePreBindings","_detachDomWithAnimation","_detachDomWithAnimationAsync","_disposeShallow","_deepCleanup","EV_CAPTURE","EV_DOM","EV_REMOVED","NO_MODS","eventDispatchDepth","EventRecord","original","flags","handleEvent","isTrusted","preventEvent","stopEvent","preventDefault","stopPropagation","head","_bindings","registered","controlsOwner","collection","NO_CHILDREN","freeze","NO_BINDINGS","ownerControlAdded","control","ownerControlAddedBeforeBuild","ownerControlRemoved","fragmentCloseMarkers","LIFECYCLE_X_EVENTS","RAW_APPLICATION","SCOPED_SUBSCRIBERS","isPainting","isPainted","onAdd","onAddBeforeBuild","onRemove","createOwnedControls","useModel","modelCtor","reactive","_computeHideStrategy","_isInDom","asComponentRoot","constructingComponentRoot","onElementCreating","refs","extractRefs","ParseProps","applyComponentOptions","ctor0","applyPlainElementProps","applyFallthroughProps","takePendingRefs","createBaseCtx","parentCtx","_scopedContext","_trackContextSubscription","createScopedContext","building","ph","createDocumentFragment","isFragment","textContent","view","templ","deferredSelectValue","nodeName","kids","seq","appendData","append","setState","reState","_textBindingWarned","warnComponentInTextBinding","content","styleObj","_stopStyleEffect","prevKeys","prevWasString","so","cssText","assign","_styleFx","fx","_addHandler","_show","showHost","_showSeq","needAttach","placeholderParent","parentElement","expectedParent","replaceChild","_hide","skip","_toggle","_on","xName","sub","_mountedSubs","subs","colon","mods","evt","once","passive","record","addEventRecord","_trigger","_off","tail","compactEventRecords","_disposeCore","rootDetached","nodes","parents","j","heights","order","disposeRemainderSync","_clear","disableDisposal","clearAsync","using","waitable","onfulfilled","onrejected","doWork","_siblingsSet","_siblingsApi","_createSiblingsApi","nextAll","prevAll","serviceProvider","provider","getService","sp","err","$","fromDom","fromComponent","findingTarget","findContainer","querySelectorAll","findingComponent","found","walk","cmp","ELEMENT_NODE","matches","msMatchesSelector","webkitMatchesSelector","_stopAnimations","_appliedRefs","ref","fns","applied","disposeUnplacedChilds","kid","isCallableRef","runover","rest","LIFECYCLE_HANDLER_LISTS","initializecomponent","oninitializecomponent","onbuilding","oninitializing","oninitialized","onconfig","onconfigured","onvisibilitychanged","onactivated","ondeactivated","collectLifecycleHandlers","lowerKey","_initializeComponentHandlers","flat","applyTransitionProp","componentMethods","eventKey","nkey","_transitionSources","setTransition","COMPONENT_OPTION_KEYS","PLAIN_ELEMENT_SKIP","SPREAD_HTML_KEYS","SPREAD_URL_ATTRIBUTES","JAVASCRIPT_URL","isJavascriptUrl","guardSpreadUrl","attrs","appliedDomProps","_appliedDomProps","FALLTHROUGH_KEYS","isFallthroughKey","subset","attachWaiters","attachObserver","releaseAttachObserver","disconnect","flushAttachWaiters","waiter","MutationObserver","observe","documentElement","childList","subtree","notifyActivated","unpinServiceOwner","notifyDeactivated","MAX_FACTORY_DEPTH","SVG_NAMESPACE","derivedCtor","elementOrParams","arguments","isOptionsObject","materializeOptionsObject","CreateFragment","ops","isSvg","__isSvgElement","createElementNS","fragmentProps","declaredTag","elementTag","trimmed","readElementTag","declaredNs","elementNamespace","createDeclaredElement","_placesChilds","FNComponent","applyRefs","hookList","handlerCount","callAddedHandlers","motifComponent","lone","init","__childExpr","resolved","probe","resolveChildExpression","configuredBefore","initializingBefore","initializedBefore","pre","applyJsxFrameworkProps","unwrapModule","default","assertLoadedComponent","__esModule","describeLoaded","resolveToComponent","spec","make","constructComponentRoot","getOwnPropertyNames","FragmentNode","arg1","arg2","glblths","getCurrentDom","motifDom","_created","doc","cloneNode","cd","selectors","namepsaceUri","convertToSvgElement","newSvgElement","firstChild","SELECTOR_REGEX","Namespace","children","namespace","exec","HTML","_$","_insertOne","resolveDone","detachComponentDom","arrive","visit","arrived","runLeaveThenDetach","unlinkOnly","silentUnlink","beforeIndex","newBeforeIndex","insertAt","findAppendableElement","moveComponentDomRange","computeAppendReference","anchorFrom","moveToIndex","open","maxIterations","isNodeInRange","frag","ownerDocument","defaultMapper","Lazy","timers","trackTimer","clearAllTimers","initial","Placeholderview","Loaderview","attemptLoad","timeoutMs","signal","caller","parts","reject","finally","onAbortClear","aborted","onAbort","race","retry","floor","delayMs","whenOnline","normalizeRetry","cleanups","waitBeforeRetry","go","onlineHandler","navigator","onLine","loadPromise","onRetry","loadWithRetry","startTs","fail","onError","Fallbackview","mapResult","elapsed","minDelay","minDelayMs","remaining","onAbortClearDelay","hasOwnTransition","cancelAnimationsDeep","anims","anim","disposeNavigationTarget","xr","navigateHost","page","keepOldControl","navigateId","_latestNavigateId","isBusy","complete","xP","previouspage","_navPending","prevLock","_navLock","_navAbort","abort","AbortController","oldPage","animated","leaving","lazyFrame","flush","navigateLazy","preprocessitem","preProcessing","ContentBodyCollectionHandable","changeBodyCollectionHandler","ContentBlock","ContentBody","SLOT_REGISTERED_EVENT","SLOT_UNREGISTERED_EVENT","TransportRegistry","slots","registerSlot","unregisterSlot","getSlot","Transport","clearSlot","Transporter","transport","newParent","ownerTransporter","keepState","transportMany","createSlot","mount","unmount","detachAll","TransportTo","_transported","_countedLive","_handleSlotChange","eventArgs","_rememberTransported","_clearChildrenFromSlot","kept","_slotRegisteredListener","_slotUnregisteredListener","_onAddRef","currentSlot","_onRemoveRef","ARRAY_MUTATORS","NOT_META","metaReaders","engine","isReadonly","superficial","_engine","receiver","ReactiveMap","readMeta","reader","createGetter","meta","patched","arrayMethods","createSetter","candidate","oldValue","oldLength","numeric","hadKey","proxy","removeArrayStack","createOwn","createHas","createDelete","isOwned","deleteProperty","PATCHED_ARRAY_METHODS","ArrayMethods","createArrayMethods","table","patch","needles","direct","outcome","needle","sorted","KEYS_KEY","keysChanged","lookupKey","wrapIterator","convert","step","createCollectionHandler","methods","wrap","wrapEntry","stored","existed","removed","isMap","createCollectionMethods","ReactiveEngineMapper","AllreactiveMap","startGc","_intervalMs","stopGc","_gci","clearInterval","DisposeMapper","arrayTriggerCache","arrayHandler","deepHandler","collectionHandler","targetType","cname","isExtensible","existingProxy","clearModel","ArrayTrigger","toRaw","deepClone","array","enableTracking","cnt","reactiveRegistry","isDevRegistryEnabled","__MOTIF_STORE_REGISTRY__","createSignal","sig","createComputed","createLazyComputed","Virtualization","_cache","_view","_occurrence","_occurrenceKeys","_isLoadingMore","_emptyRendered","_renderPending","contentWrapper","_initialLoadStarted","_offsets","_observedHeight","_loadSeq","_reloadScheduled","_reloadTimes","_handleScroll","_sender","_event","renderViewport","autoLoad","_state","hasMore","wrapper","fixed","_fixedHeight","data","_offsetOf","scrollTop","clientHeight","autoLoadThreshold","_loadMore","isLoading","currentPage","totalCount","_renderLoadingState","_renderErrorState","_renderEmptyState","_loadInitial","_makeView","_topSpacer","_bottomSpacer","_virtualContent","mainTemplate","overflowY","position","_observeResize","_stopResizeObserver","_stopDataWatch","_clearContent","h","itemHeight","_computeOffsets","offsets","_layoutOffsets","_indexAt","y","_observed","RO","ResizeObserver","observer","_resizeObserver","_dataWatchStop","_request","request","dataRequest","autoRefresh","_scheduleReload","_reloadLoaded","pageSize","pages","response","top","_rebuildView","height","nextPage","overscan","topPx","bottomPx","bottom","rows","keep","_rowFor","inDom","_detachRow","pos","_evictCache","_occurrenceKey","itemTemplate","__listItemRef","cacheSize","loadingTemplate","loadingElement","emptyTemplate","emptyElement","errorTemplate","errorElement","refresh","setData","scrollToIndex","getState","autoRegistry","ServiceCollection","descriptors","reset","addTransient","impl","_add","addSingleton","addScoped","_tokenName","isConstructor","canAutoRegister","buildServiceProvider","lt","tryAddTransient","tryAddSingleton","tryAddScoped","autoRegisterInjectables","joinPaths","endsWith","seg","overlayHost","initOverlayIfEnabled","ctrlKey","metaKey","RouterViewRegistry","outlets","scopeId","unregister","findAll","RouterViewBuilt","RouterView","disposingChilds","__isRouterView","ids","disposeTarget","STORAGE_KEY","USER_INPUT","ScrollMemory","viewport","positions","currentKey","currentPath","visited","restoring","cancelFrame","disarmAbort","offs","locationAnchor","windowViewport","querySelector","scrollTo","behavior","scrollToAnchor","follow","containerViewport","load","history","scrollRestoration","listen","persistNow","visibilityState","cancelRestore","remember","persist","direction","hash","splitUri","inPage","keyOf","restore","location","decodeHash","locationHash","saved","round","oldest","settleMs","startedAt","reached","armAbort","cancelAnimationFrame","removers","storage","sessionStorage","setItem","getItem","parsed","pair","scrollY","getElementById","scrollIntoView","decodeURIComponent","SLIDE_OFFSET","isElement","markDirection","unmarkDirection","saveStyle","restoreStyle","saveScroll","left","scrollLeft","restoreScroll","prefersReducedMotion","matchMedia","easing","overlay","floating","above","margin","boxSizing","getBoundingClientRect","f","width","pointerEvents","zIndex","NavigationStack","session","uris","loaded","currentTop","gesture","gestureCommitted","awaitingGestureResult","disposed","retainAttached","retain","sb","swipeBack","swipe","edge","installSwipe","retainedCount","isRetaining","nav","begin","point","disposeAllEntries","truncate","stale","disposeEntry","take","pendingDetach","instances","topIndex","deferHide","attached","hidden","scroll","evict","settle","inert","ariaHidden","setProperty","reveal","save","describe","retained","gestureCommitPending","consumeGestureCommit","committed","traversalSettled","cancelled","settleGesture","entering","enteringEl","leavingEl","backwards","enteringStyle","leavingStyle","transform","endGestureListeners","fromIndex","onStart","onTouchStart","touches","clientX","topEl","startX","startY","clientY","lastX","dragging","topSaved","under","underSaved","onMove","onTouchMove","onEnd","onTouchEnd","beginDrag","innerWidth","willChange","applyDrag","dx","progress","dy","abs","cancelable","span","idle","velocity","commit","underEl","currentUnder","back","Scanner","currentColumn","tokens","parameters","codePointAt","str","charCodeAt","second","addToken","currentType","parentTokenIndex","parameterIndex","sectionIndex","cpa","currentToken","isOptinal","regexs","parameterName","leadingSlashTokenIndex","leadingStaticTokenIndex","hasLeadingSlash","hasLeadingStatic","consumed","ch","escapeRegex","getNextDelimChar","nx","buildCapture","isOptional","delim","pattern","tok","segStart","segEnd","firstIdx","hasDependent","jj","sj","pj","groupInner","prm","cap","exist","pageSearch","hashIdx","withoutHash","query","qIdx","rx","indx","urlSearchParams","URLSearchParams","queryMap","routeSpecificity","fullPath","statics","params","compareRouteRecords","sa","RouteCollection","records","routesMap","viaAlias","nextChain","variants","isAlias","variant","leaf","scanner","aliasOf","RoutingEngine","_revealed","_previousPath","_previousInstances","controlCache","_navVersion","_pendingActivate","pendingMount","pendingListeners","mainApp","routingModule","route","generatePathString","routeDefinition","part","paramDefinition","paramName","defaultValue","execute","_rootProvider","suppressed","_execute","_routerState","navVersion","restored","controlList","isSameRoute","enableEnter","paramsChanged","prevParams","newParams","allKeys","leafRoute","keepAlive","oldInstance","globalHooks","getHooks","updateHook","onUpdate","updateContext","extend","metaInfo","enterContext","enterHook","onEntering","prepTasks","task","createInstance","motion","previousInstances","_stackLeave","disposeFromDivergencePoint","mountChain","enteringTop","onEnter","disposeAfter","newChain","newInstances","prevChain","prevInstances","outletFor","outletName","targetOutlet","findRouterView","topItem","deferTop","divergeIndex","minLength","containerIndex","_construct","runInConstructionScope","constructWith","parseControl","_resolveFrom","_instanceCreator","activator","OUTLET_WARN_MS","_waitForOutlet","revealed","alreadyShown","showHook","onShow","oldCleanup","warnTimer","_s","_e","rv","q","RouterLink","showHref","href","bypass","shiftKey","altKey","pathOf","newHistorySession","random","UrlRoutingModule","MAX_REDIRECTS","_suppressBeforeEachOnce","_suppressMiddlewaresOnce","_scroll","_stack","_windowNavListener","_historyStamp","_pendingTraversal","_currentUri","_previousRoute","_fallbackRoutes","_navHandler","_routerOptions","routeCollection","RouteItems","routingEngine","_installLinkInterceptor","scrollMemory","_addressMode","hooks","shellUri","_getCurrentUri","_seedHistoryIndex","_onHistoryTraversal","shownUri","protocol","pathname","search","HISTORY_STAMP_KEY","_readHistoryStamp","stamp","_isPlainObject","_withHistoryStamp","userState","hasState","_userStateOf","historyState","_omit","_currentHistoryUserState","_nextHistoryStamp","_stampCurrentEntry","replaceState","delta","currentUri","traversal","suppressBeforeEachThisCall","suppressMiddlewaresThisCall","navOptions","force","ok","skipped","gate","proceed","_runMiddlewares","redirectedFrom","redirectError","redirectChain","redirect","requested","_resolveRedirect","_buildFallbackResult","wasInitialNavigation","entryState","toRoute","fromRoute","routeItem","leaveHook","onLeave","leaveContext","leaveResult","guardResult","_runBeforeEachGuards","addressShowsBlocked","_addressShows","snapshotOf","chainOf","appliedPath","leavingStamp","replaceSource","_applyUrl","stackNav","e2","touch","_handleScrollBehavior","_uriWithHash","describeStack","routeInfos","_getFallbackRoute","custom","fallbacks","_builtinNotFound","_builtinError","validate","_findLayoutPrefix","mergedExtend","mergedMeta","segs","best","matched","_pageSearch","validateChain","padding","fontFamily","navigateByName","initialUri","urix","rewritePath","middlewareCollections","dispatch","candidates","catchAll","groups","pickedFromDuplicate","HTMLAnchorElement","rel","URL","pushState","wanted","url","hashIndex","beforeHash","queryIndex","ownHashIndex","ownHash","requestedUri","scrollOption","RouterState","_current","_constructing","snapshot","_globalApplication","startedApplicationBuilder","ApplicationBuilder","rebuild","_middlewares","_beforeEachGuards","module","required","createRouter","urlRoutingModule","events","_routerConfig","_routerRoot","_startedRouter","_lifecycleOff","_enableErrorLogging","CreateBuilder","getAppShell","appShell","appRoot","rootInstance","AppShell","attach","appendToMainHost","routerDone","_removeLifecycleListeners","shell","useTransitions","use","useGuard","guard","redirectPath","guardResolved","useRouter","isDevtoolsEnabled","seenFull","seenAlias","rawPath","isDefaultSlash","isEmptyPath","childPath","aliases","rawAlias","aliasFull","aliasCount","lintRoutes","restartRouter","isOnline","onLifecycle","_installLifecycleListeners","_emitLifecycle","online","win","persisted","isDevelopmentModeEnabled","useReactiveMonitor","useDevelopment","flushCompilerContractWarnings","useLogging","setErrorConsoleLogging","useNavigation","useApplication","Injectable","FromService","isTimeoutError","TimeoutError","delay","addJitter","jitterFactor","jitter","Policy","RetryPolicy","retries","backoff","shouldHandle","calcDelay","pow","action","lastErr","TimeoutPolicy","timer","rej","CircuitBreakerPolicy","failureCount","successCount","nextAttemptTime","failureThreshold","successThreshold","durationOfBreakMs","onStateChange","changeState","newState","BulkheadPolicy","maxConcurrent","maxQueue","dequeue","RateLimiterPolicy","tokensPerInterval","intervalMs","capacity","lastRefill","refill","tokensToAdd","FallbackPolicy","PolicyWrap","policies","reduceRight","wrapped","resilience","decorate","policy","Resilience","resiliences","circuitBreaker","bulkhead","rateLimiter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.min.js","sources":["../src/devtools/devbus.ts","../src/common/ErrorHandler.ts","../src/common/diagnostics.ts","../src/disposable/DisposableCore.ts","../src/disposable/DisposableStore.ts","../src/disposable/Disposable.ts","../src/store/common.ts","../src/bindings/ListBinding.ts","../src/component/componentBase.ts","../src/common/NameValuePair.ts","../src/common/List.ts","../src/common/functions.ts","../src/common/LeakMonitor.ts","../src/common/Dictionary.ts","../src/common/LinkedList.ts","../src/common/bind.ts","../src/common/Query.ts","../src/common/compilerContract.ts","../src/common/index.ts","../src/common/pushTight.ts","../src/store/reactivity-core.ts","../src/bindings/Binding.ts","../src/disposable/Cleanup.ts","../src/common/lazyBind.ts","../src/bindings/BindingCollection.ts","../src/delegate/Emitter.ts","../src/component/ComponentEmiter.ts","../src/component/controlAttribute.ts","../src/component/controlClass.ts","../src/component/types.ts","../src/common/transition.ts","../src/component/ComponentMotif.ts","../src/store/Signal.ts","../src/dependencyInjection/ServiceProvider.ts","../src/component/contentBlockRegistry.ts","../src/component/optionsSlots.ts","../src/common/transitionRegistry.ts","../src/component/resolveComponent.ts","../src/component/Component.ts","../src/core/dom.ts","../src/core/ControlCollection.ts","../src/component/Lazy.ts","../src/component/navigation.ts","../src/component/Frame.ts","../src/component/PreProcessing.ts","../src/component/ContentBody.ts","../src/component/TransportRegistry.ts","../src/component/Transport.tsx","../src/component/Transporter.ts","../src/component/TransportTo.tsx","../src/store/handlers/getter.ts","../src/store/handlers/setter.ts","../src/store/handlers/orhers.ts","../src/store/handlers/ArrayMethods.ts","../src/store/handlers/collections.ts","../src/store/ReactiveEngine.ts","../src/store/index.ts","../src/core/Virtualization.ts","../src/dependencyInjection/autoRegistry.ts","../src/dependencyInjection/ServiceCollection.ts","../src/devtools/routeLinter.ts","../src/routing/RouterViewRegistry.ts","../src/routing/RouterView.ts","../src/routing/scrollMemory.ts","../src/routing/NavigationStack.ts","../src/routing/scanner.ts","../src/routing/RouteCollection.ts","../src/routing/RoutingEngine.ts","../src/routing/RouterLink.ts","../src/routing/UrlRoutingModule.ts","../src/routing/routerState.ts","../src/application.ts","../src/dependencyInjection/decorators.ts","../src/common/Resilience.ts"],"sourcesContent":["export type DevEvent = { type: string; payload?: any };\nexport type DevWarning = { code: string; message: string; details?: any };\n\nconst state = {\n enabled: false as boolean,\n listeners: new Set<(ev: DevEvent) => void>(),\n warnings: [] as DevWarning[],\n routes: null as any,\n exposed: null as object | null,\n};\n\n/** Dev modu: devtools açık ya da `globalThis.__MOTIF_DEV__ === true`. */\nexport function isDevLike(): boolean {\n return state.enabled || (globalThis as any).__MOTIF_DEV__ === true;\n}\n\nexport function setDevtoolsEnabled(enabled: boolean) {\n state.enabled = enabled;\n try {\n const g = globalThis as any;\n if (enabled) {\n state.exposed = { version: 1, on, getWarnings, getRoutes, isEnabled };\n g.__MOTIF_DEVTOOLS__ = state.exposed;\n } else {\n if (state.exposed !== null && g.__MOTIF_DEVTOOLS__ === state.exposed) delete g.__MOTIF_DEVTOOLS__;\n state.exposed = null;\n }\n } catch { }\n}\n\nexport function isEnabled(): boolean { return state.enabled; }\n\nexport function devtools(): ((type: string, payload?: any) => void) | undefined {\n return state.enabled ? emit : undefined;\n}\n\nexport function on(listener: (ev: DevEvent) => void): () => void {\n state.listeners.add(listener);\n return () => { state.listeners.delete(listener); };\n}\n\nfunction emit(type: string, payload?: any) {\n const ev: DevEvent = { type, payload };\n for (const l of state.listeners) {\n try { l(ev); } catch { }\n }\n}\n\nexport function warn(code: string, message: string, details?: any) {\n if (!isDevLike()) return;\n const w: DevWarning = { code, message, details };\n state.warnings.push(w);\n try { if (typeof console !== 'undefined') details === undefined ? console.warn(`[motifjs] ${code}: ${message}`) : console.warn(`[motifjs] ${code}: ${message}`, details); } catch { }\n devtools()?.('warning', w);\n}\n\nexport function getWarnings(): DevWarning[] { return state.warnings.slice(); }\n\nexport function setRoutes(routes: any) { state.routes = routes; }\nexport function getRoutes(): any { return state.routes; }\n","import { devtools } from \"../devtools/devbus\";\r\n\r\nfunction rethrowLater(error: any): void {\r\n\tsetTimeout(() => { throw error; }, 0);\r\n}\r\n\r\nexport class ErrorHandler {\r\n\tprivate unexpectedErrorHandler: (e: any) => void = rethrowLater;\r\n\tprivate listeners: Array<(error: any) => void> = [];\r\n\tprivate _isDevelopment: boolean = false;\r\n\tprivate _enableConsoleLogging: boolean = true;\r\n\r\n\tpublic setDevelopmentMode(isDev: boolean): void {\r\n\t\tthis._isDevelopment = isDev;\r\n\t}\r\n\r\n\tpublic setConsoleLogging(enabled: boolean): void {\r\n\t\tthis._enableConsoleLogging = enabled;\r\n\t}\r\n\r\n\tpublic isDevelopment(): boolean {\r\n\t\treturn this._isDevelopment || (globalThis as any).__MOTIF_DEV__ === true;\r\n\t}\r\n\r\n\tpublic reportSuppressed(context: string, error: any): void {\r\n\t\tthis.logIfDev(context, error);\r\n\t}\r\n\r\n\tpublic report(error: Error): void {\r\n\t\tif (this._enableConsoleLogging) {\r\n\t\t\tif (error.cause !== undefined) console.error(error.message, error.cause);\r\n\t\t\telse console.error(error.message);\r\n\t\t}\r\n\r\n\t\ttry { devtools()?.('error:caught', { context: (error as any).code ?? error.name, error: this.serializeError(error) }); } catch { /* ignore */ }\r\n\r\n\t\tthis.emit(error);\r\n\t}\r\n\r\n\tprivate logIfDev(context: string, error: any): void {\r\n\t\tif (this.isDevelopment() && this._enableConsoleLogging) {\r\n\t\t\tconsole.error(`[motifjs Error - ${context}]`, error);\r\n\t\t}\r\n\r\n\t\ttry { devtools()?.('error:caught', { context, error: this.serializeError(error) }); } catch { /* ignore */ }\r\n\t}\r\n\r\n\r\n\tprivate serializeError(error: any): any {\r\n\t\tif (!error) return { message: 'Unknown error' };\r\n\t\tif (error instanceof Error) {\r\n\t\t\treturn {\r\n\t\t\t\tname: error.name,\r\n\t\t\t\tmessage: error.message,\r\n\t\t\t\tstack: error.stack,\r\n\t\t\t\tcause: error.cause ? this.serializeError(error.cause) : undefined\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (typeof error === 'object') {\r\n\t\t\ttry { return JSON.parse(JSON.stringify(error)); } catch { return String(error); }\r\n\t\t}\r\n\t\treturn String(error);\r\n\t}\r\n\r\n\taddListener(listener: (error: any) => void): () => void {\r\n\t\tthis.listeners.push(listener);\r\n\t\treturn () => {\r\n\t\t\tconst index = this.listeners.indexOf(listener);\r\n\t\t\tif (index !== -1) {\r\n\t\t\t\tthis.listeners.splice(index, 1);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tprivate emit(error: any): void {\r\n\t\tfor (const listener of this.listeners.slice()) {\r\n\t\t\tlistener(error);\r\n\t\t}\r\n\t}\r\n\r\n\tsetUnexpectedErrorHandler(handler: (e: any) => void): void {\r\n\t\tthis.unexpectedErrorHandler = handler;\r\n\t}\r\n\r\n\tgetUnexpectedErrorHandler(): (e: any) => void {\r\n\t\treturn this.unexpectedErrorHandler;\r\n\t}\r\n\r\n\tonUnexpectedError(error: any): void {\r\n\t\tthis.unexpectedErrorHandler(error);\r\n\t\tthis.emit(error);\r\n\t}\r\n\r\n\tpublic safeCall<T>(fn: () => T, context: string, fallback?: T): T | undefined {\r\n\t\ttry {\r\n\t\t\treturn fn();\r\n\t\t} catch (error) {\r\n\t\t\tthis.logIfDev(context, error);\r\n\t\t\tthis.onUnexpectedError(error);\r\n\t\t\treturn fallback;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async safeCallAsync<T>(fn: () => Promise<T>, context: string, fallback?: T): Promise<T | undefined> {\r\n\t\ttry {\r\n\t\t\treturn await fn();\r\n\t\t} catch (error) {\r\n\t\t\tthis.logIfDev(context, error);\r\n\t\t\tthis.onUnexpectedError(error);\r\n\t\t\treturn fallback;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic safeCallSilent(fn: () => void, context: string): void {\r\n\t\ttry {\r\n\t\t\tfn();\r\n\t\t} catch (error) {\r\n\t\t\tthis.logIfDev(context, error);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async safeCallSilentAsync<T>(fn: () => Promise<T>, context: string): Promise<T | undefined> {\r\n\t\ttry {\r\n\t\t\treturn await fn();\r\n\t\t} catch (error) {\r\n\t\t\tthis.logIfDev(context, error);\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tpublic wrapSafe<TArgs extends any[], TReturn>(\r\n\t\tfn: (...args: TArgs) => TReturn,\r\n\t\tcontext: string\r\n\t): (...args: TArgs) => TReturn | undefined {\r\n\t\treturn (...args: TArgs) => {\r\n\t\t\ttry {\r\n\t\t\t\treturn fn(...args);\r\n\t\t\t} catch (error) {\r\n\t\t\t\tthis.logIfDev(context, error);\r\n\t\t\t\tthis.onUnexpectedError(error);\r\n\t\t\t\treturn undefined;\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tpublic wrapSafeAsync<TArgs extends any[], TReturn>(\r\n\t\tfn: (...args: TArgs) => Promise<TReturn>,\r\n\t\tcontext: string\r\n\t): (...args: TArgs) => Promise<TReturn | undefined> {\r\n\t\treturn async (...args: TArgs) => {\r\n\t\t\ttry {\r\n\t\t\t\treturn await fn(...args);\r\n\t\t\t} catch (error) {\r\n\t\t\t\tthis.logIfDev(context, error);\r\n\t\t\t\tthis.onUnexpectedError(error);\r\n\t\t\t\treturn undefined;\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}\r\n\r\nexport const errorHandler = new ErrorHandler();\r\n\r\n\r\nexport function setErrorConsoleLogging(enabled: boolean): void {\r\n\terrorHandler.setConsoleLogging(enabled);\r\n}\r\n\r\nexport function safeCall<T>(fn: () => T, context: string, fallback?: T): T | undefined {\r\n\treturn errorHandler.safeCall(fn, context, fallback);\r\n}\r\n\r\nexport function safeCallAsync<T>(fn: () => Promise<T>, context: string, fallback?: T): Promise<T | undefined> {\r\n\treturn errorHandler.safeCallAsync(fn, context, fallback);\r\n}\r\n\r\n\r\nexport function safeCallSilent<T>(fn: () => T, context: string): void {\r\n\terrorHandler.safeCallSilent(fn, context);\r\n}\r\n\r\n\r\nexport function safeCallSilentAsync<T>(fn: () => Promise<T>, context: string): Promise<T | undefined> {\r\n\treturn errorHandler.safeCallSilentAsync(fn, context);\r\n}\r\n\r\nexport function wrapSafe<TArgs extends any[], TReturn>(\r\n\tfn: (...args: TArgs) => TReturn,\r\n\tcontext: string\r\n): (...args: TArgs) => TReturn | undefined {\r\n\treturn errorHandler.wrapSafe(fn, context);\r\n}\r\n\r\nexport function wrapSafeAsync<TArgs extends any[], TReturn>(\r\n\tfn: (...args: TArgs) => Promise<TReturn>,\r\n\tcontext: string\r\n): (...args: TArgs) => Promise<TReturn | undefined> {\r\n\treturn errorHandler.wrapSafeAsync(fn, context);\r\n}\r\n\r\nexport function setUnexpectedErrorHandler(handler: (e: any) => void): void {\r\n\terrorHandler.setUnexpectedErrorHandler(handler);\r\n}\r\n","import { errorHandler } from \"./ErrorHandler\";\nimport { warn as devWarn } from \"../devtools/devbus\";\n\nexport const motifMessages = {\n MJX101: (tag: string) => `dom.createElement('${tag}'): no document is available (no DOM environment).`,\n MJX102: (description: string) => `Invalid element selector \"${description}\".`,\n MJX103: (tag: string) => `dom.createElementNS('${tag}') failed.`,\n MJX104: () => `Skipped inserting a component into the DOM because it contains its own parent.`,\n MJX105: () => `Applying router link classes failed.`,\n MJX106: () => `The placeholder parent changed; rebuilding the component.`,\n MJX107: () => `Disposing a child component failed.`,\n MJX108: () => `Component is disposed; the result of doWork was discarded.`,\n MJX109: () => `A content block child was removed because its content body is being disposed.`,\n MJX110: (ms: number) => `Lazy timeout: the component did not load within ${ms} ms.`,\n MJX111: () => `Lazy aborted: loading the component was cancelled.`,\n MJX112: (depth: number) => `resolveComponent: the factory chain exceeded ${depth} levels; a factory may be returning itself.`,\n MJX113: () => `The transport slot has no parent; mount the slot before transporting into it.`,\n MJX114: () => `Placing the navigation target into its host failed.`,\n MJX115: () => `Disposing the previous navigation target failed.`,\n MJX116: (ms: number) => `Timeout: the listener guard did not settle within ${ms} ms.`,\n MJX117: () => `Detaching a control failed.`,\n MJX118: () => `The onRemove callback failed while detaching a control.`,\n MJX119: () => `Moving a fragment's DOM range stopped: its end marker was not found (possible infinite loop).`,\n MJX120: () => `Scanning a fragment's DOM range stopped: its end marker was not found (possible infinite loop).`,\n MJX121: (compiled: number, runtime: number) => `This code was compiled for compiler contract ${compiled}, but the @motifx/core runtime implements contract ${runtime}. Install matching versions of @motifx/compiler and @motifx/core, and rebuild packages that ship compiled JSX.`,\n MJX122: (hook: string) => `The component ${hook} hook threw.`,\n MJX123: (event: string) => `The '${event}' event handler threw.`,\n MJX124: (key: string) => `A spread object on a DOM tag cannot set ${key}; the key was ignored. Write it on the tag, or use x-html, for HTML you trust.`,\n MJX125: (key: string) => `A spread object on a DOM tag cannot set a javascript: URL on '${key}'; the value was ignored. Write the attribute on the tag if it is intended.`,\n MJX126: () => `Lazy: loading the component failed and no Fallbackview is set; the host was cleared.`,\n MJX127: (got: string) => got === 'module'\n ? `The loaded module has no default export. Export the component as default, or map it: () => import('./X').then(m => m.X).`\n : `The loaded value is not a component (got ${got}). Return a component class, a function component, an Options API factory or a component instance.`,\n MJX128: (cls: string, member: string, how: 'method' | 'field' | 'replaced') => how === 'method'\n ? `${cls} overrides ${member} without calling super.${member}; MotifJS relies on this ComponentBase member. Rename your member, or call super.${member} in the override.`\n : how === 'field'\n ? `${cls} defines '${member}' as an instance field, which hides the ComponentBase member MotifJS relies on. Rename your field.`\n : `${cls} replaces '${member}', which MotifJS created for the component (a class field or an assignment with that name). Rename your member.`,\n\n MJX201: () => `ListBinding: renderFn must return a component instance, a component class, or a factory function.`,\n MJX202: (key: unknown, index: number) => `ListBinding: duplicate key \"${String(key)}\" at index ${index}. Rows are matched by the item object, not by key, so rendering is not affected; keep keys unique so they identify items.`,\n MJX203: (max: number) => `An effect ran ${max} times in one flush and keeps triggering itself; it is skipped for the rest of this flush. It probably writes a value it reads (for example state.n++). Wrap the write in untracked(...).`,\n MJX204: () => `A component reached a text binding and was not written to the DOM. For a template prop that can change later, write a getter: {() => props.tpl}. Templates that are ready at setup also work as {props.tpl}.`,\n MJX205: () => `Virtualization: the watch callback threw.`,\n MJX206: () => `Virtualization: autoRefresh stopped; dataRequest may be changing the reactive data it reads on every refresh.`,\n MJX207: () => `Virtualization: loading data failed.`,\n MJX208: () => `An effect threw.`,\n\n MJX301: (outlet: string, ms: number) => `RouterView outlet '${outlet}' was not built within ${ms} ms, so the route chain cannot be mounted. Does the layout component render a <RouterView>?`,\n MJX302: (name: string) => `Named route '${name}' was not found.`,\n MJX303: (chain: string) => `Redirect loop or too many redirects: ${chain}`,\n MJX304: () => `Route execution failed.`,\n MJX305: () => `The error fallback route failed.`,\n MJX306: (hook: string) => `The ${hook} hook threw.`,\n MJX307: () => `Disposing a route component failed.`,\n MJX308: () => `The stack navigation transition failed.`,\n MJX309: () => `Router is not initialized. Call useRouter() before navigating.`,\n MJX310: (parentPath: string) => `Route path cannot be empty; use '/' for the default child. Under parent \"${parentPath}\".`,\n MJX311: (path: string, parentPath: string) => `Child route path should start with '/': \"${path}\" under parent \"${parentPath}\".`,\n MJX312: (full: string) => `Child route path resolves to the same full path as its parent: \"${full}\".`,\n MJX313: (full: string) => `Multiple routes resolve to the same full path: \"${full}\".`,\n MJX314: (alias: string, parentPath: string) => `Child route alias should start with '/': \"${alias}\" under parent \"${parentPath}\".`,\n MJX315: (alias: string) => `Route alias resolves to the route's own path: \"${alias}\".`,\n MJX316: (alias: string) => `Multiple routes use the same alias: \"${alias}\".`,\n\n MJX401: (token: string) => `Service not registered for token: ${token}`,\n MJX402: (token: string) => `Async factory used with get() for token ${token}; use getAsync().`,\n MJX403: () => `Invalid service descriptor.`,\n MJX404: (chain: string) => `Cyclic dependency detected: ${chain}`,\n MJX405: () => `Only one ApplicationBuilder instance is allowed.`,\n MJX406: (selector: string) => `Application.run: host not found for selector: ${selector}`,\n MJX407: (token: string) => `getService: no ServiceProvider found for token '${token}'.`,\n MJX408: (token: string, reason: string) => `getService failed for token '${token}': ${reason}`,\n MJX409: (token: string) => `inject(${token}) was called outside a service construction; call it in a field initializer or constructor of a class the ServiceProvider creates.`,\n MJX410: (token: string, sources: string) => `Multiple sources provided for token '${token}': ${sources}. Resolution order is useValue > useFactory > useClass.`,\n MJX411: (token: string) => `'deps' must be an array for token '${token}'; the invalid deps are ignored.`,\n MJX413: (token: string) => `Service '${token}' is registered with a function that cannot be constructed. Use { useValue: fn } to provide the function itself or { useFactory: fn } to create the service.`,\n MJX414: (token: string, reason: string) => `FromService failed for token '${token}': ${reason}`,\n\n MJX501: () => `Disposable already disposed.`,\n MJX502: () => `Cannot register a disposable on itself.`,\n MJX503: () => `Errors were thrown while disposing a store.`,\n MJX504: () => `A disposable was added to a DisposableStore that is already disposed; the added object will leak.`,\n MJX505: () => `Cannot dispose a disposable on itself.`,\n MJX507: (name: string, limit: number, count: number) => `[${name}] potential listener LEAK: ${limit} listeners already; most frequent stack (${count}):`,\n\n MJX601: () => `Sequence contains no elements.`,\n MJX602: () => `Circuit is open.`,\n MJX603: () => `Bulkhead queue is full.`,\n MJX604: () => `Rate limit exceeded.`,\n MJX605: () => `Operation timed out.`,\n MJX607: () => `A history must be created with at least one entry.`,\n MJX608: () => `Method not implemented.`,\n MJX609: () => `OperationRunner: the operation threw.`,\n MJX610: () => `Matching the request path failed.`,\n} satisfies Record<string, (...args: any[]) => string>;\n\nexport type MotifErrorCode = keyof typeof motifMessages;\ntype MessageArgs<C extends MotifErrorCode> = Parameters<(typeof motifMessages)[C]>;\n\nexport class MotifError extends Error {\n readonly code: MotifErrorCode;\n\n constructor(code: MotifErrorCode, message: string, options?: { cause?: unknown }) {\n super(message, options);\n this.name = 'MotifError';\n this.code = code;\n }\n}\n\nexport function formatMotifMessage<C extends MotifErrorCode>(code: C, ...args: MessageArgs<C>): string {\n return `[motifjs] ${code}: ${(motifMessages[code] as (...a: any[]) => string)(...args)}`;\n}\n\nexport function motifError<C extends MotifErrorCode>(code: C, ...args: MessageArgs<C>): MotifError {\n return new MotifError(code, formatMotifMessage(code, ...args));\n}\n\nexport function reportError<C extends MotifErrorCode>(code: C, cause: unknown, ...args: MessageArgs<C>): void {\n errorHandler.report(new MotifError(code, formatMotifMessage(code, ...args), { cause }));\n}\n\nexport function callReported<C extends MotifErrorCode>(fn: () => unknown, code: C, ...args: MessageArgs<C>): void {\n try {\n const result: any = fn();\n if (result && typeof result.then === 'function') {\n result.then(undefined, (error: unknown) => reportError(code, error, ...args));\n }\n } catch (error) {\n reportError(code, error, ...args);\n }\n}\n\nexport function reportWarning<C extends MotifErrorCode>(code: C, args: MessageArgs<C>, details?: unknown): void {\n devWarn(code, (motifMessages[code] as (...a: any[]) => string)(...args), details);\n}\n","import { IDisposable } from \"./IDisposable\";\n\nexport interface IDisposableTracker {\n trackDisposable(disposable: IDisposable): void;\n setParent(child: IDisposable, parent: IDisposable | null): void;\n markAsDisposed(disposable: IDisposable): void;\n markAsSingleton(disposable: IDisposable): void;\n}\n\nclass DisposableCore {\n\n disposableTracker: IDisposableTracker | null = null;\n\n notifyCreated<T extends IDisposable>(target: T): T {\n this.disposableTracker?.trackDisposable(target);\n return target;\n }\n\n notifyDisposed(target: IDisposable): void {\n this.disposableTracker?.markAsDisposed(target);\n }\n\n notifyOwner(target: IDisposable, owner: IDisposable | null): void {\n this.disposableTracker?.setParent(target, owner);\n }\n\n toDisposable(fn: () => void): IDisposable {\n let pending = true;\n const handle: IDisposable = {\n dispose: () => {\n if (!pending) {\n return;\n }\n pending = false;\n this.notifyDisposed(handle);\n fn();\n }\n };\n return this.notifyCreated(handle);\n }\n}\n\nexport const disposableCore: DisposableCore = new DisposableCore();\n","import { IDisposable } from \"./IDisposable\";\r\nimport { disposableCore } from \"./DisposableCore\";\r\nimport { MotifError, formatMotifMessage, motifError, reportWarning } from \"../common/diagnostics\";\r\n\r\nexport class DisposableStore implements IDisposable {\r\n\r\n private _items?: Set<IDisposable>;\r\n private _one?: IDisposable;\r\n private _closed = false;\r\n\r\n constructor() {\r\n disposableCore.notifyCreated(this);\r\n }\r\n\r\n get isDisposed(): boolean {\r\n return this._closed;\r\n }\r\n\r\n add<T extends IDisposable>(item: T): T {\r\n if (!item) {\r\n return item;\r\n }\r\n if ((item as unknown) === this) {\r\n throw motifError('MJX502');\r\n }\r\n disposableCore.notifyOwner(item, this);\r\n if (this._closed) {\r\n reportWarning('MJX504', [], new Error().stack);\r\n } else if (this._items !== undefined) {\r\n this._items.add(item);\r\n } else if (this._one === undefined) {\r\n this._one = item;\r\n } else if (this._one !== item) {\r\n this._items = new Set([this._one, item]);\r\n this._one = undefined;\r\n }\r\n return item;\r\n }\r\n\r\n private _take(item: IDisposable): boolean {\r\n if (this._items !== undefined) return this._items.delete(item);\r\n if (this._one === item) { this._one = undefined; return true; }\r\n return false;\r\n }\r\n\r\n delete<T extends IDisposable>(item: T): void {\r\n if (!item) {\r\n return;\r\n }\r\n if ((item as unknown) === this) {\r\n throw motifError('MJX505');\r\n }\r\n this._take(item);\r\n item.dispose();\r\n }\r\n\r\n detach<T extends IDisposable>(item: T): void {\r\n if (item && this._take(item)) {\r\n disposableCore.notifyOwner(item, null);\r\n }\r\n }\r\n\r\n clear(): void {\r\n if (this._one === undefined && (this._items === undefined || this._items.size === 0)) {\r\n return;\r\n }\r\n const failures: unknown[] = [];\r\n let done: IDisposable | undefined;\r\n for (;;) {\r\n const items = this._items;\r\n if (items !== undefined) {\r\n for (const item of items) {\r\n if (item === done) continue;\r\n try {\r\n item?.dispose();\r\n } catch (error) {\r\n failures.push(error);\r\n }\r\n }\r\n items.clear();\r\n break;\r\n }\r\n const one = this._one;\r\n if (one === undefined || one === done) break;\r\n done = one;\r\n try {\r\n one.dispose();\r\n } catch (error) {\r\n failures.push(error);\r\n }\r\n }\r\n this._one = undefined;\r\n if (failures.length === 1) {\r\n throw failures[0];\r\n }\r\n if (failures.length > 1) {\r\n throw new MotifError('MJX503', formatMotifMessage('MJX503'), { cause: new AggregateError(failures) });\r\n }\r\n }\r\n\r\n dispose(): void {\r\n if (this._closed) {\r\n return;\r\n }\r\n disposableCore.notifyDisposed(this);\r\n this._closed = true;\r\n this.clear();\r\n }\r\n}\r\n","import { motifError, reportWarning } from \"../common/diagnostics\";\nimport { IDisposable } from \"./IDisposable\";\nimport { disposableCore } from \"./DisposableCore\";\nimport { DisposableStore } from \"./DisposableStore\";\n\nlet closedStore: DisposableStore | undefined;\n\nfunction sharedClosedStore(): DisposableStore {\n if (closedStore === undefined) {\n closedStore = new DisposableStore();\n closedStore.dispose();\n }\n return closedStore;\n}\n\nexport abstract class Disposable implements IDisposable {\n\n private _store?: DisposableStore | null = undefined;\n\n protected get _disposables(): DisposableStore {\n let store = this._store;\n if (store === undefined) {\n store = this._store = new DisposableStore();\n disposableCore.notifyOwner(store, this);\n }\n return store as DisposableStore;\n }\n\n constructor() {\n disposableCore.notifyCreated(this);\n }\n\n public dispose(): void {\n const owned = this._store;\n if (owned === null) {\n reportWarning('MJX501', [], { disposable: this });\n return;\n }\n if (owned !== undefined && owned.isDisposed) return;\n disposableCore.notifyDisposed(this);\n if (owned === undefined) {\n this._store = sharedClosedStore();\n } else {\n owned.dispose();\n }\n }\n\n protected _register<T extends IDisposable>(item: T): T {\n if ((item as unknown) === this) {\n throw motifError('MJX502');\n }\n return this._disposables.add(item);\n }\n}\n","\r\n\r\nexport const Flags = {\r\n IS_REACTIVE: Symbol.for('motif.isReactive'),\r\n IS_READONLY: Symbol.for('motif.isReadonly'),\r\n IS_SUPERFICIAL: Symbol.for('motif.isSuperficial'),\r\n RAW: Symbol.for('motif.raw'),\r\n GET_SETUP: Symbol.for('motif.getSetup'),\r\n} as const;\r\n\r\nexport const enum TargetType {\r\n SYSTEM = 0,\r\n INVALID = SYSTEM,\r\n COMMON = 0b01,\r\n COLLECTION = 0b10\r\n}\r\n\r\nexport const ITERATE_KEY = Symbol('')\r\nexport let followTracking: boolean = true;\r\nexport let arrayScope: { enabled: boolean, key: string } = { enabled: false, key: '' };\r\n\r\n\r\nexport function getRaw<T>(value: T): T {\r\n let current = value;\r\n while (current && (current as any)[Flags.RAW]) {\r\n current = (current as any)[Flags.RAW];\r\n }\r\n return current;\r\n}\r\n\r\nexport function isReadonly(candidate: unknown): boolean {\r\n if (candidate == null) return false;\r\n return Boolean((candidate as any)[Flags.IS_READONLY]);\r\n}\r\n\r\nexport function hasOwn(target: object, key: PropertyKey): boolean {\r\n return Object.prototype.hasOwnProperty.call(target, key);\r\n}\r\n\r\nexport function isObject(value: unknown): value is Record<any, any> {\r\n return typeof value === 'object' && value !== null;\r\n}\r\n\r\nconst intrinsicSymbols: ReadonlySet<symbol> = new Set(\r\n Object.values(Object.getOwnPropertyDescriptors(Symbol))\r\n .map(descriptor => descriptor.value)\r\n .filter((value): value is symbol => typeof value === 'symbol')\r\n);\r\n\r\nexport function isIntrinsicSymbol(key: unknown): boolean {\r\n return typeof key === 'symbol' && intrinsicSymbols.has(key);\r\n}\r\n\r\nconst proxyableTags = new Map<string, TargetType>([\r\n ['[object Object]', TargetType.COMMON],\r\n ['[object Array]', TargetType.COMMON],\r\n ['[object Map]', TargetType.COLLECTION],\r\n ['[object Set]', TargetType.COLLECTION],\r\n ['[object WeakMap]', TargetType.COLLECTION],\r\n ['[object WeakSet]', TargetType.COLLECTION],\r\n]);\r\n\r\nexport function getTargetType(value: any): TargetType {\r\n var proto = Object.getPrototypeOf(value);\r\n var cname = \"\";\r\n if (proto && proto.constructor) {\r\n cname = proto.constructor.name;\r\n }\r\n if ((cname === \"Control\" || cname == \"RouteManager\" || cname == \"ServiceManager\")) {\r\n return TargetType.SYSTEM;\r\n }\r\n if (!Object.isExtensible(value)) {\r\n return TargetType.INVALID;\r\n }\r\n return proxyableTags.get(Object.prototype.toString.call(value)) ?? TargetType.INVALID;\r\n}\r\n\r\nconst canonicalIndex = /^(?:0|[1-9]\\d*)$/;\r\nexport const isNumericKey = (key: unknown): boolean =>\r\n typeof key === 'string' && canonicalIndex.test(key) && String(Number(key)) === key;\r\n\r\n\r\nconst savedTracking: boolean[] = [];\r\nlet trackingDepth = 0;\r\n\r\nfunction enterTracking(enabled: boolean) {\r\n savedTracking[trackingDepth++] = followTracking;\r\n followTracking = enabled;\r\n}\r\n\r\nexport function pauseTracking() {\r\n enterTracking(false);\r\n}\r\n\r\nexport function enableTracking() {\r\n enterTracking(true);\r\n}\r\n\r\nexport function resetTracking() {\r\n followTracking = trackingDepth > 0 ? savedTracking[--trackingDepth] : true;\r\n}\r\n\r\nconst arrayStack: { enabled: boolean, key: string }[] = []\r\n\r\n\r\nexport function addArrayStack(key: any) {\r\n arrayStack.push(arrayScope)\r\n arrayScope.enabled = true;\r\n arrayScope.key = key;\r\n}\r\nexport function removeArrayStack() {\r\n const last = arrayStack.pop();\r\n if (arrayStack.length > 0) {\r\n arrayScope = last === undefined ? { enabled: false, key: '' } : last;\r\n } else {\r\n arrayScope = { enabled: false, key: '' }\r\n }\r\n\r\n}\r\n\r\n\r\ndeclare const opaqueBrand: unique symbol\r\ndeclare const shallowBrand: unique symbol\r\n\r\ntype OpaqueState = Function | Map<any, any> | Set<any> | WeakMap<any, any> | WeakSet<any> | string | number | boolean | { [opaqueBrand]?: true }\r\n\r\ntype DeepState<T> = T extends OpaqueState ? T\r\n : T extends Array<any> ? { [Index in keyof T]: DeepState<T[Index]> }\r\n : T extends object & { [shallowBrand]?: never } ? { [Key in keyof T]: Key extends symbol ? T[Key] : DeepState<T[Key]> }\r\n : T\r\n\r\ninterface BoxedPrimitive<T> { value: T }\r\n\r\nexport type UnwrapValueRefs<T> = T extends number | string | boolean ? BoxedPrimitive<T> : DeepState<T>;\r\n\r\n\r\nexport var setupListener: any;\r\nexport var setupActive = false;\r\n\r\nexport function listenSetup(key: any) {\r\n setupListener = key;\r\n setupActive = true;\r\n}\r\n\r\nexport function closeSetup() {\r\n setupListener = null;\r\n setupActive = false;\r\n}","import { ComponentBase, motifFragment, resolveComponent } from \"../\";\nimport { effect, untracked } from \"../\";\nimport { getRaw } from \"../store/common\";\nimport { motifError, reportWarning } from \"../common/diagnostics\";\nimport { isListAdopted, noteListAdopted } from \"../component/componentBase\";\nimport { IBaseBinding } from \"./\";\n\n\nexport interface ListBindingOptions {\n reuse?: boolean;\n}\n\nexport class ListBinding implements IBaseBinding {\n propertyName: string = \"__list__\";\n dataSource: any;\n dataMember?: string | undefined;\n formatString?: string | undefined;\n converter?: ((value: any) => any) | undefined;\n converterBack?: ((value: any) => any) | undefined;\n updateMode?: \"onPropertyChanged\" | \"onValidation\" | \"never\" | undefined;\n private _isActive = false;\n private _effectCleanup?: () => void;\n private _rendered: ComponentBase[] = [];\n private _identityMap = new WeakMap<object, ComponentBase[]>();\n private container: ComponentBase = motifFragment('list-container');\n constructor(private component: ComponentBase,\n private itemsFn: () => any[] | Iterable<any>,\n private renderFn: (item: any, index: number) => ComponentBase,\n private options?: ListBindingOptions) {\n this.component.controls.add(this.container);\n\n }\n activate(): void { if (this._isActive) return; this._isActive = true; this._setupBinding(); }\n deactivate(): void {\n if (!this._isActive) return;\n this._isActive = false;\n if (this._effectCleanup) {\n this._effectCleanup();\n this._effectCleanup = undefined;\n }\n this._disposeAll();\n }\n reActivate(): void {\n\n this.deactivate();\n this.activate();\n }\n private _disposeAll() {\n this._rendered.forEach(c => { try { c.dispose && c.dispose(); } catch { } });\n this._rendered = [];\n this._identityMap = new WeakMap();\n }\n private _toArray(src: any): any[] {\n if (!src) return [];\n if (Array.isArray(src)) return src;\n if (typeof src === 'function') return this._toArray(src());\n if (src[Symbol.iterator]) return Array.from(src as Iterable<any>);\n return [];\n }\n private _getComponentKey(comp: ComponentBase): any {\n try {\n const p: any = (comp as any).props;\n if (p && typeof p.indexkey === 'function') {\n return p.indexkey();\n }\n if (p && typeof p.indexkey !== 'undefined' && p.indexkey !== null) {\n return p.indexkey;\n }\n } catch { }\n try {\n const k = (comp as any).motif.options?.__key;\n if (typeof k !== 'undefined') return k;\n } catch { }\n return undefined;\n }\n\n private isPreCreated(comp: ComponentBase): boolean {\n return comp.element !== null || comp.parent !== null;\n }\n\n private _render(item: any, idx: number): ComponentBase {\n return untracked(() => {\n const rendered = this.renderFn(item, idx);\n return this.processRendered(rendered, item);\n });\n }\n\n private processRendered(rendered: any, item: any): ComponentBase {\n const component: ComponentBase = resolveComponent(rendered);\n if (!(component instanceof ComponentBase)) {\n throw motifError('MJX201');\n }\n\n try { (component as any)._base.itemRef = item; } catch { }\n try { (component.motif.options as any).__fromList = true; } catch { }\n\n noteListAdopted(component);\n\n return component;\n }\n private olditems: any[] = [];\n\n private get _indexSensitive(): boolean {\n try { return this.renderFn.length >= 2; } catch { return true; }\n }\n\n private static _isPrimitive(v: any): boolean {\n return v === null || typeof v !== 'object';\n }\n\n private _setupBinding() {\n const update = () => {\n const source = this._toArray(this.itemsFn());\n const rawSource = getRaw(source);\n const count = source.length;\n let items: any[];\n if (rawSource === source) {\n items = source;\n } else {\n items = new Array(count);\n for (let i = 0; i < count; i++) {\n if (i in rawSource) items[i] = source[i];\n else void source[i];\n }\n }\n const prevItems = this.olditems;\n const prevComponents = this._rendered;\n if (this.olditems.length > 0) {\n const currentRaws = new Set<any>();\n for (let i = 0; i < count; i++) currentRaws.add(getRaw(items[i]));\n for (const old of this.olditems) {\n const raw = getRaw(old);\n if (!currentRaws.has(raw)) {\n const list = this._identityMap.get(raw);\n if (list) {\n this._identityMap.delete(raw);\n for (const component of list) {\n try { component.dispose(); } catch { }\n }\n }\n }\n }\n }\n\n const newComponents: ComponentBase[] = [];\n const usedComponents = new Set<ComponentBase>();\n const seenKeys = new Map<any, number>();\n\n const claimed = new Set<ComponentBase>();\n const positionalReuse = new Map<number, ComponentBase>();\n const isReusable = (c: ComponentBase | undefined): c is ComponentBase =>\n !!c && !c.isDisposed && !claimed.has(c) && !isListAdopted(c);\n\n const shared = Math.min(items.length, prevItems.length);\n for (let i = 0; i < shared; i++) {\n const it = items[i];\n if (!ListBinding._isPrimitive(it)) continue;\n if (!Object.is(prevItems[i], it)) continue;\n const comp = prevComponents[i];\n if (!isReusable(comp)) continue;\n positionalReuse.set(i, comp);\n claimed.add(comp);\n }\n\n let valuePool: Map<any, ComponentBase[]> | null = null;\n if (!this._indexSensitive) {\n valuePool = new Map<any, ComponentBase[]>();\n for (let i = 0; i < prevItems.length; i++) {\n const prev = prevItems[i];\n if (!ListBinding._isPrimitive(prev)) continue;\n const comp = prevComponents[i];\n if (!isReusable(comp)) continue;\n const queue = valuePool.get(prev);\n if (queue) queue.push(comp); else valuePool.set(prev, [comp]);\n }\n }\n\n const occurrences = new Map<object, number>();\n items.forEach((item, idx) => {\n let component: ComponentBase;\n if (typeof item === 'object' && item !== null) {\n const raw = getRaw(item);\n const occurrence = occurrences.get(raw) ?? 0;\n occurrences.set(raw, occurrence + 1);\n let list = this._identityMap.get(raw);\n if (!list) {\n list = [];\n this._identityMap.set(raw, list);\n }\n const existing = list[occurrence];\n if (existing && !existing.isDisposed) {\n component = existing;\n } else {\n component = this._render(item, idx);\n list[occurrence] = component;\n }\n }\n else {\n let reused = positionalReuse.get(idx);\n if (!reused && valuePool) {\n const queue = valuePool.get(item);\n if (queue && queue.length) {\n reused = queue.shift()!;\n claimed.add(reused);\n }\n }\n if (reused) {\n component = reused;\n } else {\n component = this._render(item, idx);\n }\n }\n const userKey = this._getComponentKey(component);\n if (userKey !== undefined && userKey !== null) {\n if (seenKeys.has(userKey)) {\n reportWarning('MJX202', [userKey, idx]);\n } else {\n seenKeys.set(userKey, idx);\n }\n }\n\n newComponents.push(component);\n usedComponents.add(component);\n });\n\n occurrences.forEach((count, raw) => {\n const list = this._identityMap.get(raw);\n if (list && list.length > count) list.length = count;\n });\n\n this._rendered.forEach(comp => {\n if (!usedComponents.has(comp) && !isListAdopted(comp)) {\n try { comp.dispose(); } catch { }\n }\n });\n\n this._syncContainer(newComponents);\n\n this._rendered = newComponents;\n this.olditems = items === source ? source.slice() : items;\n return count;\n };\n this._effectCleanup = effect(() => update());\n }\n\n private _syncContainer(newComponents: ComponentBase[]) {\n const controls = this.container.controls;\n const items = controls.items;\n\n if (items.length === 0) {\n for (const comp of newComponents) {\n try { controls.add(comp); } catch { }\n }\n return;\n }\n\n if (newComponents.length >= items.length) {\n let appendOnly = true;\n for (let i = 0; i < items.length; i++) {\n if (newComponents[i] !== items[i]) {\n appendOnly = false;\n break;\n }\n }\n\n if (appendOnly && newComponents.length > items.length) {\n const existing = new Set(items);\n for (let i = items.length; i < newComponents.length; i++) {\n if (existing.has(newComponents[i])) {\n appendOnly = false;\n break;\n }\n existing.add(newComponents[i]);\n }\n }\n\n if (appendOnly) {\n for (let i = items.length; i < newComponents.length; i++) {\n try { controls.add(newComponents[i]); } catch { }\n }\n return;\n }\n }\n\n const oldIndex = new Map<ComponentBase, number>();\n items.forEach((c, i) => oldIndex.set(c, i));\n const sources = newComponents.map(c => {\n const oi = oldIndex.get(c);\n return oi === undefined ? -1 : oi;\n });\n\n const stable = new Set(longestIncreasingIndices(sources));\n\n if (newComponents.length === items.length && isPermutation(sources, newComponents, this.container)) {\n controls._reorder(newComponents, stable);\n return;\n }\n\n let anchor: ComponentBase | null = null;\n for (let i = newComponents.length - 1; i >= 0; i--) {\n const comp = newComponents[i];\n try {\n if (sources[i] === -1) {\n if (anchor) {\n const at = items.indexOf(anchor);\n controls.add(at >= 0 ? at : items.length, comp);\n } else {\n controls.add(comp);\n }\n } else if (!stable.has(i)) {\n controls.move(comp, anchor);\n }\n } catch { }\n anchor = comp;\n }\n }\n}\n\nfunction isPermutation(sources: number[], components: ComponentBase[], owner: ComponentBase): boolean {\n const seen = new Uint8Array(sources.length);\n for (let i = 0; i < sources.length; i++) {\n const s = sources[i];\n if (s === -1 || seen[s]) return false;\n seen[s] = 1;\n const c = components[i];\n if (c.isDisposed || c.parent !== owner) return false;\n }\n return true;\n}\n\nfunction longestIncreasingIndices(sources: number[]): number[] {\n const predecessors = new Array<number>(sources.length).fill(-1);\n const tails: number[] = [];\n\n for (let i = 0; i < sources.length; i++) {\n const v = sources[i];\n if (v === -1) continue;\n if (tails.length === 0 || sources[tails[tails.length - 1]] < v) {\n predecessors[i] = tails.length > 0 ? tails[tails.length - 1] : -1;\n tails.push(i);\n continue;\n } \n let lo = 0, hi = tails.length - 1;\n while (lo < hi) {\n const mid = (lo + hi) >> 1;\n if (sources[tails[mid]] < v) lo = mid + 1; else hi = mid;\n }\n if (v < sources[tails[lo]]) {\n predecessors[i] = lo > 0 ? tails[lo - 1] : -1;\n tails[lo] = i;\n }\n }\n\n const result: number[] = [];\n let u = tails.length > 0 ? tails[tails.length - 1] : -1;\n while (u !== -1) {\n result.push(u);\n u = predecessors[u];\n }\n return result.reverse();\n}","import { ControlCollection, dom, Disposable, IClass, IDisposable, Application, isExactMatch, startsWithPath, reactive, safeCallSilent, safeCallSilentAsync, safeCall, safeCallAsync } from \"..\";\r\nimport { ServiceProvider } from \"..\";\r\nimport { BindingCollection, IBaseBinding } from \"../bindings\";\r\nimport { effect } from \"../store/reactivity-core\";\r\nimport { ComponentEmiter } from \"./ComponentEmiter\";\r\nimport { controlAttribute } from \"./controlAttribute\";\r\nimport { controlClass } from \"./controlClass\";\r\nimport { ComponentBaseOptions, ElementType, EventArgs, HtmlElementEvents, OptionalParams, RouterClassingSettings, shimAnimation, VisibilityChangedEventArgs } from \"./types\";\r\nimport { UnwrapValueRefs } from \"../store/common\";\r\nimport { getTransitionInfo, runCssTransition, TransitionProps } from \"../common/transition\";\r\nimport { callReported, motifError, reportError, reportWarning } from \"../common/diagnostics\";\r\nimport { ComponentMotif } from \"./ComponentMotif\";\r\nimport { pinServiceOwner, recordServiceOwner, retireServiceOwner, unpinServiceOwner } from \"../dependencyInjection/ServiceProvider\";\r\nimport { contentBlocks as liveContentBlocks } from \"./contentBlockRegistry\";\r\nimport { OPTIONS_OWNER, TRANSITION_SLOT } from \"./optionsSlots\";\r\nimport { deferUntilEntered, isTransitionMode, pendingLeaves, trackEnter, trackLeave, transitionSettings, TransitionMode } from \"../common/transitionRegistry\";\r\nimport { lazyBindMethods } from \"../common/lazyBind\";\r\nimport { trackedCleanup } from \"../disposable/Cleanup\";\r\nimport type { MotifDomEventProps } from \"../jsx-runtime\";\r\nimport { devtools, isDevLike } from \"../devtools/devbus\";\r\n\r\n/** DI token'ını okunur biçime çevirir (dev uyarıları için). */\r\nfunction describeServiceToken(t: any): string {\r\n if (typeof t === 'string') return t;\r\n if (typeof t === 'symbol') return t.toString();\r\n if (typeof t === 'function') return t.name || '[AnonymousClass]';\r\n return String(t);\r\n}\r\n\r\ntype TransitionApi = ComponentBaseOptions<any>['transition'];\r\n\r\nconst F_BUILT = 1;\r\nconst F_INITIALIZED = 2;\r\nconst F_DISPOSED = 4;\r\nconst F_CONFIGURED = 8;\r\nconst F_PAINTING = 16;\r\nconst F_PAINTED = 32;\r\nconst F_HIDDEN = 64;\r\nconst F_WAIT = 128;\r\nconst F_POSTCONFIG = 256;\r\nconst F_PREBOUND = 512;\r\nconst F_DISPOSED_FIRED = 1024;\r\nconst F_BUILDING = 2048;\r\nconst F_LIST_SEEN = 4096;\r\nconst F_LIST_ADOPTED = 8192;\r\n\r\nfunction optionsOf(c: any): any {\r\n return c?._motif?.options;\r\n}\r\n\r\nfunction peekTransition(c: any): TransitionApi | undefined {\r\n return c?._motif?.options?.[TRANSITION_SLOT];\r\n}\r\n\r\n/**WAAPI keyframe (transitionIn) YA DA CSS class transition (name/classes) tanımlı olarak enter animasyonu varmı */\r\nfunction clearNavDirection(c: any): void {\r\n const t = peekTransition(c);\r\n if (!t?._markedDirection) return;\r\n t._markedDirection = false;\r\n try { (c.element as any)?.removeAttribute?.('data-nav-direction'); } catch { }\r\n}\r\n\r\nfunction enterModeOf(container: any): TransitionMode {\r\n let c = container;\r\n while (c) {\r\n const mode = peekTransition(c)?.mode;\r\n if (mode) return mode;\r\n const node = c.element as Node | null;\r\n if (!node || node.nodeType !== Node.COMMENT_NODE) break;\r\n c = c.parent ?? c._baseCtx?._leaveContainer;\r\n }\r\n return transitionSettings.mode;\r\n}\r\n\r\nfunction leaveModeOf(c: any): TransitionMode {\r\n return enterModeOf(c.parent ?? c._baseCtx?._leaveContainer);\r\n}\r\n\r\nfunction wantsEnterTransition(c: any): boolean {\r\n const o = c?._motif?.options;\r\n const t = o?.[TRANSITION_SLOT];\r\n return !!(o?.transitionIn || (t && (t.classes || (t.name && t.name.length > 0))));\r\n}\r\n\r\nfunction createTransitionApi(owner: ComponentBase): TransitionApi {\r\n const cur = (): TransitionApi => (owner.motif.options as any)?.[TRANSITION_SLOT] ?? t;\r\n const t: TransitionApi = {\r\n transitionInfo: () => {\r\n const s = cur();\r\n return {\r\n in: getTransitionInfo(owner.element as Element, `${s.name}-enter ${s.name}-enter-start`),\r\n out: getTransitionInfo(owner.element as Element, `${s.name}-leave ${s.name}-leave-start`),\r\n }\r\n },\r\n name: '',\r\n mode: undefined as TransitionMode | undefined,\r\n classes: undefined as TransitionProps | undefined,\r\n activeCssCancel: null as (() => void) | null,\r\n activeCssPhase: null as ('enter' | 'leave' | null),\r\n cssProps: (): TransitionProps | null => {\r\n const s = cur();\r\n if (s.classes) {\r\n return { name: s.classes.name || s.name || '', ...s.classes };\r\n }\r\n if (s.name && s.name.length > 0) {\r\n return { name: s.name };\r\n }\r\n return null;\r\n },\r\n skipNextLeave: false,\r\n _suppressEnter: false,\r\n _markedDirection: false,\r\n in: (op) => {\r\n owner.motif.options.transitionIn = op;\r\n },\r\n out: (op) => {\r\n owner.motif.options.transitionOut = op;\r\n },\r\n enterTransition: (resolve: () => void): Animation => {\r\n const s = cur();\r\n const base = (owner as any)._base;\r\n const appear = !base._enterPlayed;\r\n base._enterPlayed = true;\r\n base._enterSeq = (base._enterSeq ?? 0) + 1;\r\n if (s._suppressEnter) {\r\n resolve && resolve();\r\n return shimAnimation as Animation;\r\n }\r\n const attempt = {};\r\n base._enterRun = attempt;\r\n const enter = trackEnter(owner.element as unknown as Node, () => {\r\n if ((owner as any)._base?._enterRun === attempt) {\r\n (owner as any)._base._enterRun = null;\r\n clearNavDirection(owner);\r\n }\r\n resolve && resolve();\r\n }, owner.motif.options.placeholder as Node | undefined);\r\n const transitionIn = owner.motif.options.transitionIn;\r\n const animation = transitionIn\r\n ? s.run(transitionIn.keyframes, transitionIn.options, enter.done)\r\n : s._runCss('enter', enter.done, appear);\r\n if (animation && animation !== (shimAnimation as unknown as Animation) && typeof (animation as any).addEventListener === 'function') {\r\n (animation as any).addEventListener('cancel', enter.release);\r\n }\r\n return animation;\r\n },\r\n leaveTransition: (resolve: () => void): Animation => {\r\n const s = cur();\r\n const node = owner.element as unknown as Node;\r\n const leave = trackLeave(node, resolve);\r\n const play = (): Animation => {\r\n const transitionOut = owner.motif.options?.transitionOut;\r\n const animation = transitionOut\r\n ? s.run(transitionOut.keyframes, transitionOut.options, leave.done)\r\n : s._runCss('leave', leave.done);\r\n if (animation && animation !== (shimAnimation as unknown as Animation) && typeof (animation as any).addEventListener === 'function') {\r\n (animation as any).addEventListener('cancel', leave.release);\r\n }\r\n return animation;\r\n };\r\n if (leave.finished && leaveModeOf(owner) === 'in-out') {\r\n return deferUntilEntered(node, leave, play);\r\n }\r\n return play();\r\n },\r\n _runCss: (phase: 'enter' | 'leave', resolve: () => void, appear: boolean = false): Animation => {\r\n const s = cur();\r\n if (phase === 'enter' && s.activeCssPhase === 'leave') {\r\n resolve && resolve();\r\n return shimAnimation as Animation;\r\n }\r\n const cssProps = s.cssProps();\r\n const el = owner.element as unknown as Element | null;\r\n if (cssProps && el && (el as any).nodeType === 1 && (el as any).classList) {\r\n try { s.activeCssCancel?.(); } catch { }\r\n const cancel = runCssTransition(el, cssProps, phase, () => {\r\n s.activeCssCancel = null;\r\n s.activeCssPhase = null;\r\n resolve && resolve();\r\n }, appear);\r\n s.activeCssCancel = cancel;\r\n s.activeCssPhase = phase;\r\n return shimAnimation as Animation;\r\n }\r\n resolve && resolve();\r\n return shimAnimation as Animation;\r\n },\r\n activeAnimations: [] as Animation[],\r\n run: (keyframes, options, resolve) => {\r\n const s = cur();\r\n owner.motif.stopAnimations();\r\n\r\n const element = owner.element as unknown as HTMLElement;\r\n\r\n if (element.animate) {\r\n var x = element.animate(keyframes, options);\r\n s.activeAnimations.push(x);\r\n\r\n let cleanedUp = false;\r\n const safeCleanup = () => {\r\n if (cleanedUp) return;\r\n cleanedUp = true;\r\n try {\r\n if (s.activeAnimations) {\r\n s.activeAnimations = s.activeAnimations.filter(a => a !== x);\r\n }\r\n } catch { }\r\n };\r\n\r\n x.addEventListener('finish', () => {\r\n resolve && resolve();\r\n safeCleanup();\r\n });\r\n\r\n x.oncancel = () => {\r\n safeCleanup();\r\n };\r\n return x;\r\n }\r\n else {\r\n resolve && resolve();\r\n const g: any = (globalThis as any);\r\n if (typeof g.Animation === 'function') {\r\n try { return new g.Animation(); } catch { /* ignore */ }\r\n }\r\n\r\n return shimAnimation as Animation;\r\n }\r\n }\r\n };\r\n return t;\r\n}\r\n\r\nclass ComponentOptionsImpl {\r\n [OPTIONS_OWNER]: ComponentBase;\r\n [TRANSITION_SLOT]?: TransitionApi;\r\n\r\n constructor(owner: ComponentBase) {\r\n this[OPTIONS_OWNER] = owner;\r\n }\r\n\r\n get transition(): TransitionApi {\r\n return this[TRANSITION_SLOT] ??= createTransitionApi(this[OPTIONS_OWNER]);\r\n }\r\n\r\n set transition(value: TransitionApi) {\r\n this[TRANSITION_SLOT] = value;\r\n }\r\n\r\n set enableRouterClassing(value: RouterClassingSettings) {\r\n try {\r\n const ins = this[OPTIONS_OWNER];\r\n const off = contextApplication(ins)!.onRouterChanged(() => {\r\n ComponentHelper.routerClassing.call(ins, value);\r\n });\r\n if (ins.isDisposed) { off(); return; }\r\n ins.motif.register(trackedCleanup(off));\r\n ComponentHelper.routerClassing.call(ins, value);\r\n } catch (error) {\r\n reportError('MJX105', error);\r\n }\r\n }\r\n\r\n getInstance(): ComponentBase {\r\n return this[OPTIONS_OWNER];\r\n }\r\n\r\n get display(): boolean {\r\n return this[OPTIONS_OWNER].isVisible;\r\n }\r\n\r\n set display(value: boolean) {\r\n if (value) {\r\n this[OPTIONS_OWNER].motif.show();\r\n } else {\r\n this[OPTIONS_OWNER].motif.hide();\r\n }\r\n }\r\n\r\n hasEvent(name: string): boolean {\r\n return hasEventKey(this[OPTIONS_OWNER], name);\r\n }\r\n}\r\nlazyBindMethods(ComponentOptionsImpl.prototype, ['getInstance', 'hasEvent']);\r\n\r\n\r\n\r\n\r\nexport type IBaseProp<T extends any> = OptionalParams<T> & MotifDomEventProps & {\r\n childs?: any[];\r\n options?: any;\r\n onElementCreating?(): any;\r\n initializeComponent?(sender: ComponentBase): void;\r\n onBuilding?(sender: ComponentBase, e: EventArgs): void;\r\n onBuilt?(sender: ComponentBase, e: EventArgs): void;\r\n onMounted?(sender: ComponentBase, e: EventArgs): void;\r\n onInitializing?(sender: ComponentBase, e: EventArgs): void;\r\n onInitialized?(sender: ComponentBase, e: EventArgs): void;\r\n onDisposing?(sender: ComponentBase, e: EventArgs): void;\r\n onDisposed?(sender: ComponentBase, e: EventArgs): void;\r\n onConfig?(sender: ComponentBase, e: EventArgs): void;\r\n onConfigured?(sender: ComponentBase, e: EventArgs): void;\r\n onVisibilityChanged?(sender: ComponentBase, e: VisibilityChangedEventArgs): void;\r\n onActivated?(sender: ComponentBase, e: EventArgs): void;\r\n onDeactivated?(sender: ComponentBase, e: EventArgs): void;\r\n runover?: {\r\n initializeComponent?: (sender: ComponentBase) => void;\r\n }\r\n [key: string]: any;\r\n};\r\n\r\ntype LifecycleHandler = (sender: ComponentBase, e: EventArgs) => void;\r\ntype HookSlot = LifecycleHandler | LifecycleHandler[];\r\ninterface LifecycleStorage {\r\n _initializeComponentHandlers?: HookSlot;\r\n _onInitializeComponentHandlers?: HookSlot;\r\n _onBuildingHandlers?: HookSlot;\r\n _onBuiltHandlers?: HookSlot;\r\n _onMountedHandlers?: HookSlot;\r\n _onInitializingHandlers?: HookSlot;\r\n _onInitializedHandlers?: HookSlot;\r\n _onConfigHandlers?: HookSlot;\r\n _onConfiguredHandlers?: HookSlot;\r\n _onVisibilityChangedHandlers?: HookSlot;\r\n _onActivatedHandlers?: HookSlot;\r\n _onDeactivatedHandlers?: HookSlot;\r\n _onDisposingHandlers?: HookSlot;\r\n _onDisposedHandlers?: HookSlot;\r\n}\r\ninterface BaseCtx extends LifecycleStorage {\r\n owner: ComponentBase;\r\n prebinding_Activated: boolean;\r\n _offAll: () => void;\r\n _deactivateBindings: () => void;\r\n _activateBindings: () => void;\r\n _activatePreBindings: () => void;\r\n _reactivateBindings: () => void;\r\n _detachDomWithAnimation: () => void;\r\n _detachDomWithAnimationAsync: () => Promise<void>;\r\n _disposeShallow: () => void;\r\n _deepCleanup: () => void;\r\n emiters: ComponentEmiter;\r\n _emiters?: ComponentEmiter;\r\n itemRef?: any;\r\n [key: string]: any;\r\n}\r\n\r\nfunction fireLifecycle(component: any, name: string, ev: EventArgs): void {\r\n const base = component._baseCtx;\r\n if (base) base._emiters?.fire(name, ev);\r\n}\r\n\r\nfunction runHooks(base: any, listName: keyof LifecycleStorage, sender: any, ev: EventArgs, label: string): void {\r\n if (!base) return;\r\n let slot: HookSlot | undefined = base[listName];\r\n if (!slot) return;\r\n let from = 0;\r\n if (typeof slot === 'function') {\r\n const fn = slot;\r\n callReported(() => fn(sender, ev), 'MJX122', label);\r\n slot = base[listName];\r\n if (!Array.isArray(slot)) return;\r\n from = 1;\r\n }\r\n for (let i = from; i < slot.length; i++) {\r\n const fn = slot[i];\r\n callReported(() => fn(sender, ev), 'MJX122', label);\r\n }\r\n}\r\n\r\nfunction hasLifecycleHook(component: any, hook: string, listName: keyof LifecycleStorage, lowerName: string): boolean {\r\n if (component[hook]) return true;\r\n const base = component._baseCtx;\r\n if (base?.[listName]) return true;\r\n return !!base?._emiters?.hasListeners(lowerName);\r\n}\r\n\r\nconst RESERVED_METHODS = ['build', 'setState', 'reState', 'setText', 'style', 'dispose', 'disposeAsync', 'using', 'doWork', 'getService', '$', 'useModel', 'context', 'siblings', 'serviceProvider', 'isWait'];\r\nconst checkedComponentClasses = new WeakSet<Function>();\r\n\r\nfunction callsSuper(fn: unknown, name: string): boolean {\r\n if (typeof fn !== 'function') return false;\r\n const escaped = name.replace(/\\$/g, '\\\\$');\r\n return new RegExp(`\\\\bsuper\\\\s*(\\\\.\\\\s*${escaped}(?![\\\\w$])|\\\\[)`).test(Function.prototype.toString.call(fn));\r\n}\r\n\r\nfunction reservedMemberProblems(c: ComponentBase): Array<[string, 'method' | 'field' | 'replaced']> {\r\n const problems: Array<[string, 'method' | 'field' | 'replaced']> = [];\r\n const own = (o: object, k: string) => Object.prototype.hasOwnProperty.call(o, k);\r\n for (const name of RESERVED_METHODS) {\r\n if (own(c, name)) { problems.push([name, 'field']); continue; }\r\n for (let p = Object.getPrototypeOf(c); p && p !== ComponentBase.prototype; p = Object.getPrototypeOf(p)) {\r\n const d = Object.getOwnPropertyDescriptor(p, name);\r\n if (!d) continue;\r\n const fns = 'value' in d ? [d.value] : [d.get, d.set].filter(Boolean);\r\n if (!fns.some(fn => callsSuper(fn, name))) problems.push([name, 'method']);\r\n break;\r\n }\r\n }\r\n const anyC = c as any;\r\n if (!(anyC.motif instanceof ComponentMotif)) problems.push(['motif', 'replaced']);\r\n if (!(anyC.controls instanceof ControlCollection)) problems.push(['controls', 'replaced']);\r\n if (!(anyC.class instanceof controlClass)) problems.push(['class', 'replaced']);\r\n if (!(anyC.attr instanceof controlAttribute)) problems.push(['attr', 'replaced']);\r\n if (!(anyC.bindings instanceof BindingCollection)) problems.push(['bindings', 'replaced']);\r\n if (anyC.element != null && typeof Node !== 'undefined' && !(anyC.element instanceof Node)) problems.push(['element', 'replaced']);\r\n if (anyC.parent != null && !(anyC.parent instanceof ComponentBase)) problems.push(['parent', 'replaced']);\r\n return problems;\r\n}\r\n\r\nexport function checkReservedMembers(c: ComponentBase): void {\r\n if (!isDevLike()) return;\r\n const ctor = (c as any)?.constructor;\r\n if (typeof ctor !== 'function' || checkedComponentClasses.has(ctor)) return;\r\n checkedComponentClasses.add(ctor);\r\n const name = ctor.name || 'An anonymous component class';\r\n for (const [member, how] of reservedMemberProblems(c)) {\r\n reportWarning('MJX128', [name, member, how]);\r\n }\r\n}\r\n\r\nfunction releaseInitializers(c: any): void {\r\n c._init = undefined;\r\n const base = c._baseCtx;\r\n if (base === undefined) return;\r\n if (base._initializeComponentHandlers !== undefined) base._initializeComponentHandlers = undefined;\r\n if (base._onInitializeComponentHandlers !== undefined) base._onInitializeComponentHandlers = undefined;\r\n}\r\n\r\nconst ComponentHelper = {\r\n callInitializeComponent(component: ComponentBase | any) {\r\n const sender = component;\r\n const ev = { cancel: false } as EventArgs;\r\n if (!component || component.isDisposed) { return; }\r\n // 1) class method initializeComponent\r\n if (typeof component.initializeComponent === 'function') {\r\n callReported(() => component.initializeComponent(sender, ev), 'MJX122', 'initializeComponent');\r\n }\r\n // 2) aggregated extra initializeComponent handlers (örn, from props)\r\n const compiled = component._init;\r\n if (compiled) {\r\n callReported(() => compiled(sender, ev), 'MJX122', 'initializeComponent');\r\n }\r\n runHooks(component._baseCtx, '_initializeComponentHandlers', sender, ev, 'initializeComponent');\r\n // 3) class method oninitializeComponent \r\n if (typeof component.oninitializeComponent === 'function') {\r\n callReported(() => component.oninitializeComponent(sender, ev), 'MJX122', 'oninitializeComponent');\r\n }\r\n // 4) aggregated extra oninitializeComponent handlers (örn, from props)\r\n runHooks(component._baseCtx, '_onInitializeComponentHandlers', sender, ev, 'oninitializeComponent');\r\n releaseInitializers(component);\r\n },\r\n callDisposing(component: ComponentBase | any) {\r\n if (!component || component.isDisposed) { return; }\r\n if (!hasLifecycleHook(component, 'onDisposing', '_onDisposingHandlers', 'ondisposing')) { return; }\r\n const sender = component, ev = { cancel: false } as EventArgs;\r\n if (component.onDisposing) {\r\n callReported(() => component.onDisposing(sender, ev), 'MJX122', 'onDisposing');\r\n }\r\n runHooks(component._baseCtx, '_onDisposingHandlers', sender, ev, 'onDisposing');\r\n fireLifecycle(component, 'ondisposing', ev);\r\n },\r\n callActivated(component: ComponentBase | any) {\r\n if (!component || component.isDisposed) { return; }\r\n const sender = component, ev = { cancel: false } as EventArgs;\r\n if (component.onActivated) { callReported(() => component.onActivated(sender, ev), 'MJX122', 'onActivated'); }\r\n runHooks(component._baseCtx, '_onActivatedHandlers', sender, ev, 'onActivated');\r\n fireLifecycle(component, 'onactivated', ev);\r\n },\r\n callDeactivated(component: ComponentBase | any) {\r\n if (!component || component.isDisposed) { return; }\r\n const sender = component, ev = { cancel: false } as EventArgs;\r\n if (component.onDeactivated) { callReported(() => component.onDeactivated(sender, ev), 'MJX122', 'onDeactivated'); }\r\n runHooks(component._baseCtx, '_onDeactivatedHandlers', sender, ev, 'onDeactivated');\r\n fireLifecycle(component, 'ondeactivated', ev);\r\n },\r\n deactivateTree(component: ComponentBase | any, deep: boolean = true) {\r\n if (!component || component.isDisposed || !component.isBuilt || !component._base || component._base._inactive) { return; }\r\n component._base._inactive = true;\r\n ComponentHelper.callDeactivated(component);\r\n if (!deep || component.isDisposed) { return; }\r\n for (const c of childrenOf(component).slice()) {\r\n if (c && !c.isDisposed && c.isVisible && !c.isWait) {\r\n ComponentHelper.deactivateTree(c, true);\r\n }\r\n }\r\n },\r\n activateTree(component: ComponentBase | any, deep: boolean = true) {\r\n if (!component || component.isDisposed || !component._base || !component._base._inactive) { return; }\r\n component._base._inactive = false;\r\n ComponentHelper.callActivated(component);\r\n if (!deep || component.isDisposed) { return; }\r\n for (const c of childrenOf(component).slice()) {\r\n if (c && !c.isDisposed && c.isVisible && !c.isWait) {\r\n ComponentHelper.activateTree(c, true);\r\n }\r\n }\r\n },\r\n callDisposed(component: ComponentBase | any) {\r\n if (!component || (component._flags & F_DISPOSED_FIRED) !== 0) { return; }\r\n if (component.isDisposed && !component.element && component._baseCtx === undefined) { return; }\r\n component._flags |= F_DISPOSED_FIRED;\r\n if (hasLifecycleHook(component, 'onDisposed', '_onDisposedHandlers', 'ondisposed')) {\r\n const sender = component, ev = { cancel: false } as EventArgs;\r\n if (component.onDisposed) { callReported(() => component.onDisposed(sender, ev), 'MJX122', 'onDisposed'); }\r\n runHooks(component._baseCtx, '_onDisposedHandlers', sender, ev, 'onDisposed');\r\n fireLifecycle(component, 'ondisposed', ev);\r\n }\r\n try { devtools()?.('component:disposed', { id: (component as any).id, type: component.constructor?.name }); } catch { }\r\n },\r\n callBuilt(component: ComponentBase | any) {\r\n if (!component || component.isDisposed) { return; }\r\n if (hasLifecycleHook(component, 'onBuilt', '_onBuiltHandlers', 'onbuilt')) {\r\n const sender = component, ev = { cancel: false } as EventArgs;\r\n if (component.onBuilt) { callReported(() => component.onBuilt(sender, ev), 'MJX122', 'onBuilt'); }\r\n runHooks(component._baseCtx, '_onBuiltHandlers', sender, ev, 'onBuilt');\r\n fireLifecycle(component, 'onbuilt', ev);\r\n }\r\n try { devtools()?.('component:mounted', { id: (component as any).id, type: component.constructor?.name }); } catch { }\r\n },\r\n scheduleMounted(component: ComponentBase | any) {\r\n if (!component || component.isDisposed || component._baseCtx?._mountedScheduled) { return; }\r\n const hasHook = typeof component.onMounted === 'function'\r\n || !!component._baseCtx?._onMountedHandlers;\r\n if (!hasHook) { return; }\r\n component._base._mountedScheduled = true;\r\n const el = component.element as Element | null;\r\n if (!el || typeof (el as any).nodeType !== 'number') { return; }\r\n const stop = onElementAttached(el, () => {\r\n if (component.isDisposed) { return; }\r\n ComponentHelper.callMounted(component);\r\n });\r\n if (stop) {\r\n component._register(trackedCleanup(stop));\r\n }\r\n },\r\n callMounted(component: ComponentBase | any) {\r\n if (!component || component.isDisposed || component._base._mountedFired) { return; }\r\n component._base._mountedFired = true;\r\n const sender = component, ev = { cancel: false } as EventArgs;\r\n if (component.onMounted) { callReported(() => component.onMounted(sender, ev), 'MJX122', 'onMounted'); }\r\n runHooks(component._baseCtx, '_onMountedHandlers', sender, ev, 'onMounted');\r\n fireLifecycle(component, 'onmounted', ev);\r\n },\r\n callBuilding(component: ComponentBase | any) {\r\n if (!component || component.isDisposed) { return; }\r\n if (!hasLifecycleHook(component, 'onBuilding', '_onBuildingHandlers', 'onbuilding')) { return; }\r\n const sender = component, ev = { cancel: false } as EventArgs;\r\n if (component.onBuilding) { callReported(() => component.onBuilding(sender, ev), 'MJX122', 'onBuilding'); }\r\n runHooks(component._baseCtx, '_onBuildingHandlers', sender, ev, 'onBuilding');\r\n fireLifecycle(component, 'onbuilding', ev);\r\n },\r\n callConfig(component: ComponentBase | any) {\r\n if (!component || component.isDisposed || component.isConfigured) { return; }\r\n component.isConfigured = true;\r\n\r\n const preconfig = component._motif?.options?._preconfig;\r\n if (preconfig) {\r\n safeCallSilent(() => preconfig(component), 'Component._preconfig');\r\n }\r\n\r\n if (!hasLifecycleHook(component, 'onConfig', '_onConfigHandlers', 'onconfig')) { return; }\r\n const sender = component, ev = { cancel: false } as EventArgs;\r\n if (component.onConfig) { callReported(() => component.onConfig(sender, ev), 'MJX122', 'onConfig'); }\r\n runHooks(component._baseCtx, '_onConfigHandlers', sender, ev, 'onConfig');\r\n fireLifecycle(component, 'onconfig', ev);\r\n },\r\n callConfigured(component: ComponentBase | any) {\r\n if ((component._flags & F_POSTCONFIG) !== 0) {\r\n return;\r\n }\r\n if (component?._baseCtx?._configDeferred && !component.isConfigured) {\r\n ComponentHelper.callConfig(component);\r\n }\r\n component._flags |= F_POSTCONFIG;\r\n if (!component || component.isDisposed) { return; }\r\n if (!hasLifecycleHook(component, 'onConfigured', '_onConfiguredHandlers', 'onconfigured')) { return; }\r\n const sender = component, ev = { cancel: false } as EventArgs;\r\n if (component.onConfigured) { callReported(() => component.onConfigured(sender, ev), 'MJX122', 'onConfigured'); }\r\n runHooks(component._baseCtx, '_onConfiguredHandlers', sender, ev, 'onConfigured');\r\n fireLifecycle(component, 'onconfigured', ev);\r\n },\r\n callOnInitialized(component: ComponentBase | any) {\r\n if (!component || component.isDisposed) { return; }\r\n component.isInitialized = true;\r\n if (!hasLifecycleHook(component, 'onInitialized', '_onInitializedHandlers', 'oninitialized')) { return; }\r\n const sender = component, ev = { cancel: false } as EventArgs;\r\n if (component.onInitialized) { callReported(() => component.onInitialized(sender, ev), 'MJX122', 'onInitialized'); }\r\n runHooks(component._baseCtx, '_onInitializedHandlers', sender, ev, 'onInitialized');\r\n fireLifecycle(component, 'oninitialized', ev);\r\n },\r\n callOnInitializing(component: ComponentBase | any) {\r\n if (!component || component.isDisposed) { return; }\r\n if (!hasLifecycleHook(component, 'onInitializing', '_onInitializingHandlers', 'oninitializing')) { return; }\r\n const sender = component, ev = { cancel: false } as EventArgs;\r\n if (component.onInitializing) { callReported(() => component.onInitializing(sender, ev), 'MJX122', 'onInitializing'); }\r\n runHooks(component._baseCtx, '_onInitializingHandlers', sender, ev, 'onInitializing');\r\n fireLifecycle(component, 'oninitializing', ev);\r\n },\r\n callVisibilityChanged(component: ComponentBase | any, visible: boolean) {\r\n if (!component || component.isDisposed) { return; }\r\n if (!hasLifecycleHook(component, 'onVisibilityChanged', '_onVisibilityChangedHandlers', 'onvisibilitychanged')) { return; }\r\n const sender = component, ev: VisibilityChangedEventArgs = { cancel: false, visible };\r\n if (component.onVisibilityChanged) { callReported(() => component.onVisibilityChanged(sender, ev), 'MJX122', 'onVisibilityChanged'); }\r\n runHooks(component._baseCtx, '_onVisibilityChangedHandlers', sender, ev, 'onVisibilityChanged');\r\n fireLifecycle(component, 'onvisibilitychanged', ev);\r\n },\r\n findFragmentContent(c: ComponentBase) {\r\n const controlElement = c.element.nodeType == Node.COMMENT_NODE\r\n ? c.motif.options.cache\r\n : c.element as unknown as Node;\r\n\r\n if (c.element.nodeType == Node.COMMENT_NODE && controlElement?.childNodes.length == 0 && c.controls.length > 0) {\r\n c.motif.options.cache?.appendChild(c.element);\r\n c.controls.forEach(child => {\r\n c.motif.options.cache?.appendChild(child.element as unknown as Node);\r\n });\r\n c.motif.options.cache?.appendChild(c.motif.options.closeFragment!);\r\n }\r\n },\r\n backgroundCallback(callback: () => any) {\r\n callback();\r\n // if (!requestIdleCallback) {\r\n // if (!requestAnimationFrame) {\r\n // } else {\r\n\r\n // } else {\r\n },\r\n internalBuild(this: ComponentBase, c: ComponentBase) {\r\n if (this.isDisposed || c?.isDisposed) { return; }\r\n ComponentHelper.callConfigured(c);\r\n if (c.isDisposed) return;\r\n activatePreBindings(c);\r\n if (c.isWait) {\r\n if (this.isBuilt) placeTrace(this, c);\r\n return;\r\n }\r\n const cisBuilt = c.isBuilt;\r\n if (!this.isBuilt) {\r\n return;\r\n }\r\n if (c.isWait) {\r\n return;\r\n }\r\n const enterSeq = (c as any)._baseCtx?._enterSeq;\r\n if (!c.isBuilt) {\r\n c.build();\r\n } else if (c.parent != this) {\r\n c.parent?.controls.detach(c);\r\n c.parent = this;\r\n const pendingLeave = (c as any).__pendingLeave;\r\n if (pendingLeave) {\r\n pendingLeave.promise.then(() => {\r\n if (this.isDisposed || c.isDisposed || c.parent !== this) return;\r\n ComponentHelper.internalBuild.call(this, c);\r\n });\r\n return;\r\n }\r\n }\r\n\r\n\r\n if (c.isDisposed || this.isDisposed) return;\r\n c.parent = this;\r\n\r\n const ownItems = this.controls.items;\r\n const currentIndex = ownItems.length > 0 && ownItems[ownItems.length - 1] === c ? ownItems.length - 1 : ownItems.indexOf(c);\r\n\r\n const appendableElement = findAppendableComponent(this);\r\n var controlElement = (c.element as Node).nodeType == Node.COMMENT_NODE\r\n ? c.motif.options.cache\r\n : c.element as unknown as Node;\r\n\r\n\r\n if (cisBuilt && (c.element as Node).nodeType == Node.COMMENT_NODE && controlElement?.childNodes.length == 0 && c.controls.length > 0) {\r\n\r\n controlElement = ComponentHelper.getContent.call(c) as Node;\r\n }\r\n\r\n const insertHost = appendableElement?.element as Node | undefined;\r\n const trace = c.motif.options.placeholder as Node | undefined;\r\n const ownTrace = c.isVisible && trace && insertHost && trace.parentNode === insertHost ? trace : null;\r\n const referenceNode: Node | null = ownTrace ?? (insertHost ? followingAnchor(this, currentIndex + 1, insertHost) : null);\r\n\r\n if (!c.isVisible) {\r\n if (keepsTrace(c)) {\r\n if (!(c as any).motif.options.placeholder) {\r\n (c as any).motif.options.placeholder = dom.createComment(\"h\");\r\n }\r\n controlElement = ((c as any).motif.options.placeholder as unknown as Node);\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n if (insertHost && enterModeOf(this) === 'out-in') {\r\n const wait = pendingLeaves(insertHost, controlElement);\r\n if (wait) {\r\n c._base._enterSeq = (c._base._enterSeq ?? 0) + 1;\r\n wait.then(() => {\r\n if (this.isDisposed || c.isDisposed || c.parent !== this) return;\r\n ComponentHelper.internalBuild.call(this, c);\r\n });\r\n return;\r\n }\r\n }\r\n\r\n const parentNode = appendableElement?.element as Node | undefined;\r\n if (controlElement && parentNode && (controlElement === parentNode || controlElement.contains(parentNode))) {\r\n reportWarning('MJX104', []);\r\n\r\n } else {\r\n if (referenceNode) {\r\n try {\r\n appendableElement?.element.insertBefore(controlElement!, referenceNode);\r\n } catch {\r\n\r\n appendableElement?.element.appendChild(controlElement!);\r\n }\r\n } else {\r\n appendableElement?.element.appendChild(controlElement!);\r\n }\r\n if (ownTrace && ownTrace.parentNode) ownTrace.parentNode.removeChild(ownTrace);\r\n }\r\n if (c.isVisible) {\r\n const enteredInBuild = !cisBuilt && (c as any)._baseCtx?._enterSeq !== enterSeq;\r\n !enteredInBuild && wantsEnterTransition(c) && c.motif.options.transition.enterTransition(() => { });\r\n if (cisBuilt) {\r\n ComponentHelper.activateTree(c);\r\n }\r\n }\r\n },\r\n getContent(this: ComponentBase): any {\r\n if (this.isDisposed || !this.element) { return null; }\r\n if ((this.element as Node).nodeType == Node.COMMENT_NODE) {\r\n this.motif.options.cache?.appendChild(this.element as Node);\r\n this.controls.forEach(child => {\r\n const node = child.isWait || !child.isVisible\r\n ? (keepsTrace(child) ? ((child.motif.options as any).placeholder ??= dom.createComment(\"h\")) as Node : undefined)\r\n : ComponentHelper.getContent.call(child) as Node;\r\n if (node) this.motif.options.cache?.appendChild(node);\r\n });\r\n this.motif.options.cache?.appendChild(this.motif.options.closeFragment!);\r\n return this.motif.options.cache;\r\n } else {\r\n return this.element;\r\n }\r\n },\r\n routerClassing(this: ComponentBase, value: RouterClassingSettings) {\r\n try {\r\n const type = value.to;\r\n const path = value.path;\r\n if (this.isDisposed) return;\r\n\r\n const router = contextApplication(this)?.router;\r\n if (!router) return;\r\n\r\n const requestPath = router.uri.startsWith('/') ? router.uri : '/' + router.uri;\r\n const targetPath = path ?? '';\r\n\r\n const exact = isExactMatch(requestPath, targetPath);\r\n\r\n /* ---------- Active (segment‑eşleşme, tam eşleşme dahil) ---------- */\r\n const active = exact || startsWithPath(requestPath, targetPath);\r\n\r\n if (value.activeClass && (type === 'all' || type === 'active')) {\r\n const clsList = value.activeClass.split(' ').filter((l: string) => l.trim().length);\r\n clsList.forEach((cls: string) => this.element.classList.toggle(cls, active));\r\n }\r\n\r\n if (active && (type === 'all' || type === 'active')) {\r\n value.onActive?.();\r\n } else if ((type === 'all' || type === 'active')) {\r\n value.offActive?.();\r\n }\r\n\r\n /* ---------- Exact (tam eşleşme) ---------- */\r\n if (value.exactClass && (type === 'all' || type === 'exact')) {\r\n const clsList = value.exactClass.split(' ').filter((l: string) => l.trim().length);\r\n clsList.forEach((cls: string) => this.element.classList.toggle(cls, exact));\r\n }\r\n\r\n if (exact && (type === 'all' || type === 'exact')) {\r\n value.onExact?.();\r\n } else if ((type === 'all' || type === 'exact')) {\r\n value.offExact?.();\r\n }\r\n } catch (error) {\r\n\r\n }\r\n\r\n }\r\n}\r\n\r\nfunction keepsTrace(c: ComponentBase): boolean {\r\n return optionsOf(c)?.hideStrategy !== 'detach';\r\n}\r\n\r\nexport function domAnchor(c: ComponentBase, host: Node): Node | null {\r\n const trace = optionsOf(c)?.placeholder as Node | undefined;\r\n if (trace && trace.parentNode === host) return trace;\r\n const node = c.element as unknown as Node | null;\r\n return node && node.parentNode === host ? node : null;\r\n}\r\n\r\nfunction followingAnchor(owner: ComponentBase, start: number, host: Node): Node | null {\r\n const siblings = owner.controls.items;\r\n for (let i = start; i < siblings.length; i++) {\r\n const anchor = siblings[i] ? domAnchor(siblings[i], host) : null;\r\n if (anchor) return anchor;\r\n }\r\n if ((owner.element as unknown as Node).nodeType === Node.COMMENT_NODE) {\r\n const close = optionsOf(owner)?.closeFragment as unknown as Node | undefined;\r\n return close && close.parentNode === host ? close : null;\r\n }\r\n return null;\r\n}\r\n\r\nfunction placeTrace(owner: ComponentBase, c: ComponentBase): void {\r\n if (!keepsTrace(c)) return;\r\n const host = findAppendableComponent(owner)?.element as unknown as Node | undefined;\r\n if (!host) return;\r\n const element = c.element as unknown as Node | null;\r\n if (element && element.parentNode === host) return;\r\n const opts: any = c.motif.options;\r\n const trace: Node = opts.placeholder ?? (opts.placeholder = dom.createComment(\"h\"));\r\n if (trace.parentNode === host) return;\r\n host.insertBefore(trace, followingAnchor(owner, owner.controls.items.indexOf(c) + 1, host));\r\n}\r\n\r\nfunction removeComponentDom(c: any, node: Node, alsoPlaceholder: boolean): void {\r\n const opts = optionsOf(c);\r\n const parent = node.parentNode;\r\n if (node.nodeType === Node.COMMENT_NODE) {\r\n if (parent) {\r\n const close = (opts?.closeFragment as unknown as Node | undefined) || null;\r\n if (close) {\r\n let current: Node | null = node;\r\n while (current) {\r\n const after: Node | null = current.nextSibling;\r\n try { parent.removeChild(current); } catch { }\r\n if (current === close) break;\r\n current = after;\r\n }\r\n } else {\r\n try { parent.removeChild(node); } catch { }\r\n }\r\n if (!alsoPlaceholder) return;\r\n }\r\n } else if (parent) {\r\n try { parent.removeChild(node); } catch { }\r\n if (!alsoPlaceholder) return;\r\n }\r\n const placeholder = opts?.placeholder as Node | undefined;\r\n if (placeholder && placeholder.parentNode) {\r\n try { placeholder.parentNode.removeChild(placeholder); } catch { }\r\n }\r\n}\r\n\r\nfunction detachDomWithAnimation(c: any): void {\r\n const node = c.element as unknown as Node | null;\r\n if (!node || c._keepElementOnDispose === true) return;\r\n const opts = c.motif.options;\r\n const t = opts?.[TRANSITION_SLOT] as TransitionApi | undefined;\r\n try {\r\n const skip = t?.skipNextLeave === true || c._forceInstantDetach === true;\r\n if (skip) {\r\n if (t) t.skipNextLeave = false;\r\n c._forceInstantDetach = false;\r\n removeComponentDom(c, node, true);\r\n return;\r\n }\r\n } catch { }\r\n if (!t && !opts?.transitionOut) {\r\n removeComponentDom(c, node, false);\r\n return;\r\n }\r\n try {\r\n opts.transition.leaveTransition(() => {\r\n removeComponentDom(c, node, false);\r\n });\r\n } catch {\r\n removeComponentDom(c, node, false);\r\n }\r\n}\r\n\r\nasync function detachDomWithAnimationAsync(c: any): Promise<void> {\r\n const node = c.element as unknown as Node | null;\r\n if (!node || c._keepElementOnDispose === true) return;\r\n const opts = c.motif.options;\r\n const t = opts?.[TRANSITION_SLOT] as TransitionApi | undefined;\r\n try {\r\n const skip = t?.skipNextLeave === true || c._forceInstantDetach === true;\r\n if (skip) {\r\n if (t) t.skipNextLeave = false;\r\n c._forceInstantDetach = false;\r\n removeComponentDom(c, node, true);\r\n return;\r\n }\r\n } catch { }\r\n if (!t && !opts?.transitionOut) {\r\n removeComponentDom(c, node, false);\r\n return;\r\n }\r\n return new Promise<void>((resolve) => {\r\n try {\r\n opts.transition.leaveTransition(() => {\r\n removeComponentDom(c, node, false);\r\n resolve();\r\n });\r\n } catch {\r\n removeComponentDom(c, node, false);\r\n resolve();\r\n }\r\n });\r\n}\r\n\r\nfunction disposeShallow(c: any): void {\r\n if (c.isDisposed) return;\r\n ComponentHelper.callDisposing.call(c, c);\r\n try {\r\n offAll(c);\r\n } catch {\r\n\r\n }\r\n c.motif.stopAnimations();\r\n\r\n deactivateBindings(c);\r\n if (childrenOf(c).length) {\r\n for (const child of c._controls.items) {\r\n try {\r\n disposeShallow(child);\r\n } catch {\r\n\r\n }\r\n }\r\n }\r\n ComponentHelper.callDisposed.call(c, c);\r\n safeCall(() => { c._baseCtx?._emiters?.clear(); }, 'disposeShallow.emiters');\r\n c.isDisposed = true;\r\n Disposable.prototype.dispose.call(c);\r\n}\r\n\r\nfunction deepCleanup(c: any): void {\r\n try { c.parent = null; } catch { }\r\n\r\n c._eventHandlers = undefined;\r\n\r\n try { c._class?._countsStore?.clear(); } catch { }\r\n try { c._class?._watchersStore?.clear(); } catch { }\r\n try { c._baseCtx?._attr?._attrMapStore?.clear(); } catch { }\r\n try { c._baseCtx?._attr?._watchersStore?.clear(); } catch { }\r\n try {\r\n const opts = c._motif?.options;\r\n if (opts) {\r\n opts.cache = undefined;\r\n opts.closeFragment = undefined;\r\n opts.placeholder = undefined;\r\n }\r\n } catch {\r\n\r\n }\r\n try { c.element = null; } catch { }\r\n try { c.props = undefined; } catch { }\r\n try { c.childs = undefined; } catch { }\r\n try { c.class = undefined; } catch { }\r\n try { c.attr = undefined; } catch { }\r\n try { c.parent = null; } catch { }\r\n\r\n try { if (c._motif) c._motif.options = undefined; } catch { }\r\n const keys = Object.keys(c);\r\n for (let i = 0; i < keys.length; i++) {\r\n const key = keys[i];\r\n if (key === '_motif' || key === '_flags') continue;\r\n try { c[key] = undefined; } catch { }\r\n }\r\n c._store = null;\r\n c._flags = F_DISPOSED | F_HIDDEN | F_DISPOSED_FIRED | F_POSTCONFIG | F_PREBOUND;\r\n}\r\n\r\nconst DISPOSE_STARTED = Promise.resolve();\r\n\r\nfunction subtreeDisposesSync(c: any, root: boolean): boolean {\r\n if (!root && c._disposing && !c.isDisposed) return false;\r\n if (c.disposeAsync !== ComponentBase.prototype.disposeAsync) return false;\r\n const opts = optionsOf(c);\r\n if (opts) {\r\n if (opts.transitionOut) return false;\r\n const t = opts[TRANSITION_SLOT] as TransitionApi | undefined;\r\n if (t) {\r\n if (t.activeAnimations && t.activeAnimations.length > 0) return false;\r\n if (t.activeCssCancel) return false;\r\n if (t.classes || (t.name && t.name.length > 0)) return false;\r\n }\r\n }\r\n const items = childrenOf(c);\r\n if (items.length) {\r\n for (let i = 0; i < items.length; i++) {\r\n const child = items[i];\r\n if (child && !child.isDisposed && !subtreeDisposesSync(child, false)) return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nconst teardownApplications = new WeakMap<object, Application>();\r\nlet teardownSeen = false;\r\nlet contextOverridden = false;\r\nlet lastCheckedCtor: Function | undefined;\r\nconst checkedCtors = new WeakSet<Function>();\r\nlet baseContextGetter: Function | undefined;\r\n\r\nfunction noteContextOverride(ctor: Function): void {\r\n if (contextOverridden || ctor === lastCheckedCtor) return;\r\n lastCheckedCtor = ctor;\r\n if (checkedCtors.has(ctor)) return;\r\n checkedCtors.add(ctor);\r\n baseContextGetter ??= Object.getOwnPropertyDescriptor(ComponentBase.prototype, 'context')!.get;\r\n if ((ctor.prototype as any).__lookupGetter__('context') !== baseContextGetter) contextOverridden = true;\r\n}\r\n\r\nfunction applicationOf(c: any): Application | undefined {\r\n const parent = c.parent;\r\n let app: any;\r\n if (parent) {\r\n baseContextGetter ??= Object.getOwnPropertyDescriptor(ComponentBase.prototype, 'context')!.get;\r\n if (parent.__lookupGetter__('context') === baseContextGetter) app = applicationOf(parent);\r\n else { const ctx: any = parent.context; app = ctx?.[RAW_APPLICATION] ?? ctx; }\r\n }\r\n return app ?? teardownApplications.get(c) ?? Application.main;\r\n}\r\n\r\nfunction contextApplication(c: any): Application | undefined {\r\n baseContextGetter ??= Object.getOwnPropertyDescriptor(ComponentBase.prototype, 'context')!.get;\r\n if (c.__lookupGetter__('context') !== baseContextGetter) {\r\n const ctx = c.context;\r\n return ctx?.[RAW_APPLICATION] ?? ctx;\r\n }\r\n return contextOverridden || teardownSeen ? applicationOf(c) : Application.main;\r\n}\r\n\r\nfunction owningApplication(c: any): Application | null {\r\n for (let p = c; p; p = p.parent) {\r\n if (p.application) return p.application;\r\n const recorded = teardownApplications.get(p);\r\n if (recorded) return recorded;\r\n }\r\n return Application.main ?? null;\r\n}\r\n\r\nfunction disposePrefix(c: any, options: IDisposeOptions, asChild: boolean): void {\r\n const ctx = asChild ? 'disposeAsync' : 'dispose';\r\n if (Application._disposingCount > 0) {\r\n const app = owningApplication(c);\r\n if (app && app.state === 'disposing') { teardownApplications.set(c, app); teardownSeen = true; }\r\n }\r\n if (!asChild && options?.skipLeaveTransition) {\r\n c.motif.options.transition.skipNextLeave = true;\r\n }\r\n safeCall(() => { ComponentHelper.callDisposing.call(c, c); }, ctx + '.callDisposing');\r\n offAll(c, asChild && c._keepElementOnDispose !== true && (c.element as Node | null)?.isConnected === false);\r\n deactivateBindings(c);\r\n safeCall(() => { c.parent?.controls?.silentDetach?.(c, true); }, ctx + '.silentDetach');\r\n}\r\n\r\nfunction disposeFinish(c: any, options: IDisposeOptions, asChild: boolean): void {\r\n c.isDisposed = true;\r\n Disposable.prototype.dispose.call(c);\r\n if (asChild) {\r\n if (c._controls) c._controls.items = [];\r\n safeCall(() => { ComponentHelper.callDisposed.call(c, c); }, 'disposeAsync.callDisposed');\r\n safeCall(() => { c._baseCtx?._emiters?.clear(); }, 'disposeAsync.emiters');\r\n if (options?.deep) {\r\n deepCleanup(c);\r\n }\r\n return;\r\n }\r\n c.element = null;\r\n safeCall(() => { ComponentHelper.callDisposed.call(c, c); }, 'dispose.callDisposed');\r\n safeCall(() => { c._baseCtx?._emiters?.clear(); }, 'dispose.emiters');\r\n offAll(c);\r\n deepCleanup(c);\r\n}\r\n\r\nasync function disposeRemainderAsync(c: any, options: IDisposeOptions, asChild: boolean, leave: Promise<void> | undefined): Promise<void> {\r\n if (leave) {\r\n await leave;\r\n } else {\r\n if (asChild) {\r\n await c.motif.stopAnimations();\r\n } else if (peekTransition(c)?.skipNextLeave) {\r\n await c.motif.stopAnimations();\r\n }\r\n await detachDomWithAnimationAsync(c);\r\n }\r\n if (!asChild && c.constructor.name !== 'TransportTo') {\r\n await disposeContentBlocks(c);\r\n }\r\n const childOptions: IDisposeOptions = { deep: options?.deep };\r\n await safeCallAsync(async () => {\r\n if (c.isDisposed) { return; }\r\n const ctrls = Array.from(childrenOf(c)) as any[];\r\n if (ctrls.length) {\r\n await Promise.all(ctrls.map(child => asChild\r\n ? safeCallAsync(async () => { await child.disposeAsync(childOptions); }, 'disposeAsync.disposeAsyncChildren.handler')\r\n : (async () => {\r\n try {\r\n await child.disposeAsync(childOptions);\r\n } catch (error) {\r\n reportError('MJX107', error);\r\n }\r\n })()));\r\n }\r\n }, asChild ? 'disposeAsync.disposeAsyncChildren' : 'dispose.disposeAsync');\r\n if (!asChild && c.isDisposed) { return; }\r\n disposeFinish(c, options, asChild);\r\n}\r\n\r\nfunction disposeRemainderSync(root: any, options: IDisposeOptions, asChild: boolean, rootDetached: boolean): Promise<void>[] | null {\r\n const childOptions: IDisposeOptions = { deep: options?.deep };\r\n const nodes: any[] = [root];\r\n const parents: number[] = [-1];\r\n let pending: Promise<void>[] | null = null;\r\n if (!rootDetached) detachDomWithAnimation(root);\r\n for (let n = 0; n < nodes.length; n++) {\r\n const node = nodes[n];\r\n if (node.isDisposed) continue;\r\n const items = childrenOf(node);\r\n if (items.length === 0) continue;\r\n const ctrls = Array.from(items) as any[];\r\n for (let j = 0; j < ctrls.length; j++) {\r\n const child = ctrls[j];\r\n if (child.isDisposed) continue;\r\n if (child._disposing) {\r\n (pending ??= []).push(child._disposing);\r\n continue;\r\n }\r\n try {\r\n retireServiceOwner(child);\r\n child._disposing = root._disposing;\r\n disposePrefix(child, childOptions, true);\r\n if ((child.element as Node | null)?.isConnected !== false) detachDomWithAnimation(child);\r\n nodes.push(child);\r\n parents.push(n);\r\n } catch (error) {\r\n reportError('MJX107', error);\r\n }\r\n }\r\n }\r\n const count = nodes.length;\r\n if (count > 1) {\r\n const heights = new Array<number>(count).fill(0);\r\n for (let i = count - 1; i >= 1; i--) {\r\n const p = parents[i];\r\n if (heights[i] + 1 > heights[p]) heights[p] = heights[i] + 1;\r\n }\r\n const order: number[] = [];\r\n for (let i = 1; i < count; i++) order.push(i);\r\n order.sort((a, b) => heights[a] - heights[b] || a - b);\r\n for (let k = 0; k < order.length; k++) {\r\n try {\r\n disposeFinish(nodes[order[k]], childOptions, true);\r\n } catch (error) {\r\n reportError('MJX107', error);\r\n }\r\n }\r\n }\r\n if (pending) return pending;\r\n if (!asChild && root.isDisposed) { return null; }\r\n disposeFinish(root, options, asChild);\r\n return null;\r\n}\r\n\r\nconst BASE_PROTO = {\r\n get emiters(): ComponentEmiter {\r\n const base = this as unknown as BaseCtx;\r\n return base._emiters ??= new ComponentEmiter(base.owner);\r\n },\r\n _offAll(this: BaseCtx): void {\r\n offAll(this.owner);\r\n },\r\n _deactivateBindings(this: BaseCtx): void {\r\n deactivateBindings(this.owner);\r\n },\r\n _activateBindings(this: BaseCtx): void {\r\n activateBindings(this.owner);\r\n },\r\n _reactivateBindings(this: BaseCtx): void {\r\n reactivateBindings(this.owner);\r\n },\r\n _activatePreBindings(this: BaseCtx): void {\r\n activatePreBindings(this.owner);\r\n },\r\n _detachDomWithAnimation(this: BaseCtx): void {\r\n detachDomWithAnimation(this.owner);\r\n },\r\n _detachDomWithAnimationAsync(this: BaseCtx): Promise<void> {\r\n return detachDomWithAnimationAsync(this.owner);\r\n },\r\n _disposeShallow(this: BaseCtx): void {\r\n disposeShallow(this.owner);\r\n },\r\n _deepCleanup(this: BaseCtx): void {\r\n deepCleanup(this.owner);\r\n },\r\n};\r\n\r\nconst EV_SELF = 1;\r\nconst EV_TRUSTED = 2;\r\nconst EV_PREVENT = 4;\r\nconst EV_STOP = 8;\r\nconst EV_CAPTURE = 16;\r\nconst EV_DOM = 32;\r\nconst EV_REMOVED = 64;\r\n\r\nconst NO_MODS: string[] = [];\r\n\r\nlet eventDispatchDepth = 0;\r\n\r\nclass EventRecord {\r\n owner: any;\r\n key: string;\r\n original: (sender: any, e: any) => any;\r\n type: string;\r\n flags: number;\r\n next: EventRecord | undefined;\r\n\r\n constructor(owner: any, key: string, original: (sender: any, e: any) => any, type: string, flags: number) {\r\n this.owner = owner;\r\n this.key = key;\r\n this.original = original;\r\n this.type = type;\r\n this.flags = flags;\r\n this.next = undefined;\r\n }\r\n\r\n handleEvent(ev: Event): void {\r\n const flags = this.flags;\r\n if ((flags & EV_REMOVED) !== 0) return;\r\n const owner = this.owner;\r\n if ((flags & EV_SELF) !== 0 && ev.target !== owner.element) return;\r\n if ((flags & EV_TRUSTED) !== 0 && !ev.isTrusted) return;\r\n const cb: any = this.original;\r\n let res: any;\r\n try {\r\n if (cb && cb.length <= 1) {\r\n res = cb(ev);\r\n } else if (cb) {\r\n res = cb(owner, ev);\r\n }\r\n } catch (error) {\r\n reportError('MJX123', error, this.type);\r\n }\r\n if (res && typeof res.then === 'function') {\r\n const type = this.type;\r\n res.then(undefined, (error: unknown) => reportError('MJX123', error, type));\r\n }\r\n if ((flags & EV_PREVENT) !== 0) { preventEvent(ev); }\r\n if ((flags & EV_STOP) !== 0) { stopEvent(ev); }\r\n if (res && (res as any).cancel === true) {\r\n preventEvent(ev);\r\n stopEvent(ev);\r\n }\r\n }\r\n}\r\n\r\nfunction preventEvent(ev: any): void {\r\n if (typeof ev?.preventDefault === 'function') ev.preventDefault();\r\n}\r\n\r\nfunction stopEvent(ev: any): void {\r\n if (typeof ev?.stopPropagation === 'function') ev.stopPropagation();\r\n}\r\n\r\nfunction addEventRecord(c: any, record: EventRecord): void {\r\n let last: EventRecord | undefined = c._eventHandlers;\r\n if (last === undefined) {\r\n c._eventHandlers = record;\r\n return;\r\n }\r\n while (last.next !== undefined) last = last.next;\r\n last.next = record;\r\n}\r\n\r\nfunction compactEventRecords(c: any): void {\r\n let head: EventRecord | undefined;\r\n let tail: EventRecord | undefined;\r\n for (let r: EventRecord | undefined = c._eventHandlers; r !== undefined; r = r.next) {\r\n if ((r.flags & EV_REMOVED) !== 0) continue;\r\n if (tail === undefined) head = r; else tail.next = r;\r\n tail = r;\r\n }\r\n if (tail !== undefined) tail.next = undefined;\r\n c._eventHandlers = head;\r\n}\r\n\r\nfunction hasEventKey(c: any, key: string): boolean {\r\n for (let r: EventRecord | undefined = c._eventHandlers; r !== undefined; r = r.next) {\r\n if ((r.flags & EV_REMOVED) === 0 && r.key === key) return true;\r\n }\r\n return false;\r\n}\r\n\r\nfunction offAll(c: any, detached = false): void {\r\n const head: EventRecord | undefined = c._eventHandlers;\r\n if (head === undefined) return;\r\n for (let r: EventRecord | undefined = head; r !== undefined; r = r.next) {\r\n if ((r.flags & (EV_DOM | EV_REMOVED)) !== EV_DOM) { continue; }\r\n if (detached) {\r\n r.flags |= EV_REMOVED;\r\n r.owner = undefined;\r\n r.original = undefined as any;\r\n continue;\r\n }\r\n try {\r\n (c.element as any).removeEventListener(r.type, r, (r.flags & EV_CAPTURE) !== 0);\r\n } catch { }\r\n }\r\n c._eventHandlers = undefined;\r\n}\r\n\r\nfunction deactivateBindings(c: any): void {\r\n try { if (c._bindings?._items?.length) c._bindings.deactivateAll(); } catch { }\r\n}\r\n\r\nfunction activateBindings(c: any): void {\r\n try { c._bindings?.activateAll(); } catch { }\r\n}\r\n\r\nfunction reactivateBindings(c: any): void {\r\n try { c._bindings?.reActivateAll(); } catch { }\r\n}\r\n\r\nfunction activatePreBindings(c: any): void {\r\n if ((c._flags & F_PREBOUND) !== 0) return;\r\n const registered = c._bindings?._items as IBaseBinding[] | undefined;\r\n if (registered && registered.length > 0) {\r\n c._bindings.items.filter((x: IBaseBinding) => x.propertyName == \"isWait\" || x.propertyName == \"display\").forEach((b: IBaseBinding) => {\r\n b.activate();\r\n }\r\n );\r\n }\r\n c._flags |= F_PREBOUND;\r\n}\r\n\r\nexport function setLeaveContainer(c: any, owner: ComponentBase): void {\r\n (c._baseCtx ?? (c._baseCtx = createBaseCtx(c)))._leaveContainer = owner;\r\n}\r\n\r\nexport function noteListAdopted(c: any): void {\r\n const f = c._flags;\r\n if ((f & F_LIST_SEEN) !== 0) return;\r\n c._flags = f | F_LIST_SEEN | (c.parent !== null && c.parent !== undefined ? F_LIST_ADOPTED : 0);\r\n}\r\n\r\nexport function isListAdopted(c: any): boolean {\r\n return (c._flags & F_LIST_ADOPTED) !== 0;\r\n}\r\n\r\nfunction createBaseCtx(owner: ComponentBase): BaseCtx {\r\n const base: BaseCtx = Object.create(BASE_PROTO);\r\n base.owner = owner;\r\n return base;\r\n}\r\n\r\nfunction controlsOwner(collection: ControlCollection): any {\r\n return (collection as any).owner;\r\n}\r\n\r\nconst NO_CHILDREN: ComponentBase[] = Object.freeze([]) as any;\r\nconst NO_BINDINGS: IBaseBinding[] = Object.freeze([]) as any;\r\n\r\nfunction childrenOf(c: any): ComponentBase[] {\r\n return c._controls?.items ?? NO_CHILDREN;\r\n}\r\n\r\nfunction createOwnedControls(c: ComponentBase): ControlCollection {\r\n const controls = new ControlCollection(c);\r\n controls.onAdd = ownerControlAdded;\r\n controls.onAddBeforeBuild = ownerControlAddedBeforeBuild;\r\n controls.onRemove = ownerControlRemoved;\r\n return controls;\r\n}\r\n\r\nfunction ownerControlAdded(this: ControlCollection, c: ComponentBase) {\r\n const owner = controlsOwner(this);\r\n if (hasEventKey(owner, 'controladded')) owner.motif.trigger('controladded', { control: c });\r\n if (!owner.isVisible && (owner.element as Node)?.nodeType === Node.COMMENT_NODE) return;\r\n ComponentHelper.internalBuild.call(owner, c);\r\n}\r\n\r\nfunction ownerControlAddedBeforeBuild(this: ControlCollection, c: ComponentBase) {\r\n const owner = controlsOwner(this);\r\n if (hasEventKey(owner, 'controladded')) owner.motif.trigger('controladded', { control: c });\r\n}\r\n\r\nfunction ownerControlRemoved(this: ControlCollection, c: ComponentBase) {\r\n const owner = controlsOwner(this);\r\n if (hasEventKey(owner, 'controlremoved')) owner.motif.trigger('controlremoved', { control: c });\r\n}\r\n\r\nconst fragmentCloseMarkers = new WeakMap<Comment, Comment>();\r\n\r\nvar globalId = 0;\r\n\r\nconst LIFECYCLE_X_EVENTS = new Set([\r\n 'building', 'built', 'initializing', 'initialized', 'disposing', 'disposed',\r\n 'config', 'configured', 'visibilitychanged', 'activated', 'deactivated'\r\n]);\r\n\r\nexport interface IDisposeOptions {\r\n deep?: boolean;\r\n skipLeaveTransition?: boolean;\r\n}\r\n\r\nexport interface SiblingsApi {\r\n all: () => ComponentBase[] | undefined;\r\n next: () => ComponentBase | undefined;\r\n prev: () => ComponentBase | undefined;\r\n nextAll: () => any;\r\n prevAll: () => any;\r\n}\r\n\r\nconst RAW_APPLICATION = Symbol('motif.rawApplication');\r\nconst SCOPED_SUBSCRIBERS = new Set<PropertyKey>(['on', 'onRouterChanged']);\r\n\r\n/**\r\n * Uygulamanın bileşene bağlı görünümü. `on`/`onRouterChanged` aboneliklerini sahibin ömrüne\r\n * kaydeder; diğer tüm üyeler (alanlar, metotlar, atamalar) uygulamanın kendisine yönlenir.\r\n */\r\nfunction createScopedContext(app: Application, owner: ComponentBase): Application {\r\n const cache = new Map<PropertyKey, { fn: Function; bound: Function }>();\r\n return new Proxy(app, {\r\n get(target, prop) {\r\n if (prop === RAW_APPLICATION) { return target; }\r\n const value = Reflect.get(target, prop, target);\r\n if (typeof value !== 'function') { return value; }\r\n const hit = cache.get(prop);\r\n if (hit && hit.fn === value) { return hit.bound; }\r\n const bound = SCOPED_SUBSCRIBERS.has(prop)\r\n ? (...args: any[]) => owner._trackContextSubscription(value.apply(target, args))\r\n : value.bind(target);\r\n cache.set(prop, { fn: value, bound });\r\n return bound;\r\n },\r\n set(target, prop, value) {\r\n return Reflect.set(target, prop, value, target);\r\n },\r\n });\r\n}\r\n\r\nexport abstract class ComponentBase<TElement extends ElementType = any, TProps extends object = any> extends Disposable {\r\n\r\n private _motif?: ComponentMotif<this, TProps> = undefined;\r\n public get motif(): ComponentMotif<this, TProps> {\r\n return this._motif !== undefined ? this._motif : (this._motif = new ComponentMotif<this, TProps>(this, (this.isDisposed && !this.element ? undefined : new ComponentOptionsImpl(this)) as unknown as ComponentMotif<this, TProps>['options']));\r\n }\r\n\r\n public element: TElement;\r\n public props: TProps;\r\n private _flags: number = 0;\r\n public get isBuilt(): boolean {\r\n return (this._flags & F_BUILT) !== 0;\r\n }\r\n public set isBuilt(value: boolean) {\r\n this._flags = value ? this._flags | F_BUILT : this._flags & ~F_BUILT;\r\n }\r\n public get isInitialized(): boolean {\r\n return (this._flags & F_INITIALIZED) !== 0;\r\n }\r\n public set isInitialized(value: boolean) {\r\n this._flags = value ? this._flags | F_INITIALIZED : this._flags & ~F_INITIALIZED;\r\n }\r\n public get isDisposed(): boolean {\r\n return (this._flags & F_DISPOSED) !== 0;\r\n }\r\n public set isDisposed(value: boolean) {\r\n this._flags = value ? this._flags | F_DISPOSED : this._flags & ~F_DISPOSED;\r\n }\r\n public get isConfigured(): boolean {\r\n return (this._flags & F_CONFIGURED) !== 0;\r\n }\r\n public set isConfigured(value: boolean) {\r\n this._flags = value ? this._flags | F_CONFIGURED : this._flags & ~F_CONFIGURED;\r\n }\r\n public get isPainting(): boolean {\r\n return (this._flags & F_PAINTING) !== 0;\r\n }\r\n public set isPainting(value: boolean) {\r\n this._flags = value ? this._flags | F_PAINTING : this._flags & ~F_PAINTING;\r\n }\r\n public get isPainted(): boolean {\r\n return (this._flags & F_PAINTED) !== 0;\r\n }\r\n public set isPainted(value: boolean) {\r\n this._flags = value ? this._flags | F_PAINTED : this._flags & ~F_PAINTED;\r\n }\r\n public get isVisible(): boolean {\r\n return (this._flags & F_HIDDEN) === 0;\r\n }\r\n public set isVisible(value: boolean) {\r\n this._flags = value ? this._flags & ~F_HIDDEN : this._flags | F_HIDDEN;\r\n }\r\n private _controls?: ControlCollection = undefined;\r\n public get controls(): ControlCollection {\r\n return this._controls !== undefined || (this.isDisposed && !this.element) ? this._controls! : (this._controls = createOwnedControls(this));\r\n }\r\n public set controls(value: ControlCollection) {\r\n this._controls = value;\r\n }\r\n\r\n private _eventHandlers?: EventRecord;\r\n private _class?: IClass<TElement> = undefined;\r\n public get class(): IClass<TElement> {\r\n return this._class !== undefined || (this.isDisposed && !this.element) ? this._class! : (this._class = new controlClass(this as any) as any as IClass<TElement>);\r\n }\r\n public set class(value: IClass<TElement>) {\r\n this._class = value;\r\n }\r\n public get attr(): controlAttribute<TElement> {\r\n const base = this._baseCtx;\r\n const attr = base !== undefined ? base._attr : undefined;\r\n return attr !== undefined || (this.isDisposed && !this.element) ? attr : (this._base._attr = new controlAttribute(this as any));\r\n }\r\n public set attr(value: controlAttribute<TElement>) {\r\n const base = this._baseCtx;\r\n if (base !== undefined) base._attr = value;\r\n else if (value !== undefined) this._base._attr = value;\r\n }\r\n private _bindings?: BindingCollection = undefined;\r\n public get bindings(): BindingCollection {\r\n return this._bindings !== undefined || (this.isDisposed && !this.element) ? this._bindings! : (this._bindings = new BindingCollection(this));\r\n }\r\n public set bindings(value: BindingCollection) {\r\n this._bindings = value;\r\n }\r\n /** style(fn) izleyicisi: tek tek tutulur, yeniden çağrıda önceki durdurulur. */\r\n private _styleFx?: { stop: () => void; binding: IBaseBinding };\r\n\r\n public useModel<TModel>(modelCtor: TModel): UnwrapValueRefs<TModel> {\r\n return reactive<TModel>(modelCtor);\r\n }\r\n\r\n private _computeHideStrategy(): 'placeholder' | 'detach' {\r\n return keepsTrace(this) ? 'placeholder' : 'detach';\r\n }\r\n\r\n private _isInDom(): boolean {\r\n try {\r\n if (!this.element) return false;\r\n const node = this.element as unknown as Node;\r\n if (node.nodeType === Node.COMMENT_NODE) {\r\n return !!node.parentNode;\r\n }\r\n return !!node.parentNode;\r\n } catch { return false; }\r\n }\r\n public set isWait(value: boolean) {\r\n this._flags = value ? this._flags | F_WAIT : this._flags & ~F_WAIT;\r\n if (this.isBuilt) {\r\n if (value) {\r\n this.motif.hide();\r\n } else {\r\n this.motif.show();\r\n }\r\n return;\r\n }\r\n if (value === false && this.parent && this.parent.isBuilt && (this._flags & F_BUILDING) === 0) {\r\n ComponentHelper.internalBuild.call(this.parent, this);\r\n }\r\n\r\n }\r\n public get isWait(): boolean {\r\n return (this._flags & F_WAIT) !== 0;\r\n }\r\n\r\n constructor(element: TElement, props: TProps = {} as TProps) {\r\n super();\r\n noteContextOverride(new.target);\r\n const asComponentRoot = constructingComponentRoot;\r\n constructingComponentRoot = false;\r\n recordServiceOwner(this);\r\n if (this.onElementCreating) {\r\n this.element = this.onElementCreating.call(this);\r\n } else if ((props as any)?.onElementCreating) {\r\n this.element = (props as any).onElementCreating.call(this);\r\n } else {\r\n this.element = element;\r\n }\r\n if ((this.element as any)?.nodeType !== 3) {\r\n if (this._controls === undefined) this._controls = new ControlCollection(this);\r\n }\r\n\r\n const refs = props ? extractRefs(props, this) : [];\r\n\r\n if (props && ParseProps(props, this)) props = {} as TProps;\r\n applyComponentOptions((props as any)?.options, this);\r\n this.props = props;\r\n\r\n // (class/style/id/tabindex/role/aria-*/data-*) kök düğüme (root node) düşer, prop'lar this.props'ta kalır.\r\n if (props) {\r\n const ctor0 = new.target as any;\r\n const plain = !asComponentRoot && (ctor0 === ComponentBase || Object.getPrototypeOf(ctor0) === ComponentBase);\r\n if (plain) applyPlainElementProps(props, this);\r\n else applyFallthroughProps(props, this);\r\n }\r\n\r\n if (refs.length > 0) {\r\n for (const fn of takePendingRefs(this, refs)) {\r\n callReported(() => fn(this), 'MJX122', 'ref');\r\n }\r\n }\r\n\r\n ComponentHelper.callOnInitializing(this);\r\n if (this.isDisposed) return;\r\n const controls = this._controls;\r\n if (controls) {\r\n controls.onAdd = ownerControlAdded;\r\n controls.onAddBeforeBuild = ownerControlAddedBeforeBuild;\r\n controls.onRemove = ownerControlRemoved;\r\n }\r\n ComponentHelper.callOnInitialized(this);\r\n\r\n const ctor = new.target as any;\r\n const isBaseCtor = ctor === ComponentBase || Object.getPrototypeOf(ctor) === ComponentBase;\r\n if (isBaseCtor) {\r\n ComponentHelper.callConfig(this);\r\n } else {\r\n this._base._configDeferred = true;\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n public childs?: any[];\r\n private _baseCtx?: BaseCtx = undefined;\r\n private _init?: (sender: ComponentBase, e: EventArgs) => void = undefined;\r\n protected get _base(): BaseCtx {\r\n return this._baseCtx !== undefined || (this.isDisposed && !this.element) ? this._baseCtx! : (this._baseCtx = createBaseCtx(this));\r\n }\r\n public parent: ComponentBase | null = null;\r\n public onElementCreating?(): TElement;\r\n public initializeComponent?(sender: ComponentBase): void;\r\n public onBuilding?(sender: ComponentBase, e: EventArgs): void;\r\n public onBuilt?(sender: ComponentBase, e: EventArgs): void;\r\n public onMounted?(sender: ComponentBase, e: EventArgs): void;\r\n public onInitializing?(sender: ComponentBase, e: EventArgs): void;\r\n public onInitialized?(sender: ComponentBase, e: EventArgs): void;\r\n public onDisposing?(sender: ComponentBase, e: EventArgs): void;\r\n public onDisposed?(sender: ComponentBase, e: EventArgs): void;\r\n public onConfig?(sender: ComponentBase, e: EventArgs): void;\r\n public onConfigured?(sender: ComponentBase, e: EventArgs): void;\r\n public onVisibilityChanged?(sender: ComponentBase, e: VisibilityChangedEventArgs): void;\r\n /** keepAlive rota bileşeni outlet'ten ayrılıp önbelleğe alındığında (RoutingEngine) tetiklenir. */\r\n public onDeactivated?(sender: ComponentBase, e: EventArgs): void;\r\n /** keepAlive rota bileşeni önbellekten outlet'e yeniden bağlandığında (RoutingEngine) tetiklenir. */\r\n public onActivated?(sender: ComponentBase, e: EventArgs): void;\r\n public view?(): ComponentBase;\r\n private _scopedContext?: Application;\r\n\r\n public get context(): Application {\r\n const app: Application = (contextOverridden || teardownSeen ? applicationOf(this) : Application.main) as Application;\r\n if (!app) { return app; }\r\n if ((this._scopedContext as any)?.[RAW_APPLICATION] !== app) {\r\n this._scopedContext = createScopedContext(app, this);\r\n }\r\n return this._scopedContext!;\r\n }\r\n /** @internal context üzerinden açılan aboneliği bileşenin ömrüne bağlar; iptal fonksiyonunu döndürür. */\r\n public _trackContextSubscription(off: () => void): () => void {\r\n if (typeof off !== 'function') { return off; }\r\n if (this.isDisposed) { off(); return off; }\r\n const d = this._register(trackedCleanup(off));\r\n return () => { this._disposables.detach(d); off(); };\r\n }\r\n\r\n public build(building: boolean = true) {\r\n checkReservedMembers(this);\r\n ComponentHelper.callConfigured(this);\r\n activatePreBindings(this);\r\n if (this.isDisposed || !this.element || this.isWait) { return; }\r\n if (this.isBuilt || this.isWait) {\r\n return;\r\n }\r\n this._flags |= F_BUILDING;\r\n try {\r\n ComponentHelper.callBuilding(this);\r\n if (this.isDisposed) { return; }\r\n var ph: any = this.element;\r\n if (building) {\r\n ph = dom.createDocumentFragment();\r\n }\r\n const isFragment = (typeof this.element !== 'string' && (this.element as unknown as Node).nodeType === Node.COMMENT_NODE);\r\n if (isFragment) {\r\n this.motif.options.cache = dom.createDocumentFragment();\r\n (this.element as any).textContent = \"[\";\r\n this.motif.options.cache!.appendChild(this.element as unknown as Node);\r\n }\r\n if (this.isBuilt) {\r\n return;\r\n }\r\n\r\n\r\n ComponentHelper.callInitializeComponent(this);\r\n if (this.isDisposed) { return; }\r\n\r\n if (this.view) {\r\n const templ = this.view();\r\n this.controls.add(templ);\r\n if (this.isDisposed) { return; }\r\n }\r\n\r\n const deferredSelectValue: IBaseBinding[] = (this.element as any)?.nodeName === 'SELECT'\r\n ? this.bindings.items.filter(b => b.propertyName === 'value')\r\n : NO_BINDINGS;\r\n if (deferredSelectValue.length) {\r\n try {\r\n this.bindings.items.filter(b => !deferredSelectValue.includes(b)).forEach(b => b.activate());\r\n } catch { }\r\n } else {\r\n activateBindings(this);\r\n }\r\n\r\n const kids = childrenOf(this);\r\n for (const element of kids.length ? kids.slice() : kids) {\r\n var target = isFragment ? this.motif.options.cache : this.element;\r\n if (!element.isWait) {\r\n element.parent = this;\r\n element.build(false);\r\n }\r\n if (element.isWait) {\r\n if (keepsTrace(element)) {\r\n const opts: any = element.motif.options;\r\n (building ? ph : target as any).appendChild(opts.placeholder ?? (opts.placeholder = dom.createComment(\"h\")));\r\n }\r\n continue;\r\n }\r\n if (building) {\r\n const cache = optionsOf(element)?.cache;\r\n if (cache) {\r\n ph.appendChild(cache);\r\n } else {\r\n ph.appendChild(element.element);\r\n }\r\n } else {\r\n const cache = optionsOf(element)?.cache;\r\n if (cache) {\r\n (target as any).appendChild(cache);\r\n } else {\r\n (target as any).appendChild(element.element);\r\n }\r\n }\r\n if ((element as any)._baseCtx?._inactive && element.isVisible) {\r\n ComponentHelper.activateTree(element);\r\n }\r\n\r\n }\r\n\r\n if (this.isDisposed) { return; }\r\n if (wantsEnterTransition(this)) {\r\n const node = this.element as unknown as Node | null;\r\n if (node && (node as any).isConnected) {\r\n this.motif.options.transition.enterTransition(() => { });\r\n } else {\r\n const seq = this._base._enterSeq;\r\n queueMicrotask(() => {\r\n if (!this.isDisposed && this.isVisible && this.motif.options?.transition && this._base._enterSeq === seq) {\r\n this.motif.options.transition.enterTransition(() => { });\r\n }\r\n });\r\n }\r\n } else {\r\n clearNavDirection(this);\r\n }\r\n if (building) {\r\n try {\r\n var target = isFragment ? this.motif.options.cache : this.element;\r\n if ((target as any).nodeType === Node.TEXT_NODE) {\r\n (target as Text).appendData(ph.textContent);\r\n } else {\r\n if ((target as any).appendChild) {\r\n (target as any).appendChild(ph);\r\n } else {\r\n (target as any).append(ph);\r\n }\r\n }\r\n } catch (error) {\r\n }\r\n\r\n }\r\n if (deferredSelectValue.length) {\r\n try { deferredSelectValue.forEach(b => b.activate()); } catch { }\r\n }\r\n if (isFragment) {\r\n this.motif.options.closeFragment = dom.createComment(\"]\");\r\n this.motif.options.cache!.appendChild(this.motif.options.closeFragment!);\r\n if ((this.element as Node).nodeType === Node.COMMENT_NODE && this.motif.options.closeFragment) {\r\n fragmentCloseMarkers.set(this.element as Comment, this.motif.options.closeFragment);\r\n }\r\n }\r\n\r\n this.isBuilt = true;\r\n ComponentHelper.callBuilt(this);\r\n ComponentHelper.scheduleMounted(this);\r\n } finally {\r\n this._flags &= ~F_BUILDING;\r\n }\r\n }\r\n\r\n public setState() {\r\n this.controls.forEach(c => {\r\n c.setState();\r\n });\r\n reactivateBindings(this);\r\n }\r\n\r\n public reState() {\r\n reactivateBindings(this);\r\n this.controls.forEach(c => {\r\n c.reState();\r\n });\r\n }\r\n\r\n public setText(value: string) {\r\n if (this.isDisposed || !this.element) { return; }\r\n if (isComponentLike(value)) { warnComponentInTextBinding(this, value); return; }\r\n if (this.element) {\r\n (this.element as any).textContent = value;\r\n }\r\n }\r\n\r\n public style(content: CSSStyleDeclaration | string | Array<any> | Object | (() => any)) {\r\n if (this.isDisposed) { return this as any }\r\n const styleObj = (this.element as any)?.style as CSSStyleDeclaration | undefined;\r\n if (!styleObj) return this;\r\n if (typeof content === 'function') {\r\n this._stopStyleEffect();\r\n let prevKeys: string[] = [];\r\n let prevWasString = false;\r\n const run = () => effect(() => {\r\n const v = (content as () => any)();\r\n if (this.isDisposed) return;\r\n const so: any = (this.element as any)?.style;\r\n if (!so) return;\r\n if (typeof v === 'string') {\r\n so.cssText = v;\r\n prevKeys = [];\r\n prevWasString = true;\r\n } else if (v && typeof v === 'object') {\r\n if (prevWasString) { so.cssText = ''; prevWasString = false; }\r\n for (const k of prevKeys) {\r\n if (!(k in v)) { try { so[k] = ''; } catch { } }\r\n }\r\n Object.assign(so, v);\r\n prevKeys = Object.keys(v);\r\n } else {\r\n if (prevWasString) { so.cssText = ''; prevWasString = false; }\r\n for (const k of prevKeys) { try { so[k] = ''; } catch { } }\r\n prevKeys = [];\r\n }\r\n });\r\n let current = run();\r\n const stop = () => { try { current(); } catch { } };\r\n const binding: IBaseBinding = {\r\n propertyName: '__style',\r\n dataSource: null,\r\n activate() { /* no-op */ },\r\n reActivate() {\r\n stop();\r\n current = run();\r\n },\r\n deactivate() { stop(); }\r\n } as any;\r\n try { this.bindings.add(binding); } catch { }\r\n this._styleFx = { stop, binding };\r\n return this;\r\n }\r\n if (typeof content === 'string') {\r\n (styleObj as any).cssText = content;\r\n } else if (content && typeof content === 'object') {\r\n Object.assign(styleObj as any, content);\r\n }\r\n return this;\r\n }\r\n\r\n private _stopStyleEffect() {\r\n const fx = this._styleFx;\r\n if (!fx) return;\r\n this._styleFx = undefined;\r\n try { fx.stop(); } catch { }\r\n try { this.bindings.remove(fx.binding); } catch { }\r\n }\r\n\r\n private _addHandler(event: any, handler: (sender: ComponentBase, e: EventArgs) => void) {\r\n this.motif.on(event as any, handler as any);\r\n }\r\n private async _show(): Promise<any> {\r\n\r\n\r\n if (this.isDisposed || !this.element) { return; }\r\n if (this.isVisible) { return; }/* A*/\r\n if (this.isWait) { return; }\r\n\r\n if (this.parent && enterModeOf(this.parent) === 'out-in') {\r\n const showHost = ((this.motif.options.placeholder as Node | undefined)?.parentNode)\r\n ?? (findAppendableComponent(this.parent)?.element as Node | undefined);\r\n const wait = pendingLeaves(showHost, this.element as unknown as Node);\r\n if (wait) {\r\n const seq = this._base._showSeq = (this._base._showSeq ?? 0) + 1;\r\n return wait.then(() => {\r\n if (this.isDisposed || this._base._showSeq !== seq) return;\r\n return this._show();\r\n });\r\n }\r\n }\r\n\r\n if (peekTransition(this)?.activeAnimations?.length) {\r\n safeCall(async () => {\r\n await Promise.all(this.motif.options.transition.activeAnimations.map(a =>\r\n a.finished?.catch(() => { })\r\n ));\r\n }, 'show.waitForLeaveAnimations');\r\n }\r\n /** A*/\r\n const strategy = this._computeHideStrategy();\r\n if (strategy === 'detach') {\r\n\r\n ComponentHelper.callVisibilityChanged(this, true);\r\n if (this.isDisposed) { return; }\r\n const needAttach = !this._isInDom() && this.parent && this.parent.isBuilt && !this.isWait;\r\n this.isVisible = true;\r\n if (needAttach) {\r\n ComponentHelper.internalBuild.call(this.parent!, this);\r\n }\r\n return;\r\n } else {\r\n /** A*/\r\n const placeholderParent = (this.motif.options.placeholder as Node)?.parentElement;\r\n const expectedParent = findAppendableComponent(this.parent!)?.element;\r\n\r\n if (this.motif.options.placeholder && placeholderParent && placeholderParent !== expectedParent) {\r\n reportWarning('MJX106', []);\r\n ComponentHelper.callVisibilityChanged(this, true);\r\n if (this.isDisposed) { return; }\r\n this.isVisible = true;\r\n if (this.parent?.isBuilt) {\r\n ComponentHelper.internalBuild.call(this.parent, this);\r\n }\r\n return;\r\n }\r\n\r\n /** A*/\r\n wantsEnterTransition(this) && this.motif.options.transition.enterTransition(() => { });\r\n ComponentHelper.callVisibilityChanged(this, true);\r\n if (this.isDisposed) { return; }\r\n if ((this.element as Node).nodeType === Node.COMMENT_NODE) {\r\n this.controls.items.filter(c => !c.isBuilt).forEach(c => ComponentHelper.internalBuild.call(this, c));\r\n this.controls.forEach(c => {\r\n c.motif.show();\r\n });\r\n this.isVisible = true;\r\n ComponentHelper.activateTree(this, false);\r\n return;\r\n }\r\n if (!this.isBuilt) {\r\n this.isVisible = true;\r\n return;\r\n }\r\n var parent = (this.motif.options.placeholder as Node)?.parentElement;\r\n if (parent) {\r\n parent.replaceChild(this.element as Node, this.motif.options.placeholder!);\r\n this.isVisible = true;\r\n ComponentHelper.activateTree(this);\r\n }\r\n }\r\n }\r\n private async _hide(): Promise<any> {\r\n\r\n if (this.isDisposed || !this.element) { return; }\r\n this._base._showSeq = (this._base._showSeq ?? 0) + 1;\r\n if (!this.isVisible) { return; }\r\n\r\n const strategy = this._computeHideStrategy();\r\n if (strategy === 'detach') {\r\n ComponentHelper.callVisibilityChanged(this, false);\r\n if (this.isDisposed) { return; }\r\n await this._base._detachDomWithAnimationAsync();\r\n this.isVisible = false;\r\n ComponentHelper.deactivateTree(this);\r\n return;\r\n } else {\r\n const transition = this.motif.options.transition;\r\n const skip = transition.skipNextLeave === true;\r\n if (skip) transition.skipNextLeave = false;\r\n const finish = () => {\r\n ComponentHelper.callVisibilityChanged(this, false);\r\n if (this.isDisposed) { return; }\r\n if ((this.element as Node).nodeType === Node.COMMENT_NODE) {\r\n this.controls.forEach(c => {\r\n if (skip && c.isVisible && c.element && !c.isDisposed && c.motif.options?.transition) {\r\n c.motif.options.transition.skipNextLeave = true;\r\n }\r\n c.motif.hide();\r\n });\r\n this.isVisible = false;\r\n ComponentHelper.deactivateTree(this, false);\r\n return;\r\n }\r\n var parent = (this.element as Node).parentElement;\r\n // if (!parent) {\r\n // var parentComp = findAppendableComponent(this.parent!);\r\n // if (parentComp && parentComp.isBuilt) {\r\n // } else {\r\n if (parent) {\r\n if (!this.motif.options.placeholder) this.motif.options.placeholder = dom.createComment(\"h\");\r\n parent.replaceChild(this.motif.options.placeholder!, this.element as Node);\r\n\r\n }\r\n this.isVisible = false;\r\n ComponentHelper.deactivateTree(this);\r\n };\r\n if (skip) {\r\n finish();\r\n return;\r\n }\r\n return transition.leaveTransition(finish).finished;\r\n }\r\n\r\n }\r\n private _toggle() {\r\n if (this.isDisposed || !this.element) { return; }\r\n if (this.isVisible) {\r\n this.motif.hide();\r\n } else {\r\n this.motif.show();\r\n }\r\n }\r\n\r\n private async _on<K extends keyof HtmlElementEvents>(event: K, cb: (sender: ComponentBase | this, ev: HtmlElementEvents[K]) => any, domEvent: boolean = true): Promise<this> {\r\n if (this.isDisposed || !this.element) {\r\n return this;\r\n }\r\n\r\n const full = String(event);\r\n if (full.startsWith(\"x:\")) {\r\n const xName = full.slice(2).toLowerCase();\r\n if (xName === \"mounted\") {\r\n let sub: IDisposable | undefined;\r\n const stop = onElementAttached(this.element as Element, () => {\r\n if (sub) {\r\n this._base._mountedSubs?.get(cb)?.delete(sub);\r\n this._disposables.detach(sub);\r\n }\r\n if (this.isDisposed) { return; }\r\n const ev = { cancel: false } as EventArgs;\r\n callReported(() => (cb as any).length <= 1 ? (cb as any)(ev) : cb(this, ev as any), 'MJX122', 'x:mounted');\r\n });\r\n if (stop) {\r\n sub = this._register(trackedCleanup(stop));\r\n const subs: Map<Function, Set<IDisposable>> = this._base._mountedSubs ??= new Map();\r\n let set = subs.get(cb);\r\n if (!set) { set = new Set(); subs.set(cb, set); }\r\n set.add(sub);\r\n }\r\n return this;\r\n }\r\n if (LIFECYCLE_X_EVENTS.has(xName)) {\r\n this._base.emiters.on(\"on\" + xName, cb as any);\r\n return this;\r\n }\r\n }\r\n\r\n const colon = full.indexOf(\":\");\r\n const name = colon < 0 ? full : full.slice(0, colon);\r\n const mods = colon < 0 ? NO_MODS : full.slice(colon + 1).split(\":\");\r\n const evt = name.startsWith(\"on\") ? name.slice(2).toLowerCase() : name.toLowerCase();\r\n let flags = domEvent ? EV_DOM : 0;\r\n let options: AddEventListenerOptions | undefined;\r\n if (mods.length) {\r\n options = {};\r\n if (mods.includes(\"once\")) options.once = true;\r\n if (mods.includes(\"passive\")) options.passive = true;\r\n if (mods.includes(\"capture\")) { options.capture = true; flags |= EV_CAPTURE; }\r\n if (mods.includes(\"self\")) flags |= EV_SELF;\r\n if (mods.includes(\"trusted\")) flags |= EV_TRUSTED;\r\n if (mods.includes(\"prevent\")) flags |= EV_PREVENT;\r\n if (mods.includes(\"stop\")) flags |= EV_STOP;\r\n }\r\n\r\n const record = new EventRecord(this, full.toLowerCase(), cb as any, evt, flags);\r\n if (domEvent) {\r\n (this.element as any).addEventListener(evt, record, options);\r\n }\r\n addEventRecord(this, record);\r\n return this;\r\n }\r\n\r\n private async _trigger(event: any, ev: any): Promise<this> {\r\n if (this.isDisposed || !this.element) {\r\n return this;\r\n }\r\n const name = String(event).toLowerCase();\r\n safeCall(() => {\r\n eventDispatchDepth++;\r\n try {\r\n for (let r = this._eventHandlers; r !== undefined; r = r.next) {\r\n if ((r.flags & EV_REMOVED) !== 0 || r.key !== name) continue;\r\n try {\r\n r.handleEvent(ev);\r\n } catch {\r\n\r\n }\r\n }\r\n } finally {\r\n eventDispatchDepth--;\r\n }\r\n }, 'trigger');\r\n return this;\r\n }\r\n private async _off<K extends keyof HtmlElementEvents>(event: K, cb: (sender: ComponentBase | this, ev: HtmlElementEvents[K]) => any): Promise<this> {\r\n if (this.isDisposed || !this.element) {\r\n return this;\r\n }\r\n\r\n const full = String(event).toLowerCase();\r\n if (full.startsWith(\"x:\")) {\r\n const xName = full.slice(2);\r\n if (xName === \"mounted\") {\r\n const set = this._base._mountedSubs?.get(cb);\r\n if (set) {\r\n this._base._mountedSubs.delete(cb);\r\n for (const sub of set) {\r\n this._disposables.delete(sub);\r\n }\r\n }\r\n return this;\r\n }\r\n if (LIFECYCLE_X_EVENTS.has(xName)) {\r\n this._base._emiters?.off(\"on\" + xName, cb as any);\r\n }\r\n return this;\r\n }\r\n for (let r = this._eventHandlers; r !== undefined; r = r.next) {\r\n if ((r.flags & EV_REMOVED) !== 0 || r.key !== full || r.original !== (cb as any)) continue;\r\n if ((r.flags & EV_DOM) !== 0) {\r\n const rec = r;\r\n safeCall(() => { (this.element as any).removeEventListener(rec.type, rec, (rec.flags & EV_CAPTURE) !== 0); }, 'off.removeEventListener');\r\n }\r\n r.flags |= EV_REMOVED;\r\n break;\r\n }\r\n if (eventDispatchDepth === 0) compactEventRecords(this);\r\n return this;\r\n }\r\n /** Süren bertaraf: ikinci bir dispose/disposeAsync çağrısı yenisini başlatmaz, bunu bekler. */\r\n private _disposing?: Promise<void>;\r\n\r\n public override dispose(options: IDisposeOptions = { deep: true }): Promise<void> {\r\n if (this.isDisposed) { return Promise.resolve(); }\r\n if (this._disposing) { return this._disposing; }\r\n retireServiceOwner(this);\r\n this._disposing = DISPOSE_STARTED;\r\n return this._disposing = this._disposeCore(options, false);\r\n }\r\n\r\n private async _disposeCore(options: IDisposeOptions, asChild: boolean): Promise<void> {\r\n disposePrefix(this, options, asChild);\r\n let leave: Promise<void> | undefined;\r\n if (!asChild && !peekTransition(this)?.skipNextLeave) {\r\n leave = this._base._detachDomWithAnimationAsync();\r\n }\r\n await undefined;\r\n if (liveContentBlocks.live === 0 && subtreeDisposesSync(this, true)) {\r\n const pending = disposeRemainderSync(this, options, asChild, leave !== undefined);\r\n if (pending) {\r\n await Promise.all(pending);\r\n if (!asChild && this.isDisposed) { return; }\r\n disposeFinish(this, options, asChild);\r\n }\r\n return;\r\n }\r\n await disposeRemainderAsync(this, options, asChild, leave);\r\n }\r\n\r\n public disposeAsync(options: IDisposeOptions = { deep: true }): Promise<void> {\r\n if (this.isDisposed) { return Promise.resolve(); }\r\n if (this._disposing) { return this._disposing; }\r\n retireServiceOwner(this);\r\n this._disposing = DISPOSE_STARTED;\r\n return this._disposing = this._disposeCore(options, true);\r\n }\r\n\r\n\r\n protected async _clear(): Promise<any> {\r\n if (this.isDisposed == true) { return; }\r\n if (this.motif.options && this.motif.options.disableDisposal) { return; };\r\n await this.controls.clearAsync();\r\n //if (this.onupdated) this.onupdated(this as any, { data: this.model, field: '', source: 'clear' })\r\n // return new Promise((resolveOuter: any) => {\r\n // this.controls.forEach(async (control, index) => {\r\n // if (index === this.controls.length - 1) {\r\n // dom.window.setTimeout(resolveOuter, 0);\r\n // await control.dispose();\r\n }\r\n\r\n using<T>(waitable: Promise<any>, onfulfilled?: ((value: T) => T | PromiseLike<T>) | undefined | null, onrejected?: ((reason: any) => never | PromiseLike<never>) | undefined | null) {\r\n waitable.then(\r\n (value: T) => { this && !this.isDisposed && onfulfilled ? onfulfilled(value) : ''; },\r\n (reason: any) => { this && !this.isDisposed && onrejected ? onrejected(reason) : '' });\r\n }\r\n doWork<T>(waitable: Promise<T> | PromiseLike<T>): Promise<T> {\r\n return Promise.resolve(waitable).then((value: T) => {\r\n if (this && !this.isDisposed) {\r\n return value\r\n } else {\r\n return motifError('MJX108');\r\n };\r\n }) as Promise<T>;\r\n }\r\n\r\n private _siblingsApi?: SiblingsApi;\r\n private _siblingsSet?: boolean;\r\n\r\n get siblings(): SiblingsApi {\r\n if (this._siblingsSet) { return this._siblingsApi as SiblingsApi; }\r\n if (this.isDisposed && !this.motif?.options) { return this._siblingsApi as SiblingsApi; }\r\n return this._siblingsApi ??= this._createSiblingsApi();\r\n }\r\n\r\n set siblings(value: SiblingsApi) {\r\n this._siblingsApi = value;\r\n this._siblingsSet = true;\r\n }\r\n\r\n private _createSiblingsApi(): SiblingsApi {\r\n return {\r\n all: () => { return this.parent?.controls.items },\r\n next: () => {\r\n if (!this.parent) return undefined;\r\n const idx = this.parent.controls.items.indexOf(this);\r\n return this.parent.controls.items[idx + 1];\r\n },\r\n prev: () => {\r\n if (!this.parent) return undefined;\r\n const idx = this.parent.controls.items.indexOf(this);\r\n return this.parent.controls.items[idx - 1];\r\n },\r\n nextAll: () => {\r\n if (!this.parent) return undefined as any;\r\n const idx = this.parent.controls.items.indexOf(this);\r\n return this.parent.controls.items.slice(idx + 1);\r\n },\r\n prevAll: () => {\r\n if (!this.parent) return undefined as any;\r\n const idx = this.parent.controls.items.indexOf(this);\r\n return this.parent.controls.items.slice(0, idx);\r\n }\r\n };\r\n }\r\n\r\n public get serviceProvider(): ServiceProvider | null {\r\n let c: ComponentBase | null = this as unknown as ComponentBase;\r\n while (c) {\r\n const p = (c as any).provider as ServiceProvider | undefined;\r\n if (p) return p;\r\n const recorded = teardownApplications.get(c);\r\n if (recorded) return recorded.state === 'disposed' ? null : recorded.provider;\r\n c = c.parent;\r\n }\r\n try { return Application.main?.provider ?? null; } catch { return null; }\r\n }\r\n\r\n public getService<T>(token: (abstract new (...args: any) => T) | { prototype: T }): T | null;\r\n public getService<T = any>(token: string | symbol | object): T | null;\r\n public getService(token: any): any {\r\n try {\r\n\r\n const sp = this.serviceProvider;\r\n if (sp) {\r\n return sp._getFor(this, token);\r\n }\r\n reportWarning('MJX407', [describeServiceToken(token)], { token });\r\n } catch (err) {\r\n reportWarning('MJX408', [describeServiceToken(token), String((err as any)?.message ?? err)], { token, error: err });\r\n }\r\n return null;\r\n }\r\n $(selector: string) {\r\n if (this.isDisposed || !this.element) {\r\n return {\r\n fromDom: () => null,\r\n fromComponent: () => [] as ComponentBase[]\r\n };\r\n }\r\n var result = {\r\n fromDom: () => {\r\n var findContainer = findAppendableComponent(this)?.element;\r\n var findingTarget;\r\n if (!findContainer) {\r\n findingTarget = document;\r\n } else {\r\n findingTarget = findContainer;\r\n }\r\n if (findingTarget) {\r\n var elements = findingTarget.querySelectorAll(selector);\r\n return elements;\r\n }\r\n return null;\r\n },\r\n fromComponent: () => {\r\n const findingComponent = findAppendableComponent(this);\r\n const root = findingComponent ?? this;\r\n const found: ComponentBase[] = [];\r\n const walk = (cmp: ComponentBase) => {\r\n const el = cmp.element as any;\r\n if (el && el.nodeType === Node.ELEMENT_NODE) {\r\n const matches: ((sel: string) => boolean) | undefined = (el.matches || el.msMatchesSelector || el.webkitMatchesSelector);\r\n if (typeof matches === 'function') {\r\n try { if (matches.call(el, selector)) { found.push(cmp); } } catch { }\r\n }\r\n }\r\n if (cmp.controls && cmp.controls.items && cmp.controls.items.length) {\r\n for (const child of cmp.controls.items) { walk(child); }\r\n }\r\n };\r\n\r\n walk(root);\r\n return found;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n private async _stopAnimations() {\r\n const t = peekTransition(this);\r\n try { t?.activeCssCancel?.(); } catch { }\r\n try {\r\n if (t?.activeAnimations?.length) {\r\n try {\r\n await Promise.all(t.activeAnimations.map(a =>\r\n a.finished?.catch(() => { })\r\n ));\r\n } catch { /* ignore */ }\r\n }\r\n\r\n } catch (error) {\r\n\r\n }\r\n if (this.isDisposed) return;\r\n if (t) t.activeAnimations = [];\r\n }\r\n // return this;\r\n\r\n}\r\n\r\nObject.defineProperty(ComponentBase.prototype, 'motif', {\r\n ...Object.getOwnPropertyDescriptor(ComponentBase.prototype, 'motif'),\r\n set(this: any, value: unknown) {\r\n this._motif = value;\r\n },\r\n});\r\n\r\n\r\nfunction findContentBlocks(root: ComponentBase, results: ComponentBase[] = []): ComponentBase[] {\r\n if (!root || root.isDisposed) return results;\r\n\r\n if (root.constructor.name === 'TransportTo') {\r\n results.push(root);\r\n }\r\n if (root.controls && root.controls.items) {\r\n root.controls.items.forEach(child => findContentBlocks(child, results));\r\n }\r\n\r\n return results;\r\n}\r\n\r\nasync function disposeContentBlocks(root: ComponentBase): Promise<any> {\r\n if (liveContentBlocks.live === 0) return;\r\n const contentBlocks = findContentBlocks(root);\r\n return await Promise.all(contentBlocks.map(async (block) => {\r\n block.motif.options.transition.skipNextLeave = root.motif.options.transition.skipNextLeave;\r\n for (const element of block.controls.items) {\r\n element.motif.options.transition.skipNextLeave = block.motif.options.transition.skipNextLeave;\r\n element.dispose({ skipLeaveTransition: true });\r\n element.isDisposed = true;\r\n }\r\n await block.dispose()\r\n }));\r\n}\r\n\r\nconst _appliedRefs = new WeakMap<object, Set<Function>>();\r\n\r\nexport function takePendingRefs(component: ComponentBase, ref: any): Function[] {\r\n const fns: Function[] = (Array.isArray(ref) ? ref : [ref]).filter((fn: any) => typeof fn === 'function');\r\n if (fns.length === 0) return fns;\r\n let applied = _appliedRefs.get(component);\r\n if (!applied) {\r\n applied = new Set();\r\n _appliedRefs.set(component, applied);\r\n }\r\n const pending: Function[] = [];\r\n for (const fn of fns) {\r\n if (applied.has(fn)) continue;\r\n applied.add(fn);\r\n pending.push(fn);\r\n }\r\n return pending;\r\n}\r\n\r\nexport function disposeUnplacedChilds(owner: ComponentBase, kids: unknown): void {\r\n if (!Array.isArray(kids) || !kids.some(kid => kid instanceof ComponentBase)) return;\r\n owner.motif.setDisposable(() => {\r\n for (const kid of kids) {\r\n if (kid instanceof ComponentBase && !kid.isDisposed && !kid.parent) kid.dispose();\r\n }\r\n });\r\n}\r\n\r\nconst isCallableRef = (ref: any): boolean => typeof ref === 'function' || Array.isArray(ref);\r\n\r\nexport function extractRefs(props: any, component?: ComponentBase): any[] {\r\n const refs: any[] = [];\r\n if (!props || typeof props !== 'object') return refs;\r\n if (Object.prototype.hasOwnProperty.call(props, 'ref')) {\r\n if (isCallableRef(props.ref)) {\r\n refs.push(props.ref);\r\n delete props.ref;\r\n } else if (component && props.ref && typeof props.ref === 'object') {\r\n props.ref = component;\r\n }\r\n }\r\n const runover = props.runover;\r\n if (runover && typeof runover === 'object' && Object.prototype.hasOwnProperty.call(runover, 'ref')) {\r\n if (isCallableRef(runover.ref)) {\r\n refs.push(runover.ref);\r\n const rest = { ...runover };\r\n delete rest.ref;\r\n props.runover = rest;\r\n } else if (component && runover.ref && typeof runover.ref === 'object') {\r\n runover.ref = component;\r\n }\r\n }\r\n return refs.length === 0 ? refs : ([] as any[]).concat(...refs);\r\n}\r\n\r\nconst LIFECYCLE_HANDLER_LISTS: Record<string, keyof LifecycleStorage> = {\r\n 'initializecomponent': '_initializeComponentHandlers',\r\n 'oninitializecomponent': '_onInitializeComponentHandlers',\r\n 'onbuilding': '_onBuildingHandlers',\r\n 'onbuilt': '_onBuiltHandlers',\r\n 'onmounted': '_onMountedHandlers',\r\n 'oninitializing': '_onInitializingHandlers',\r\n 'oninitialized': '_onInitializedHandlers',\r\n 'onconfig': '_onConfigHandlers',\r\n 'onconfigured': '_onConfiguredHandlers',\r\n 'onvisibilitychanged': '_onVisibilityChangedHandlers',\r\n 'onactivated': '_onActivatedHandlers',\r\n 'ondeactivated': '_onDeactivatedHandlers',\r\n 'ondisposing': '_onDisposingHandlers',\r\n 'ondisposed': '_onDisposedHandlers',\r\n};\r\n\r\nfunction collectLifecycleHandlers(component: ComponentBase, lowerKey: string, value: any): boolean {\r\n const listName = Object.prototype.hasOwnProperty.call(LIFECYCLE_HANDLER_LISTS, lowerKey) ? LIFECYCLE_HANDLER_LISTS[lowerKey] : undefined;\r\n if (!listName) return false;\r\n const fns: any[] = Array.isArray(value) ? value : [value];\r\n if (fns.length === 0 || !fns.every(fn => typeof fn === 'function')) return false;\r\n const target = component as any;\r\n let from = 0;\r\n if (listName === '_initializeComponentHandlers') {\r\n if (target._init === undefined && !target._baseCtx?._initializeComponentHandlers) {\r\n target._init = fns[0];\r\n from = 1;\r\n }\r\n }\r\n if (from >= fns.length) return true;\r\n const base = target._base;\r\n for (let i = from; i < fns.length; i++) {\r\n const fn = fns[i];\r\n if (listName === '_initializeComponentHandlers' && fn === target._init) continue;\r\n const slot: HookSlot | undefined = base[listName];\r\n if (slot === undefined) base[listName] = fn;\r\n else if (typeof slot === 'function') { if (slot !== fn) base[listName] = [slot, fn]; }\r\n else if (!slot.includes(fn)) slot.push(fn);\r\n }\r\n return true;\r\n}\r\n\r\nexport function ParseProps(props: any, component: ComponentBase): boolean {\r\n if (props) {\r\n var keys = Object.keys(props);\r\n if (keys.length === 0) return false;\r\n keys.forEach(key => {\r\n if (key == 'initializeComponent' || key == 'oninitializeComponent' || key.startsWith('on')) {\r\n if (collectLifecycleHandlers(component, key.toLowerCase(), props[key])) {\r\n delete props[key];\r\n return;\r\n }\r\n } else if (key == 'childs') {\r\n const flat: ComponentBase[] = ([] as any[]).concat(...props[key] as any);\r\n component.childs = flat;\r\n disposeUnplacedChilds(component, flat);\r\n delete props[key];\r\n } else if (key === 'transition') {\r\n applyTransitionProp(props[key], component);\r\n delete props[key];\r\n } else if (key.startsWith(\"on\")) {\r\n\r\n component.motif.on(key as any, props[key]);\r\n } else if (key.startsWith(\"x-\")) {\r\n\r\n var nkey = key.replace(\"x-\", \"on\");\r\n if (key.toLowerCase() == \"x-wait\") {\r\n component.bindings.wait(props[key]);\r\n\r\n } else if (key.toLowerCase() == \"x-display\") {\r\n component.bindings.display(props[key]);\r\n } else {\r\n if (collectLifecycleHandlers(component, nkey.toLowerCase(), props[key])) {\r\n delete props[key];\r\n return;\r\n }\r\n }\r\n\r\n\r\n delete props[key];\r\n } else if (key.startsWith(\"runover\")) {\r\n\r\n ParseProps(props[key], component);\r\n delete props[key];\r\n } else if (key.startsWith(\"preconfig\")) {\r\n component.motif.options._preconfig = props[key];\r\n delete props[key];\r\n } else if (key === '__childExpr') {\r\n delete props[key];\r\n } else {\r\n // var callback = props[key];\r\n // if (typeof callback === \"function\") {\r\n // } else {\r\n }\r\n });\r\n return typeof props === 'object' && Reflect.ownKeys(props).length === 0;\r\n }\r\n return false;\r\n}\r\n\r\nconst _transitionSources = new WeakMap<ComponentBase, any>();\r\n\r\nfunction setTransition(component: ComponentBase, value: any, live: boolean): void {\r\n const transition = component.motif.options.transition;\r\n if (typeof value === 'string' && value.length > 0) {\r\n transition.name = value;\r\n if (live) transition.classes = undefined;\r\n } else if (value && typeof value === 'object') {\r\n if (typeof value.name === 'string' && value.name.length > 0) {\r\n transition.name = value.name;\r\n }\r\n if (!('mode' in value)) {\r\n transition.classes = value;\r\n } else {\r\n const { mode, ...classes } = value;\r\n if (isTransitionMode(mode)) {\r\n transition.mode = mode;\r\n }\r\n if (Object.keys(classes).length > 0) {\r\n transition.classes = classes;\r\n }\r\n }\r\n } else if (live) {\r\n transition.name = '';\r\n transition.classes = undefined;\r\n }\r\n}\r\n\r\nexport function applyTransitionProp(value: any, component: ComponentBase): void {\r\n if (!component || component.isDisposed) return;\r\n if (value === undefined || value === null) return;\r\n if (_transitionSources.get(component) === value) return;\r\n _transitionSources.set(component, value);\r\n if (typeof value === 'function') {\r\n component.bindings.watch(() => {\r\n const current = value();\r\n if (component.isDisposed) return;\r\n setTransition(component, current, true);\r\n });\r\n return;\r\n }\r\n setTransition(component, value, false);\r\n}\r\n\r\nexport function isComponentLike(value: any): boolean {\r\n if (value instanceof ComponentBase) return true;\r\n return Array.isArray(value) && value.length > 0 && value.every(x => x instanceof ComponentBase);\r\n}\r\n\r\nconst _textBindingWarned = new WeakSet<object>();\r\n\r\nfunction warnComponentInTextBinding(component: ComponentBase, value: any): void {\r\n if (_textBindingWarned.has(component)) return;\r\n _textBindingWarned.add(component);\r\n reportWarning('MJX204', [], { value: Array.isArray(value) ? `ComponentBase[${value.length}]` : 'ComponentBase' });\r\n}\r\n\r\nconst COMPONENT_OPTION_KEYS = ['hideStrategy', 'disableDisposal'] as const;\r\n\r\nexport function applyComponentOptions(source: any, component: ComponentBase): void {\r\n if (!source || typeof source !== 'object' || !component || component.isDisposed) return;\r\n for (const key of COMPONENT_OPTION_KEYS) {\r\n if (source[key] !== undefined) (component.motif.options as any)[key] = source[key];\r\n }\r\n}\r\n\r\n/** `applyPlainElementProps`'un DOM'a yazmayacağı çerçeve anahtarları. */\r\nconst PLAIN_ELEMENT_SKIP = new Set([\r\n 'ref', 'key', 'indexkey', 'inject', 'options', 'props', 'settings', 'isSvg',\r\n 'childs', 'initializeComponent', 'runover', 'transition', 'preconfig', 'nodes', 'onElementCreating'\r\n]);\r\n\r\nconst SPREAD_HTML_KEYS = new Set(['innerhtml', 'srcdoc']);\r\nconst SPREAD_URL_ATTRIBUTES = new Set(['href', 'src', 'action', 'formaction', 'xlink:href']);\r\nconst JAVASCRIPT_URL = /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i;\r\n\r\nfunction isJavascriptUrl(value: unknown): boolean {\r\n if (value === undefined || value === null || typeof value === 'boolean') return false;\r\n try { return JAVASCRIPT_URL.test(String(value)); } catch { return false; }\r\n}\r\n\r\nfunction guardSpreadUrl(key: string, read: () => any): () => any {\r\n return () => {\r\n let value = read();\r\n if (typeof value === 'function') value = value();\r\n if (typeof value === 'function') value = value();\r\n if (!isJavascriptUrl(value)) return value;\r\n reportWarning('MJX125', [key]);\r\n return null;\r\n };\r\n}\r\n\r\nexport function applyPlainElementProps(props: any, component: ComponentBase): void {\r\n if (!props || typeof props !== 'object' || component.isDisposed) return;\r\n const keys = Object.keys(props);\r\n if (keys.length === 0) return;\r\n let attrs: Record<string, any> | null = null;\r\n let applied: Map<string, any> | null = null;\r\n for (const key of keys) {\r\n if (PLAIN_ELEMENT_SKIP.has(key)) continue;\r\n if (key.startsWith('x-') || key.startsWith('x:') || key.startsWith('__')) continue;\r\n let v = props[key];\r\n if (v === undefined) continue;\r\n if (/^on/i.test(key)) {\r\n if (typeof v === 'function') component.motif.on(key as any, v as any);\r\n continue;\r\n }\r\n if (typeof v === 'function' && v.length > 0) continue;\r\n const lowerKey = key.toLowerCase();\r\n if (SPREAD_HTML_KEYS.has(lowerKey)) {\r\n reportWarning('MJX124', [key]);\r\n continue;\r\n }\r\n if (SPREAD_URL_ATTRIBUTES.has(lowerKey)) {\r\n if (typeof v === 'function') {\r\n v = guardSpreadUrl(key, v);\r\n } else if (isJavascriptUrl(v)) {\r\n reportWarning('MJX125', [key]);\r\n continue;\r\n }\r\n }\r\n (applied ??= appliedDomProps(component)).set(key, v);\r\n if (key === 'class' || key === 'className') {\r\n component.class.add(v && typeof v === 'object' && !Array.isArray(v) ? [v] : v);\r\n } else if (key === 'style') {\r\n component.style(v);\r\n } else if (key === 'value' || key === 'checked' || key === 'selected') {\r\n component.bindings.add(key, v);\r\n } else {\r\n (attrs ??= {})[key] = v;\r\n }\r\n }\r\n if (attrs) component.attr.add(attrs);\r\n}\r\n\r\nconst _appliedDomProps = new WeakMap<ComponentBase, Map<string, any>>();\r\nfunction appliedDomProps(component: ComponentBase): Map<string, any> {\r\n let m = _appliedDomProps.get(component);\r\n if (!m) { m = new Map(); _appliedDomProps.set(component, m); }\r\n return m;\r\n}\r\n\r\n/** Bileşen etiketinden köke düşen ortak öznitelikler. */\r\nconst FALLTHROUGH_KEYS = new Set(['class', 'className', 'style', 'id', 'tabindex', 'role']);\r\nfunction isFallthroughKey(key: string): boolean {\r\n return FALLTHROUGH_KEYS.has(key) || key.startsWith('aria-') || key.startsWith('data-');\r\n}\r\n\r\nlet constructingComponentRoot = false;\r\n\r\nexport function constructComponentRoot<T>(make: () => T): T {\r\n constructingComponentRoot = true;\r\n try {\r\n return make();\r\n } finally {\r\n constructingComponentRoot = false;\r\n }\r\n}\r\n\r\nexport function applyFallthroughProps(props: any, component: ComponentBase): void {\r\n if (!props || typeof props !== 'object' || component.isDisposed) return;\r\n const applied = _appliedDomProps.get(component);\r\n let subset: Record<string, any> | null = null;\r\n for (const key of Object.keys(props)) {\r\n if (!isFallthroughKey(key)) continue;\r\n const v = props[key];\r\n if (v === undefined || v === null) continue;\r\n if (typeof v === 'function' && v.length > 0) continue;\r\n if (applied && applied.has(key) && Object.is(applied.get(key), v)) continue;\r\n (subset ??= {})[key] = v;\r\n }\r\n if (subset) applyPlainElementProps(subset, component);\r\n}\r\n\r\n\r\nfunction findAppendableComponent(component: ComponentBase): ComponentBase | null | undefined {\r\n\r\n return safeCall<ComponentBase | null | undefined>(() => {\r\n if (!component || component.isDisposed) return null;\r\n if (component.element.nodeType !== Node.COMMENT_NODE && component.element.nodeType !== Node.DOCUMENT_FRAGMENT_NODE && component.element.nodeType !== Node.TEXT_NODE) {\r\n return component;\r\n } else if (component.parent) {\r\n return findAppendableComponent(component.parent);\r\n }\r\n return null;\r\n }, 'findAppendableComponent', null);\r\n\r\n}\r\n\r\n\r\nfunction findParentElement(component: ComponentBase): ComponentBase | null {\r\n\r\n try {\r\n if (component.isDisposed) return null;\r\n if (component.element.nodeType !== Node.COMMENT_NODE && component.element.nodeType !== Node.DOCUMENT_FRAGMENT_NODE && component.element.nodeType !== Node.TEXT_NODE) {\r\n return component;\r\n } else if (component.parent) {\r\n return findParentElement(component.parent);\r\n }\r\n } catch (error) {\r\n throw error;\r\n }\r\n return null;\r\n}\r\n\r\n\r\ntype AttachWaiter = { element: Element; callback: () => any };\r\nconst attachWaiters = new Set<AttachWaiter>();\r\nlet attachObserver: MutationObserver | null = null;\r\n\r\nfunction releaseAttachObserver() {\r\n if (attachWaiters.size || !attachObserver) { return; }\r\n try { attachObserver.disconnect(); } catch { /* ignore */ }\r\n attachObserver = null;\r\n}\r\n\r\nfunction flushAttachWaiters() {\r\n for (const waiter of [...attachWaiters]) {\r\n if (!attachWaiters.has(waiter) || !document.contains(waiter.element)) { continue; }\r\n attachWaiters.delete(waiter);\r\n try {\r\n waiter.callback();\r\n } catch (error) {\r\n queueMicrotask(() => { throw error; });\r\n }\r\n }\r\n releaseAttachObserver();\r\n}\r\n\r\nfunction onElementAttached(element: Element, callback: () => any): (() => void) | null {\r\n if (document.contains(element)) {\r\n callback();\r\n return null;\r\n }\r\n\r\n const waiter: AttachWaiter = { element, callback };\r\n attachWaiters.add(waiter);\r\n if (!attachObserver) {\r\n attachObserver = new MutationObserver(flushAttachWaiters);\r\n attachObserver.observe(document.documentElement, {\r\n childList: true,\r\n subtree: true,\r\n });\r\n }\r\n\r\n return () => {\r\n if (attachWaiters.delete(waiter)) { releaseAttachObserver(); }\r\n };\r\n}\r\n\r\nexport function notifyActivated(component: ComponentBase): void {\r\n unpinServiceOwner(component);\r\n ComponentHelper.activateTree(component);\r\n}\r\nexport function notifyDeactivated(component: ComponentBase): void {\r\n pinServiceOwner(component);\r\n ComponentHelper.deactivateTree(component);\r\n}"," \r\nexport class NameValuePair<KType, VType> {\r\n public Key!: KType;\r\n public value!: VType;\r\n}; ","export class List<T>{\r\n \r\n public ItemAdded!: (i: T) => void;\r\n public ItemAddedBefore!: (i: T) => void;\r\n public ItemSplice!: (start:any, i: T) => void;\r\n private __list: Array<T> = [];\r\n private _map = new Set<T>();\r\n public Dispose() {\r\n this.__list = [];\r\n\r\n }\r\n public Add(item: T): number {\r\n this._map.add(item);\r\n var i = this.__list.push(item) - 1;\r\n if (this.ItemAdded != undefined) { this.ItemAdded(item); };\r\n return i;\r\n }\r\n\r\n public AddBefore(item: T) {\r\n this._map.add(item);\r\n var i = this.__list.unshift(item) - 1;\r\n if (this.ItemAddedBefore != undefined) { this.ItemAddedBefore(item); };\r\n return i;\r\n\r\n }\r\n\r\n public Insert(start:any, item: T) {\r\n this._map.add(item);\r\n var i = this.__list.splice(start, 0, item);\r\n if (this.ItemSplice != undefined) { this.ItemSplice(start, item); };\r\n return i;\r\n }\r\n\r\n public get items(): Array<T> {\r\n return this.__list;\r\n }\r\n\r\n public clear(): T[] {\r\n this._map.clear();\r\n this.__list.splice(0);\r\n this.__list = [];\r\n return this.__list;\r\n };\r\n public get count(): number { \r\n return this.__list.length;\r\n };\r\n\r\n public remove(item: T): T[] {\r\n const index = this.__list.indexOf(item);\r\n if (index === -1) return [];\r\n this._map.delete(item);\r\n return this.__list.splice(index, 1);\r\n };\r\n\r\n public indexOf(item: T): number {\r\n return this.__list.indexOf(item)\r\n }\r\n\r\n public FindFromKey(key: any, value: any): T[] {\r\n return this.__list.filter(i => { return (i as any)[key] === value })\r\n }\r\n\r\n public removeIndex(index: number): T[] {\r\n var deleted = this.__list.splice(index, 1);\r\n deleted.forEach(t => {\r\n this._map.delete(t);\r\n })\r\n return deleted;\r\n };\r\n\r\n public has(item: T): boolean {\r\n return this._map.has(item);\r\n }\r\n\r\n public item(index: number): T {\r\n return this.__list[index];\r\n }\r\n\r\n public forEach(callbackfn: (value: T, index: number, array: T[]) => void) {\r\n\r\n this.__list?.forEach(callbackfn);\r\n }\r\n\r\n public ReverseClone(): Array<T> {\r\n return this.__list.slice().reverse();\r\n }\r\n\r\n public filter(callbackfn: (value: T, index: number, array: T[]) => boolean ): Array<T> {\r\n return this.__list.filter(callbackfn);\r\n }\r\n};","\r\n\r\nimport { NodeTypes } from \".\";\r\nimport { reportError } from \"./diagnostics\";\r\nimport { Component, ComponentBase } from \"../component\";\r\nimport { IDisposable } from \"../disposable\";\r\n\r\nexport const toKebab = (str: string) => str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? \"-\" : \"\") + $.toLowerCase());\r\n\r\n\r\nexport function toDisposable(fn: () => void): IDisposable {\r\n let pending = true;\r\n return {\r\n dispose() {\r\n if (!pending) {\r\n return;\r\n }\r\n pending = false;\r\n fn();\r\n }\r\n };\r\n}\r\n\r\n\r\n\r\nexport function advanceif(source: ComponentBase, ...targets: NodeTypes[]) {\r\n if (targets.indexOf(source.element.nodeType) > -1) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function advelif(source: any, ...targets: NodeTypes[]) {\r\n if (source && targets.indexOf(source.nodeType) > -1) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function isAnchorElement(source: ComponentBase) {\r\n return source.element.nodeName == 'A';\r\n}\r\n\r\nexport function isElement(source: ComponentBase) {\r\n return source.element.nodeType == NodeTypes.ELEMENT_NODE;\r\n}\r\nexport function isview(source: ComponentBase) {\r\n return source.element.nodeName == 'view';\r\n}\r\n\r\n\r\n\r\nexport function isComponent(source: any) {\r\n return source instanceof ComponentBase\r\n}\r\nexport function createComponent(tag: any, options: any) {\r\n return new Component(tag, options)\r\n}\r\n\r\n\r\nexport function normalizePath(p: string): string {\r\n return '/' + p.replace(/^\\/+|\\/+$/g, '');\r\n}\r\nexport function startsWithPath(requestPath: string, prefix: string): boolean {\r\n const rp = normalizePath(requestPath);\r\n const pp = normalizePath(prefix);\r\n return rp === pp || rp.startsWith(pp + '/');\r\n}\r\n\r\nexport function isExactMatch(requestPath: string, target: string): boolean {\r\n try {\r\n const strip = (p: string) => {\r\n return p.trim()\r\n .split(/[?#]/)[0]\r\n .replace(/\\\\/g, \"/\")\r\n .replace(/\\/{2,}/g, \"/\");\r\n }\r\n return strip(requestPath) === strip(target);\r\n } catch (error) {\r\n reportError('MJX610', error);\r\n return false;\r\n }\r\n\r\n}\r\n\r\nexport function findAppendableComponent(component: ComponentBase): ComponentBase | null {\r\n try {\r\n if (component.isDisposed) return null;\r\n if (component.element.nodeType !== Node.COMMENT_NODE && component.element.nodeType !== Node.DOCUMENT_FRAGMENT_NODE && component.element.nodeType !== Node.TEXT_NODE) {\r\n return component;\r\n } else if (component.parent) {\r\n return findAppendableComponent(component.parent);\r\n }\r\n } catch (error) {\r\n throw error;\r\n }\r\n return null;\r\n}","import { reportWarning } from \"./diagnostics\";\n\nexport class LeakMonitor {\n\n private readonly _origins = new Map<string, number>();\n private _quietChecks = 0;\n\n constructor(readonly threshold: number, readonly name: string) { }\n\n check(size: number): (() => void) | undefined {\n if (this.threshold <= 0 || size < this.threshold) {\n return undefined;\n }\n const origin = new Error().stack ?? '';\n this._origins.set(origin, (this._origins.get(origin) ?? 0) + 1);\n\n this._quietChecks--;\n if (this._quietChecks <= 0) {\n this._quietChecks = this.threshold / 2;\n const [stack, count] = this._busiestOrigin();\n reportWarning('MJX507', [this.name, size, count], stack);\n }\n\n return () => {\n this._origins.set(origin, (this._origins.get(origin) ?? 0) - 1);\n };\n }\n\n private _busiestOrigin(): [string, number] {\n let busiest: [string, number] = ['', 0];\n for (const entry of this._origins) {\n if (entry[1] > busiest[1]) {\n busiest = entry;\n }\n }\n return busiest;\n }\n}\n","import { List, NameValuePair } from \"./\";\r\n\r\nexport class Dictionary<KType, VType> {\r\n private __values: List<NameValuePair<KType, VType>> = new List<NameValuePair<KType, VType>>();\r\n public Add(Key: KType, Value: VType): number {\r\n\r\n\r\n var item = new NameValuePair<KType, VType>();\r\n item.Key = Key;\r\n item.value = Value;\r\n var n = this.__values.Add(item);\r\n if (this.OnItemAdded != null) {\r\n this.OnItemAdded(item.Key, item.value);\r\n }\r\n\r\n return n;\r\n\r\n }\r\n public has(key: KType) {\r\n return this.filter(t => t.Key == key)[0] ? true : false;\r\n }\r\n public item(key: KType) {\r\n return this.filter(t => t.Key == key)[0]\r\n }\r\n public OnItemAdded!: (key: KType, value: VType) => any;\r\n public removeIndex(index: number): NameValuePair<KType, VType>[] {\r\n return this.__values.removeIndex(index);\r\n };\r\n public remove(Key: KType) {\r\n var item = this.__values.filter(x => x.Key == Key);\r\n item.forEach((v) => {\r\n this.__values.remove(v);\r\n });\r\n };\r\n public clear() {\r\n this.__values.clear();\r\n };\r\n public forEach(callback: ((item: NameValuePair<KType, VType>) => void)) {\r\n this.__values.forEach(callback);\r\n\r\n }\r\n public get values(): List<NameValuePair<KType, VType>> {\r\n return this.__values;\r\n }\r\n public filter(callbackfn: (value: NameValuePair<KType, VType>, index: number, array: NameValuePair<KType, VType>[]) => boolean): NameValuePair<KType, VType>[] {\r\n return this.__values.items.filter(callbackfn);\r\n }\r\n\r\n public find(predicate: (value: NameValuePair<KType, VType>, index: number, obj: NameValuePair<KType, VType>[]) => unknown, thisArg?: any): NameValuePair<KType, VType> | undefined {\r\n return this.__values.items.find(predicate);\r\n }\r\n} ","interface Link<T> {\n value: T | undefined;\n before: Link<T>;\n after: Link<T>;\n linked: boolean;\n}\n\nfunction createRing<T>(): Link<T> {\n const ring = { value: undefined, linked: false } as Link<T>;\n ring.before = ring;\n ring.after = ring;\n return ring;\n}\n\nexport class LinkedList<T> {\n\n private _ring: Link<T> = createRing<T>();\n private _count = 0;\n\n get size(): number {\n return this._count;\n }\n\n isEmpty(): boolean {\n return this._count === 0;\n }\n\n push(value: T): () => void {\n return this._link(value, this._ring.before);\n }\n\n unshift(value: T): () => void {\n return this._link(value, this._ring);\n }\n\n pop(): T | undefined {\n return this._take(this._ring.before);\n }\n\n shift(): T | undefined {\n return this._take(this._ring.after);\n }\n\n clear(): void {\n for (let link = this._ring.after; link !== this._ring; link = link.after) {\n link.linked = false;\n }\n this._ring = createRing<T>();\n this._count = 0;\n }\n\n *[Symbol.iterator](): Iterator<T> {\n const ring = this._ring;\n for (let link = ring.after; link !== ring; link = link.after) {\n yield link.value as T;\n }\n }\n\n private _link(value: T, previous: Link<T>): () => void {\n const link: Link<T> = { value, before: previous, after: previous.after, linked: true };\n previous.after.before = link;\n previous.after = link;\n this._count++;\n return () => this._unlink(link);\n }\n\n private _take(link: Link<T>): T | undefined {\n if (link === this._ring) {\n return undefined;\n }\n const value = link.value;\n this._unlink(link);\n return value;\n }\n\n private _unlink(link: Link<T>): void {\n if (!link.linked) {\n return;\n }\n link.linked = false;\n link.before.after = link.after;\n link.after.before = link.before;\n this._count--;\n }\n}\n","export type Bind<T> = T | (() => T);\n\nexport function toGetter<T>(value: Bind<T>): () => T {\n return typeof value === 'function' ? (value as () => T) : () => value;\n}\n\nexport function read<T>(value: Bind<T>): T {\n return typeof value === 'function' ? (value as () => T)() : value;\n}\n","import { motifError } from \"./diagnostics\";\nexport interface Group<TKey, TElement> {\n key: TKey;\n items: TElement[];\n}\n\nfunction compareKeys<TKey>(a: TKey, b: TKey): number {\n return a > b ? 1 : a < b ? -1 : 0;\n}\n\nexport class Query<T> implements Iterable<T> {\n private readonly source: readonly T[];\n\n constructor(source: Iterable<T>) {\n this.source = Array.isArray(source) ? source : Array.from(source);\n }\n\n static from<T>(source: Iterable<T>): Query<T> {\n return new Query(source);\n }\n\n where(predicate: (item: T, index: number) => boolean): Query<T> {\n return new Query(this.source.filter(predicate));\n }\n\n select<TResult>(selector: (item: T, index: number) => TResult): Query<TResult> {\n return new Query(this.source.map(selector));\n }\n\n orderBy<TKey>(keySelector: (item: T) => TKey): Query<T> {\n return new Query([...this.source].sort((a, b) => compareKeys(keySelector(a), keySelector(b))));\n }\n\n orderByDescending<TKey>(keySelector: (item: T) => TKey): Query<T> {\n return new Query([...this.source].sort((a, b) => compareKeys(keySelector(b), keySelector(a))));\n }\n\n distinctBy<TKey>(keySelector: (item: T) => TKey): Query<T> {\n const seen = new Set<TKey>();\n return new Query(this.source.filter(item => {\n const key = keySelector(item);\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n }));\n }\n\n groupBy<TKey>(keySelector: (item: T) => TKey): Query<Group<TKey, T>> {\n const map = new Map<TKey, T[]>();\n for (const item of this.source) {\n const key = keySelector(item);\n const group = map.get(key);\n if (group) {\n group.push(item);\n } else {\n map.set(key, [item]);\n }\n }\n return new Query(Array.from(map, ([key, items]) => ({ key, items })));\n }\n\n first(): T {\n if (this.source.length === 0) {\n throw motifError('MJX601');\n }\n return this.source[0];\n }\n\n firstOrDefault(): T | undefined {\n return this.source[0];\n }\n\n any(predicate?: (item: T) => boolean): boolean {\n return predicate ? this.source.some(predicate) : this.source.length > 0;\n }\n\n all(predicate: (item: T) => boolean): boolean {\n return this.source.every(predicate);\n }\n\n aggregate<TResult>(seed: TResult, func: (acc: TResult, item: T) => TResult): TResult {\n return this.source.reduce(func, seed);\n }\n\n toArray(): T[] {\n return [...this.source];\n }\n\n [Symbol.iterator](): Iterator<T> {\n return this.source[Symbol.iterator]();\n }\n}\n","import { reportWarning } from \"./diagnostics\";\nimport { isDevLike } from \"../devtools/devbus\";\n\nexport const COMPILER_CONTRACT = 1;\nconst SUPPORTED_CONTRACTS: readonly number[] = [1, 2];\n\nconst reported = new Set<number>();\nconst pending = new Set<number>();\n\nexport function motifCompiled(contract: number): void {\n if (SUPPORTED_CONTRACTS.includes(contract) || reported.has(contract)) return;\n if (!isDevLike()) {\n pending.add(contract);\n return;\n }\n pending.delete(contract);\n reported.add(contract);\n reportWarning('MJX121', [contract, COMPILER_CONTRACT]);\n}\n\nexport function flushCompilerContractWarnings(): void {\n for (const contract of Array.from(pending)) motifCompiled(contract);\n}\n","\nexport * from \"./NameValuePair\";\nexport * from \"./List\";\nexport * from \"./functions\";\nexport * from \"./ErrorHandler\";\nexport * from \"./LeakMonitor\";\nexport * from \"./Dictionary\";\nexport * from \"./IAttribute\";\nexport * from \"./LinkedList\";\nexport type { TransitionProps, CSSTransitionInfo, TransitionPhase } from \"./transition\";\nexport type { TransitionMode } from \"./transitionRegistry\";\nexport * from \"./bind\";\nexport * from \"./Query\";\nexport { MotifError } from \"./diagnostics\";\nexport { motifCompiled } from \"./compilerContract\";\nexport type { MotifErrorCode } from \"./diagnostics\";\n\n\nexport enum NodeTypes {\n ELEMENT_NODE = 1,\n ATTRIBUTE_NODE = 2,\n TEXT_NODE = 3,\n CDATA_SECTION_NODE = 4,\n ENTITY_REFERENCE_NODE = 5,\n /**deprecated */\n ENTITY_NODE = 6,\n /**deprecated */\n PROCESSING_INSTRUCTION_NODE = 7,\n COMMENT_NODE = 8,\n DOCUMENT_NODE = 9,\n DOCUMENT_TYPE_NODE = 10,\n DOCUMENT_FRAGMENT_NODE = 11,\n /**deprecated */\n NOTATION_NODE = 12\n}\n","export function pushTight<T>(list: T[], value: T): void {\r\n if (list.length === 0) {\r\n list.length = 1;\r\n list[0] = value;\r\n return;\r\n }\r\n list.push(value);\r\n}\r\n","\r\nimport { LeakMonitor } from \"../common\";\r\nimport { reportError, reportWarning } from \"../common/diagnostics\";\r\nimport { getRaw, followTracking } from \"./common\";\r\nimport { pushTight } from \"../common/pushTight\";\r\n\r\nexport type EffectFn = () => void;\r\n\r\nclass Effect {\r\n deps: [object, string | symbol][] = [];\r\n active = true;\r\n running = false;\r\n scheduler?: () => void;\r\n constructor(public fn: EffectFn, private callback?: (value: unknown) => void) { }\r\n run() {\r\n let value: unknown;\r\n if (!this.active || this.running) return;\r\n cleanup(this);\r\n effectStack.push(this);\r\n this.running = true;\r\n try {\r\n value = this.fn();\r\n } finally {\r\n effectStack.pop();\r\n this.running = false;\r\n if (this.callback) {\r\n this.callback(value);\r\n }\r\n }\r\n }\r\n stop() {\r\n this.active = false;\r\n cleanup(this);\r\n }\r\n}\r\n\r\nconst depMap = new WeakMap<object, Map<string | symbol, Set<Effect>>>();\r\nconst effectStack: Effect[] = [];\r\nconst effectQueue = new Set<Effect>();\r\nlet isFlushing = false;\r\n\r\nlet leakEnabled = false;\r\nlet leakThreshold = -1;\r\nlet leakMonitor: LeakMonitor | undefined;\r\nconst leakCleanups = new WeakMap<Set<Effect>, Map<Effect, () => void>>();\r\nexport function configureReactivityLeakMonitor(opts: { enabled?: boolean; threshold?: number; name?: string } = {}) {\r\n leakEnabled = !!opts.enabled;\r\n leakThreshold = typeof opts.threshold === 'number' ? opts.threshold : (leakEnabled ? 200 : -1);\r\n leakMonitor = leakEnabled && leakThreshold > 0 ? new LeakMonitor(leakThreshold, opts.name ?? 'reactivity-core') : undefined;\r\n}\r\n\r\nexport function track(target: object, key: string | symbol) {\r\n if (!followTracking) return;\r\n const rawTarget = getRaw(target as any);\r\n const effect = effectStack[effectStack.length - 1];\r\n if (!effect || !effect.active) return;\r\n let deps = depMap.get(rawTarget);\r\n if (!deps) depMap.set(rawTarget, (deps = new Map()));\r\n let dep = deps.get(key);\r\n if (!dep) deps.set(key, (dep = new Set()));\r\n if (!dep.has(effect)) {\r\n dep.add(effect);\r\n pushTight(effect.deps, [rawTarget, key]);\r\n if (leakEnabled && leakMonitor && leakThreshold > 0) {\r\n try {\r\n const cleanup = leakMonitor.check(dep.size);\r\n if (cleanup) {\r\n let m = leakCleanups.get(dep);\r\n if (!m) { m = new Map(); leakCleanups.set(dep, m); }\r\n m.set(effect, cleanup);\r\n }\r\n } catch { }\r\n }\r\n }\r\n}\r\n\r\nexport function trigger(target: object, key: string | symbol) {\r\n const rawTarget = getRaw(target as any);\r\n const deps = depMap.get(rawTarget);\r\n if (!deps) return;\r\n const effects = deps.get(key);\r\n if (!effects) return;\r\n let queued = false;\r\n effects.forEach(effect => {\r\n if (!effect.active) return;\r\n if (effect.scheduler) {\r\n runReported(effect.scheduler);\r\n return;\r\n }\r\n effectQueue.add(effect);\r\n queued = true;\r\n });\r\n if (queued) flushEffects();\r\n}\r\n\r\nfunction runReported(fn: () => unknown) {\r\n try {\r\n fn();\r\n } catch (error) {\r\n reportError('MJX208', error);\r\n }\r\n}\r\n\r\nconst MAX_EFFECT_RUNS_PER_FLUSH = 50;\r\n\r\nfunction flushEffects() {\r\n if (isFlushing) return;\r\n isFlushing = true;\r\n Promise.resolve().then(() => {\r\n const runCounts = new Map<Effect, number>();\r\n try {\r\n while (effectQueue.size > 0) {\r\n const batch = Array.from(effectQueue);\r\n effectQueue.clear();\r\n for (const e of batch) {\r\n const runs = (runCounts.get(e) ?? 0) + 1;\r\n runCounts.set(e, runs);\r\n if (runs > MAX_EFFECT_RUNS_PER_FLUSH) {\r\n if (runs === MAX_EFFECT_RUNS_PER_FLUSH + 1) {\r\n reportWarning('MJX203', [MAX_EFFECT_RUNS_PER_FLUSH], { fn: String((e as any).fn).slice(0, 200) });\r\n }\r\n continue;\r\n }\r\n runReported(() => e.run());\r\n }\r\n }\r\n } finally {\r\n effectQueue.clear();\r\n isFlushing = false;\r\n }\r\n });\r\n}\r\n\r\nfunction cleanup(effect: Effect) {\r\n for (const [target, key] of effect.deps) {\r\n const keyMap = depMap.get(target);\r\n if (!keyMap) continue;\r\n const depSet = keyMap.get(key);\r\n if (!depSet) continue;\r\n depSet.delete(effect);\r\n try {\r\n const map = leakCleanups.get(depSet);\r\n const fn = map?.get(effect);\r\n if (fn) { try { fn(); } catch { } map!.delete(effect); }\r\n } catch { }\r\n if (depSet.size === 0) {\r\n keyMap.delete(key);\r\n }\r\n if (keyMap.size === 0) {\r\n depMap.delete(target);\r\n }\r\n }\r\n effect.deps = [];\r\n}\r\n\r\n\r\nexport function effect(fn: EffectFn, onValueChanged?: <T>(value: T) => void) {\r\n const e = new Effect(fn, onValueChanged);\r\n runReported(() => e.run());\r\n return () => e.stop();\r\n}\r\n\r\nexport interface ScheduledEffect {\r\n run(): void;\r\n stop(): void;\r\n}\r\n\r\nexport function createScheduledEffect(fn: EffectFn, scheduler: () => void): ScheduledEffect {\r\n const e = new Effect(fn);\r\n e.scheduler = scheduler;\r\n return {\r\n run: () => { runReported(() => e.run()); },\r\n stop: () => e.stop(),\r\n };\r\n}\r\n\r\nexport interface AsyncTrackingToken { effect: Effect | undefined; pushed: boolean }\r\nfunction popAsyncTracking(t: AsyncTrackingToken) {\r\n if (!t.pushed) return;\r\n t.pushed = false;\r\n const i = effectStack.lastIndexOf(t.effect!);\r\n if (i >= 0) effectStack.splice(i, 1);\r\n}\r\nexport const asyncTracking = {\r\n capture(): AsyncTrackingToken {\r\n return { effect: effectStack[effectStack.length - 1], pushed: false };\r\n },\r\n suspend<T>(t: AsyncTrackingToken, value: T): T {\r\n popAsyncTracking(t);\r\n return value;\r\n },\r\n resume<T>(t: AsyncTrackingToken, value: T): T {\r\n if (t.effect && t.effect.active && !t.pushed) {\r\n effectStack.push(t.effect);\r\n t.pushed = true;\r\n }\r\n return value;\r\n },\r\n end(t: AsyncTrackingToken): void {\r\n popAsyncTracking(t);\r\n },\r\n};\r\n\r\nconst UNTRACKED_SENTINEL = new Effect(() => { });\r\nUNTRACKED_SENTINEL.active = false;\r\nexport function untracked<T>(fn: () => T): T {\r\n effectStack.push(UNTRACKED_SENTINEL);\r\n try {\r\n return fn();\r\n } finally {\r\n effectStack.pop();\r\n }\r\n}\r\n\r\n\r\n\r\nexport function debugGetDeps(target: object): Map<string | symbol, Set<Effect>> | undefined {\r\n const rawTarget = getRaw(target as any);\r\n return depMap.get(rawTarget);\r\n}\r\nexport function debugGetDepMap(): WeakMap<object, Map<string | symbol, Set<Effect>>> {\r\n return depMap;\r\n}\r\n","\r\nimport { ComponentBase } from \"../\";\r\nimport { effect } from \"../store/reactivity-core\";\r\nimport { BindingFormatInfo, IBaseBinding } from \"./\";\r\n\r\n\r\nexport function isCheckedInput(el: any): boolean {\r\n if (!el || el.tagName !== 'INPUT') return false;\r\n const t = String(el.type || '').toLowerCase();\r\n return t === 'checkbox' || t === 'radio';\r\n}\r\n\r\nexport function isNumericInput(el: any): boolean {\r\n if (!el || el.tagName !== 'INPUT') return false;\r\n const t = String(el.type || '').toLowerCase();\r\n return t === 'number' || t === 'range';\r\n}\r\n\r\nexport function readModelValue(el: any): any {\r\n if (!el) return undefined;\r\n if (isCheckedInput(el)) return !!el.checked;\r\n if (isNumericInput(el)) {\r\n const raw = el.value;\r\n if (raw === '' || raw == null) return null;\r\n const n = typeof el.valueAsNumber === 'number' ? el.valueAsNumber : Number(raw);\r\n return Number.isFinite(n) ? n : null;\r\n }\r\n return el.value;\r\n}\r\n\r\nexport class Binding implements IBaseBinding {\r\n propertyName: string;\r\n dataSource: any;\r\n dataMember?: string;\r\n formatString?: string;\r\n converter?: (value: any) => any;\r\n converterBack?: (value: any) => any;\r\n setter?: (value: any) => void;\r\n formatInfo?: BindingFormatInfo;\r\n updateMode: 'onPropertyChanged' | 'onValidation' | 'never' = 'onPropertyChanged';\r\n\r\n private _isActive: boolean = false;\r\n private _component: ComponentBase;\r\n private _effectCleanup?: () => void;\r\n private _memberPath: string[] | null = null;\r\n private _memberPathSource?: string;\r\n\r\n constructor(\r\n component: ComponentBase,\r\n propertyName: string,\r\n dataSource: any,\r\n dataMember?: string,\r\n formatString?: string,\r\n formatInfo?: BindingFormatInfo\r\n ) {\r\n this._component = component;\r\n this.propertyName = propertyName;\r\n this.dataSource = dataSource;\r\n this.dataMember = dataMember;\r\n this.formatString = formatString;\r\n this.formatInfo = formatInfo;\r\n this._memberPath = dataMember ? dataMember.split('.') : null;\r\n this._memberPathSource = dataMember;\r\n }\r\n\r\n activate(): void {\r\n if (this._isActive) return;\r\n\r\n this._isActive = true;\r\n this._setupBinding();\r\n }\r\n\r\n deactivate(): void {\r\n\r\n if (!this._isActive) return;\r\n\r\n this._isActive = false;\r\n if (this._effectCleanup) {\r\n this._effectCleanup();\r\n this._effectCleanup = undefined;\r\n }\r\n }\r\n\r\n reActivate(): void {\r\n\r\n if (this._effectCleanup) {\r\n this._effectCleanup();\r\n this._effectCleanup = undefined;\r\n }\r\n this._setupBinding();\r\n }\r\n\r\n private functional(value: any) {\r\n if (typeof value === 'function') {\r\n value = this.functional(value());\r\n }\r\n return value;\r\n }\r\n private _setupBinding(): void {\r\n const getValue = () => {\r\n\r\n let value: any = this.dataSource;\r\n if (this.dataMember) {\r\n if (this._memberPathSource !== this.dataMember) {\r\n this._memberPath = this.dataMember.split('.');\r\n this._memberPathSource = this.dataMember;\r\n }\r\n for (const prop of this._memberPath!) {\r\n if (value != null) {\r\n value = value[prop];\r\n }\r\n }\r\n }\r\n value = this.functional(value);\r\n if (this.formatString && value != null) {\r\n value = this._applyFormat(value, this.formatString);\r\n }\r\n\r\n if (this.converter) {\r\n value = this.converter(value);\r\n }\r\n\r\n return value;\r\n };\r\n\r\n const updateTarget = () => {\r\n const value = getValue();\r\n this._updateComponentProperty(value);\r\n return value;\r\n };\r\n\r\n this._effectCleanup = effect(() => {\r\n return updateTarget();\r\n });\r\n\r\n }\r\n\r\n private _updateComponentProperty(value: any): void {\r\n\r\n switch (this.propertyName.toLowerCase()) {\r\n case 'wait': {\r\n const comp = this._component;\r\n if (!comp || comp.isDisposed) return;\r\n const isWaiting = !!value;\r\n if (!comp.isBuilt) {\r\n comp.isWait = isWaiting;\r\n } else {\r\n if (isWaiting) {\r\n comp.isWait = true;\r\n } else {\r\n comp.isWait = false;\r\n }\r\n }\r\n break;\r\n }\r\n case 'display': {\r\n const comp = this._component;\r\n if (!comp || comp.isDisposed) return;\r\n const isWaiting = value;\r\n if (!comp.isBuilt) {\r\n comp.isWait = !isWaiting;\r\n } else {\r\n if (isWaiting) {\r\n comp.isWait = false;\r\n } else {\r\n comp.isWait = true;\r\n }\r\n }\r\n break;\r\n }\r\n case 'text':\r\n case 'textcontent':\r\n this._component.setText(value);\r\n break;\r\n case 'innerhtml':\r\n case 'html':\r\n this._component.element.innerHTML = (value);\r\n this._component.motif.trigger('htmlChanged', { value: value });\r\n break;\r\n case 'visible':\r\n case 'visibility':\r\n if (value) {\r\n this._component.motif.show();\r\n } else {\r\n this._component.motif.hide();\r\n }\r\n break;\r\n case 'style':\r\n if (typeof value === 'object') {\r\n this._component.style(value);\r\n }\r\n break;\r\n case 'model': {\r\n\r\n const el: any = this._component.element;\r\n if (!el) break;\r\n if (isCheckedInput(el)) {\r\n el.checked = !!value;\r\n } else {\r\n el.value = value == null ? '' : value;\r\n }\r\n break;\r\n }\r\n case 'when':\r\n\r\n break;\r\n default:\r\n if (this._component.element && this.propertyName in this._component.element) {\r\n (this._component.element as any)[this.propertyName] = value;\r\n } else if (this.propertyName in this._component) {\r\n (this._component as any)[this.propertyName] = value;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n private _applyFormat(value: any, format: string): string {\r\n const locale = this.formatInfo?.locale;\r\n const currency = this.formatInfo?.currency;\r\n if (typeof value === 'number') {\r\n if (format.includes('C') || format.includes('c')) {\r\n if (currency) {\r\n return new Intl.NumberFormat(locale, {\r\n style: 'currency',\r\n currency\r\n }).format(value);\r\n }\r\n return new Intl.NumberFormat(locale, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(value);\r\n }\r\n if (format.includes('P') || format.includes('p')) {\r\n return new Intl.NumberFormat(locale, {\r\n style: 'percent'\r\n }).format(value);\r\n }\r\n if (format.includes('N') || format.includes('n')) {\r\n const decimals = parseInt(format.match(/\\d+/)?.[0] || '2');\r\n return new Intl.NumberFormat(locale, {\r\n minimumFractionDigits: decimals,\r\n maximumFractionDigits: decimals\r\n }).format(value);\r\n }\r\n }\r\n\r\n if (value instanceof Date) {\r\n if (format.includes('d')) {\r\n return value.toLocaleDateString(locale);\r\n }\r\n if (format.includes('t')) {\r\n return value.toLocaleTimeString(locale);\r\n }\r\n }\r\n\r\n return value?.toString() || '';\r\n }\r\n}","import { IDisposable } from \"./IDisposable\";\nimport { disposableCore } from \"./DisposableCore\";\n\nclass QuietCleanup implements IDisposable {\n constructor(private _fn: (() => void) | undefined) { }\n\n dispose(): void {\n const fn = this._fn;\n if (fn === undefined) return;\n this._fn = undefined;\n try { fn(); } catch { }\n }\n}\n\nclass TrackedCleanup implements IDisposable {\n constructor(private _fn: (() => void) | undefined) {\n disposableCore.notifyCreated(this);\n }\n\n dispose(): void {\n const fn = this._fn;\n if (fn === undefined) return;\n this._fn = undefined;\n disposableCore.notifyDisposed(this);\n fn();\n }\n}\n\nconst coreToDisposable = disposableCore.toDisposable;\n\nexport function quietCleanup(fn: () => void): IDisposable {\n return new QuietCleanup(fn);\n}\n\nexport function trackedCleanup(fn: () => void): IDisposable {\n return disposableCore.toDisposable === coreToDisposable ? new TrackedCleanup(fn) : disposableCore.toDisposable(fn);\n}\n","import { Flags } from \"../store/common\";\r\n\r\nconst RAW_KEY = Flags.RAW;\r\n\r\nfunction isPrototypeObject(o: any): boolean {\r\n return Object.prototype.hasOwnProperty.call(o, 'constructor') && typeof o.constructor === 'function' && o.constructor.prototype === o;\r\n}\r\n\r\nfunction overridesBelow(instance: any, proto: any, name: string): boolean {\r\n let p = Object.getPrototypeOf(instance);\r\n while (p && p !== proto) {\r\n if (Object.prototype.hasOwnProperty.call(p, name)) return true;\r\n p = Object.getPrototypeOf(p);\r\n }\r\n return false;\r\n}\r\n\r\nexport function lazyBindMethods(proto: any, names: readonly string[]): void {\r\n for (const name of names) {\r\n let fn = proto[name];\r\n if (typeof fn !== 'function') continue;\r\n Object.defineProperty(proto, name, {\r\n configurable: true,\r\n enumerable: false,\r\n get() {\r\n if (this === proto || isPrototypeObject(this)) return fn;\r\n const target = this[RAW_KEY] ?? this;\r\n const bound = fn.bind(target);\r\n if (!overridesBelow(target, proto, name)) {\r\n try {\r\n Object.defineProperty(target, name, { value: bound, writable: true, configurable: true, enumerable: true });\r\n } catch { }\r\n }\r\n return bound;\r\n },\r\n set(value: unknown) {\r\n if (this === proto && typeof value === 'function') { fn = value; return; }\r\n Object.defineProperty(this, name, { value, writable: true, configurable: true, enumerable: true });\r\n },\r\n });\r\n }\r\n}\r\n","\r\n\r\nimport { Component, ComponentBase, Frame, motifFragment } from \"../\";\r\nimport { quietCleanup } from \"../disposable/Cleanup\";\r\nimport { dom } from \"../\";\r\nimport { effect, untracked } from \"../\";\r\nimport { Binding, BindingFormatInfo, IBaseBinding, IBindingCollection, ListBinding, ListBindingOptions, readModelValue } from \"./\";\r\nimport { reportError } from \"../common/diagnostics\";\r\nimport { lazyBindMethods } from \"../common/lazyBind\";\r\nimport { pushTight } from \"../common/pushTight\";\r\n\r\nfunction resolveValue(value: any): any {\r\n return typeof value === 'function' ? resolveValue(value()) : value;\r\n}\r\n\r\nfunction isWritablePathKey(target: object, key: string): boolean {\r\n if (key === '__proto__') return false;\r\n if (key === 'constructor' || key === 'prototype') return Object.prototype.hasOwnProperty.call(target, key);\r\n return true;\r\n}\r\n\r\nexport class BindingCollection implements IBindingCollection {\r\n private _items: IBaseBinding[] = [];\r\n private _modelWriters?: WeakMap<IBaseBinding, (value: any) => void>;\r\n private _component: ComponentBase;\r\n private _branchScope: Array<() => void> | null = null;\r\n\r\n constructor(component: ComponentBase) {\r\n this._component = component;\r\n }\r\n private _own(stop: () => void) {\r\n if (this._branchScope) {\r\n this._branchScope.push(stop);\r\n return;\r\n }\r\n this._component.motif.register(quietCleanup(stop));\r\n }\r\n\r\n when(computeFn: () => any, renderFn: (isTrue: boolean) => any) {\r\n\r\n var frame = new Frame();\r\n this._component.controls.add(frame);\r\n let shown = false;\r\n let last: any;\r\n const stop = effect(computeFn, (value) => {\r\n if (shown && (Object.is(last, value) || (!last && !value))) return;\r\n shown = true;\r\n last = value;\r\n untracked(() => {\r\n if (value) {\r\n frame.navigate(renderFn(value as any))\r\n } else {\r\n frame.navigate(motifFragment())\r\n }\r\n });\r\n });\r\n this._own(stop);\r\n\r\n return null as any;\r\n\r\n }\r\n\r\n get items(): IBaseBinding[] {\r\n return [...this._items];\r\n }\r\n\r\n text(cb: any) {\r\n this.add(\"textContent\", cb);\r\n };\r\n\r\n\r\n value(fn: () => any) {\r\n this.add(\"value\", fn);\r\n };\r\n\r\n add(propertyName: string, dataSource: any): IBaseBinding;\r\n add(propertyName: string, dataSource: any, dataMember: string): IBaseBinding;\r\n add(propertyName: string, dataSource: any, dataMember: string, formatString: string): IBaseBinding;\r\n add(propertyName: string, dataSource: any, dataMember: string, formatString: string, formatInfo: BindingFormatInfo): IBaseBinding;\r\n add(binding: IBaseBinding): IBaseBinding;\r\n add(...args: any[]): IBaseBinding {\r\n let binding: IBaseBinding;\r\n if (args.length === 1 && typeof args[0] === 'object' && 'propertyName' in args[0]) {\r\n\r\n binding = args[0];\r\n } else {\r\n\r\n const [propertyName, dataSource, dataMember, formatString, formatInfo] = args;\r\n binding = new Binding(this._component, propertyName, dataSource, dataMember, formatString, formatInfo);\r\n }\r\n\r\n pushTight(this._items, binding);\r\n\r\n if (this._component.isBuilt) {\r\n (binding as Binding).activate();\r\n }\r\n return binding;\r\n }\r\n\r\n wait(predicate: () => any): IBaseBinding {\r\n const binding = new Binding(this._component, 'isWait', predicate);\r\n pushTight(this._items, binding);\r\n if (this._component.isBuilt) {\r\n (binding as Binding).activate();\r\n }\r\n return binding;\r\n }\r\n\r\n display(predicate: () => any): IBaseBinding {\r\n const binding = new Binding(this._component, 'isWait', () => !resolveValue(predicate()));\r\n pushTight(this._items, binding);\r\n if (this._component.isBuilt) {\r\n (binding as Binding).activate();\r\n }\r\n return binding;\r\n }\r\n\r\n html(predicate: () => any): IBaseBinding {\r\n const binding = new Binding(this._component, 'innerHTML', predicate);\r\n pushTight(this._items, binding);\r\n if (this._component.isBuilt) {\r\n binding.activate();\r\n }\r\n return binding;\r\n }\r\n list(itemsFn: () => any[] | Iterable<any>, renderFn: (item: any, index: number) => ComponentBase): IBaseBinding;\r\n list(itemsFn: () => any[] | Iterable<any>, renderFn: (item: any, index: number) => ComponentBase, options: ListBindingOptions): IBaseBinding;\r\n list(itemsFn: () => any[] | Iterable<any>, renderFn: (item: any, index: number) => ComponentBase, options?: ListBindingOptions): IBaseBinding {\r\n const binding = new ListBinding(this._component, itemsFn, renderFn, options);\r\n pushTight(this._items, binding);\r\n if (this._component.isBuilt) {\r\n binding.activate();\r\n }\r\n return binding;\r\n }\r\n\r\n loop(itemsFn: () => any[] | Iterable<any>, renderFn: (item: any, index: number) => ComponentBase): IBaseBinding;\r\n loop(itemsFn: () => any[] | Iterable<any>, renderFn: (item: any, index: number) => ComponentBase, options: ListBindingOptions): IBaseBinding;\r\n loop(itemsFn: () => any[] | Iterable<any>, renderFn: (item: any, index: number) => ComponentBase, options?: ListBindingOptions): IBaseBinding {\r\n const binding = new ListBinding(this._component, itemsFn, renderFn, options);\r\n pushTight(this._items, binding);\r\n if (this._component.isBuilt) {\r\n binding.activate();\r\n }\r\n return binding;\r\n }\r\n method(cb: () => any) {\r\n const host = this._component;\r\n let text: ComponentBase | null = null;\r\n let frame: Frame | null = null;\r\n const place = (next: ComponentBase, previous: ComponentBase | null) => {\r\n if (!previous) {\r\n host.controls.add(next);\r\n return;\r\n }\r\n host.controls.insert(host.controls.items.indexOf(previous), next);\r\n host.controls.remove(previous);\r\n };\r\n const stop = effect(cb, (result) => {\r\n if (host.isDisposed) return;\r\n const isText = typeof result === 'string' || typeof result === 'number' || typeof result === 'boolean' || typeof result === 'bigint';\r\n if (isText || (text && result == null)) {\r\n if (text) {\r\n text.setText(result as any);\r\n return;\r\n }\r\n text = new Component(dom.createTextNode(result as any));\r\n place(text, frame);\r\n frame = null;\r\n return;\r\n }\r\n if (!frame) {\r\n frame = new Frame();\r\n place(frame, text);\r\n text = null;\r\n }\r\n frame.navigate(result == null ? motifFragment() : result as any);\r\n });\r\n host.motif.register(quietCleanup(stop));\r\n }\r\n\r\n ternary(conditionFn: () => any, trueFn: (frame: Frame) => any, falseFn: (frame: Frame) => any) {\r\n const frame = new Frame();\r\n this._component.controls.add(frame);\r\n this._ternaryCallTop(\r\n conditionFn,\r\n () => { trueFn(frame); },\r\n () => { falseFn(frame); }\r\n );\r\n return null as any;\r\n }\r\n\r\n private _ternarySchedule(condFn: () => any, onTrue: () => void, onFalse: () => void, defer: (run: () => void) => void) {\r\n let first = true;\r\n let last: any;\r\n let stopped = false;\r\n let inner: Array<() => void> = [];\r\n const stopInner = () => {\r\n const list = inner;\r\n inner = [];\r\n for (const stop of list) {\r\n try { stop(); } catch { }\r\n }\r\n };\r\n const stopEffect = effect(condFn, (condition) => {\r\n if (!first && Object.is(last, condition)) return;\r\n last = condition;\r\n const run = () => {\r\n stopInner();\r\n const outer = this._branchScope;\r\n this._branchScope = inner;\r\n try {\r\n if (condition) { onTrue(); } else { onFalse(); }\r\n } finally {\r\n this._branchScope = outer;\r\n }\r\n };\r\n if (first) {\r\n first = false;\r\n untracked(run);\r\n return;\r\n }\r\n defer(() => { if (!stopped && !this._component.isDisposed) run(); });\r\n });\r\n this._own(() => {\r\n stopped = true;\r\n stopEffect();\r\n stopInner();\r\n });\r\n }\r\n private ternaryCall(condFn: () => any, onTrue: () => void, onFalse: () => void) {\r\n this._ternarySchedule(condFn, onTrue, onFalse, (run) => queueMicrotask(run));\r\n }\r\n private _ternaryCallTop(condFn: () => any, onTrue: () => void, onFalse: () => void) {\r\n this._ternarySchedule(condFn, onTrue, onFalse, (run) => setTimeout(run, 0));\r\n }\r\n\r\n watch(cb: () => any) {\r\n const ef = effect(() => {\r\n cb();\r\n });\r\n this._component.motif.register(quietCleanup(ef));\r\n }\r\n remove(binding: IBaseBinding): void {\r\n const index = this._items.indexOf(binding);\r\n if (index > -1) {\r\n this._items.splice(index, 1);\r\n binding.deactivate();\r\n }\r\n }\r\n\r\n clear(): void {\r\n this._items.forEach(binding => (binding as Binding).deactivate());\r\n this._items = [];\r\n }\r\n\r\n activateAll(): void {\r\n this._items.forEach(binding => {\r\n binding.activate();\r\n });\r\n }\r\n\r\n model(dataSource: any): IBaseBinding;\r\n model(dataSource: any, dataMember: string): IBaseBinding;\r\n model(dataSource: any, dataMember: string, formatString: string): IBaseBinding;\r\n model(dataSource: any, dataMember: string, formatString: string, formatInfo: BindingFormatInfo): IBaseBinding;\r\n model(getter: () => any, setter: (value: any) => void): IBaseBinding;\r\n model(binding: IBaseBinding): IBaseBinding;\r\n model(...args: any[]): IBaseBinding {\r\n\r\n var tn = '';\r\n if (this._component.element) {\r\n tn = (this._component.element as HTMLElement).tagName;\r\n }\r\n var propertyName = 'value';\r\n switch (tn.toLowerCase()) {\r\n case 'input':\r\n\r\n propertyName = 'model';\r\n break;\r\n case 'select':\r\n propertyName = 'value';\r\n break;\r\n case 'textarea':\r\n propertyName = 'value';\r\n break;\r\n case 'img':\r\n propertyName = 'src';\r\n break;\r\n case 'audio':\r\n propertyName = 'src';\r\n break;\r\n case 'video':\r\n propertyName = 'src';\r\n break;\r\n default:\r\n\r\n }\r\n let binding: IBaseBinding;\r\n if (args.length === 1 && typeof args[0] === 'object') {\r\n binding = args[0];\r\n } else if (typeof args[0] === 'function' && typeof args[1] === 'function') {\r\n binding = new Binding(this._component, propertyName, args[0]);\r\n binding.setter = args[1];\r\n } else {\r\n const [dataSource, dataMember, formatString, formatInfo] = args;\r\n binding = new Binding(this._component, propertyName, dataSource, dataMember, formatString, formatInfo);\r\n }\r\n const write = (raw: any) => {\r\n let value: any = raw;\r\n const b: any = binding;\r\n if (typeof b.converterBack === 'function') {\r\n value = b.converterBack(value);\r\n }\r\n if (typeof b.setter === 'function') {\r\n b.setter(value);\r\n return;\r\n }\r\n const member: string | undefined = b.dataMember;\r\n const source = b.dataSource;\r\n if (member && source != null) {\r\n\r\n const path = member.split('.');\r\n let target: any = source;\r\n for (let i = 0; i < path.length && target != null; i++) {\r\n const key = path[i];\r\n if (!isWritablePathKey(target, key)) return;\r\n if (i === path.length - 1) {\r\n target[key] = value;\r\n } else {\r\n target = target[key];\r\n }\r\n }\r\n } else if (source != null && typeof source === 'object' && 'value' in source) {\r\n\r\n source.value = value;\r\n }\r\n };\r\n (this._modelWriters ??= new WeakMap()).set(binding, write);\r\n\r\n const lowerTag = tn.toLowerCase();\r\n if (lowerTag === 'input' || lowerTag === 'select' || lowerTag === 'textarea') {\r\n const writeBack = () => {\r\n try {\r\n const el: any = this._component.element;\r\n if (!el) return;\r\n write(readModelValue(el));\r\n } catch { /* ignore */ }\r\n };\r\n\r\n this._component.motif.on('input' as any, writeBack as any);\r\n this._component.motif.on('change' as any, writeBack as any);\r\n }\r\n\r\n pushTight(this._items, binding);\r\n if (this._component.isBuilt) {\r\n (binding as Binding).activate();\r\n }\r\n return binding;\r\n }\r\n\r\n writeModel(value: any): boolean {\r\n const writers = this._modelWriters;\r\n if (!writers) return false;\r\n let written = false;\r\n for (const binding of this._items) {\r\n const write = writers.get(binding);\r\n if (!write) continue;\r\n try {\r\n write(value);\r\n written = true;\r\n } catch { /* ignore */ }\r\n }\r\n return written;\r\n }\r\n\r\n\r\n deactivateAll(): void {\r\n this._items.forEach(binding => binding.deactivate());\r\n this._items = [];\r\n }\r\n\r\n reActivateAll(): void {\r\n for (const binding of [...this._items]) {\r\n if (typeof binding.reActivate !== 'function') continue;\r\n try {\r\n binding.reActivate();\r\n } catch (error) {\r\n reportError('MJX208', error);\r\n }\r\n }\r\n }\r\n\r\n switchCase(\r\n discriminatorFn: () => any,\r\n cases: Record<string | number, (frame: Frame) => any>,\r\n defaultFn?: (frame: Frame) => any\r\n ) {\r\n const frame = new Frame();\r\n this._component.controls.add(frame);\r\n var currentValue: any;\r\n var defaultRunned = false;\r\n const ef = effect(discriminatorFn, (value) => {\r\n if (currentValue == value) return;\r\n currentValue = value;\r\n const caseKey = String(value);\r\n if (Object.prototype.hasOwnProperty.call(cases, caseKey)) {\r\n cases[caseKey](frame);\r\n defaultRunned = false;\r\n } else if (defaultFn) {\r\n if (defaultRunned) return;\r\n defaultRunned = true;\r\n defaultFn(frame);\r\n } else {\r\n if (defaultRunned) return;\r\n defaultRunned = true;\r\n frame.navigate(motifFragment());\r\n }\r\n });\r\n this._component.motif.register(quietCleanup(ef));\r\n\r\n return null as any;\r\n }\r\n}\r\n\r\nlazyBindMethods(BindingCollection.prototype, [\r\n 'add', 'remove', 'clear', 'activateAll', 'deactivateAll', 'reActivateAll',\r\n 'when', 'text', 'value', 'list', 'loop', 'method', 'watch', 'display', 'wait',\r\n 'ternaryCall', '_ternaryCallTop'\r\n]);","import { errorHandler } from \"../common/ErrorHandler\";\nimport { IDisposable } from \"../disposable/IDisposable\";\nimport { DisposableStore } from \"../disposable/DisposableStore\";\nimport { Event } from \"./Event\";\n\ninterface Subscription<T> {\n handler: (value: T) => unknown;\n active: boolean;\n}\n\ninterface Delivery<T> {\n targets: Subscription<T>[];\n value: T;\n next: number;\n}\n\nexport class Emitter<T> {\n\n private _subscriptions: Subscription<T>[] = [];\n private _delivery: Delivery<T> | undefined;\n private _subscribe: Event<T> | undefined;\n private _disposed = false;\n\n get event(): Event<T> {\n if (!this._subscribe) {\n this._subscribe = (listener, thisArgs, disposables) => {\n if (this._disposed) {\n return { dispose() { } };\n }\n const subscription: Subscription<T> = {\n handler: thisArgs ? listener.bind(thisArgs) : listener,\n active: true\n };\n this._writable().push(subscription);\n const handle: IDisposable = { dispose: () => this._unsubscribe(subscription) };\n if (disposables instanceof DisposableStore) {\n disposables.add(handle);\n } else if (Array.isArray(disposables)) {\n disposables.push(handle);\n }\n return handle;\n };\n }\n return this._subscribe;\n }\n\n fire(value: T): void {\n this._resume();\n if (this._subscriptions.length === 0) {\n return;\n }\n this._delivery = { targets: this._subscriptions, value, next: 0 };\n this._resume();\n }\n\n dispose(): void {\n if (this._disposed) {\n return;\n }\n this._disposed = true;\n for (const subscription of this._subscriptions) {\n subscription.active = false;\n }\n this._subscriptions = [];\n this._delivery = undefined;\n }\n\n private _writable(): Subscription<T>[] {\n if (this._delivery && this._delivery.targets === this._subscriptions) {\n this._subscriptions = this._subscriptions.slice();\n }\n return this._subscriptions;\n }\n\n private _unsubscribe(subscription: Subscription<T>): void {\n if (!subscription.active) {\n return;\n }\n subscription.active = false;\n const list = this._writable();\n const index = list.indexOf(subscription);\n if (index !== -1) {\n list.splice(index, 1);\n }\n }\n\n private _resume(): void {\n const delivery = this._delivery;\n if (!delivery) {\n return;\n }\n while (delivery.next < delivery.targets.length) {\n const target = delivery.targets[delivery.next++];\n if (!target.active) {\n continue;\n }\n try {\n target.handler(delivery.value);\n } catch (error) {\n errorHandler.onUnexpectedError(error);\n }\n }\n if (this._delivery === delivery) {\n this._delivery = undefined;\n }\n }\n}\n","import { Emitter, Event as DelegateEvent } from \"../delegate\";\r\nimport { IDisposable } from \"../disposable\";\r\nimport { trackedCleanup } from \"../disposable/Cleanup\";\r\nimport { ComponentBase } from \"../\";\r\nimport { EventArgs } from \"./types\";\r\nimport { callReported } from \"../common/diagnostics\";\r\nimport { lazyBindMethods } from \"../common/lazyBind\";\r\n\r\nexport class ComponentEmiter {\r\n\r\n private _emitters?: Map<string, Emitter<EventArgs>>;\r\n private _sourceDisposables?: Map<string, Set<IDisposable>>;\r\n private _listenerDisposables?: Map<string, Map<Function, IDisposable[]>>;\r\n\r\n constructor(private component: ComponentBase) {\r\n }\r\n\r\n public hasListeners(eventName: string): boolean {\r\n return this._emitters !== undefined && this._emitters.has(eventName);\r\n }\r\n\r\n public fire(eventName: string, args: EventArgs) {\r\n\r\n try {\r\n const e = this._emitters?.get(eventName.toLowerCase());\r\n if (e) {\r\n e.fire(args);\r\n }\r\n } catch { }\r\n }\r\n\r\n public on(event: any, cb: (sender: ComponentBase | this, ev: any) => any) {\r\n\r\n try {\r\n this.createEvent(event, cb);\r\n } catch {\r\n }\r\n }\r\n public off(event: any, cb: (sender: ComponentBase | this, ev: any) => any) {\r\n const lower = String(event).toLowerCase();\r\n const map = this._listenerDisposables?.get(lower);\r\n if (!map) return this;\r\n const list = map.get(cb);\r\n map.delete(cb);\r\n list?.forEach(d => { try { d.dispose(); } catch { } });\r\n return this;\r\n }\r\n private getOrCreateEmitter(name: string): Emitter<EventArgs> {\r\n const emitters = this._emitters ??= new Map();\r\n let e = emitters.get(name);\r\n if (!e) {\r\n e = new Emitter<EventArgs>();\r\n emitters.set(name, e);\r\n }\r\n return e;\r\n }\r\n\r\n private createEvent(event: any, cb: (sender: ComponentBase | this, ev: any) => any) {\r\n const full = String(event);\r\n const lowerFull = full.toLowerCase();\r\n const hook = lowerFull.startsWith('on') ? 'x:' + lowerFull.slice(2) : lowerFull;\r\n const invoke = (e: EventArgs) => {\r\n let res: any;\r\n callReported(() => {\r\n res = (cb as any).length <= 1 ? (cb as any)(e as any) : cb(this.component, e as any);\r\n return res;\r\n }, 'MJX122', hook);\r\n return res;\r\n };\r\n\r\n const emitter = this.getOrCreateEmitter(lowerFull);\r\n const disp = emitter.event((e) => invoke(e));\r\n\r\n const listeners = this._listenerDisposables ??= new Map();\r\n let map = listeners.get(lowerFull);\r\n if (!map) { map = new Map(); listeners.set(lowerFull, map); }\r\n const list = map.get(cb);\r\n if (list) { list.push(disp); } else { map.set(cb, [disp]); }\r\n return this;\r\n }\r\n\r\n public addSource(event: string, source: Emitter<EventArgs> | DelegateEvent<EventArgs>) {\r\n const lower = String(event).toLowerCase();\r\n const target = this.getOrCreateEmitter(lower);\r\n const forward = (ev: DelegateEvent<EventArgs>) => ev(e => target.fire(e));\r\n let disp: IDisposable | undefined;\r\n try {\r\n if (source instanceof Emitter) {\r\n disp = forward(source.event);\r\n } else {\r\n disp = forward(source);\r\n }\r\n } catch { }\r\n if (disp) {\r\n const sources = this._sourceDisposables ??= new Map();\r\n let set = sources.get(lower);\r\n if (!set) { set = new Set(); sources.set(lower, set); }\r\n set.add(disp);\r\n this.component.motif.register(trackedCleanup(() => {\r\n try { disp?.dispose(); } catch { }\r\n try { set?.delete(disp!); } catch { }\r\n }));\r\n }\r\n return this;\r\n }\r\n\r\n public clear(event?: string) {\r\n if (event) {\r\n const lower = event.toLowerCase();\r\n const srcs = this._sourceDisposables?.get(lower);\r\n srcs?.forEach(d => { try { d.dispose(); } catch { } });\r\n this._sourceDisposables?.delete(lower);\r\n const agg = this._emitters?.get(lower);\r\n try { agg?.dispose(); } catch { }\r\n this._emitters?.delete(lower);\r\n this._listenerDisposables?.delete(lower);\r\n } else if (this._emitters) {\r\n for (const key of Array.from(this._emitters.keys())) { this.clear(key); }\r\n }\r\n return this;\r\n }\r\n}\r\n\r\nlazyBindMethods(ComponentEmiter.prototype, ['fire', 'on', 'off', 'createEvent', 'getOrCreateEmitter', 'addSource', 'clear']);","import { IAttribute } from \"../\";\r\nimport { ComponentBase } from \"../\";\r\nimport { effect } from \"../store/reactivity-core\";\r\nimport { Binding, IBaseBinding } from \"../bindings\";\r\nimport { isComponentLike } from \"./componentBase\";\r\n\r\nexport type ElementTypes = Node | Element | HTMLElement | Text | DocumentFragment | Comment | HTMLDivElement;\r\n\r\nconst METHOD_ATTRS = new Set<string>([\r\n 'focus', 'blur', 'click', 'pause', 'submit', 'reset',\r\n 'scrollTo', 'scrollBy', 'select', 'scrollIntoView',\r\n 'requestFullscreen', 'exitFullscreen',\r\n 'requestPointerLock', 'exitPointerLock',\r\n 'play', 'requestPictureInPicture', 'exitPictureInPicture',\r\n 'show', 'showModal', 'close', 'showPopover', 'hidePopover', 'togglePopover',\r\n 'requestSubmit', 'checkValidity', 'reportValidity', 'showPicker', 'load',\r\n 'setSelectionRange', 'setRangeText', 'setPointerCapture', 'releasePointerCapture', 'fastSeek'\r\n]);\r\n\r\nconst OPEN_METHODS: Record<string, string> = { show: 'close', showModal: 'close', showPopover: 'hidePopover' };\r\nconst WHEN_TRUTHY_METHODS = new Set<string>(['close', 'hidePopover', 'requestSubmit', 'checkValidity', 'reportValidity', 'showPicker', 'load']);\r\nconst ARGUMENT_METHODS = new Set<string>(['setSelectionRange', 'setRangeText', 'setPointerCapture', 'releasePointerCapture', 'fastSeek']);\r\n\r\nconst PROPERTY_FIRST = new Set<string>(['checked', 'selected', 'muted', 'indeterminate', 'srcObject']);\r\n\r\nexport class controlAttribute<ElementType extends ElementTypes> implements IAttribute<ComponentBase<ElementType, any>> {\r\n private _parent: ComponentBase<ElementType, any>;\r\n private _attrMapStore?: Map<string | symbol, any>;\r\n private _watchersStore?: Map<string | symbol, { stop: () => void, binding?: IBaseBinding }>;\r\n constructor(parent: ComponentBase<ElementType, any>) {\r\n this._parent = parent;\r\n }\r\n private get _attrMap(): Map<string | symbol, any> { return this._attrMapStore ??= new Map(); }\r\n private get _watchers(): Map<string | symbol, { stop: () => void, binding?: IBaseBinding }> { return this._watchersStore ??= new Map(); }\r\n\r\n /** @deprecated Tek kaynak `_attrMap`; geriye dönük okuma için türetilmiş görünüm. */\r\n get attributes(): { name: string, value: any }[] {\r\n return Array.from(this._attrMap.entries(), ([name, value]) => ({ name: String(name), value }));\r\n }\r\n add(attribute: object | string): ComponentBase<ElementType, any> {\r\n if (attribute !== null && typeof attribute === 'object' && !Array.isArray(attribute)) {\r\n const bag = attribute as Record<string | symbol, any>;\r\n Reflect.ownKeys(bag).forEach(key => {\r\n this.parse(bag[key], key);\r\n });\r\n }\r\n return this._parent;\r\n\r\n };\r\n remove(key: string): ComponentBase<ElementType, any> {\r\n const stopper = this._watchers.get(key);\r\n if (stopper) {\r\n try { stopper.stop(); } catch { }\r\n try { stopper.binding && this._parent.bindings.remove(stopper.binding); } catch { }\r\n this._watchers.delete(key);\r\n }\r\n this._attrMap.delete(key);\r\n const el = this._getElement();\r\n if (el) {\r\n try { el.removeAttribute(key); } catch { }\r\n }\r\n return this._parent;\r\n };\r\n has(key: string): boolean {\r\n\r\n if (this._parent.element instanceof HTMLElement ||\r\n this._parent.element instanceof Element) {\r\n return this._parent.element.hasAttribute(key)\r\n }\r\n return false;\r\n };\r\n get(key: string): string | null {\r\n const el = this._getElement();\r\n if (el) {\r\n const v = el.getAttribute(key);\r\n if (v != null) return v;\r\n }\r\n const val = this._attrMap.get(key);\r\n return val == null ? null : String(val);\r\n };\r\n\r\n parse(values: any, key: any) {\r\n\r\n if (typeof values === 'function') {\r\n const stopper = this._watchers.get(key);\r\n if (stopper) {\r\n try { stopper.stop(); } catch { }\r\n try { stopper.binding && this._parent.bindings.remove(stopper.binding); } catch { }\r\n this._watchers.delete(key);\r\n }\r\n const run = () => effect(() => {\r\n const v = values();\r\n this._applyValue(key, v);\r\n });\r\n let current = run();\r\n const stop = () => { try { current(); } catch { } };\r\n\r\n const binding: IBaseBinding = {\r\n propertyName: `__attr:${String(key)}`,\r\n dataSource: null,\r\n activate() { /* no-op */ },\r\n deactivate() { stop(); },\r\n reActivate() {\r\n stop();\r\n current = run();\r\n }\r\n } as any;\r\n try { this._parent.bindings.add(binding); } catch { }\r\n this._watchers.set(key, { stop, binding });\r\n } else {\r\n this._applyValue(key, values);\r\n }\r\n }\r\n\r\n private _applyValue(key: string | symbol, raw: any) {\r\n if (!key) return;\r\n const el = this._getElement();\r\n\r\n try {\r\n if (typeof raw === 'function') {\r\n raw = raw();\r\n if (typeof raw === 'function') {\r\n raw = raw();\r\n }\r\n }\r\n } catch {\r\n }\r\n\r\n if (el && typeof key === 'string' && METHOD_ATTRS.has(key)) {\r\n const k = key as string;\r\n const method = (el as any)[k];\r\n if (typeof method === 'function') {\r\n const invoke = (fn: Function, arg?: any) => {\r\n try {\r\n if (Array.isArray(arg)) {\r\n fn.apply(el, arg);\r\n } else if (arg === undefined) {\r\n fn.call(el);\r\n } else {\r\n fn.call(el, arg);\r\n }\r\n } catch { }\r\n };\r\n const schedule = (fn: () => void) => { try { queueMicrotask(fn); } catch { try { setTimeout(fn, 0); } catch { } } };\r\n const cacheValue = () => {\r\n this._attrMap.set(key, raw);\r\n };\r\n\r\n if (k === 'focus') {\r\n const action = () => {\r\n if (raw === false) {\r\n const blur = (el as any).blur; if (typeof blur === 'function') invoke(blur);\r\n } else if (raw === true) {\r\n invoke(method);\r\n } else if (typeof raw === 'object' && raw != null && raw !== true) {\r\n invoke(method, raw);\r\n } else if (Array.isArray(raw)) {\r\n invoke(method, raw);\r\n } else {\r\n invoke(method, raw);\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (k === 'blur' || k === 'click' || k === 'pause' || k === 'submit' || k === 'reset') {\r\n const action = () => { if (raw) invoke(method); };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n if (k === 'scrollTo' || k === 'scrollBy') {\r\n const action = () => {\r\n if (Array.isArray(raw) || (raw && typeof raw === 'object')) {\r\n invoke(method, raw);\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (k === 'select') {\r\n const action = () => {\r\n if (raw) {\r\n invoke(method);\r\n } else {\r\n const inp: any = el as any;\r\n if (typeof inp.setSelectionRange === 'function') {\r\n try { inp.setSelectionRange(0, 0); } catch { }\r\n }\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (k === 'scrollIntoView') {\r\n const action = () => {\r\n if (raw === true || raw == null) {\r\n invoke(method);\r\n } else {\r\n invoke(method, raw);\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n if (k === 'requestFullscreen') {\r\n const action = () => {\r\n if (raw) {\r\n invoke(method);\r\n } else {\r\n\r\n try {\r\n const d: any = document;\r\n if (d && d.fullscreenElement === el && typeof d.exitFullscreen === 'function') {\r\n d.exitFullscreen();\r\n }\r\n } catch { }\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (k === 'exitFullscreen') {\r\n const action = () => {\r\n if (raw) {\r\n try {\r\n const d: any = document;\r\n if (d && typeof d.exitFullscreen === 'function') d.exitFullscreen();\r\n } catch { }\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (k === 'requestPointerLock') {\r\n const action = () => {\r\n if (raw) {\r\n invoke(method);\r\n } else {\r\n try {\r\n const d: any = document;\r\n if (d && typeof d.exitPointerLock === 'function') d.exitPointerLock();\r\n } catch { }\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (k === 'exitPointerLock') {\r\n const action = () => {\r\n if (raw) {\r\n try {\r\n const d: any = document;\r\n if (d && typeof d.exitPointerLock === 'function') d.exitPointerLock();\r\n } catch { }\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (k === 'play') {\r\n const action = () => {\r\n if (raw) {\r\n try { const p = method.call(el); if (p && typeof p.then === 'function') p.catch(() => { }); } catch { }\r\n } else {\r\n const pause = (el as any).pause; if (typeof pause === 'function') invoke(pause);\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (k === 'requestPictureInPicture') {\r\n const action = () => {\r\n if (raw) {\r\n try { const p = method.call(el); if (p && typeof p.then === 'function') p.catch(() => { }); } catch { }\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n if (k === 'exitPictureInPicture') {\r\n const action = () => {\r\n if (raw) {\r\n try {\r\n const d: any = document as any;\r\n if (d && typeof d.exitPictureInPicture === 'function') {\r\n const p = d.exitPictureInPicture(); if (p && typeof p.then === 'function') p.catch(() => { });\r\n }\r\n } catch { }\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (k in OPEN_METHODS) {\r\n const action = () => {\r\n if (raw === false) {\r\n const other = (el as any)[OPEN_METHODS[k]]; if (typeof other === 'function') invoke(other);\r\n } else if (raw) {\r\n invoke(method);\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (k === 'togglePopover') {\r\n const action = () => {\r\n if (typeof raw === 'boolean') {\r\n try { method.call(el, raw); } catch { }\r\n } else if (raw) {\r\n invoke(method);\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (WHEN_TRUTHY_METHODS.has(k)) {\r\n const action = () => {\r\n if (raw === true) {\r\n invoke(method);\r\n } else if (raw) {\r\n invoke(method, raw);\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (ARGUMENT_METHODS.has(k)) {\r\n const action = () => {\r\n if (raw !== undefined && raw !== null && raw !== false) {\r\n invoke(method, raw);\r\n }\r\n };\r\n schedule(action);\r\n cacheValue();\r\n return;\r\n }\r\n\r\n if (raw === undefined || raw === null || raw === false) {\r\n this._attrMap.delete(key);\r\n return;\r\n }\r\n cacheValue();\r\n return;\r\n }\r\n }\r\n\r\n if (typeof key === 'string' && PROPERTY_FIRST.has(key)) {\r\n const target = (this._parent.element as any) ?? el;\r\n if (target) {\r\n try {\r\n if (key === 'srcObject') {\r\n target.srcObject = raw ?? null;\r\n } else {\r\n target[key] = !!raw;\r\n }\r\n } catch { }\r\n }\r\n if (raw === undefined || raw === null || raw === false) {\r\n this._attrMap.delete(key);\r\n } else {\r\n this._attrMap.set(key, raw);\r\n }\r\n return;\r\n }\r\n\r\n if (typeof raw === 'boolean' && typeof key === 'string' && (key.startsWith('aria-') || key.startsWith('data-'))) {\r\n if (el) { try { (el as Element).setAttribute(key, String(raw)); } catch { } }\r\n this._attrMap.set(key, raw);\r\n return;\r\n }\r\n\r\n const isUnset = raw === undefined || raw === null || raw === false;\r\n const isBool = typeof raw === 'boolean';\r\n\r\n if (isUnset) {\r\n if (el) { try { (el as Element).removeAttribute(String(key)); } catch { } }\r\n this._attrMap.delete(key);\r\n return;\r\n }\r\n\r\n if (key === 'value') {\r\n try {\r\n const input = (this._parent.element as any) as HTMLInputElement;\r\n const next = String(raw);\r\n if (input.value !== next) { input.value = next; }\r\n } catch { }\r\n } else if (key === 'textContent' || key === 'innerText' || key === 'innerHTML') {\r\n if (isComponentLike(raw)) { this._parent.setText(raw as any); return; }\r\n try { (this._parent.element as any)[key as any] = raw; } catch { }\r\n } else {\r\n if (el) {\r\n try {\r\n if (isBool && raw === true) {\r\n (el as Element).setAttribute(String(key), '');\r\n } else {\r\n (el as Element).setAttribute(String(key), raw);\r\n }\r\n } catch { }\r\n }\r\n }\r\n\r\n this._attrMap.set(key, raw);\r\n }\r\n\r\n private _getElement(): Element | null {\r\n const el = this._parent?.element as unknown;\r\n if (el instanceof HTMLElement || el instanceof Element) return el as Element;\r\n return null;\r\n }\r\n\r\n public hasMethodState(key: string): boolean {\r\n const el = this._getElement();\r\n if (!el || !key) return false;\r\n return !!this.getMethodState(key);\r\n }\r\n\r\n public getMethodState(key: string): any {\r\n const el = this._getElement();\r\n if (!el || !key) return false;\r\n const k = String(key);\r\n switch (k) {\r\n case 'focus':\r\n case 'blur':\r\n try { return (document && (document as any).activeElement) === el; } catch { return false; }\r\n case 'select': {\r\n const inp: any = el as any;\r\n if (typeof inp.selectionStart === 'number' && typeof inp.selectionEnd === 'number') {\r\n try { return (inp.selectionEnd - inp.selectionStart) > 0; } catch { return false; }\r\n }\r\n return false;\r\n }\r\n case 'scrollIntoView':\r\n return false;\r\n case 'click':\r\n return false;\r\n default:\r\n return false;\r\n }\r\n }\r\n}","import { IClass } from \"../\";\r\nimport { ComponentBase } from \"./\";\r\nimport { effect } from \"../store/reactivity-core\";\r\nimport { IBaseBinding } from \"../bindings\";\r\n\r\n\r\n\r\nexport class controlClass<ElementType extends Element | HTMLElement | Text | DocumentFragment | Comment> implements IClass<ComponentBase<ElementType, any>> {\r\n private _parent: ComponentBase;\r\n constructor(parent: ComponentBase) {\r\n this._parent = parent;\r\n }\r\n private _countsStore?: Map<string, number>;\r\n private _staticSetStore?: Set<string>;\r\n private _watchersStore?: Map<string, WatchRecord>;\r\n private _watcherOne?: WatchRecord;\r\n private _sole?: string;\r\n private _plain?: string;\r\n private _watcherSeq = 0;\r\n private get _counts(): Map<string, number> {\r\n if (this._plain !== undefined) this._promote();\r\n return this._countsStore ?? this._createCounts();\r\n }\r\n private _createCounts(): Map<string, number> {\r\n const counts = this._countsStore = new Map<string, number>();\r\n if (this._sole !== undefined) {\r\n const one = this._watcherOne;\r\n this._sole = undefined;\r\n if (one !== undefined) for (const cls of one.set) counts.set(cls, (counts.get(cls) || 0) + 1);\r\n }\r\n return counts;\r\n }\r\n private get _staticSet(): Set<string> {\r\n if (this._plain !== undefined) this._promote();\r\n return this._staticSetStore ??= new Set();\r\n }\r\n\r\n private _promote(): void {\r\n const names = this._plain!.split(' ');\r\n this._plain = undefined;\r\n const set = this._staticSetStore ??= new Set();\r\n const counts = this._countsStore ?? this._createCounts();\r\n for (const cls of names) { set.add(cls); counts.set(cls, (counts.get(cls) || 0) + 1); }\r\n }\r\n private _watcherEntries(): [string, WatchRecord][] {\r\n if (this._watchersStore !== undefined) return Array.from(this._watchersStore.entries());\r\n const one = this._watcherOne;\r\n return one !== undefined ? [[one.id, one]] : [];\r\n }\r\n private _dropWatcher(id: string): void {\r\n if (this._watchersStore !== undefined) this._watchersStore.delete(id);\r\n else if (this._watcherOne !== undefined && this._watcherOne.id === id) this._watcherOne = undefined;\r\n }\r\n private _keepWatcher(rec: WatchRecord): void {\r\n if (this._watchersStore !== undefined) { this._watchersStore.set(rec.id, rec); return; }\r\n const one = this._watcherOne;\r\n if (one === undefined) { this._watcherOne = rec; return; }\r\n this._watcherOne = undefined;\r\n this._watchersStore = new Map([[one.id, one], [rec.id, rec]]);\r\n }\r\n\r\n add(...values: (string | any[] | {} | Function)[]): ComponentBase {\r\n for (const value of values) {\r\n if (typeof value === 'function') {\r\n this._addReactive(value);\r\n } else if (Array.isArray(value)) {\r\n this._addStaticFromArray(value);\r\n } else if (value && typeof value === 'object') {\r\n this._addStaticFromObject(value as Record<string, any>);\r\n } else if (typeof value === 'string' && value !== '' && !/\\s/.test(value)) {\r\n this._addStaticName(value);\r\n } else {\r\n this._addStaticNames(this._splitClasses(String(value ?? '')));\r\n }\r\n }\r\n return this._parent;\r\n }\r\n\r\n private _addStaticName(cls: string) {\r\n if (this._countsStore !== undefined || this._staticSetStore !== undefined || this._sole !== undefined) {\r\n this._addStaticNames([cls]);\r\n return;\r\n }\r\n const plain = this._plain;\r\n if (plain !== undefined && hasName(plain, cls)) return;\r\n this._plain = plain === undefined ? cls : plain + ' ' + cls;\r\n const el = this._getElement();\r\n if (!el) return;\r\n if (!el.hasAttribute('class')) el.setAttribute('class', cls);\r\n else { try { (el as any).classList.add(cls); } catch { } }\r\n }\r\n\r\n remove(classNames: string | string[]): ComponentBase {\r\n const el = this._getElement();\r\n if (Array.isArray(classNames)) {\r\n const prev = new Set(this._staticSet);\r\n for (const cn of classNames) {\r\n for (const cls of this._splitClasses(String(cn))) {\r\n this._staticSet.delete(cls);\r\n }\r\n }\r\n this._applySourceDiff('static', prev, new Set(this._staticSet), el);\r\n } else {\r\n if (classNames === '**') {\r\n for (const [id, w] of this._watcherEntries()) {\r\n const prev = new Set(w.set);\r\n this._applySourceDiff(id, prev, new Set(), el);\r\n try { w.binding && this._parent.bindings.remove(w.binding); } catch { }\r\n try { w.stop(); } catch { }\r\n this._dropWatcher(id);\r\n }\r\n const prev = new Set(this._staticSet);\r\n this._staticSet.clear();\r\n this._applySourceDiff('static', prev, new Set(), el);\r\n if (el) {\r\n try { el.removeAttribute('class'); } catch { /* ignore */ }\r\n }\r\n this._counts.clear();\r\n } else {\r\n const prev = new Set(this._staticSet);\r\n for (const cls of this._splitClasses(String(classNames))) {\r\n this._staticSet.delete(cls);\r\n }\r\n this._applySourceDiff('static', prev, new Set(this._staticSet), el);\r\n }\r\n }\r\n return this._parent;\r\n }\r\n\r\n has(className: string): boolean {\r\n const el = this._getElement();\r\n const name = String(className ?? '').trim();\r\n if (!name) return false;\r\n return !!(el && el.classList.contains(name));\r\n }\r\n\r\n private _getElement(): (Element & { classList: DOMTokenList, className: string }) | null {\r\n const el: unknown = this._parent?.element;\r\n if (el instanceof Element) return el as any;\r\n return null;\r\n }\r\n\r\n private _splitClasses(input: string): string[] {\r\n if (!input) return [];\r\n if (!/\\s/.test(input)) return [input];\r\n return input.split(/\\s+/).filter(s => s.length > 0);\r\n }\r\n\r\n private _normalizeToSet(values: any): Set<string> {\r\n const result = new Set<string>();\r\n if (values == null) return result;\r\n if (typeof values === 'string') {\r\n for (const cls of this._splitClasses(values)) result.add(cls);\r\n } else if (Array.isArray(values)) {\r\n for (const item of values) {\r\n if (item == null) continue;\r\n if (typeof item === 'string') {\r\n for (const cls of this._splitClasses(item)) result.add(cls);\r\n } else if (Array.isArray(item)) {\r\n for (const cls of this._normalizeToSet(item)) result.add(cls);\r\n } else if (typeof item === 'object') {\r\n const obj = item as Record<string, any>;\r\n for (const k of Object.keys(obj)) {\r\n const v = obj[k];\r\n if (!!v) {\r\n for (const cls of this._splitClasses(String(k))) result.add(cls);\r\n }\r\n }\r\n } else if (typeof item !== 'boolean') {\r\n for (const cls of this._splitClasses(String(item))) result.add(cls);\r\n }\r\n }\r\n } else if (typeof values === 'object') {\r\n const obj = values as Record<string, any>;\r\n for (const k of Object.keys(obj)) {\r\n const v = obj[k];\r\n if (!!v) {\r\n for (const cls of this._splitClasses(String(k))) result.add(cls);\r\n }\r\n }\r\n } else if (typeof values !== 'boolean') {\r\n for (const cls of this._splitClasses(String(values))) result.add(cls);\r\n }\r\n return result;\r\n }\r\n\r\n private _applySourceDiff(sourceId: string, prev: Set<string>, next: Set<string>, el: Element | null) {\r\n if (this._countsStore === undefined && this._plain === undefined && this._sole === sourceId) {\r\n for (const cls of prev) {\r\n if (!next.has(cls) && el) { try { (el as any).classList.remove(cls); } catch { } }\r\n }\r\n for (const cls of next) {\r\n if (!prev.has(cls) && el) { try { (el as any).classList.add(cls); } catch { } }\r\n }\r\n return;\r\n }\r\n\r\n for (const cls of prev) {\r\n if (!next.has(cls)) {\r\n const prevCount = this._counts.get(cls) || 0;\r\n const now = prevCount - 1;\r\n if (now <= 0) {\r\n this._counts.delete(cls);\r\n if (el) { try { (el as any).classList.remove(cls); } catch { } }\r\n } else {\r\n this._counts.set(cls, now);\r\n }\r\n }\r\n }\r\n for (const cls of next) {\r\n if (!prev.has(cls)) {\r\n const prevCount = this._counts.get(cls) || 0;\r\n const now = prevCount + 1;\r\n this._counts.set(cls, now);\r\n if (prevCount === 0 && el) {\r\n try { (el as any).classList.add(cls); } catch { }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _addStaticNames(names: string[]) {\r\n if (names.length === 0) return;\r\n const el = this._getElement();\r\n const staticSet = this._staticSet;\r\n const fresh: string[] | null = el && !el.hasAttribute('class') ? [] : null;\r\n for (const cls of names) {\r\n if (staticSet.has(cls)) continue;\r\n staticSet.add(cls);\r\n const prevCount = this._counts.get(cls) || 0;\r\n this._counts.set(cls, prevCount + 1);\r\n if (prevCount === 0 && el) {\r\n if (fresh) fresh.push(cls);\r\n else { try { (el as any).classList.add(cls); } catch { } }\r\n }\r\n }\r\n if (fresh && fresh.length > 0) el!.setAttribute('class', fresh.join(' '));\r\n }\r\n\r\n private _addStaticFromArray(arr: any[]) {\r\n const el = this._getElement();\r\n const prev = new Set(this._staticSet);\r\n for (const item of arr) {\r\n if (item == null) continue;\r\n if (typeof item === 'string') {\r\n for (const cls of this._splitClasses(item)) this._staticSet.add(cls);\r\n } else if (Array.isArray(item)) {\r\n const set = this._normalizeToSet(item);\r\n for (const cls of set) this._staticSet.add(cls);\r\n } else if (typeof item === 'object') {\r\n const obj = item as Record<string, any>;\r\n for (const k of Object.keys(obj)) {\r\n const v = obj[k];\r\n if (typeof v === 'function') {\r\n const keys = this._splitClasses(String(k));\r\n for (const cls of keys) this._addReactive(obj[k], cls);\r\n } else {\r\n const keys = this._splitClasses(String(k));\r\n if (!!v) {\r\n for (const cls of keys) this._staticSet.add(cls);\r\n } else {\r\n for (const cls of keys) this._staticSet.delete(cls);\r\n }\r\n }\r\n\r\n }\r\n } else if (typeof item === 'boolean') {\r\n continue;\r\n } else if (typeof item === \"function\") {\r\n this._addReactive(item);\r\n } else {\r\n for (const cls of this._splitClasses(String(item))) this._staticSet.add(cls);\r\n }\r\n }\r\n\r\n this._applySourceDiff('static', prev, new Set(this._staticSet), el);\r\n }\r\n\r\n private _addStaticFromObject(obj: Record<string, any>) {\r\n const el = this._getElement();\r\n const prev = new Set(this._staticSet);\r\n for (const k of Object.keys(obj)) {\r\n const v = obj[k];\r\n const keys = this._splitClasses(String(k));\r\n if (typeof v === 'function') {\r\n for (const cls of keys) this._addReactive(v, cls);\r\n } else if (!!v) {\r\n for (const cls of keys) this._staticSet.add(cls);\r\n } else {\r\n for (const cls of keys) this._staticSet.delete(cls);\r\n }\r\n }\r\n this._applySourceDiff('static', prev, new Set(this._staticSet), el);\r\n }\r\n\r\n private _addReactive(fn: Function, key?: any) {\r\n const id = `fx#${++this._watcherSeq}`;\r\n const rec: WatchRecord = { id, stop: () => { }, binding: undefined, set: new Set<string>() };\r\n const el = this._getElement();\r\n if (this._countsStore === undefined && this._staticSetStore === undefined && this._plain === undefined && this._sole === undefined && this._watcherOne === undefined && this._watchersStore === undefined) this._sole = id;\r\n const run = () => effect(() => {\r\n let next: Set<string>;\r\n try {\r\n let v = fn();\r\n if (key !== undefined && typeof v === 'function') v = v();\r\n next = key !== undefined ? (v ? new Set<string>([key]) : new Set<string>()) : this._normalizeToSet(v);\r\n } catch {\r\n next = new Set();\r\n }\r\n const prev = new Set(rec.set);\r\n this._applySourceDiff(id, prev, next, el);\r\n rec.set = next;\r\n });\r\n let current = run();\r\n const stop = () => { try { current(); } catch { } };\r\n\r\n const binding: IBaseBinding = {\r\n propertyName: `__class:${id}`,\r\n dataSource: null,\r\n activate() { /* no-op */ },\r\n deactivate: () => {\r\n stop();\r\n const el2 = this._getElement();\r\n const prev = new Set(rec.set);\r\n this._applySourceDiff(id, prev, new Set(), el2);\r\n rec.set.clear();\r\n },\r\n reActivate: () => {\r\n stop();\r\n current = run();\r\n }\r\n } as any;\r\n try { this._parent.bindings.add(binding); } catch { }\r\n rec.stop = stop;\r\n rec.binding = binding;\r\n this._keepWatcher(rec);\r\n }\r\n}\r\n\r\ntype WatchRecord = { id: string, stop: () => void, binding?: IBaseBinding, set: Set<string> };\r\n\r\nfunction hasName(list: string, name: string): boolean {\r\n let i = list.indexOf(name);\r\n while (i !== -1) {\r\n const end = i + name.length;\r\n if ((i === 0 || list.charCodeAt(i - 1) === 32) && (end === list.length || list.charCodeAt(end) === 32)) return true;\r\n i = list.indexOf(name, i + 1);\r\n }\r\n return false;\r\n}\r\n","import { CSSTransitionInfo, TransitionProps } from \"../common/transition\";\r\nimport { TransitionMode } from \"../common/transitionRegistry\";\r\n\r\nexport interface IHtmlElement extends HTMLElement { }\r\nexport interface IElement extends Node { }\r\nexport type ElementType = IElement | IHtmlElement | DocumentFragment | Comment | Text;\r\nexport type CustomParameters<T extends any> = T extends (...args: infer P) => any ? P[0] : never;\r\n\r\n\r\nexport type IsOptional<T> = T extends {} ? { [K in keyof T]-?: {} extends Pick<T, K> ? true : false }[keyof T] : false;\r\n\r\nexport type OptionalParams<T> = T extends null ? { params?: undefined } : T extends undefined ? { params?: undefined } : IsOptional<T> extends true ? T : T;\r\n\r\n\r\nexport interface EventArgs {\r\n cancel: boolean;\r\n}\r\n\r\nexport interface VisibilityChangedEventArgs extends EventArgs {\r\n visible: boolean;\r\n}\r\n\r\nexport type RouterClassingSettings = {\r\n to: 'all' | 'active' | 'exact' | 'none',\r\n path: string,\r\n activeClass?: string,\r\n exactClass?: string,\r\n onActive?: () => void,\r\n offActive?: () => void,\r\n onExact?: () => void,\r\n offExact?: () => void,\r\n}\r\n\r\nexport interface ComponentBaseOptions<TProps> {\r\n [key: string]: any;\r\n cache?: DocumentFragment;\r\n closeFragment?: Comment;\r\n transition: {\r\n transitionInfo: () => {\r\n in: CSSTransitionInfo,\r\n out: CSSTransitionInfo\r\n },\r\n name: string,\r\n mode?: TransitionMode,\r\n classes?: TransitionProps,\r\n activeCssCancel: (() => void) | null,\r\n activeCssPhase: 'enter' | 'leave' | null,\r\n cssProps: () => TransitionProps | null,\r\n skipNextLeave: boolean\r\n _suppressEnter: boolean\r\n _markedDirection: boolean\r\n in: (op: { keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions }) => void,\r\n out: (op: { keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions }) => void,\r\n enterTransition: (resolve: () => void) => Animation,\r\n leaveTransition: (resolve: () => void) => Animation,\r\n _runCss: (phase: 'enter' | 'leave', resolve: () => void, appear?: boolean) => Animation,\r\n activeAnimations: Animation[],\r\n run: (keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions, resolve?: () => void) => Animation\r\n },\r\n set enableRouterClassing(value: RouterClassingSettings);\r\n getInstance(): any;\r\n hasEvent: (name: string) => boolean;\r\n}\r\n\r\n\r\nexport const shimAnimation: any = {\r\n cancel() { },\r\n addEventListener() { },\r\n removeEventListener() { },\r\n oncancel: null,\r\n playState: 'finished'\r\n};\r\n\r\n\r\nexport type AnyEvents = {\r\n [key: string]: any\r\n}\r\n\r\nexport type HtmlElementEvents = {\r\n [K in keyof IHtmlElement as K extends `on${string}` ?\r\n | Uncapitalize<K extends `on${infer EventName}` ? EventName : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:passive` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:passive:prevent` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:passive:stop` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:passive:trusted` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:passive:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:passive:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:prevent` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:prevent:stop` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:prevent:trusted` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:prevent:trusted:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:prevent:trusted:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:stop` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:stop:trusted` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:stop:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:stop:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:trusted` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:trusted:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:once:trusted:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:prevent` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:prevent:stop` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:prevent:trusted` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:prevent:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:prevent:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:stop` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:stop:trusted` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:stop:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:stop:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:trusted` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:trusted:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:trusted:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:capture:self` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:passive:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:prevent` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:prevent:stop` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:prevent:trusted` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:prevent:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:prevent:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:stop` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:stop:trusted` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:stop:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:stop:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:trusted` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:trusted:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:trusted:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:capture` : never>\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:capture:self` : never>\r\n\r\n | Uncapitalize<K extends `on${infer EventName}` ? `${EventName}:self` : never>\r\n : 'x:building' | 'x:built' | 'x:initializing' | 'x:initialized' | 'x:disposing' | 'x:disposed' | 'x:config' | 'x:configured' | 'x:visibilityChanged' | 'x:mounted']\r\n : CustomParameters<IHtmlElement[K]> extends Event ? CustomParameters<IHtmlElement[K]> : EventArgs;\r\n\r\n} & { 'x:visibilityChanged': VisibilityChangedEventArgs } & AnyEvents;\r","\r\nimport { dom } from \"../\";\r\n\r\ntype TransitionKind = 'transition' | 'animation'\r\n\r\nexport interface CSSTransitionInfo {\r\n type: TransitionKind | null\r\n timeout: number\r\n propCount: number\r\n hasTransform: boolean\r\n}\r\n\r\nexport interface TransitionProps {\r\n name?: string\r\n type?: TransitionKind\r\n css?: boolean\r\n duration?: number | { enter: number; leave: number }\r\n enterFromClass?: string\r\n enterActiveClass?: string\r\n enterToClass?: string\r\n appearFromClass?: string\r\n appearActiveClass?: string\r\n appearToClass?: string\r\n leaveFromClass?: string\r\n leaveActiveClass?: string\r\n leaveToClass?: string\r\n}\r\n\r\n\r\ninterface TimingSample {\r\n kind: TransitionKind\r\n longest: number\r\n tracks: number\r\n}\r\n\r\nfunction cssTimeToMs(text: string): number {\r\n const amount = text.substring(0, Math.max(0, text.length - 1)).replace(',', '.');\r\n return 1000 * Number(amount);\r\n}\r\n\r\nfunction sampleTiming(styles: any, kind: TransitionKind): TimingSample {\r\n const listOf = (aspect: 'delay' | 'duration'): string[] => {\r\n const declared: string = styles[`${kind}-${aspect}`] || '';\r\n return declared.split(', ');\r\n };\r\n const delays = listOf('delay');\r\n const durations = listOf('duration');\r\n let longest = -Infinity;\r\n for (let track = 0; track < durations.length; track++) {\r\n const total = cssTimeToMs(durations[track]) + cssTimeToMs(delays[track % delays.length]);\r\n longest = Math.max(longest, total);\r\n }\r\n return { kind, longest, tracks: durations.length };\r\n}\r\n\r\nconst transformTrack = /(?:^|\\W)(?:transform|all)(?:,|$)/;\r\n\r\nfunction computeTransitionInfo(styles: any, Type?: TransitionProps['type']): CSSTransitionInfo {\r\n if (!styles) {\r\n return { type: 'animation', timeout: 0, propCount: 0, hasTransform: false };\r\n }\r\n\r\n const samples: Record<TransitionKind, TimingSample> = {\r\n transition: sampleTiming(styles, 'transition'),\r\n animation: sampleTiming(styles, 'animation'),\r\n };\r\n\r\n let winner: TimingSample | null;\r\n let timeout: number;\r\n if (Type === 'transition' || Type === 'animation') {\r\n const forced = samples[Type];\r\n winner = forced.longest > 0 ? forced : null;\r\n timeout = winner ? winner.longest : 0;\r\n } else {\r\n const { transition, animation } = samples;\r\n timeout = Math.max(transition.longest, animation.longest);\r\n winner = !(timeout > 0) ? null : transition.longest > animation.longest ? transition : animation;\r\n }\r\n\r\n const type = winner ? winner.kind : null;\r\n return {\r\n type,\r\n timeout,\r\n propCount: winner ? winner.tracks : 0,\r\n hasTransform: type === 'transition' && transformTrack.test(styles.transitionProperty),\r\n };\r\n}\r\n\r\nexport function getTransitionInfo(el: Element, name: string, Type?: TransitionProps['type']): CSSTransitionInfo {\r\n if (el.isConnected && el.nodeType !== 8) {\r\n return computeTransitionInfo(dom.window.getComputedStyle(el), Type);\r\n }\r\n const fxElement = dom.createElement('div');\r\n fxElement.setAttribute('style', 'width:0!important;height:0!important;display:none');\r\n dom.body.appendChild(fxElement);\r\n fxElement.setAttribute('class', name);\r\n try {\r\n return computeTransitionInfo(dom.window.getComputedStyle(fxElement), Type);\r\n } finally {\r\n fxElement.remove();\r\n }\r\n}\r\n\r\n\r\nexport function getTransitionInfoFromElement(el: Element, Type?: TransitionProps['type']): CSSTransitionInfo {\r\n return computeTransitionInfo(dom.window.getComputedStyle(el), Type);\r\n}\r\n\r\nexport type TransitionPhase = 'enter' | 'leave';\r\n\r\nexport function resolveTransitionClasses(props: TransitionProps, phase: TransitionPhase, appear: boolean = false): { from: string, active: string, to: string } {\r\n const name = props.name || 'motif';\r\n if (phase === 'enter') {\r\n const enter = {\r\n from: props.enterFromClass ?? `${name}-enter-from`,\r\n active: props.enterActiveClass ?? `${name}-enter-active`,\r\n to: props.enterToClass ?? `${name}-enter-to`,\r\n };\r\n if (!appear) return enter;\r\n return {\r\n from: props.appearFromClass ?? enter.from,\r\n active: props.appearActiveClass ?? enter.active,\r\n to: props.appearToClass ?? enter.to,\r\n };\r\n }\r\n return {\r\n from: props.leaveFromClass ?? `${name}-leave-from`,\r\n active: props.leaveActiveClass ?? `${name}-leave-active`,\r\n to: props.leaveToClass ?? `${name}-leave-to`,\r\n };\r\n}\r\n\r\nexport function runCssTransition(el: Element, props: TransitionProps, phase: TransitionPhase, done: () => void, appear: boolean = false): () => void {\r\n if (props.css === false) {\r\n done();\r\n return () => { };\r\n }\r\n const classes = resolveTransitionClasses(props, phase, appear);\r\n const addC = (c: string) => { if (c) c.split(/\\s+/).forEach(x => { if (x) try { el.classList.add(x); } catch { } }); };\r\n const removeC = (c: string) => { if (c) c.split(/\\s+/).forEach(x => { if (x) try { el.classList.remove(x); } catch { } }); };\r\n\r\n let finished = false;\r\n let guardTimer: any = undefined;\r\n let endEvent: string | null = null;\r\n let endHandler: ((e: any) => void) | null = null;\r\n\r\n const cleanup = () => {\r\n removeC(classes.from);\r\n removeC(classes.to);\r\n removeC(classes.active);\r\n if (guardTimer !== undefined) { try { clearTimeout(guardTimer); } catch { } guardTimer = undefined; }\r\n if (endEvent && endHandler) { try { el.removeEventListener(endEvent, endHandler); } catch { } endHandler = null; }\r\n };\r\n const finish = () => {\r\n if (finished) return;\r\n finished = true;\r\n cleanup();\r\n try { done(); } catch { }\r\n };\r\n\r\n addC(classes.from);\r\n addC(classes.active);\r\n try { void (el as HTMLElement).offsetHeight; } catch { }\r\n\r\n const nextFrame = (cb: () => void) => {\r\n const raf = (globalThis as any).requestAnimationFrame;\r\n if (typeof raf === 'function') { raf(() => cb()); } else { setTimeout(cb, 16); }\r\n };\r\n\r\n nextFrame(() => {\r\n if (finished) return;\r\n removeC(classes.from);\r\n addC(classes.to);\r\n\r\n let timeout = 0;\r\n let expectedEnds = 1;\r\n const dur = props.duration;\r\n if (typeof dur === 'number') {\r\n timeout = dur;\r\n endEvent = props.type === 'animation' ? 'animationend' : 'transitionend';\r\n } else if (dur && typeof dur === 'object') {\r\n timeout = (phase === 'enter' ? dur.enter : dur.leave) ?? 0;\r\n endEvent = props.type === 'animation' ? 'animationend' : 'transitionend';\r\n } else {\r\n const info = getTransitionInfoFromElement(el, props.type);\r\n timeout = info.timeout;\r\n expectedEnds = info.propCount || 1;\r\n endEvent = info.type === 'animation' ? 'animationend' : 'transitionend';\r\n }\r\n\r\n if (!timeout || timeout <= 0) {\r\n finish();\r\n return;\r\n }\r\n\r\n let ended = 0;\r\n endHandler = (e: any) => {\r\n if (e && e.target !== el) return;\r\n if (++ended >= expectedEnds) finish();\r\n };\r\n try { el.addEventListener(endEvent, endHandler); } catch { }\r\n guardTimer = setTimeout(finish, timeout + 60);\r\n });\r\n\r\n return finish;\r\n}\r","import type { ComponentBase } from \"./componentBase\";\nimport { IDisposable } from \"..\";\nimport { trackedCleanup } from \"../disposable/Cleanup\";\nimport type { ComponentBaseOptions, EventArgs, HtmlElementEvents } from \"./types\";\n\nexport class ComponentMotif<TSelf extends ComponentBase = ComponentBase, TProps extends object = any> {\n\n private readonly _component: TSelf;\n public options: ComponentBaseOptions<TProps> & { hideStrategy?: 'placeholder' | 'detach' | 'auto', __fromList?: boolean, __key?: any, placeholder?: Comment };\n\n constructor(component: TSelf, options: ComponentMotif<TSelf, TProps>['options']) {\n this._component = component;\n this.options = options;\n }\n\n public show(): Promise<any> {\n return this._component['_show']();\n }\n\n public hide(): Promise<any> {\n return this._component['_hide']();\n }\n\n public toggle(): void {\n this._component['_toggle']();\n }\n\n public on<K extends keyof HtmlElementEvents>(event: K, cb: (sender: TSelf, ev: HtmlElementEvents[K]) => any, domEvent: boolean = true): Promise<TSelf> {\n return this._component['_on'](event, cb as any, domEvent);\n }\n\n public off<K extends keyof HtmlElementEvents>(event: K, cb: (sender: TSelf, ev: HtmlElementEvents[K]) => any): Promise<TSelf> {\n return this._component['_off'](event, cb as any);\n }\n\n public trigger(event: any, ev: any): Promise<TSelf> {\n return this._component['_trigger'](event, ev);\n }\n\n public addHandler(event: any, handler: (sender: ComponentBase, e: EventArgs) => void): void {\n this._component['_addHandler'](event, handler);\n }\n\n public clear(): Promise<any> {\n return this._component['_clear']();\n }\n\n public register(c: IDisposable): void {\n this._component['_register'](c);\n }\n\n public setDisposable(c: () => void): void {\n this._component['_register'](trackedCleanup(c));\n }\n\n public stopAnimations(): Promise<void> {\n return this._component['_stopAnimations']();\n }\n}\n","import { track, trigger, effect, createScheduledEffect, untracked, ScheduledEffect } from \"../\";\r\nimport { pauseTracking, resetTracking } from \"./common\";\r\nconst SIGNAL_TARGET = Symbol('SignalTarget');\r\nconst SIGNAL_KEY = Symbol('SignalKey');\r\n\r\nexport class Signal<T> {\r\n private _value: T;\r\n private readonly _target: object;\r\n private readonly _key: symbol;\r\n private readonly _equals: (a: T, b: T) => boolean;\r\n private _disposed = false;\r\n\r\n public static create<U>(initialValue: U, equals?: (a: U, b: U) => boolean): Signal<U> {\r\n return new Signal<U>(initialValue, equals);\r\n }\r\n\r\n constructor(initialValue: T, equals: (a: T, b: T) => boolean = Object.is) {\r\n this._value = initialValue;\r\n this._target = { [SIGNAL_TARGET]: true };\r\n this._key = SIGNAL_KEY;\r\n this._equals = equals;\r\n }\r\n\r\n get value(): T {\r\n if (!this._disposed) {\r\n track(this._target, this._key);\r\n }\r\n return this._value;\r\n }\r\n\r\n set value(newValue: T) {\r\n if (this._disposed) return;\r\n if (!this._equals(this._value as any, newValue as any)) {\r\n this._value = newValue;\r\n trigger(this._target, this._key);\r\n }\r\n }\r\n\r\n peek(): T {\r\n return this._value;\r\n }\r\n\r\n update(updater: (prev: T) => T): void {\r\n this.value = (updater(this._value));\r\n }\r\n\r\n mutate(mutator: (draft: T) => void): void {\r\n if (this._disposed) return;\r\n mutator(this._value);\r\n trigger(this._target, this._key);\r\n }\r\n\r\n notify(): void {\r\n if (this._disposed) return;\r\n trigger(this._target, this._key);\r\n }\r\n\r\n asReadonly(): ReadonlySignal<T> {\r\n const self = this;\r\n return {\r\n get value() { return self.value; },\r\n peek() { return self.peek(); },\r\n valueOf() { return self.valueOf(); },\r\n toString() { return self.toString(); }\r\n };\r\n }\r\n \r\n dispose(): void {\r\n this._disposed = true;\r\n }\r\n\r\n valueOf(): T {\r\n return this.value;\r\n }\r\n\r\n toString(): string {\r\n return String(this.value);\r\n }\r\n}\r\n\r\nexport interface ReadonlySignal<T> {\r\n readonly value: T;\r\n peek(): T;\r\n valueOf(): T;\r\n toString(): string;\r\n}\r\n\r\n\r\nexport class Computed<T> {\r\n private _value!: T;\r\n private _dirty: boolean = true;\r\n private _computing: boolean = false;\r\n private readonly _target: object;\r\n private readonly _key: symbol;\r\n private readonly _getter: () => T;\r\n private _cleanup?: () => void;\r\n\r\n constructor(getter: () => T) {\r\n this._getter = getter;\r\n this._target = { [SIGNAL_TARGET]: true };\r\n this._key = SIGNAL_KEY;\r\n\r\n this._cleanup = effect(() => {\r\n if (this._computing) return; \r\n this._computing = true;\r\n try {\r\n const newVal = this._getter();\r\n const changed = this._dirty || !Object.is(this._value, newVal);\r\n this._value = newVal;\r\n this._dirty = false;\r\n if (changed) {\r\n trigger(this._target, this._key);\r\n }\r\n } finally {\r\n this._computing = false;\r\n }\r\n });\r\n }\r\n\r\n get value(): T {\r\n track(this._target, this._key);\r\n\r\n if (this._dirty) { \r\n this._computing = true;\r\n pauseTracking();\r\n try {\r\n this._value = this._getter();\r\n this._dirty = false;\r\n } finally {\r\n resetTracking();\r\n this._computing = false;\r\n }\r\n }\r\n return this._value;\r\n }\r\n\r\n peek(): T {\r\n if (this._dirty) {\r\n pauseTracking();\r\n try {\r\n this._value = this._getter();\r\n this._dirty = false;\r\n } finally {\r\n resetTracking();\r\n }\r\n }\r\n return this._value;\r\n }\r\n\r\n dispose(): void {\r\n if (this._cleanup) {\r\n this._cleanup();\r\n this._cleanup = undefined;\r\n }\r\n }\r\n\r\n valueOf(): T {\r\n return this.value;\r\n }\r\n\r\n toString(): string {\r\n return String(this.value);\r\n }\r\n}\r\n\n\nexport class LazyComputed<T> {\n private _value!: T;\n private _dirty: boolean = true;\n private _disposed: boolean = false;\n private readonly _target: object;\n private readonly _key: symbol;\n private readonly _getter: () => T;\n private readonly _runner: ScheduledEffect;\n\n constructor(getter: () => T) {\n this._getter = getter;\n this._target = { [SIGNAL_TARGET]: true };\n this._key = SIGNAL_KEY;\n this._runner = createScheduledEffect(\n () => { this._value = this._getter(); },\n () => {\n if (this._dirty || this._disposed) return;\n this._dirty = true;\n trigger(this._target, this._key);\n }\n );\n }\n\n get value(): T {\n if (!this._disposed) {\n track(this._target, this._key);\n }\n this._refresh();\n return this._value;\n }\n\n peek(): T {\n this._refresh();\n return this._value;\n }\n\n get isDirty(): boolean {\n return this._dirty;\n }\n\n private _refresh(): void {\n if (!this._dirty) return;\n if (this._disposed) {\n this._value = untracked(this._getter);\n } else {\n this._runner.run();\n }\n this._dirty = false;\n }\n\n dispose(): void {\n if (this._disposed) return;\n this._disposed = true;\n this._runner.stop();\n }\n\n valueOf(): T {\n return this.value;\n }\n\n toString(): string {\n return String(this.value);\n }\n}\n","import { ServiceCollection, ServiceDescriptor } from \"./ServiceCollection\";\nimport { motifError } from \"../common/diagnostics\";\nimport { Signal } from \"../store/Signal\";\n\ntype ScopeKind = 'root' | 'navigation' | 'user';\ntype OwnerSlot = { owner: object | null; ownerless?: boolean };\ntype OwnerPin = { scope: ServiceProvider; live: boolean };\ntype NavigationState = { current: ServiceProvider; version: Signal<number>; scopes: Set<ServiceProvider> };\n\nlet activeResolver: ((token: any) => any) | null = null;\nlet activeSlot: OwnerSlot | null = null;\nlet rawScopedIn: ServiceProvider | null = null;\nlet constructionScope: ServiceProvider | null = null;\nlet navigatingRoot: ServiceProvider | null = null;\n\nconst slotsByOwner = new WeakMap<object, OwnerSlot>();\nconst handlesBySlot = new WeakMap<OwnerSlot, Map<any, any>>();\nconst pins = new WeakMap<object, OwnerPin>();\nconst builtIn = new WeakMap<object, ServiceProvider>();\nconst boundMethods = new WeakMap<object, Map<PropertyKey, { fn: Function; bound: Function }>>();\n\nfunction runWithResolver<T>(resolver: (token: any) => any, create: () => T): T {\n const previous = activeResolver;\n activeResolver = resolver;\n try {\n return create();\n } finally {\n activeResolver = previous;\n }\n}\n\nfunction runWith<T>(slot: OwnerSlot | null, raw: ServiceProvider | null, create: () => T): T {\n const previousSlot = activeSlot;\n const previousRaw = rawScopedIn;\n activeSlot = slot;\n rawScopedIn = raw;\n try {\n return create();\n } finally {\n activeSlot = previousSlot;\n rawScopedIn = previousRaw;\n }\n}\n\nfunction bindTo(target: object, key: PropertyKey, fn: Function): Function {\n let cache = boundMethods.get(target);\n if (!cache) boundMethods.set(target, cache = new Map());\n const hit = cache.get(key);\n if (hit && hit.fn === fn) return hit.bound;\n const bound = fn.bind(target);\n cache.set(key, { fn, bound });\n return bound;\n}\n\nfunction pinnedScopeOf(owner: object | null): ServiceProvider | null {\n let current: any = owner;\n while (current) {\n const pin = pins.get(current);\n if (pin) return pin.scope;\n const built = builtIn.get(current);\n if (built && built._pending) return built;\n current = current.parent;\n }\n return null;\n}\n\nexport function inject<T>(token: (abstract new (...args: any) => T) | { prototype: T }): T;\nexport function inject<T = any>(token: string | symbol | object): T;\nexport function inject(token: any): any {\n if (!activeResolver) throw motifError('MJX409', describeInjectToken(token));\n return activeResolver(token);\n}\n\nfunction describeInjectToken(token: any): string {\n if (typeof token === 'function') return token.name || '[AnonymousClass]';\n return String(token);\n}\n\nexport function runInConstructionScope<T>(scope: ServiceProvider | undefined, create: () => T): T {\n const previous = constructionScope;\n constructionScope = scope ?? null;\n try {\n return create();\n } finally {\n constructionScope = previous;\n }\n}\n\nexport function recordServiceOwner(owner: object): void {\n if (constructionScope && constructionScope._pending) builtIn.set(owner, constructionScope);\n}\n\nexport function pinServiceOwner(owner: object): void {\n const root = navigatingRoot;\n if (!root) return;\n if (pins.get(owner)?.live) return;\n const target = pinnedScopeOf(owner) ?? root._currentScope();\n pins.set(owner, { scope: target, live: true });\n target._livePins++;\n}\n\nexport function unpinServiceOwner(owner: object): void {\n const pin = pins.get(owner);\n if (!pin) return;\n pins.delete(owner);\n if (pin.live) pin.scope._releaseLivePin();\n navigatingRoot?._touch();\n}\n\nexport function retireServiceOwner(owner: object): void {\n const pin = pins.get(owner);\n if (pin) {\n if (pin.live) {\n pin.live = false;\n pin.scope._releaseLivePin();\n }\n return;\n }\n if (!navigatingRoot || !slotsByOwner.has(owner)) return;\n pins.set(owner, { scope: pinnedScopeOf(owner) ?? navigatingRoot._currentScope(), live: false });\n}\n\nexport class ServiceProvider {\n private parent?: ServiceProvider;\n private root: ServiceProvider;\n private scopeName?: string;\n private kind: ScopeKind;\n private singletonCache: Map<any, any>;\n private scopedCache: Map<any, any> = new Map();\n private transientSet: Set<any> = new Set();\n private _autoDisposeTransients = false;\n private pendingSingleton: Map<any, Promise<any>>;\n private pendingScoped: Map<any, Promise<any>> = new Map();\n private _navigation?: NavigationState;\n private _ownerlessSlot: OwnerSlot = { owner: null, ownerless: true };\n private _navigationDisposed = false;\n public _livePins = 0;\n public _pending = false;\n\n constructor(private services: ServiceCollection, parent?: ServiceProvider, root?: ServiceProvider) {\n this.parent = parent;\n this.root = root ?? this;\n this.kind = this.root === this ? 'root' : 'user';\n this.singletonCache = this.root === this ? new Map() : (this.root as any).singletonCache;\n this.pendingSingleton = this.root === this ? new Map() : (this.root as any).pendingSingleton;\n }\n\n public createScope(name?: string): ServiceProvider {\n const scoped = new ServiceProvider(this.services, this, this.root);\n scoped.scopeName = name ?? this.scopeName;\n (scoped as any)._autoDisposeTransients = this._autoDisposeTransients;\n return scoped;\n }\n\n public enableAutoDisposeTransients(enable = true): this { this._autoDisposeTransients = enable; return this; }\n\n\n public get<T>(token: (abstract new (...args: any) => T) | { prototype: T }): T;\n public get<T = any>(token: string | symbol | object): T;\n public get(token: any): any {\n const desc = this.services.getDescriptor(token);\n if (!desc) throw motifError('MJX401', this.describeToken(token));\n const value = this.resolveDescriptorSync(desc, [token]);\n return value;\n }\n\n public getAsync<T>(token: (abstract new (...args: any) => T) | { prototype: T }): Promise<T>;\n public getAsync<T = any>(token: string | symbol | object): Promise<T>;\n public async getAsync(token: any): Promise<any> {\n const desc = this.services.getDescriptor(token);\n if (!desc) throw motifError('MJX401', this.describeToken(token));\n const value = await this.resolveDescriptorAsync(desc, [token]);\n return value;\n }\n\n public _getFor<T = any>(owner: object, token: any): T {\n let slot = slotsByOwner.get(owner);\n if (!slot) {\n slot = { owner };\n slotsByOwner.set(owner, slot);\n }\n return runWith(slot, rawScopedIn, () => this.get<T>(token));\n }\n\n public getAllServices(): ServiceCollection { return this.services; }\n\n public _beginNavigation(): ServiceProvider {\n const root = this.root;\n const navigation = root._navigation ??= { current: root, version: new Signal(0), scopes: new Set() };\n navigatingRoot = root;\n const scope = new ServiceProvider(this.services, root, root);\n scope.kind = 'navigation';\n scope.scopeName = 'navigation';\n scope._pending = true;\n scope._autoDisposeTransients = root._autoDisposeTransients;\n navigation.scopes.add(scope);\n return scope;\n }\n\n public _commitNavigation(scope: ServiceProvider): void {\n const navigation = this.root._navigation;\n if (!navigation || navigation.current === scope) return;\n scope._pending = false;\n const previous = navigation.current;\n navigation.current = scope;\n this._touch();\n if (previous !== this.root) previous._releaseIfUnused();\n }\n\n public _abandonNavigation(scope: ServiceProvider): void {\n scope._pending = false;\n scope._releaseIfUnused();\n }\n\n public _currentScope(): ServiceProvider {\n return this.root._navigation?.current ?? this.root;\n }\n\n public _touch(): void {\n const navigation = this.root._navigation;\n if (navigation) navigation.version.value = navigation.version.peek() + 1;\n }\n\n public _releaseLivePin(): void {\n this._livePins--;\n this._releaseIfUnused();\n }\n\n private _releaseIfUnused(): void {\n const navigation = this.root._navigation;\n if (this.kind !== 'navigation' || this._navigationDisposed || this._livePins > 0) return;\n if (navigation && navigation.current === this) return;\n this._navigationDisposed = true;\n navigation?.scopes.delete(this);\n this.dispose().catch(() => { });\n }\n\n private _scopeFor(slot: OwnerSlot): ServiceProvider {\n const navigation = this._navigation;\n if (navigation) navigation.version.value;\n if (!slot.ownerless) {\n const pinned = pinnedScopeOf(slot.owner);\n if (pinned) return pinned;\n if (constructionScope && constructionScope.root === this) return constructionScope;\n }\n return navigation ? navigation.current : this;\n }\n\n private _handle(desc: ServiceDescriptor, path: any[]): any {\n const slot = activeSlot ?? this._ownerlessSlot;\n let handles = handlesBySlot.get(slot);\n if (!handles) handlesBySlot.set(slot, handles = new Map());\n let handle = handles.get(desc.token);\n if (!handle) {\n handle = this._createHandle(desc, slot);\n handles.set(desc.token, handle);\n }\n this._scopeFor(slot)._scopedInstanceSync(desc, path);\n return handle;\n }\n\n private async _handleAsync(desc: ServiceDescriptor, path: any[]): Promise<any> {\n const slot = activeSlot ?? this._ownerlessSlot;\n await this._scopeFor(slot)._scopedInstanceAsync(desc, path);\n return runWith(slot, null, () => this._handle(desc, path));\n }\n\n private _createHandle(desc: ServiceDescriptor, slot: OwnerSlot): any {\n const root = this;\n const target = () => root._scopeFor(slot)._scopedInstanceSync(desc, [desc.token]);\n return new Proxy(Object.create(null), {\n get(_, key) {\n const instance = target();\n const value = Reflect.get(instance, key, instance);\n return typeof value === 'function' ? bindTo(instance, key, value) : value;\n },\n set(_, key, value) {\n const instance = target();\n return Reflect.set(instance, key, value, instance);\n },\n has(_, key) {\n return key in target();\n },\n getPrototypeOf() {\n return Object.getPrototypeOf(target());\n },\n });\n }\n\n private _isSystemScope(): boolean {\n return this.kind !== 'user';\n }\n\n private _scopedInstanceSync(desc: ServiceDescriptor, path: any[]): any {\n if (this.scopedCache.has(desc.token)) return this.scopedCache.get(desc.token);\n const inst = runWith(null, this, () => this.instantiateSync(desc, path));\n this.scopedCache.set(desc.token, inst);\n return inst;\n }\n\n private async _scopedInstanceAsync(desc: ServiceDescriptor, path: any[]): Promise<any> {\n if (this.scopedCache.has(desc.token)) return this.scopedCache.get(desc.token);\n if (this.pendingScoped.has(desc.token)) return await this.pendingScoped.get(desc.token)!;\n const promise = (async () => {\n const inst = await this.instantiateAsyncIn(null, this, desc, path);\n this.scopedCache.set(desc.token, inst);\n this.pendingScoped.delete(desc.token);\n return inst;\n })();\n this.pendingScoped.set(desc.token, promise);\n return await promise;\n }\n\n private resolveDescriptorSync(desc: ServiceDescriptor, path: any[]): any {\n this.checkCycle(desc.token, path);\n switch (desc.lifetime) {\n case 'singleton': {\n if (this.singletonCache.has(desc.token)) return this.singletonCache.get(desc.token);\n const inst = runWith(null, null, () => this.instantiateSync(desc, path));\n this.singletonCache.set(desc.token, inst);\n return inst;\n }\n case 'scoped': {\n if (this._isSystemScope() && rawScopedIn !== this) return this.root._handle(desc, path);\n return this._scopedInstanceSync(desc, path);\n }\n case 'transient':\n default: {\n const inst = this.instantiateSync(desc, path);\n if (this._autoDisposeTransients && this.parent) {\n this.transientSet.add(inst);\n }\n return inst;\n }\n }\n }\n\n private async resolveDescriptorAsync(desc: ServiceDescriptor, path: any[]): Promise<any> {\n this.checkCycle(desc.token, path);\n switch (desc.lifetime) {\n case 'singleton': {\n if (this.singletonCache.has(desc.token)) return this.singletonCache.get(desc.token);\n if (this.pendingSingleton.has(desc.token)) return await this.pendingSingleton.get(desc.token)!;\n const promise = (async () => {\n const inst = await this.instantiateAsyncIn(null, null, desc, path);\n this.singletonCache.set(desc.token, inst);\n this.pendingSingleton.delete(desc.token);\n return inst;\n })();\n this.pendingSingleton.set(desc.token, promise);\n return await promise;\n }\n case 'scoped': {\n if (this._isSystemScope() && rawScopedIn !== this) return await this.root._handleAsync(desc, path);\n return await this._scopedInstanceAsync(desc, path);\n }\n case 'transient':\n default: {\n const inst = await this.instantiateAsync(desc, path);\n if (this._autoDisposeTransients && this.parent) {\n this.transientSet.add(inst);\n }\n return inst;\n }\n }\n }\n\n private construct<T>(create: () => T): T {\n if (activeSlot) return create();\n const slot: OwnerSlot = { owner: null };\n const inst = runWith(slot, rawScopedIn, create);\n if (inst && (typeof inst === 'object' || typeof inst === 'function') && typeof (inst as any).then !== 'function') {\n recordServiceOwner(inst as any);\n slot.owner = inst as any;\n if (!slotsByOwner.has(inst as any)) slotsByOwner.set(inst as any, slot);\n }\n return inst;\n }\n\n private instantiateSync(desc: ServiceDescriptor, path: any[]): any {\n if (desc.useValue !== undefined) {\n return desc.useValue;\n }\n if (desc.useFactory) {\n return this.construct(() => {\n const args = this.resolveDepsSync(desc, path);\n const result = runWithResolver(this.injectionResolver(path), () => (desc.useFactory as any)(...args, this));\n if (result && typeof (result as any).then === 'function') {\n const name = this.describeTokenWithSource(desc.token);\n throw motifError('MJX402', name);\n }\n return result;\n });\n }\n if (desc.useClass) {\n return this.construct(() => {\n const args = this.resolveDepsSync(desc, path);\n return runWithResolver(this.injectionResolver(path), () => new (desc.useClass as any)(...args));\n });\n }\n throw motifError('MJX403');\n }\n\n private async instantiateAsyncIn(slot: OwnerSlot | null, raw: ServiceProvider | null, desc: ServiceDescriptor, path: any[]): Promise<any> {\n return await runWith(slot, raw, () => this.instantiateAsync(desc, path));\n }\n\n private async instantiateAsync(desc: ServiceDescriptor, path: any[]): Promise<any> {\n if (desc.useValue !== undefined) {\n return desc.useValue;\n }\n const slot = activeSlot;\n const raw = rawScopedIn;\n if (desc.useFactory) {\n const args = await this.resolveDepsAsyncIn(slot, raw, desc, path);\n return await runWith(slot, raw, () => this.construct(() => runWithResolver(this.injectionResolver(path), () => (desc.useFactory as any)(...args, this))));\n }\n if (desc.useClass) {\n const args = await this.resolveDepsAsyncIn(slot, raw, desc, path);\n return runWith(slot, raw, () => this.construct(() => runWithResolver(this.injectionResolver(path), () => new (desc.useClass as any)(...args))));\n }\n throw motifError('MJX403');\n }\n\n public async dispose(): Promise<void> {\n const seen = new Set<any>();\n const callDispose = async (obj: any) => {\n if (!obj || seen.has(obj)) return;\n seen.add(obj);\n try { if (typeof obj.dispose === 'function') await obj.dispose(); }\n catch { /* ignore */ }\n try { if (typeof obj.close === 'function') await obj.close(); }\n catch { /* ignore */ }\n try {\n const d = (obj as any)[Symbol.dispose];\n if (typeof d === 'function') await d.call(obj);\n } catch { }\n try {\n const ad = (obj as any)[Symbol.asyncDispose];\n if (typeof ad === 'function') await ad.call(obj);\n } catch { }\n };\n if (this.root === this) {\n const navigation = this._navigation;\n if (navigation) {\n const scopes = [...navigation.scopes];\n navigation.scopes.clear();\n navigation.current = this;\n if (navigatingRoot === this) navigatingRoot = null;\n this._navigation = undefined;\n for (const scope of scopes) {\n scope._navigationDisposed = true;\n await scope.dispose();\n }\n }\n for (const v of this.singletonCache.values()) await callDispose(v);\n this.singletonCache.clear();\n this.pendingSingleton.clear();\n }\n for (const v of this.scopedCache.values()) await callDispose(v);\n if (this.kind !== 'navigation') this.scopedCache.clear();\n this.pendingScoped.clear();\n for (const v of this.transientSet.values()) await callDispose(v);\n this.transientSet.clear();\n }\n\n private resolveDepsSync(desc: ServiceDescriptor, path: any[]): any[] {\n const deps = this.getDeps(desc);\n if (!deps || deps.length === 0) return [];\n return deps.map(dep => this.resolveTokenSync(dep, path));\n }\n private async resolveDepsAsyncIn(slot: OwnerSlot | null, raw: ServiceProvider | null, desc: ServiceDescriptor, path: any[]): Promise<any[]> {\n const deps = this.getDeps(desc);\n if (!deps || deps.length === 0) return [];\n const results: any[] = [];\n for (const dep of deps) {\n results.push(await runWith(slot, raw, () => this.resolveTokenAsync(dep, path)));\n }\n return results;\n }\n private injectionResolver(path: any[]): (token: any) => any {\n return (token: any) => this.resolveTokenSync(token, path);\n }\n private getDeps(desc: ServiceDescriptor): any[] | undefined {\n if (Array.isArray(desc.deps)) return desc.deps;\n const source: any = desc.useClass ?? desc.useFactory;\n if (source) {\n if (Array.isArray(source.inject)) return source.inject;\n if (Array.isArray(source.dependencies)) return source.dependencies;\n }\n return undefined;\n }\n private resolveTokenSync(token: any, path: any[]): any {\n const d = this.services.getDescriptor(token);\n if (!d) throw motifError('MJX401', this.describeToken(token));\n const nextPath = path.concat(token);\n return this.resolveDescriptorSync(d, nextPath);\n }\n private async resolveTokenAsync(token: any, path: any[]): Promise<any> {\n const d = this.services.getDescriptor(token);\n if (!d) throw motifError('MJX401', this.describeToken(token));\n const nextPath = path.concat(token);\n return await this.resolveDescriptorAsync(d, nextPath);\n }\n private checkCycle(token: any, path: any[]) {\n const firstIndex = path.indexOf(token);\n if (firstIndex !== -1 && firstIndex !== path.length - 1) {\n const chainTokens = path.slice(firstIndex).concat([token]);\n const chain = chainTokens.map((t) => this.describeTokenWithSource(t)).join(' -> ');\n throw motifError('MJX404', chain);\n }\n }\n private describeToken = (t: any) => {\n if (typeof t === 'string') return t;\n if (typeof t === 'symbol') return t.toString();\n if (typeof t === 'function') return t.name || '[AnonymousClass]';\n return String(t);\n };\n private describeTokenWithSource(t: any) {\n const name = this.describeToken(t);\n const d = this.services.getDescriptor(t);\n if (!d) return name;\n const src = d.useClass ? 'useClass' : d.useFactory ? 'useFactory' : (d.useValue !== undefined) ? 'useValue' : 'unknown';\n return `${name}[${src}]`;\n }\n}\n","export const contentBlocks = { live: 0 };\r\n","export const OPTIONS_OWNER: unique symbol = Symbol('motif.optionsOwner');\nexport const TRANSITION_SLOT: unique symbol = Symbol('motif.transition');\n","export type TransitionMode = 'concurrent' | 'out-in' | 'in-out';\n\nexport const transitionSettings: { mode: TransitionMode } = { mode: 'concurrent' };\n\ntype Entry = { node: Node; via: Node | null; done: Promise<void> };\n\nexport type TrackedRun = { done: () => void; release: () => void; finished?: Promise<void> };\n\nconst noop = () => { };\n\nfunction createTracker() {\n const running = new WeakMap<Node, Set<Entry>>();\n\n function track(node: Node | null | undefined, resolve: () => void, via?: Node | null): TrackedRun {\n const host = node?.parentNode ?? via?.parentNode;\n if (!host) return { done: resolve, release: noop };\n let set = running.get(host);\n if (!set) running.set(host, (set = new Set()));\n let finish: () => void = noop;\n const entry: Entry = { node: node!, via: via ?? null, done: new Promise<void>(r => { finish = r; }) };\n set.add(entry);\n let settled = false;\n const release = () => {\n if (settled) return;\n settled = true;\n set!.delete(entry);\n finish();\n };\n return {\n done: () => {\n const first = !settled;\n release();\n if (first && resolve) resolve();\n },\n release,\n finished: entry.done,\n };\n }\n\n function pending(host: Node | null | undefined, except?: Node | null): Promise<void> | null {\n if (!host) return null;\n const set = running.get(host);\n if (!set || set.size === 0) return null;\n let waits: Promise<void>[] | null = null;\n for (const entry of set) {\n if (entry.node === except) continue;\n if (entry.node.parentNode !== host && entry.via?.parentNode !== host) {\n set.delete(entry);\n continue;\n }\n (waits ??= []).push(entry.done);\n }\n return waits ? Promise.all(waits).then(noop) : null;\n }\n\n return { track, pending };\n}\n\nconst leaves = createTracker();\nconst enters = createTracker();\n\nexport const trackLeave = leaves.track;\nexport const pendingLeaves = leaves.pending;\nexport const trackEnter = enters.track;\nexport const pendingEnters = enters.pending;\n\nexport function deferUntilEntered(node: Node, run: TrackedRun, play: () => unknown): Animation {\n const host = node.parentNode;\n const handle: any = {\n finished: run.finished ?? Promise.resolve(),\n playState: 'pending',\n addEventListener: noop,\n removeEventListener: noop,\n cancel: noop,\n };\n queueMicrotask(() => {\n const wait = pendingEnters(host, node);\n if (wait) wait.then(() => { play(); });\n else play();\n });\n return handle as Animation;\n}\n\nexport function isTransitionMode(value: any): value is TransitionMode {\n return value === 'concurrent' || value === 'out-in' || value === 'in-out';\n}\n","import { ComponentBase } from \"./componentBase\";\nimport { reportError } from \"../common/diagnostics\";\n\nconst MAX_FACTORY_DEPTH = 100;\n\nexport function resolveComponent(input: unknown, props?: any): any {\n let current: any = input;\n let depth = 0;\n while (typeof current === \"function\") {\n if (current.prototype instanceof ComponentBase) {\n return new current(props);\n }\n if (++depth > MAX_FACTORY_DEPTH) {\n reportError('MJX112', undefined, MAX_FACTORY_DEPTH);\n return current;\n }\n current = current(props);\n }\n return current;\n}","import { dom } from \"../\";\nimport { ComponentBase, IBaseProp, ParseProps, applyComponentOptions, applyFallthroughProps, applyTransitionProp, extractRefs, safeCallSilent, takePendingRefs, untracked } from \"../\";\nimport { constructComponentRoot, disposeUnplacedChilds } from \"./componentBase\";\nimport { resolveComponent } from \"./resolveComponent\";\nimport { ElementType, EventArgs } from \"./types\";\nimport { callReported, motifError } from \"../common/diagnostics\";\n\nconst SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n\nfunction readElementTag(ctor: any): string | undefined {\n try {\n const tag = ctor?.elementTag;\n if (typeof tag === 'string') {\n const trimmed = tag.trim();\n if (trimmed) return trimmed;\n }\n } catch { /* ignore */ }\n return undefined;\n}\n\nfunction createDeclaredElement(tag: string, ctor: any, props: any): any {\n const declaredNs = typeof ctor?.elementNamespace === 'string' && ctor.elementNamespace\n ? ctor.elementNamespace as string\n : undefined;\n const isSvg = declaredNs === SVG_NAMESPACE || props?.options?.isSvg === true || props?.__isSvgElement === true;\n if (isSvg) {\n if (props && typeof props === 'object') { (props as any).isSvg = true; }\n return dom.createElementNS(declaredNs || SVG_NAMESPACE, tag, props);\n }\n return dom.createElement(tag, props);\n}\n\nexport class Component<TElement extends ElementType = any, TProps extends object = any> extends ComponentBase<TElement, TProps> {\n\n public static elementTag?: string;\n public static elementNamespace?: string;\n public static _placesChilds?: boolean;\n\n constructor(elementOrParams: TElement | string | IBaseProp<TProps>);\n constructor(element: TElement | string, options: IBaseProp<TProps>);\n constructor(elementOrParams: TElement | string | IBaseProp<TProps>, options?: IBaseProp<TProps>);\n constructor(elementOrParams?: TElement | string | IBaseProp<TProps>, options?: IBaseProp<TProps>);\n constructor() {\n const derivedCtor: any = new.target;\n var args = arguments;\n var elementOrParams;\n var options;\n if (args.length === 1) {\n elementOrParams = args[0];\n } else if (args.length === 2) {\n elementOrParams = args[0];\n options = args[1];\n }\n\n if (elementOrParams instanceof Function) {\n elementOrParams = resolveComponent(elementOrParams, options);\n if (isOptionsObject(elementOrParams)) {\n return materializeOptionsObject(elementOrParams, options);\n }\n }\n if (Array.isArray(elementOrParams)) {\n const letter = CreateFragment();\n super(letter, {} as TProps);\n var ops = Object.create(options || {});\n for (const key in elementOrParams) {\n const element = elementOrParams[key];\n this.controls.add(new Component(element, ops as any));\n }\n } else\n if (typeof elementOrParams === 'string' && elementOrParams.trim().length > 0) {\n // İlk parametre element ise\n if (!options) { options = {} as any; }\n\n if (options?.options && options.options.isSvg || options?.__isSvgElement) {\n const el = dom.createElementNS('http://www.w3.org/2000/svg', elementOrParams, options);\n (options as any)['isSvg'] = true;\n super(el as TElement, options as TProps);\n } else {\n const el = dom.createElement(elementOrParams, options);\n\n super(el as TElement, options as TProps);\n }\n // DOM prop'ları (spread/attr) ComponentBase ctor'ında uygulanır: düz Component'ta tümü,\n // alt sınıflarda yalnızca ortak öznitelikler (applyFallthroughProps).\n } else if (elementOrParams instanceof Node) {\n super(elementOrParams as any, options as TProps);\n } else if (elementOrParams instanceof ComponentBase) {\n // Hazır instance geldi; olduğu gibi kullan\n return elementOrParams as any;\n }\n else {\n // Constructor'a element verilmedi (undefined/null/boş) ya da element olarak\n // tanınmayan bir değer geldi. bu iki olasılığa neden olur :\n // a) Sınıf bir element türü bildirmiş → o türde gerçek element üretilir\n // b) Bildirmemiş → FRAGMENT: kök yorum düğümü (yer tutucu),\n // çocuklar açılış/kapanış işaretçileri arasına render edilir\n // Her bileşenin bir elementi olmak zorunda olduğundan, fragment kök olarak yorum düğümü kullanılır.\n // props hangi argümanda olduğu çağrı biçimine göre değişir:\n // new Component({ ...props }) → props İLK argüman\n // super(void 0, props) / super(null, props) → props İKİNCİ argüman\n const fragmentProps = (elementOrParams && typeof elementOrParams === 'object')\n ? elementOrParams\n : options;\n\n // Sınıf bir element türü bildirdiyse (statik elementTag — derleyici\n // Component<HTMLDivElement> generic'inden üretir fragment yerine\n // O TÜRDE gerçek element oluşturulur.\n const declaredTag = readElementTag(derivedCtor);\n if (declaredTag) {\n const declaredEl = createDeclaredElement(declaredTag, derivedCtor, fragmentProps);\n super(declaredEl as TElement, (fragmentProps ?? {}) as TProps);\n } else {\n super(CreateFragment(), (fragmentProps ?? {}) as TProps);\n }\n\n // Her iki durumda da JSX çocukları (props.childs) içeriğe eklenir.\n // Alt sınıflar initializeComponent'i ezdiği için FragmentNode.initializeComponent'e güvenilemez.\n const kids = this.childs;\n if (Array.isArray(kids) && kids.length) {\n if (derivedCtor?._placesChilds !== true) {\n for (const kid of kids) {\n if (kid) this.controls.add(kid);\n }\n }\n }\n }\n }\n\n\n}\n\n\ntype viewFn<P extends object> = (props: P) => any;\n\nexport function FNComponent<P extends object>(view: viewFn<P>) {\n\n return (props: P) => {\n //debugger; \n var comp = motifFragment({\n ...props as any,\n });\n comp.controls.add(view(props) as any);\n return comp;\n };\n}\n\nfunction applyJsxFrameworkProps(target: any, props: any, refs: any[]): any {\n if (!props || typeof props !== 'object') return target;\n if (!(target instanceof ComponentBase)) return target;\n\n applyRefs(target, refs.concat(extractRefs(props)));\n disposeUnplacedChilds(target, (props as any).childs);\n\n // Fonksiyon bileşeni etiketindeki ortak öznitelikler (class/id/aria-*…) döndürülen köke düşer.\n // Kök `<div {...props}/>` ise aynı değerler zaten uygulanmıştır; ikinci kez uygulanmaz.\n applyFallthroughProps(props, target as ComponentBase);\n applyComponentOptions((props as any).options, target as ComponentBase);\n if (Object.prototype.hasOwnProperty.call(props, 'transition')) {\n applyTransitionProp((props as any).transition, target as ComponentBase);\n }\n\n const runover = (props as any).runover;\n if (!runover || typeof runover !== 'object') return target;\n\n const configuredBefore = handlerCount(target, '_onConfigHandlers');\n const initializingBefore = handlerCount(target, '_onInitializingHandlers');\n const initializedBefore = handlerCount(target, '_onInitializedHandlers');\n ParseProps(runover, target as ComponentBase);\n\n callAddedHandlers(target, '_onInitializingHandlers', initializingBefore, 'onInitializing');\n callAddedHandlers(target, '_onInitializedHandlers', initializedBefore, 'onInitialized');\n\n // Fonksiyon bileşeninin kökü düz bir `Component` olduğunda config aşaması yapıcıda\n // ÇOKTAN çalışmıştır (`isConfigured`); sonradan kaydedilen preconfig/onConfig bir daha\n // çağrılmayacağı için burada elle koşulur. Yalnızca yeni eklenenler çalıştırılır.\n if ((target as any).isConfigured) {\n const pre = (target as any).motif.options?._preconfig;\n if (typeof pre === 'function') {\n safeCallSilent(() => pre(target), 'motifComponent.preconfig');\n }\n for (let i = configuredBefore; i < handlerCount(target, '_onConfigHandlers'); i++) {\n const fn = hookList(target, '_onConfigHandlers')[i];\n callReported(() => fn(target, { cancel: false } as EventArgs), 'MJX122', 'onConfig');\n }\n }\n return target;\n}\n\nfunction applyRefs(target: any, refs: any[]): any {\n if (target instanceof ComponentBase) {\n for (const fn of takePendingRefs(target, refs)) {\n callReported(() => fn(target), 'MJX122', 'ref');\n }\n }\n return target;\n}\n\nfunction hookList(target: any, listName: string): any[] {\n const slot = target._base?.[listName];\n return !slot ? [] : typeof slot === 'function' ? [slot] : slot;\n}\n\nfunction handlerCount(target: any, listName: string): number {\n return hookList(target, listName).length;\n}\n\nfunction callAddedHandlers(target: any, listName: string, from: number, hook: string): void {\n for (let i = from; i < handlerCount(target, listName); i++) {\n if (target.isDisposed) return;\n const fn = hookList(target, listName)[i];\n callReported(() => fn(target, { cancel: false } as EventArgs), 'MJX122', hook);\n }\n}\n\nfunction resolveChildExpression(probe: any): any {\n if (typeof probe !== 'function') return undefined;\n let value: any;\n try { value = untracked(probe); } catch { return undefined; }\n if (value instanceof ComponentBase) return value;\n if (Array.isArray(value) && value.length > 0 && value.every(x => x instanceof ComponentBase)) return value;\n return undefined;\n}\n\nexport function motifComponent(element: unknown, props?: any, lone?: number) {\n\n // Etiket adı: element yaratımı (HTML/SVG) ve spread prop uygulaması Component ctor'ının string parametresinde\n if (typeof element === \"string\") {\n if (typeof props === \"function\") {\n const compiled = new Component(element);\n (compiled as any)._init = props;\n return compiled;\n }\n if (lone === 1 && props !== null && typeof props === \"object\") {\n const init = props.initializeComponent;\n if (typeof init === \"function\") {\n const compiled = new Component(element);\n (compiled as any)._init = init;\n return compiled;\n }\n }\n if (element === \"text\" && props && props.__childExpr) {\n const resolved = resolveChildExpression(props.__childExpr);\n if (resolved !== undefined) return resolved;\n }\n return new Component(element, props);\n }\n\n if (element instanceof ComponentBase || element instanceof Component) {\n return element;\n }\n\n // Class component → new, function component/factory → çağır (try/catch tespiti yok)\n if (typeof element === \"function\") {\n const refs = element.prototype instanceof ComponentBase ? [] : extractRefs(props);\n const el = resolveComponent(element, props);\n if (typeof el == \"object\" && el !== null && 'el' in el) {\n return applyRefs(materializeOptionsObject(el, props), refs);\n }\n // Sınıf bileşeninde props yapıcıda işlendi; fonksiyon bileşeninde ise dış etiketin\n // çerçeve prop'ları (direktifler, initializeComponent, yaşam döngüsü) hiçbir yere uygulanmamıştı.\n return applyJsxFrameworkProps(el, props, refs);\n }\n\n if (typeof element == \"object\" && element !== null && 'el' in element) {\n return materializeOptionsObject(element, props);\n }\n return new Component(element, props);\n}\n\nfunction isOptionsObject(value: unknown): boolean {\n return typeof value == \"object\" && value !== null && !(value instanceof ComponentBase) && 'el' in value;\n}\n\nexport function unwrapModule(result: any): any {\n if (result && typeof result === \"object\" && !(result instanceof ComponentBase) && result.default != null) {\n return result.default;\n }\n return result;\n}\n\nfunction describeLoaded(value: any): string {\n if (value === null) return 'null';\n if (Array.isArray(value)) return 'array';\n if (typeof value === \"object\" && (Object.prototype.toString.call(value) === '[object Module]' || value.__esModule)) return 'module';\n return typeof value;\n}\n\nexport function assertLoadedComponent(value: unknown): void {\n if (value === null || typeof value !== \"object\") return;\n if (value instanceof ComponentBase || Array.isArray(value) || value instanceof Node) return;\n if (typeof (value as any).then === \"function\") return;\n throw motifError('MJX127', describeLoaded(value));\n}\n\nexport function resolveToComponent(input: unknown, props?: any): any {\n const resolved = resolveComponent(input, props);\n if (isOptionsObject(resolved)) {\n return materializeOptionsObject(resolved, undefined);\n }\n return resolved;\n}\n\nfunction materializeOptionsObject(spec: any, props: any): any {\n const result: any = typeof spec.el === 'string'\n ? constructComponentRoot(() => motifComponent(spec.el, props))\n : motifComponent(spec.el, props);\n Object.getOwnPropertyNames(spec).forEach(key => {\n if (key !== 'el' && key !== 'ctor') {\n result[key] = spec[key];\n }\n });\n if (typeof spec.ctor === 'function') {\n callReported(() => spec.ctor.call(result, props), 'MJX122', 'ctor');\n }\n return result;\n}\nexport function motifFragment(props?: any) {\n return new FragmentNode(props);\n}\n\nfunction CreateFragment() {\n const fragment = dom.createComment(\"\");\n return fragment;\n}\n\nexport class FragmentNode<TProps extends object = any> extends Component<Comment, TProps> {\n\n constructor(options?: IBaseProp<TProps>);\n constructor(element: any, props: any);\n constructor(arg1?: any, arg2?: any) {\n if (arguments.length <= 1) {\n super(CreateFragment() as any, arg1 as any);\n } else {\n super(CreateFragment() as any, arg2 as any);\n }\n }\n\n public override initializeComponent(sender: ComponentBase): void {\n const s = (this as any).childs as ComponentBase[] | undefined;\n if (Array.isArray(s) && s.length) {\n for (const child of s) {\n if (child) this.controls.add(child);\n }\n }\n safeCallSilent(() => {\n const nodes = (this.props as any)?.nodes as any[] | undefined;\n if (Array.isArray(nodes) && nodes.length) {\n for (const n of nodes) {\n if (n) this.controls.add(n);\n }\n }\n }, 'Fragment.initializeComponent.props.nodes');\n }\n}\n\n\nexport class motifDocument {\n public router: any = {};\n public context: any = {};\n public run(appElement: Node, app: Component): Component {\n const MainApp = new Component(appElement, {});\n app.parent = MainApp;\n MainApp.controls.add(app);\n //const renderer = new motifRenderer();\n //renderer.render(MainApp);\n MainApp.build();\n return MainApp;\n //console.warn(\"MainApp:\", MainApp);\n }\n}\n","import { IDisposable } from \"../\";\r\nimport { errorHandler } from \"../common/ErrorHandler\";\r\nimport { motifError, reportError } from \"../common/diagnostics\";\r\n\r\nconst glblths = globalThis as any;\r\nfunction getCurrentDom() {\r\n if (glblths && glblths.motifDom) {\r\n return glblths.motifDom.window.document;\r\n }\r\n return glblths.document;\r\n}\r\n\r\nexport function setDom(dom: any) {\r\n if (glblths) {\r\n glblths.motifDom = dom;\r\n }\r\n}\r\n\r\nexport const dom = {\r\n get window() {\r\n if (glblths && glblths.window) {\r\n return glblths.window;\r\n } else if (glblths && glblths) {\r\n return glblths.motifDom.window;\r\n } else {\r\n return glblths;\r\n }\r\n },\r\n _created: new Map<any, any>(),\r\n document: getCurrentDom(),\r\n createElement(tagName: string, options?: any): any {\r\n const doc = getCurrentDom();\r\n if (!doc) {\r\n throw motifError('MJX101', tagName);\r\n }\r\n if (tagName === \"text\") {\r\n return doc.createTextNode('');\r\n }\r\n if (!this._created.has(tagName)) {\r\n const view = doc.createElement(tagName, options);\r\n this._created.set(tagName, view);\r\n }\r\n const tpl = this._created.get(tagName);\r\n return tpl.cloneNode(false);\r\n },\r\n\r\n createDocumentFragment(): any {\r\n try {\r\n var cd = getCurrentDom();\r\n if (cd) {\r\n return cd.createDocumentFragment();\r\n }\r\n } catch (error) {\r\n errorHandler.reportSuppressed('dom.createDocumentFragment', error);\r\n }\r\n\r\n },\r\n createComment(content: any) {\r\n try {\r\n return getCurrentDom()?.createComment(content)\r\n } catch (error) {\r\n errorHandler.reportSuppressed('dom.createComment', error);\r\n }\r\n\r\n },\r\n createTextNode(content: any) {\r\n try {\r\n return getCurrentDom()?.createTextNode(content)\r\n } catch (error) {\r\n errorHandler.reportSuppressed('dom.createTextNode', error);\r\n }\r\n\r\n },\r\n querySelectorAll(selectors: string) {\r\n try {\r\n return getCurrentDom()?.querySelectorAll(selectors)\r\n } catch (error) {\r\n errorHandler.reportSuppressed('dom.querySelectorAll', error);\r\n }\r\n\r\n },\r\n createElementNS(namepsaceUri: string, tagName: string, options?: any): any {\r\n try {\r\n return getCurrentDom()?.createElementNS(namepsaceUri, tagName, options)\r\n } catch (error) {\r\n reportError('MJX103', error, tagName);\r\n }\r\n\r\n },\r\n convertToSvgElement(element: Element): Element {\r\n\r\n const SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\r\n const tagName = element.tagName.toLowerCase();\r\n const newSvgElement = document.createElementNS(SVG_NAMESPACE, tagName);\r\n\r\n for (const attr of element.attributes) {\r\n newSvgElement.setAttribute(attr.name, attr.value);\r\n }\r\n\r\n while (element.firstChild) {\r\n newSvgElement.appendChild(element.firstChild);\r\n }\r\n\r\n const parent = element.parentNode;\r\n if (parent) {\r\n parent.replaceChild(newSvgElement, element);\r\n }\r\n\r\n return newSvgElement;\r\n },\r\n\r\n get body() {\r\n return getCurrentDom()?.body;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\nconst SELECTOR_REGEX = /([\\w\\-]+)?(#([\\w\\-]+))?((\\.([\\w\\-]+))*)/;\r\nexport enum Namespace {\r\n HTML = 'http://www.w3.org/1999/xhtml',\r\n SVG = 'http://www.w3.org/2000/svg'\r\n}\r\n\r\n\r\nfunction _$<T extends Element>(namespace: Namespace, description: string, attrs?: { [key: string]: any }, ...children: Array<Node | string>): T {\r\n const match = SELECTOR_REGEX.exec(description);\r\n\r\n if (!match) {\r\n throw motifError('MJX102', description);\r\n }\r\n\r\n const tagName = match[1] || 'div';\r\n let result: T;\r\n\r\n if (namespace !== Namespace.HTML) {\r\n result = dom.createElementNS(namespace as string, tagName) as T;\r\n } else {\r\n result = dom.createElement(tagName) as unknown as T;\r\n }\r\n\r\n if (match[3]) {\r\n result.id = match[3];\r\n }\r\n if (match[4]) {\r\n result.className = match[4].replace(/\\./g, ' ').trim();\r\n }\r\n if (attrs) {\r\n Object.entries(attrs).forEach(([name, value]) => {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n\r\n if (/^on\\w+$/.test(name)) {\r\n (<any>result)[name] = value;\r\n } else if (name === 'selected') {\r\n if (value) {\r\n result.setAttribute(name, 'true');\r\n }\r\n\r\n } else {\r\n result.setAttribute(name, value);\r\n }\r\n });\r\n }\r\n result.append(...children);\r\n return result as T;\r\n}\r\n\r\nexport function $<T extends HTMLElement>(description: string, attrs?: { [key: string]: any }, ...children: Array<Node | string>): T {\r\n return _$(Namespace.HTML, description, attrs, ...children);\r\n}\r\n\r\n\r\n\r\nclass DomListener implements IDisposable {\r\n\r\n private _handler: (e: any) => void;\r\n private _node: EventTarget;\r\n private readonly _type: string;\r\n private readonly _options: boolean | AddEventListenerOptions;\r\n\r\n constructor(node: EventTarget, type: string, handler: (e: any) => void, options?: boolean | AddEventListenerOptions) {\r\n this._node = node;\r\n this._type = type;\r\n this._handler = handler;\r\n this._options = (options || false);\r\n this._node.addEventListener(this._type, this._handler, this._options);\r\n }\r\n\r\n dispose(): void {\r\n if (!this._handler) {\r\n // Already disposed\r\n return;\r\n }\r\n\r\n this._node.removeEventListener(this._type, this._handler, this._options);\r\n\r\n // Prevent leakers from holding on to the dom or handler func\r\n this._node = null!;\r\n this._handler = null!;\r\n }\r\n}\r\n\r\nexport function addDisposableListener<K extends keyof GlobalEventHandlersEventMap>(node: EventTarget, type: K, handler: (event: GlobalEventHandlersEventMap[K]) => void, useCapture?: boolean): IDisposable;\r\nexport function addDisposableListener(node: EventTarget, type: string, handler: (event: any) => void, useCapture?: boolean): IDisposable;\r\nexport function addDisposableListener(node: EventTarget, type: string, handler: (event: any) => void, options: AddEventListenerOptions): IDisposable;\r\nexport function addDisposableListener(node: EventTarget, type: string, handler: (event: any) => void, useCaptureOrOptions?: boolean | AddEventListenerOptions): IDisposable {\r\n return new DomListener(node, type, handler, useCaptureOrOptions);\r\n}\r\n\r\n\r\n\r\n","// import { dom } from \"../browser\";\nimport { TRANSITION_SLOT } from \"../component/optionsSlots\";\n// import { effect } from \"../store\";\nimport { dom } from \"../\";\nimport { Component, ComponentBase, resolveComponent, notifyDeactivated } from \"../\";\nimport { reportError } from \"../common/diagnostics\";\nimport { pushTight } from \"../common/pushTight\";\nimport { checkReservedMembers, domAnchor, setLeaveContainer } from \"../component/componentBase\";\n\nexport class ControlCollection {\n constructor(private owner: ComponentBase) {\n\n }\n items: ComponentBase[] = [];\n\n add(...control: ComponentBase[]): ComponentBase[]\n add(index?: number, ...control: ComponentBase[]): ComponentBase[]\n add(): ComponentBase[] {\n const count = arguments.length;\n if (count === 0) return [] as ComponentBase[];\n const first = arguments[0];\n if (count === 1 && first instanceof ComponentBase) {\n if (first.isDisposed) return [] as ComponentBase[];\n return [this._insertOne(undefined, first)];\n }\n const args = Array.from(arguments) as any[];\n if (typeof args[0] === 'number' && args.length > 1) {\n const index = args[0] as number;\n const children = ([] as ComponentBase[]).concat(...args.slice(1));\n return this.insert(index, ...children);\n } else {\n const children = ([] as ComponentBase[]).concat(...args);\n return this.insert(undefined, ...children);\n }\n }\n insert(index?: number, ...controls: ComponentBase[]): ComponentBase[] {\n const flat: ComponentBase[] = ([] as any[]).concat(...controls as any);\n return flat.filter(x => x != undefined && !x.isDisposed).map(control => this._insertOne(index, control));\n }\n private _insertOne(index: number | undefined, control: ComponentBase): ComponentBase {\n control = resolveComponent(control);\n if (typeof control == 'string' || typeof control == 'number' || typeof control == 'boolean' || typeof control == 'bigint') {\n control = new Component(dom.createTextNode(control), null as any);\n }\n checkReservedMembers(control);\n if (control.parent) { control.parent.controls.detach(control); }\n\n if (index != undefined && index >= 0) {\n this.items.splice(index, 0, control);\n } else {\n pushTight(this.items, control);\n }\n control.parent = this.owner;\n\n const pendingLeave = (control as any).__pendingLeave as PendingLeave | undefined;\n if (pendingLeave) {\n if (this.onAddBeforeBuild && !this.owner.isBuilt) {\n this.onAddBeforeBuild(control);\n }\n pendingLeave.promise.then(() => {\n if (control.isDisposed || this.owner.isDisposed || control.parent !== this.owner) return;\n if (this.onAdd && this.owner.isBuilt) this.onAdd(control);\n });\n return control;\n }\n\n if (this.onAdd && this.owner.isBuilt) {\n this.onAdd(control);\n }\n\n if (this.onAddBeforeBuild && !this.owner.isBuilt) {\n this.onAddBeforeBuild(control);\n }\n return control;\n }\n remove(control: ComponentBase) {\n var index = this.items.indexOf(control);\n if (index > -1) {\n takeAt(this.items, index);\n try { control.dispose(); } catch { /* ignore */ }\n }\n }\n detach(control: ComponentBase): Promise<void> {\n const index = this.items.indexOf(control);\n if (index === -1) return Promise.resolve();\n takeAt(this.items, index);\n if (control.isDisposed) return Promise.resolve();\n setLeaveContainer(control, this.owner);\n control.parent = null;\n return runLeaveThenDetach(control, () => { if (this.onRemove) this.onRemove(control); });\n }\n\n silentDetach(control: ComponentBase, unlinkOnly: boolean = false) {\n if (unlinkOnly) { this.silentUnlink(control); return; }\n const index = this.items.indexOf(control);\n if (index === -1) return;\n takeAt(this.items, index);\n if (control.isDisposed) return;\n control.parent = null;\n try {\n detachComponentDom(control);\n } catch (error) {\n reportError('MJX117', error);\n }\n notifyDeactivated(control);\n }\n\n silentUnlink(control: ComponentBase) {\n const index = this.items.indexOf(control);\n if (index === -1) return;\n takeAt(this.items, index);\n setLeaveContainer(control, this.owner);\n control.parent = null;\n }\n\n async clearAsync(): Promise<void> {\n const items = this.items.splice(0, this.items.length); \n await Promise.all(items.map(c => c.dispose())); \n }\n\n\n clear() {\n var items = this.items.splice(0, this.items.length);\n items.forEach(c => {\n try { c.dispose(); } catch { /* ignore */ }\n });\n }\n get length() {\n return this.items.length;\n }\n forEach(callbackfn: (value: ComponentBase, index: number, array: ComponentBase[]) => void) {\n this.items.forEach(callbackfn);\n }\n map(callbackfn: (value: ComponentBase, index: number, array: ComponentBase[]) => void) {\n return this.items.map(callbackfn);\n }\n onAdd?: (control: ComponentBase) => void;\n onRemove?: (control: ComponentBase) => void;\n onAddBeforeBuild?: (control: ComponentBase) => void;\n move(control: ComponentBase, before?: ComponentBase | null): void {\n if (!control || control.isDisposed) return;\n if (before === control) return;\n if (control.parent !== this.owner) return;\n if (before && before.parent !== this.owner) return;\n\n const oldIndex = this.items.indexOf(control);\n if (oldIndex === -1) return;\n const beforeIndex = before ? this.items.indexOf(before) : -1;\n if (before && beforeIndex === -1) return;\n\n const alreadyInPlace = before ? beforeIndex === oldIndex + 1 : oldIndex === this.items.length - 1;\n if (alreadyInPlace) return;\n\n\n this.items.splice(oldIndex, 1);\n\n if (!before) {\n this.items.push(control);\n } else {\n const newBeforeIndex = this.items.indexOf(before);\n const insertAt = newBeforeIndex >= 0 ? newBeforeIndex : this.items.length;\n this.items.splice(insertAt, 0, control);\n }\n\n const container = findAppendableElement(this.owner);\n if (!container || !domAnchor(control, container)) return;\n\n const at = before ? this.items.indexOf(before) : -1;\n moveComponentDomRange(control, container, at >= 0 ? anchorFrom(this.owner, this.items, at, container) : computeAppendReference(this.owner));\n }\n\n _reorder(order: ComponentBase[], stable: Set<number>): void {\n const container = findAppendableElement(this.owner);\n if (container) {\n let ref = computeAppendReference(this.owner);\n for (let i = order.length - 1; i >= 0; i--) {\n const control = order[i];\n const node = domAnchor(control, container);\n if (!node) continue;\n if (!stable.has(i)) moveComponentDomRange(control, container, ref);\n ref = node;\n }\n }\n const items = this.items;\n for (let i = 0; i < order.length; i++) items[i] = order[i];\n }\n\n moveToIndex(control: ComponentBase, index: number): void {\n if (!control || control.isDisposed) return;\n if (!Number.isFinite(index as any)) return;\n if (index < 0) index = 0;\n if (index > this.items.length) index = this.items.length;\n if (this.items.indexOf(control) === -1) return;\n const before = index >= this.items.length ? null : this.items[index];\n this.move(control, before);\n }\n}\n\n/** Owner için DOM'a eklenebilir gerçek element'i bulur. */\nfunction takeAt(items: ComponentBase[], index: number): void {\n if (index === 0) items.shift(); else items.splice(index, 1);\n}\n\nfunction findAppendableElement(owner: ComponentBase): HTMLElement | Node | null {\n let c: ComponentBase | null = owner;\n while (c) {\n const node = c.element as any as Node;\n if (node && node.nodeType !== Node.COMMENT_NODE && node.nodeType !== Node.DOCUMENT_FRAGMENT_NODE && node.nodeType !== Node.TEXT_NODE) {\n return node as any;\n }\n c = c.parent;\n }\n return null;\n}\n\n/** Owner fragment ise sona ekleme referansını, değilse null döndürür. */\nfunction computeAppendReference(owner: ComponentBase): Node | null {\n const node = owner.element as any as Node;\n if (node && node.nodeType === Node.COMMENT_NODE) {\n return (owner as any).motif.options?.closeFragment || null;\n }\n return null;\n}\n\nfunction anchorFrom(owner: ComponentBase, items: ComponentBase[], start: number, container: Node): Node | null {\n for (let i = start; i < items.length; i++) {\n const anchor = domAnchor(items[i], container);\n if (anchor) return anchor;\n }\n return computeAppendReference(owner);\n}\n\n/** Bir component'in kök DOM aralığını (tek element veya fragment aralığı) referenceNode öncesine taşır. */\nfunction moveComponentDomRange(control: ComponentBase, container: Node, referenceNode: Node | null) {\n const node = domAnchor(control, container);\n if (!node) return;\n\n if (node.nodeType !== Node.COMMENT_NODE || node !== (control.element as unknown as Node)) {\n try { container.insertBefore(node, referenceNode); } catch { }\n return;\n }\n\n const open = node;\n const close = ((control as any).motif.options?.closeFragment as Node | undefined) || null;\n if (!close) { try { container.insertBefore(open, referenceNode); } catch { } return; }\n\n if (referenceNode && isNodeInRange(open, close, referenceNode)) {\n referenceNode = close.nextSibling;\n }\n\n const frag = (dom.createDocumentFragment && dom.createDocumentFragment()) || container.ownerDocument?.createDocumentFragment?.() || (function () { try { return document.createDocumentFragment(); } catch { return null as any; } })();\n if (!frag) {\n let current: Node | null = open;\n let maxIterations = 10000;\n while (current && maxIterations-- > 0) {\n const after: Node | null = current.nextSibling;\n try { container.insertBefore(current, referenceNode); } catch { }\n if (current === close) break;\n current = after;\n }\n if (maxIterations <= 0) {\n reportError('MJX119', undefined);\n }\n return;\n }\n\n let current: Node | null = open;\n let maxIterations = 10000;\n while (current && maxIterations-- > 0) {\n const after: Node | null = current.nextSibling;\n try { (frag as any).appendChild(current); } catch { }\n if (current === close) break;\n current = after;\n }\n if (maxIterations <= 0) {\n reportError('MJX119', undefined);\n }\n try { container.insertBefore(frag as any, referenceNode); } catch { }\n}\n\nfunction isNodeInRange(open: Node, close: Node, test: Node): boolean {\n let current: Node | null = open;\n let maxIterations = 10000;\n while (current && maxIterations-- > 0) {\n if (current === test) return true;\n if (current === close) break;\n current = current.nextSibling;\n }\n if (maxIterations <= 0) {\n reportError('MJX120', undefined);\n }\n return false;\n}\n\nfunction detachComponentDom(control: ComponentBase): void {\n const node = control.element as unknown as Node | null;\n if (!node) return;\n const opts: any = (control as any).motif.options;\n if (node.nodeType === Node.COMMENT_NODE && node.parentNode) {\n const close = (opts?.closeFragment as Node | undefined) || null;\n const cache: DocumentFragment = opts.cache ?? (opts.cache = dom.createDocumentFragment());\n let current: Node | null = node;\n let maxIterations = 10000;\n while (current && maxIterations-- > 0) {\n const after: Node | null = current.nextSibling;\n cache.appendChild(current);\n if (!close || current === close) break;\n current = after;\n }\n return;\n }\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n return;\n }\n const placeholder = opts?.placeholder as Node | undefined;\n if (placeholder && placeholder.parentNode) placeholder.parentNode.removeChild(placeholder);\n}\n\ninterface PendingLeave {\n promise: Promise<void>;\n finish: () => void;\n}\n\nfunction runLeaveThenDetach(control: ComponentBase, notify: () => void): Promise<void> {\n let resolveDone: () => void = () => { };\n const promise = new Promise<void>(resolve => { resolveDone = resolve; });\n let pending = 1;\n let finished = false;\n const finish = () => {\n if (finished) return;\n finished = true;\n if ((control as any).__pendingLeave?.promise === promise) delete (control as any).__pendingLeave;\n if (!control.isDisposed) {\n try {\n detachComponentDom(control);\n } catch (error) {\n reportError('MJX117', error);\n }\n notifyDeactivated(control);\n }\n try {\n notify();\n } catch (error) {\n reportError('MJX118', error);\n }\n resolveDone();\n };\n const arrive = () => {\n pending--;\n if (pending === 0) finish();\n };\n const visit = (c: ComponentBase) => {\n if (!c || c.isDisposed || !c.element || !c.isVisible || c.isWait) return;\n const node = c.element as unknown as Node;\n if (node.nodeType === Node.COMMENT_NODE) {\n c.controls.items.forEach(visit);\n return;\n }\n if (node.nodeType !== Node.ELEMENT_NODE) return;\n pending++;\n let arrived = false;\n const once = () => {\n if (arrived) return;\n arrived = true;\n arrive();\n };\n try {\n const opts: any = c.motif.options;\n if (!opts[TRANSITION_SLOT] && !opts.transitionOut) {\n once();\n return;\n }\n opts.transition.leaveTransition(once);\n } catch {\n once();\n }\n };\n (control as any).__pendingLeave = { promise, finish } as PendingLeave;\n visit(control);\n arrive();\n return promise;\n}\n","import { ComponentBase, IBaseProp } from \".\";\nimport { Component, assertLoadedComponent, resolveToComponent, unwrapModule } from \"./Component\";\nimport { Frame } from \"./Frame\";\nimport { trackedCleanup } from \"../disposable/Cleanup\";\nimport { motifError, reportError } from \"../common/diagnostics\";\n\nexport interface LazyOptions<T = any> { \n Loaderview?: ComponentBase; \n Placeholderview?: ComponentBase; \n Fallbackview?: ComponentBase;\n minDelayMs?: number;\n onError?: (error: unknown) => void;\n mapResult?: (result: T) => any; \n timeoutMs?: number;\n signal?: AbortSignal;\n retry?: number | LazyRetryOptions;\n onRetry?: (attempt: number, error: unknown) => void;\n}\n\nexport interface LazyRetryOptions {\n count: number;\n delayMs?: number;\n whenOnline?: boolean;\n}\n\nfunction normalizeRetry(retry: LazyOptions['retry']): Required<LazyRetryOptions> {\n if (typeof retry === 'number') return { count: Math.max(0, Math.floor(retry)), delayMs: 500, whenOnline: true };\n if (retry && typeof retry === 'object') {\n return {\n count: Math.max(0, Math.floor(retry.count || 0)),\n delayMs: Math.max(0, retry.delayMs ?? 500),\n whenOnline: retry.whenOnline !== false,\n };\n }\n return { count: 0, delayMs: 0, whenOnline: false };\n}\n\nfunction defaultMapper(result: any) {\n return unwrapModule(result);\n}\n\n\n\nexport function Lazy<T>(props: { caller: () => Promise<T>, options?: LazyOptions<T> }): Component;\nexport function Lazy(props: any): Component;\nexport function Lazy(props: any): Component {\n const opts: LazyOptions<any> = (props && props.options) || {};\n const frame = new Frame();\n const timers = new Set<ReturnType<typeof setTimeout>>();\n const trackTimer = (id: ReturnType<typeof setTimeout>) => { try { timers.add(id); } catch { } return id; };\n const clearAllTimers = () => {\n try { timers.forEach(id => { try { clearTimeout(id); } catch { } }); } catch { }\n try { timers.clear(); } catch { }\n };\n try { frame.motif.register(trackedCleanup(() => clearAllTimers())); } catch { }\n const initial = opts.Placeholderview ?? opts.Loaderview;\n if (initial != null) {\n frame.navigate(resolveToComponent(initial));\n }\n\n const attemptLoad = () => {\n if (!opts.timeoutMs && !opts.signal) {\n return props.caller();\n }\n const parts: Promise<any>[] = [props.caller()];\n if (opts.timeoutMs && opts.timeoutMs > 0) {\n parts.push(new Promise<any>((_, reject) => {\n const id = trackTimer(setTimeout(() => reject(motifError('MJX110', opts.timeoutMs!)), opts.timeoutMs));\n parts[0].finally(() => { try { clearTimeout(id); timers.delete(id); } catch { } }).catch(() => { /* noop */ });\n if (opts.signal) {\n const onAbortClear = () => { try { clearTimeout(id); timers.delete(id); } catch { } };\n try { opts.signal.addEventListener(\"abort\", onAbortClear, { once: true }); } catch { }\n }\n }));\n }\n if (opts.signal) {\n parts.push(new Promise<any>((_, reject) => {\n if (opts.signal!.aborted) {\n reject(motifError('MJX111'));\n return;\n }\n const onAbort = () => {\n opts.signal!.removeEventListener(\"abort\", onAbort);\n clearAllTimers();\n reject(motifError('MJX111'));\n };\n opts.signal!.addEventListener(\"abort\", onAbort, { once: true });\n }));\n }\n return Promise.race(parts);\n };\n\n const retry = normalizeRetry(opts.retry);\n const cleanups = new Set<() => void>();\n try { frame.motif.register(trackedCleanup(() => { cleanups.forEach(c => { try { c(); } catch { } }); cleanups.clear(); })); } catch { }\n\n const waitBeforeRetry = (attempt: number): Promise<boolean> => new Promise<boolean>(resolve => {\n let settled = false;\n const finish = (go: boolean) => {\n if (settled) return;\n settled = true;\n cleanups.delete(cancel);\n try { if (onlineHandler) window.removeEventListener('online', onlineHandler); } catch { }\n try { if (id !== undefined) { clearTimeout(id); timers.delete(id); } } catch { }\n try { opts.signal?.removeEventListener('abort', onAbort); } catch { }\n resolve(go);\n };\n const cancel = () => finish(false);\n const onAbort = () => finish(false);\n let onlineHandler: (() => void) | null = null;\n let id: ReturnType<typeof setTimeout> | undefined = undefined;\n cleanups.add(cancel);\n try { opts.signal?.addEventListener('abort', onAbort, { once: true }); } catch { }\n const schedule = () => { id = trackTimer(setTimeout(() => finish(true), retry.delayMs * attempt)); };\n const offline = retry.whenOnline && typeof navigator !== 'undefined' && navigator.onLine === false && typeof window !== 'undefined';\n if (offline) {\n onlineHandler = () => {\n try { window.removeEventListener('online', onlineHandler!); } catch { }\n onlineHandler = null;\n schedule();\n };\n window.addEventListener('online', onlineHandler);\n } else {\n schedule();\n }\n });\n\n const loadWithRetry = async (): Promise<any> => {\n let attempt = 0;\n for (; ;) {\n try {\n return await attemptLoad();\n } catch (err) {\n if (opts.signal?.aborted || (frame as any).isDisposed || attempt >= retry.count) throw err;\n attempt++;\n try { opts.onRetry?.(attempt, err); } catch { }\n const go = await waitBeforeRetry(attempt);\n if (!go || opts.signal?.aborted || (frame as any).isDisposed) throw err;\n }\n }\n };\n\n const loadPromise = retry.count > 0 ? loadWithRetry() : attemptLoad();\n\n const startTs = Date.now();\n\n const fail = (err: any) => {\n try { opts.onError?.(err); } catch { /* swallow */ }\n if (opts.signal?.aborted) return;\n if (opts.Fallbackview != null) {\n frame.navigate(resolveToComponent(opts.Fallbackview));\n } else {\n reportError('MJX126', err);\n try { frame.motif.clear().catch(() => { }); } catch { }\n }\n };\n\n const place = (target: any) => {\n let component: any;\n try {\n component = resolveToComponent(target);\n assertLoadedComponent(component);\n } catch (err) {\n fail(err);\n return;\n }\n frame.navigate(component);\n };\n\n loadPromise\n .then((result: any) => {\n if (opts.signal?.aborted) { return; }\n const mapper = opts.mapResult ?? defaultMapper;\n const target = mapper(result);\n const elapsed = Date.now() - startTs;\n const minDelay = Math.max(0, (opts.minDelayMs ?? 0));\n const remaining = Math.max(0, minDelay - elapsed);\n if (remaining > 0) {\n const id = trackTimer(setTimeout(() => {\n if (!opts.signal?.aborted) {\n place(target);\n }\n }, remaining));\n if (opts.signal) {\n const onAbortClearDelay = () => { try { clearTimeout(id); timers.delete(id); } catch { } };\n try { opts.signal.addEventListener(\"abort\", onAbortClearDelay, { once: true }); } catch { }\n }\n } else {\n place(target);\n }\n })\n .catch(fail);\n\n return frame;\n}\n","import { ComponentBase, IDisposeOptions } from \"./componentBase\";\nimport { resolveComponent } from \"./resolveComponent\";\nimport { Lazy } from \"./Lazy\";\nimport { reportError } from \"../common/diagnostics\";\n\nexport interface NavigationHost extends ComponentBase {\n current: ComponentBase | ComponentBase[] | null;\n previouspage: any;\n isBusy: boolean;\n _latestNavigateId: number;\n _navLock: Promise<void>;\n _navAbort?: AbortController;\n _navPending?: number;\n}\n\nexport function hasOwnTransition(component: ComponentBase | null | undefined, phase: 'enter' | 'leave'): boolean {\n const options: any = component?.motif?.options;\n if (!options) return false;\n const transition = options.transition;\n return !!((phase === 'enter' ? options.transitionIn : options.transitionOut) || (transition && (transition.classes || (transition.name && transition.name.length > 0))));\n}\n\nfunction playsLeave(target: ComponentBase | ComponentBase[] | null): boolean {\n if (!target) return false;\n if (Array.isArray(target)) return target.some(t => !!t && !t.isDisposed && hasOwnTransition(t, 'leave'));\n return !target.isDisposed && hasOwnTransition(target, 'leave');\n}\n\nexport function cancelAnimationsDeep(target: any): void {\n if (!target || target.isDisposed) return;\n if (Array.isArray(target)) {\n target.forEach(cancelAnimationsDeep);\n return;\n }\n try { target.motif.options?.transition?.activeCssCancel?.(); } catch { }\n try {\n const anims = target.motif.options?.transition?.activeAnimations;\n if (Array.isArray(anims)) {\n anims.forEach((anim: any) => {\n try {\n if (anim && typeof anim.cancel === 'function') {\n anim.cancel();\n }\n } catch { }\n });\n anims.length = 0;\n }\n } catch { }\n try {\n if (target.controls && target.controls.items) {\n for (const child of target.controls.items) {\n cancelAnimationsDeep(child);\n }\n }\n } catch { }\n}\n\nexport async function disposeNavigationTarget(target: ComponentBase | ComponentBase[] | null, options: IDisposeOptions = { deep: true }): Promise<void> {\n if (!target) return;\n const list = Array.isArray(target) ? target : [target];\n await Promise.all(list.map(async (xr) => {\n if (!xr || xr.isDisposed) return;\n try {\n await xr.dispose(options);\n } catch (err) {\n reportError('MJX115', err);\n }\n }));\n}\n\nexport async function navigateHost(host: NavigationHost, page: ComponentBase | ComponentBase[], keepOldControl: boolean = false): Promise<void> {\n if (host.isDisposed || page == null) return;\n if (host.current !== null && host.current === (page as any)) return;\n\n const navigateId = ++host._latestNavigateId;\n host.isBusy = true;\n\n const complete = (value: any) => {\n if (host.isDisposed) return;\n if (navigateId !== host._latestNavigateId) return;\n const xP = resolveComponent(value);\n host.current = xP;\n try {\n if (Array.isArray(xP)) {\n host.controls.add(...xP);\n } else {\n host.controls.add(xP);\n }\n } catch (error) {\n reportError('MJX114', error);\n }\n host.isBusy = false;\n host.previouspage = xP;\n };\n\n if (!(host._navPending ?? 0) && host.current === null && !(page instanceof Promise)) {\n try {\n complete(page);\n } catch (error) {\n reportError('MJX114', error);\n host.isBusy = false;\n }\n return;\n }\n\n host._navPending = (host._navPending ?? 0) + 1;\n const prevLock = host._navLock ?? Promise.resolve();\n host._navLock = (async () => {\n try {\n await prevLock;\n\n try { host._navAbort?.abort(); } catch { }\n host._navAbort = new AbortController();\n\n const oldPage = host.current;\n if (oldPage && !keepOldControl) {\n cancelAnimationsDeep(oldPage);\n cancelAnimationsDeep(host);\n const animated = playsLeave(oldPage);\n const leaving = disposeNavigationTarget(oldPage);\n if (animated) {\n leaving.catch(() => { });\n } else {\n await leaving;\n }\n }\n\n try {\n if (page instanceof Promise) {\n const caller = () => page;\n const lazyFrame = Lazy({ caller, options: { signal: host._navAbort?.signal } as any });\n complete(lazyFrame);\n } else {\n complete(page);\n }\n } catch (error) {\n reportError('MJX114', error);\n host.isBusy = false;\n }\n } finally {\n host._navPending = Math.max(0, (host._navPending ?? 1) - 1);\n }\n })();\n await host._navLock;\n}\n","import { dom } from \"../core\";\nimport { Component } from \"../\";\nimport { ComponentBase, IDisposeOptions } from \"../\";\nimport { Lazy, LazyOptions } from \"../\";\nimport { disposeNavigationTarget, navigateHost } from \"./navigation\";\n\n\nexport class Frame extends Component {\n public current: ComponentBase | ComponentBase[] | null = null;\n public _latestNavigateId = 0;\n public _navLock: Promise<void> = Promise.resolve();\n public _navAbort?: AbortController;\n isBusy: boolean = false;\n constructor(props?: any) {\n super(dom.createComment(''), props);\n if (props && props.childs && Array.isArray(props.childs) && props.childs.length > 0) {\n this.controls.add(props.childs);\n }\n }\n public async dispose(options: IDisposeOptions = { deep: true }) {\n await disposeNavigationTarget(this.current, options);\n await super.dispose(options);\n }\n public async flush() {\n await disposeNavigationTarget(this.current);\n }\n protected override async _clear() {\n await disposeNavigationTarget(this.current);\n }\n previouspage: any;\n public async navigate(page: ComponentBase | ComponentBase[], keepOldControl: boolean = false) {\n await navigateHost(this, page, keepOldControl);\n }\n\n public async navigateLazy<T>(caller: () => Promise<T>, options?: LazyOptions<T>, keepOldControl: boolean = false) {\n const lazyFrame = Lazy({ caller, options });\n await this.navigate(lazyFrame, keepOldControl);\n }\n}\n","const preprocessitem = new Set<Function>();\r\n\r\nexport function preProcessing(callback: () => any) {\r\n preprocessitem.add(callback);\r\n renderPreProcessing();\r\n}\r\n\r\nexport function renderPreProcessing() {\r\n preprocessitem.forEach(i => {\r\n i();\r\n })\r\n}","\r\nimport { Component, ComponentBase, EventArgs } from \"../\";\r\nimport { reportWarning } from \"../common/diagnostics\";\r\n\r\n\r\n// const ContentBodyCollection = new Map<string, ContentBody>();\r\nconst ContentBodyCollectionHandable = new Map<string, ContentBody>();\r\nconst changeBodyCollectionHandler = Symbol('changeBodyCollectionHandler')\r\n\r\n\r\ninterface ContentBlockProps {\r\n target: string\r\n}\r\nexport class ContentBlock extends Component<any, ContentBlockProps> {\r\n constructor(props: ContentBlockProps) {\r\n super(props);\r\n\r\n\r\n // var cb = ContentBodyCollectionHandable.get(props.target);\r\n // if (cb) {\r\n // } else {\r\n // var cb = ContentBodyCollectionHandable.get(props.target);\r\n // if (cb) {\r\n const forward = (control: ComponentBase) => {\r\n this.motif.trigger('controladded', { control });\r\n var cb = ContentBodyCollectionHandable.get(this.props.target);\r\n if (cb) {\r\n control.motif.options[\"ownerContentBlock\"] = this;\r\n cb.controls.add(control);\r\n }\r\n };\r\n this.controls.onAdd = forward;\r\n this.controls.onAddBeforeBuild = forward;\r\n if (this.childs) {\r\n this.controls.add(...this.childs);\r\n }\r\n\r\n }\r\n public onConfigured(sender: ComponentBase, e: EventArgs): void {\r\n\r\n var cb = ContentBodyCollectionHandable.get(this.props.target);\r\n if (cb) {\r\n this.controls.items.forEach(x => { x.motif.options[\"ownerContentBlock\"] = this; });\r\n cb.controls.add(...this.controls.items);\r\n } else {\r\n this.context.on(changeBodyCollectionHandler, () => {\r\n var cb = ContentBodyCollectionHandable.get(this.props.target);\r\n if (cb) {\r\n this.controls.items.forEach(x => { x.motif.options[\"ownerContentBlock\"] = this; });\r\n cb.controls.add(...this.controls.items);\r\n }\r\n });\r\n }\r\n }\r\n\r\n public onDisposing(sender: ComponentBase, e: EventArgs): void {\r\n var cb = ContentBodyCollectionHandable.get(this.props.target);\r\n if (cb) {\r\n for (const element of [...cb.controls.items]) {\r\n if (element.motif.options[\"ownerContentBlock\"] !== this) continue;\r\n cb.controls.remove(element);\r\n reportWarning('MJX109', [], element);\r\n }\r\n }\r\n\r\n }\r\n\r\n}\r\ninterface ContentBodyProps {\r\n name: string,\r\n onConfig?: any\r\n}\r\nexport class ContentBody extends Component<any, ContentBodyProps> {\r\n constructor(props: ContentBodyProps) {\r\n super(props);\r\n ContentBodyCollectionHandable.set(this.props.name, this);\r\n this.context.fire(changeBodyCollectionHandler);\r\n }\r\n onDisposing(sender: Component<any, ContentBodyProps>) {\r\n if (ContentBodyCollectionHandable.get(this.props.name) === this) {\r\n ContentBodyCollectionHandable.delete(this.props.name);\r\n }\r\n }\r\n}\r","import { ComponentBase } from \"./componentBase\";\r\nimport { Application } from \"../\";\r\n\r\nexport const SLOT_REGISTERED_EVENT = Symbol('slotRegistered');\r\nexport const SLOT_UNREGISTERED_EVENT = Symbol('slotUnregistered');\r\n\r\nexport class TransportRegistry {\r\n private static slots: Map<string, ComponentBase> = new Map();\r\n\r\n static registerSlot(name: string, slot: ComponentBase) {\r\n this.slots.set(name, slot);\r\n Application.main.fire(SLOT_REGISTERED_EVENT, { name, slot });\r\n }\r\n static unregisterSlot(name: string, slot: ComponentBase) {\r\n if (this.slots.get(name) === slot) {\r\n this.slots.delete(name);\r\n Application.main.fire(SLOT_UNREGISTERED_EVENT, { name, slot });\r\n }\r\n }\r\n static getSlot(name: string): ComponentBase | undefined {\r\n return this.slots.get(name);\r\n }\r\n}\r","import { Component } from \"./Component\";\r\nimport { ComponentBase } from \"./componentBase\";\r\nimport { TransportRegistry } from \"./TransportRegistry\";\r\n\r\nexport class Transport extends Component<any, { name: string, mode?: 'replace' | 'merge' }> {\r\n public mode: 'replace' | 'merge';\r\n constructor(props: { name: string, mode?: 'replace' | 'merge' }) {\r\n super(props);\r\n this.mode = props.mode || 'replace';\r\n }\r\n initializeComponent(sender: ComponentBase) {\r\n TransportRegistry.registerSlot(this.props.name, this);\r\n this.onDisposing = () => {\r\n [...(this.controls.items || [])].forEach(child => {\r\n this.controls.remove(child);\r\n child.dispose?.();\r\n });\r\n TransportRegistry.unregisterSlot(this.props.name, this);\r\n };\r\n }\r\n\r\n clearSlot() {\r\n [...(this.controls.items || [])].forEach(child => {\r\n this.controls.remove(child);\r\n child.dispose?.();\r\n });\r\n }\r\n}\r","import { ComponentBase } from \"./componentBase\";\r\nimport { motifError } from \"../common/diagnostics\";\r\n\r\nexport interface TransportOptions {\r\n index?: number;\r\n keepState?: boolean;\r\n owner?: any;\r\n}\r\n\r\nexport class Transporter {\r\n static transport(child: ComponentBase, newParent: ComponentBase, options: TransportOptions = {}) {\r\n if (!child || !newParent) return;\r\n if (child.parent === newParent && newParent.controls.items.includes(child)) return;\r\n if (child.parent && child.parent !== newParent) {\r\n child.parent.controls.silentDetach(child, true);\r\n }\r\n if (options.owner) {\r\n (child.motif.options as any).ownerTransporter = options.owner;\r\n }\r\n if (typeof options.index === \"number\") {\r\n if (!newParent.controls.items.includes(child)) {\r\n newParent.controls.items.splice(options.index, 0, child);\r\n }\r\n } else {\r\n if (!newParent.controls.items.includes(child)) {\r\n newParent.controls.add(child);\r\n }\r\n }\r\n child.parent = newParent;\r\n if (!options.keepState) {\r\n child.reState();\r\n }\r\n }\r\n\r\n static transportMany(children: ComponentBase[], newParent: ComponentBase, options: TransportOptions = {}) {\r\n if (!Array.isArray(children)) return;\r\n children.forEach(child => this.transport(child, newParent, options));\r\n }\r\n\r\n static createSlot(name: string, parent?: ComponentBase) {\r\n const slot = {\r\n name,\r\n children: [] as ComponentBase[],\r\n parent: parent as ComponentBase | undefined,\r\n mount(child: ComponentBase, options: TransportOptions = {}) {\r\n if (!this.parent) throw motifError('MJX113');\r\n if (!this.children.includes(child)) {\r\n Transporter.transport(child, this.parent, options);\r\n this.children.push(child);\r\n }\r\n },\r\n unmount(child: ComponentBase) {\r\n if (!this.parent) throw motifError('MJX113');\r\n this.children = this.children.filter(c => c !== child);\r\n this.parent.controls.remove(child);\r\n },\r\n detachAll() {\r\n if (!this.parent) return;\r\n this.children.forEach(child => {\r\n this.parent!.controls.remove(child);\r\n });\r\n this.children = [];\r\n }\r\n };\r\n return slot;\r\n }\r\n}\r\n","\r\nimport { TransportRegistry, SLOT_REGISTERED_EVENT, SLOT_UNREGISTERED_EVENT } from \"./TransportRegistry\";\r\nimport { Transporter } from \"./Transporter\";\r\nimport { ComponentBase } from \"./componentBase\";\r\nimport { Application, EventArgs, Transport, Component } from \"../\";\r\nimport { contentBlocks } from \"./contentBlockRegistry\";\r\n\r\nexport class TransportTo extends Component<any, { name: string }> {\r\n private _onAddRef?: (c: ComponentBase) => void;\r\n private _onRemoveRef?: (c: ComponentBase) => void;\r\n private _slotRegisteredListener?: () => void;\r\n private _slotUnregisteredListener?: () => void;\r\n private _transported: ComponentBase[] = [];\r\n private _countedLive = false;\r\n constructor(props: { name: string }) {\r\n super('div', props);\r\n contentBlocks.live++;\r\n this._countedLive = true;\r\n }\r\n\r\n private _handleSlotChange = (eventArgs: { name: string, slot: Transport }) => {\r\n if (eventArgs.name === this.props.name) {\r\n const slot = eventArgs.slot;\r\n if (slot.mode !== 'merge') {\r\n slot.clearSlot?.();\r\n }\r\n const all = [...(this.childs || []), ...this.controls.items];\r\n Transporter.transportMany(all, slot);\r\n this._rememberTransported(all);\r\n }\r\n };\r\n\r\n private _rememberTransported(children: ComponentBase[]) {\r\n const kept = this._transported.filter(c => !c.isDisposed);\r\n for (const child of children) {\r\n if (!kept.includes(child)) kept.push(child);\r\n }\r\n this._transported = kept;\r\n }\r\n\r\n private _clearChildrenFromSlot = (slot: ComponentBase) => {\r\n (this.childs || []).forEach(child => {\r\n slot.controls.remove(child);\r\n child.dispose();\r\n });\r\n (this.controls.items || []).forEach(child => {\r\n slot.controls.remove(child);\r\n child.dispose();\r\n });\r\n };\r\n\r\n initializeComponent(sender: ComponentBase) {\r\n let slot = TransportRegistry.getSlot(this.props.name) as Transport | undefined;\r\n if (slot) {\r\n if (slot.mode !== 'merge') {\r\n slot.clearSlot?.();\r\n }\r\n const all = [...(this.childs || []), ...this.controls.items];\r\n Transporter.transportMany(all, slot);\r\n this._rememberTransported(all);\r\n }\r\n\r\n this._slotRegisteredListener = Application.main.on(SLOT_REGISTERED_EVENT, this._handleSlotChange as any);\r\n this._slotUnregisteredListener = Application.main.on(SLOT_UNREGISTERED_EVENT, (eventArgs: { name: string, slot: ComponentBase } | any) => {\r\n if (eventArgs.name === this.props.name) {\r\n this._clearChildrenFromSlot(eventArgs.slot);\r\n }\r\n });;\r\n\r\n this._onAddRef = (child: ComponentBase) => {\r\n this.motif.trigger('controladded', { control: child });\r\n const currentSlot = TransportRegistry.getSlot(this.props.name);\r\n if (currentSlot) {\r\n Transporter.transport(child, currentSlot);\r\n this._rememberTransported([child]);\r\n }\r\n };\r\n this._onRemoveRef = (child: ComponentBase) => {\r\n const currentSlot = TransportRegistry.getSlot(this.props.name);\r\n if (currentSlot) {\r\n currentSlot.controls.remove(child);\r\n }\r\n this._transported = this._transported.filter(c => c !== child);\r\n };\r\n this.controls.onAdd = this._onAddRef;\r\n this.controls.onRemove = this._onRemoveRef;\r\n\r\n\r\n }\r\n\r\n public onDisposing(sender: ComponentBase, e: EventArgs): void {\r\n if (this._countedLive) {\r\n this._countedLive = false;\r\n contentBlocks.live--;\r\n }\r\n const currentSlot = TransportRegistry.getSlot(this.props.name);\r\n for (const child of this._transported || []) {\r\n currentSlot?.controls.remove(child);\r\n child.dispose();\r\n }\r\n\r\n if (this._slotRegisteredListener) {\r\n Application.main.off(SLOT_REGISTERED_EVENT, this._handleSlotChange as any);\r\n this._slotRegisteredListener = undefined;\r\n }\r\n if (this._slotUnregisteredListener) {\r\n Application.main.off(SLOT_UNREGISTERED_EVENT, this._slotUnregisteredListener);\r\n this._slotUnregisteredListener = undefined;\r\n }\r\n if (this.controls.onAdd === this._onAddRef) this.controls.onAdd = undefined;\r\n if (this.controls.onRemove === this._onRemoveRef) this.controls.onRemove = undefined;\r\n this._onAddRef = undefined;\r\n this._onRemoveRef = undefined;\r\n this._transported = [];\r\n }\r\n}\r","import { ReactiveEngine } from \"../ReactiveEngine\"\r\nimport { Flags, addArrayStack, closeSetup, hasOwn, isIntrinsicSymbol, isObject, pauseTracking, resetTracking, setupActive } from \"../common\"\r\nimport { track } from \"../reactivity-core\"\r\n\r\nconst ARRAY_MUTATORS = new Set(['push', 'pop', 'shift', 'unshift', 'splice', 'reverse', 'sort'])\r\n\r\nexport const NOT_META = Symbol('')\r\ntype MetaReader = (engine: ReactiveEngine, target: any, receiver: any) => unknown\r\n\r\nconst metaReaders = new Map<symbol, MetaReader>([\r\n [Flags.IS_REACTIVE, () => true],\r\n [Flags.IS_READONLY, engine => engine.isReadonly],\r\n [Flags.IS_SUPERFICIAL, engine => engine.superficial],\r\n [Flags.GET_SETUP, (_engine, target) => target],\r\n [Flags.RAW, (engine, target, receiver) => engine.ReactiveMap().get(target) === receiver ? target : NOT_META],\r\n])\r\n\r\nexport function readMeta(engine: ReactiveEngine, target: any, key: unknown, receiver: any): unknown {\r\n if (typeof key !== 'symbol') return NOT_META\r\n const reader = metaReaders.get(key)\r\n return reader === undefined ? NOT_META : reader(engine, target, receiver)\r\n}\r\n\r\nexport function createGetter(engine: ReactiveEngine) {\r\n return function (target: any, p: any, receiver: any) {\r\n const meta = readMeta(engine, target, p, receiver)\r\n if (meta !== NOT_META) return meta\r\n\r\n if (Array.isArray(target) && !engine.isReadonly) {\r\n const patched = engine.arrayMethods.get\r\n if (hasOwn(patched, p)) {\r\n const method = patched[p]\r\n if (ARRAY_MUTATORS.has(p)) addArrayStack(p)\r\n else track(target, p)\r\n return method\r\n }\r\n }\r\n if (setupActive) {\r\n pauseTracking();\r\n engine.track(target, p);\r\n closeSetup();\r\n resetTracking();\r\n }\r\n\r\n const value = Reflect.get(target, p, receiver)\r\n if (p === '__proto__' || isIntrinsicSymbol(p)) return value\r\n\r\n if (!engine.isReadonly) track(target, p)\r\n if (engine.superficial || !isObject(value)) return value\r\n return engine.reactive(value)\r\n }\r\n}\r\n","import { ReactiveEngine } from \"../ReactiveEngine\";\nimport { ITERATE_KEY, getRaw, hasOwn, isNumericKey, isReadonly, removeArrayStack } from \"../common\";\nimport { trigger } from \"../reactivity-core\";\n\n\nexport function createSetter(engine: ReactiveEngine) {\n return function (target: any, p: any, newValue: any, receiver: any) {\n if (isReadonly(target)) {\n return false;\n }\n\n const isArray = Array.isArray(target);\n const oldValue = (target as any)[p];\n const oldLength = isArray ? target.length : 0;\n const numeric = isArray && isNumericKey(p);\n const hadKey = numeric ? Number(p) < oldLength : hasOwn(target, p);\n\n const res = Reflect.set(target, p, newValue, receiver);\n\n if (engine.onValueChanged) {\n try { engine.onValueChanged({ raw: target, proxy: receiver }, p); } catch { }\n }\n\n if (getRaw(target) !== getRaw(receiver)) {\n return res;\n }\n if (!isArray && hadKey && Object.is(newValue, oldValue)) {\n return res;\n }\n\n trigger(target, p);\n if (!isArray && !hadKey) {\n trigger(target, ITERATE_KEY);\n }\n if (numeric && !hadKey) {\n trigger(target, 'length');\n }\n if (isArray && p === 'length') {\n const newLength = Number(newValue);\n for (let i = newLength; i < oldLength; i++) {\n trigger(target, String(i));\n }\n }\n removeArrayStack();\n return res;\n }\n}\n","import { ReactiveEngine } from \"../ReactiveEngine\";\r\nimport { ITERATE_KEY, hasOwn, isIntrinsicSymbol, pauseTracking, resetTracking } from \"../common\";\r\nimport { track, trigger } from \"../reactivity-core\";\r\n\r\nexport function createOwn(engine: ReactiveEngine) {\r\n return function ownKeys(target: any) {\r\n const shapeKey = Array.isArray(target) ? 'length' : ITERATE_KEY;\r\n track(target, shapeKey);\r\n return Reflect.ownKeys(target);\r\n }\r\n}\r\n\r\nexport function createHas(engine: ReactiveEngine) {\r\n return function has(target: any, p: any) {\r\n const found = Reflect.has(target, p);\r\n if (isIntrinsicSymbol(p)) return found;\r\n track(target, p);\r\n return found;\r\n }\r\n}\r\n\r\nexport function createDelete(engine: ReactiveEngine) {\r\n return function deleteProperty(target: any, p: any) {\r\n pauseTracking()\r\n try {\r\n const isOwned = hasOwn(target, p);\r\n const result = Reflect.deleteProperty(target, p);\r\n if (isOwned) {\r\n if (Array.isArray(target)) {\r\n trigger(target, 'length');\r\n } else {\r\n trigger(target, p);\r\n trigger(target, ITERATE_KEY);\r\n }\r\n }\r\n return result\r\n } finally { \r\n resetTracking();\r\n }\r\n }\r\n}","import { ReactiveEngine } from \"../ReactiveEngine\";\r\nimport { getRaw, pauseTracking, resetTracking } from \"../common\";\r\n\r\ntype PatchKind = 'lookup' | 'order' | 'join' | 'structural';\r\n\r\nconst PATCHED_ARRAY_METHODS: ReadonlyArray<readonly [string, PatchKind]> = [\r\n ['includes', 'lookup'],\r\n ['indexOf', 'lookup'],\r\n ['lastIndexOf', 'lookup'],\r\n ['sort', 'order'],\r\n ['concat', 'join'],\r\n ['push', 'structural'],\r\n ['pop', 'structural'],\r\n ['shift', 'structural'],\r\n ['unshift', 'structural'],\r\n ['splice', 'structural'],\r\n ['reverse', 'structural'],\r\n];\r\n\r\nconst isLookupMiss = (outcome: unknown) => outcome === false || outcome === -1;\r\n\r\nexport class ArrayMethods {\r\n constructor(public engine: ReactiveEngine) { }\r\n get: Record<string, Function> = this.createArrayMethods();\r\n\r\n createArrayMethods(): Record<string, Function> {\r\n const table: Record<string, Function> = {};\r\n for (const [name, kind] of PATCHED_ARRAY_METHODS) {\r\n table[name] = this.patch(name, kind);\r\n }\r\n return table;\r\n }\r\n\r\n private patch(name: string, kind: PatchKind): Function {\r\n const owner = this;\r\n switch (kind) {\r\n case 'lookup':\r\n return function (this: unknown[], ...needles: any[]) {\r\n const source = getRaw(this) as any;\r\n owner.engine.track(source, 'length');\r\n const direct = source[name](...needles);\r\n if (!isLookupMiss(direct)) return direct;\r\n return source[name](...needles.map(needle => getRaw(needle)));\r\n };\r\n case 'order':\r\n return function (this: unknown[], ...args: any[]) {\r\n const source = getRaw(this) as any;\r\n const size = this.length;\r\n for (let index = 0; index < size; index++) {\r\n owner.engine.track(source, String(index));\r\n }\r\n const sorted = source[name].apply(this, args);\r\n owner.engine.track(source, name);\r\n return sorted;\r\n };\r\n case 'join':\r\n return function (this: unknown[], ...args: any[]) {\r\n return Array.prototype.concat.apply(this, args);\r\n };\r\n default:\r\n return function (this: unknown[], ...args: any[]) {\r\n pauseTracking();\r\n const source = getRaw(this) as any;\r\n try {\r\n return source[name].apply(this, args);\r\n } finally {\r\n resetTracking();\r\n }\r\n };\r\n }\r\n }\r\n\r\n}\r\n","import { ReactiveEngine } from \"../ReactiveEngine\";\nimport { ITERATE_KEY, getRaw, hasOwn, isObject } from \"../common\";\nimport { track, trigger } from \"../reactivity-core\";\nimport { NOT_META, readMeta } from \"./getter\";\n\ntype AnyCollection = Map<any, any> | Set<any>;\n\nconst KEYS_KEY = Symbol('');\n\nfunction changed(target: object, key: unknown, keysChanged: boolean) {\n trigger(target, key as any);\n trigger(target, ITERATE_KEY);\n if (keysChanged) trigger(target, KEYS_KEY);\n}\n\nfunction lookupKey(target: AnyCollection, key: unknown) {\n return target.has(key) ? key : getRaw(key);\n}\n\nfunction wrapIterator(source: Iterator<any>, convert: (item: any) => any): IterableIterator<any> {\n return {\n next() {\n const step = source.next();\n return step.done ? step : { value: convert(step.value), done: false };\n },\n [Symbol.iterator]() {\n return this;\n },\n };\n}\n\nfunction createCollectionMethods(engine: ReactiveEngine): Record<PropertyKey, Function> {\n const wrap = (value: unknown) => isObject(value) ? engine.reactive(value) : value;\n const wrapEntry = (target: AnyCollection) =>\n target instanceof Map\n ? ([key, value]: [unknown, unknown]) => [key, wrap(value)]\n : ([value]: [unknown, unknown]) => { const item = wrap(value); return [item, item]; };\n\n return {\n get(this: Map<any, any>, key: unknown) {\n const target = getRaw(this);\n const found = lookupKey(target, key);\n track(target, found as any);\n return wrap(target.get(found));\n },\n has(this: AnyCollection, key: unknown) {\n const target = getRaw(this);\n const found = lookupKey(target, key);\n track(target, found as any);\n return target.has(found);\n },\n set(this: Map<any, any>, key: unknown, value: unknown) {\n const target = getRaw(this);\n const stored = lookupKey(target, key);\n const raw = getRaw(value);\n const existed = target.has(stored);\n const previous = target.get(stored);\n target.set(stored, raw);\n if (!existed) changed(target, stored, true);\n else if (!Object.is(previous, raw)) changed(target, stored, false);\n return this;\n },\n add(this: Set<any>, value: unknown) {\n const target = getRaw(this);\n const stored = lookupKey(target, value);\n if (!target.has(stored)) {\n target.add(stored);\n changed(target, stored, true);\n }\n return this;\n },\n delete(this: AnyCollection, key: unknown) {\n const target = getRaw(this);\n const found = lookupKey(target, key);\n const removed = target.delete(found);\n if (removed) changed(target, found, true);\n return removed;\n },\n clear(this: AnyCollection) {\n const target = getRaw(this);\n if (target.size === 0) return;\n const keys = Array.from(target.keys());\n target.clear();\n for (const key of keys) trigger(target, key);\n trigger(target, ITERATE_KEY);\n trigger(target, KEYS_KEY);\n },\n forEach(this: AnyCollection, callback: (value: any, key: any, collection: any) => void, thisArg?: unknown) {\n const target = getRaw(this);\n track(target, ITERATE_KEY);\n const owner = this;\n const isMap = target instanceof Map;\n target.forEach((value: any, key: any) => {\n const item = wrap(value);\n callback.call(thisArg, item, isMap ? key : item, owner);\n });\n },\n keys(this: AnyCollection) {\n const target = getRaw(this);\n if (target instanceof Map) {\n track(target, KEYS_KEY);\n return target.keys();\n }\n track(target, ITERATE_KEY);\n return wrapIterator(target.keys(), wrap);\n },\n values(this: AnyCollection) {\n const target = getRaw(this);\n track(target, ITERATE_KEY);\n return wrapIterator(target.values(), wrap);\n },\n entries(this: AnyCollection) {\n const target = getRaw(this);\n track(target, ITERATE_KEY);\n return wrapIterator(target.entries(), wrapEntry(target));\n },\n [Symbol.iterator](this: AnyCollection) {\n const target = getRaw(this);\n track(target, ITERATE_KEY);\n return target instanceof Map\n ? wrapIterator(target.entries(), wrapEntry(target))\n : wrapIterator(target.values(), wrap);\n },\n };\n}\n\nexport function createCollectionHandler(engine: ReactiveEngine): ProxyHandler<AnyCollection> {\n const methods = createCollectionMethods(engine);\n return {\n get(target, key, receiver) {\n const meta = readMeta(engine, target, key, receiver);\n if (meta !== NOT_META) return meta;\n if (key === 'size') {\n track(target, ITERATE_KEY);\n return target.size;\n }\n if ((typeof key === 'string' || key === Symbol.iterator) && hasOwn(methods, key) && key in target) {\n return methods[key as any];\n }\n const value = Reflect.get(target, key, target);\n return typeof value === 'function' ? value.bind(target) : value;\n },\n };\n}\n","\r\nimport { TargetType, UnwrapValueRefs, getRaw, getTargetType, isObject, pauseTracking, resetTracking, enableTracking } from \"./common\";\r\nimport { createGetter } from \"./handlers/getter\";\r\nimport { createSetter } from \"./handlers/setter\";\r\nimport { createDelete, createHas, createOwn } from \"./handlers/orhers\";\r\nimport { ArrayMethods } from \"./handlers/ArrayMethods\";\r\nimport { createCollectionHandler } from \"./handlers/collections\";\r\nimport { LinkedList } from \"../common/LinkedList\";\r\nimport { track, trigger } from \"./reactivity-core\";\r\nexport const ReactiveEngineMapper = new WeakSet<ReactiveEngine>();\r\n\r\nconst AllreactiveMap: WeakMap<any, any> = new WeakMap();\r\nfunction armgetter() { return AllreactiveMap; }\r\n\r\n\r\nexport class ReactiveEngine {\r\n _gci: any;\r\n public startGc(_intervalMs: number = 10000) { /* no-op */ }\r\n public stopGc() { if (this._gci) { try { clearInterval(this._gci); } catch { } this._gci = undefined; } }\r\n constructor() {\r\n ReactiveEngineMapper.add(this);\r\n this.startGc();\r\n }\r\n \r\n DisposeMapper = new LinkedList();\r\n arrayTriggerCache = new Map<any, { method: string, key: any, value: any }>();\r\n ReactiveMap: () => WeakMap<any, any> = () => armgetter();\r\n activeCallback: any;\r\n isReadonly: boolean = false;\r\n superficial: boolean = false;\r\n arrayMethods: ArrayMethods = new ArrayMethods(this);\r\n arrayHandler = {\r\n get: createGetter(this),\r\n set: createSetter(this),\r\n has: createHas(this),\r\n deleteProperty: createDelete(this),\r\n ownKeys: createOwn(this)\r\n }\r\n deepHandler = {\r\n get: createGetter(this),\r\n set: createSetter(this),\r\n has: createHas(this),\r\n deleteProperty: createDelete(this),\r\n ownKeys: createOwn(this)\r\n } as ProxyHandler<any>\r\n collectionHandler = createCollectionHandler(this) as ProxyHandler<any>\r\n reactive<T>(model: T): UnwrapValueRefs<T> {\r\n\r\n var self = this;\r\n if (!isObject(model)) {\r\n model = { value: model } as any;\r\n }\r\n const targetType = getTargetType(model);\r\n if (targetType === TargetType.SYSTEM || TargetType.INVALID) {\r\n return model as any\r\n }\r\n\r\n let existingProxy = AllreactiveMap.get(model)\r\n if (existingProxy) {\r\n return existingProxy as any\r\n }\r\n existingProxy = AllreactiveMap.get(getRaw(model))\r\n if (existingProxy) {\r\n return existingProxy as any\r\n }\r\n // if (targetType === TargetType.INVALID) {\r\n if (targetType === TargetType.COLLECTION) {\r\n var proxy = new Proxy(model, this.collectionHandler);\r\n AllreactiveMap.set(model, proxy);\r\n return proxy;\r\n } else if (Array.isArray(model)) {\r\n var proxy = new Proxy(model, this.arrayHandler);\r\n // var original = Object.getPrototypeOf(proxy);\r\n // original[\"copy\"] = () => { return model; }\r\n // return \"copied\";\r\n AllreactiveMap.set(model, proxy);\r\n // try { this.startGc(); } catch { }\r\n return proxy;\r\n } else {\r\n var proxy = new Proxy(model, this.deepHandler);\r\n AllreactiveMap.set(model, proxy);\r\n // try { this.startGc(); } catch { }\r\n return proxy;\r\n }\r\n }\r\n\r\n clearModel(model: any): void {\r\n if (model != null && model != undefined) {\r\n Object.keys(model).forEach((key) => {\r\n if (typeof model[key] === 'object') {\r\n if (AllreactiveMap.has(model[key]) || AllreactiveMap.has(getRaw(model[key]))) {\r\n this.clearModel(model[key])\r\n }\r\n }\r\n AllreactiveMap.delete(getRaw(model[key]));\r\n AllreactiveMap.delete(model[key]);\r\n })\r\n AllreactiveMap.delete(getRaw(model));\r\n AllreactiveMap.delete(model);\r\n }\r\n }\r\n\r\n track(model: any, key: any) {\r\n track(model, key);\r\n }\r\n trigger(model: any, key: any, value: any) {\r\n trigger(model, key);\r\n }\r\n ArrayTrigger(target: any, key: any, ...args: any) {\r\n this.trigger(target, key, args);\r\n }\r\n onValueChanged?: (info: { raw: any, proxy: any }, key: any) => any;\r\n toRaw(item: any) {\r\n return JSON.parse(JSON.stringify(this.deepClone(item)));\r\n }\r\n deepClone(item: any) {\r\n var self = this;\r\n if (!item) { return item; }\r\n var types = [Number, String, Boolean],\r\n result;\r\n types.forEach(function (type) {\r\n if (item instanceof type) {\r\n result = type(item);\r\n }\r\n });\r\n\r\n if (typeof result == \"undefined\") {\r\n if (Object.prototype.toString.call(item) === \"[object Array]\") {\r\n result = [];\r\n item.forEach(function (child: any, index: any, array: any[]) {\r\n result[index] = self.deepClone(child);\r\n });\r\n } else if (typeof item == \"object\") {\r\n if (item.nodeType && typeof item.cloneNode == \"function\") {\r\n result = item.cloneNode(true);\r\n } else if (!item.prototype) {\r\n if (item instanceof Date) {\r\n result = new Date(item);\r\n } else {\r\n result = <any>{};\r\n for (var i in item) {\r\n result[i] = self.deepClone(item[i]);\r\n }\r\n }\r\n } else {\r\n if (false && item.constructor) {\r\n result = new item.constructor();\r\n } else {\r\n result = item;\r\n }\r\n }\r\n } else {\r\n result = item;\r\n }\r\n }\r\n return result;\r\n }\r\n pauseTracking() {\r\n pauseTracking();\r\n }\r\n enableTracking() {\r\n enableTracking();\r\n }\r\n resetTracking() {\r\n resetTracking();\r\n }\r\n dispose() {\r\n var cnt = true;\r\n this.stopGc();\r\n while (cnt == true) {\r\n if (this.DisposeMapper.size > 0) {\r\n const element = this.DisposeMapper.pop();\r\n // if (ApplicationService.current?.Options?.onReactiveEffectRun) {\r\n AllreactiveMap.delete(element);\r\n } else {\r\n cnt = false\r\n }\r\n }\r\n this.DisposeMapper.clear();\r\n ReactiveEngineMapper.delete(this);\r\n // if (ApplicationService.current?.Options?.onReactiveEffectRun) {\r\n }\r\n\r\n}","\r\nimport { ReactiveEngine } from \"./ReactiveEngine\";\r\nimport { UnwrapValueRefs } from \"./common\";\r\nimport { Signal, Computed, LazyComputed } from \"./Signal\";\r\nexport const engine = new ReactiveEngine();\r\n\r\n\r\n/* @DEV-ONLY */ const reactiveRegistry: Array<{ name: string; value: any; type: string }> = [];\r\nconst isDevRegistryEnabled = () => {\r\n try {\r\n const g = globalThis as any;\r\n if (!g.__MOTIF_DEV__) return false;\r\n if (g.__MOTIF_STORE_REGISTRY__ !== reactiveRegistry) g.__MOTIF_STORE_REGISTRY__ = reactiveRegistry;\r\n return true;\r\n } catch { return false; }\r\n};\r\n\r\nexport function reactiveConfig(config: {\r\n onValueChanged?: (info: { raw: any, proxy: any }, key: any) => any\r\n onItemAdded?: (model: any, key: any, value: any) => any\r\n onItemRemoved?: (model: any, key: any, value: any) => any\r\n}) {\r\n engine.onValueChanged = config.onValueChanged;\r\n}\r\n\r\n// export * from \"./IStoreBinder\";\r\n\r\n// export function reactiveListeners(model?: any) {\r\n// if (model) {\r\n// /* @DEV-ONLY */return debugGetDeps(model) ?? new Map();\r\n// return debugGetDepMap();\r\n\r\n\r\nexport function reactive<T>(model: T): UnwrapValueRefs<T> {\r\n const result = engine.reactive<T>(model);\r\n /* @DEV-ONLY */ try {\r\n /* @DEV-ONLY */ if (isDevRegistryEnabled()) {\r\n /* @DEV-ONLY */ const name = (model as any)?.constructor?.name || 'reactive';\r\n /* @DEV-ONLY */ reactiveRegistry.push({ name, value: result, type: 'reactive' });\r\n /* @DEV-ONLY */ if (reactiveRegistry.length > 200) reactiveRegistry.shift();\r\n /* @DEV-ONLY */}\r\n /* @DEV-ONLY */\r\n /* @DEV-ONLY */ } catch { }\r\n return result;\r\n}\r\n\r\nexport function useModel<T>(model: T): UnwrapValueRefs<T> {\r\n const result = engine.reactive<T>(model);\r\n\r\n\r\n /* @DEV-ONLY */ try {\r\n /* @DEV-ONLY */ if (isDevRegistryEnabled()) {\r\n /* @DEV-ONLY */ const name = (model as any)?.constructor?.name || 'useModel';\r\n /* @DEV-ONLY */ reactiveRegistry.push({ name, value: result, type: 'reactive' });\r\n /* @DEV-ONLY */ if (reactiveRegistry.length > 200) reactiveRegistry.shift();\r\n /* @DEV-ONLY */ }\r\n/* @DEV-ONLY */\r\n /* @DEV-ONLY */ } catch { }\r\n return result;\r\n}\r\n\r\n\r\n\r\nexport function clearModel(model: any) {\r\n return engine.clearModel(model);\r\n}\r\n\r\n \r\n\r\nexport function deepClone(item: any) {\r\n return engine.deepClone(item);\r\n}\r\n\r\nexport function createSignal<T>(initialValue: T): Signal<T> {\r\n const sig = new Signal(initialValue);\r\n /* @DEV-ONLY */ try {\r\n /* @DEV-ONLY */ if (isDevRegistryEnabled()) {\r\n /* @DEV-ONLY */ const name = `signal_${reactiveRegistry.length}`;\r\n /* @DEV-ONLY */ reactiveRegistry.push({ name, value: sig.value, type: 'signal' });\r\n /* @DEV-ONLY */ if (reactiveRegistry.length > 200) reactiveRegistry.shift();\r\n /* @DEV-ONLY */}\r\n /* @DEV-ONLY */\r\n /* @DEV-ONLY */ } catch { }\r\n return sig;\r\n}\r\n\r\nexport function createComputed<T>(getter: () => T): Computed<T> {\r\n const comp = new Computed(getter);\r\n /* @DEV-ONLY */ try {\r\n /* @DEV-ONLY */ if (isDevRegistryEnabled()) {\r\n /* @DEV-ONLY */ const name = `computed_${reactiveRegistry.length}`;\r\n /* @DEV-ONLY */ reactiveRegistry.push({ name, value: comp.value, type: 'computed' });\r\n /* @DEV-ONLY */ if (reactiveRegistry.length > 200) reactiveRegistry.shift();\r\n /* @DEV-ONLY */}\r\n /* @DEV-ONLY */\r\n /* @DEV-ONLY */ } catch { }\r\n return comp;\r\n}\r\n\r\nexport function createLazyComputed<T>(getter: () => T): LazyComputed<T> {\r\n const comp = new LazyComputed(getter);\r\n /* @DEV-ONLY */ try {\r\n /* @DEV-ONLY */ if (isDevRegistryEnabled()) {\r\n /* @DEV-ONLY */ const name = `lazyComputed_${reactiveRegistry.length}`;\r\n /* @DEV-ONLY */ reactiveRegistry.push({ name, value: undefined, type: 'computed' });\r\n /* @DEV-ONLY */ if (reactiveRegistry.length > 200) reactiveRegistry.shift();\r\n /* @DEV-ONLY */}\r\n /* @DEV-ONLY */\r\n /* @DEV-ONLY */} catch { }\r\n return comp;\r\n}\r\n\r\nexport { ReactiveEngine };\r\nexport { configureReactivityLeakMonitor, track, trigger, effect, createScheduledEffect, asyncTracking, untracked } from \"./reactivity-core\";\r\nexport type { EffectFn, ScheduledEffect, AsyncTrackingToken } from \"./reactivity-core\";\r\nexport * from \"./Signal\";\r\nimport { untracked } from \"./reactivity-core\";\r\n","\r\nimport { Component, findAppendableComponent } from '../';\r\nimport { ComponentBase, notifyDeactivated } from '../';\r\nimport { effect, untracked } from '../store';\r\nimport { reportError, reportWarning } from '../common/diagnostics';\r\n\r\nexport interface VirtualizationDataRequest {\r\n page: number;\r\n pageSize: number;\r\n scrollTop: number;\r\n}\r\n\r\nexport interface VirtualizationDataResponse<T> {\r\n items: T[];\r\n totalCount: number;\r\n hasMore: boolean;\r\n}\r\n\r\nexport interface VirtualizationState<T> {\r\n isLoading: boolean;\r\n isInitialized: boolean;\r\n currentPage: number;\r\n totalCount: number;\r\n hasMore: boolean;\r\n error?: Error;\r\n data: T[];\r\n}\r\n\r\nexport interface VirtualizationProps<T> {\r\n dataRequest: (request: VirtualizationDataRequest) => Promise<VirtualizationDataResponse<T>>;\r\n itemTemplate: (item: T, index: number) => any;\r\n itemHeight: number | ((item: T, index: number) => number);\r\n pageSize?: number;\r\n renderMode?: 'item' | 'page';\r\n mainTemplate?: (content: Component, state: VirtualizationState<T>) => any;\r\n loadingTemplate?: (state: VirtualizationState<T>) => any;\r\n emptyTemplate?: () => any;\r\n errorTemplate?: (error: Error) => any;\r\n overscan?: number;\r\n autoLoad?: boolean;\r\n autoLoadThreshold?: number;\r\n overscanPages?: number;\r\n pageBuffer?: number;\r\n className?: string;\r\n style?: Partial<CSSStyleDeclaration>;\r\n filter?: (item: T[]) => T[];\r\n cacheSize?: number;\r\n \r\n autoRefresh?: boolean; \r\n watch?: () => unknown;\r\n}\r\n\r\nexport class Virtualization<T = any> extends Component<HTMLDivElement, VirtualizationProps<T>> {\r\n private readonly _state: VirtualizationState<T>;\r\n\r\n private _virtualContent!: Component<Comment>;\r\n private _topSpacer!: Component<HTMLDivElement>;\r\n private _bottomSpacer!: Component<HTMLDivElement>;\r\n private _cache = new Map<any, ComponentBase>();\r\n private _view: T[] = [];\r\n private _occurrence: number[] = [];\r\n private _occurrenceKeys = new WeakMap<object, object[]>();\r\n\r\n private _isLoadingMore = false;\r\n private _emptyRendered: boolean = false;\r\n private _renderPending = false;\r\n\r\n constructor(props: VirtualizationProps<T>) {\r\n super('div', props as any);\r\n\r\n if (props.className) this.class.add(props.className);\r\n if (props.style) Object.assign(this.element.style, props.style);\r\n\r\n this._state = this.useModel({\r\n isLoading: false,\r\n isInitialized: false,\r\n currentPage: 0,\r\n totalCount: 0,\r\n hasMore: true,\r\n error: undefined,\r\n data: []\r\n });\r\n\r\n this._loadMore = this._loadMore.bind(this);\r\n this._renderLoadingState = this._renderLoadingState.bind(this);\r\n this._renderErrorState = this._renderErrorState.bind(this);\r\n this._renderEmptyState = this._renderEmptyState.bind(this);\r\n this._loadInitial = this._loadInitial.bind(this);\r\n this.renderViewport = this.renderViewport.bind(this);\r\n this._makeView();\r\n }\r\n\r\n contentWrapper = new Component();\r\n wrapper!: Component;\r\n private _makeView() {\r\n\r\n this._topSpacer = new Component<HTMLDivElement>('div');\r\n this._topSpacer.element.style.cssText = 'height: 0px;';\r\n this._topSpacer.class.add('motif-virtualization-top-spacer');\r\n this._bottomSpacer = new Component<HTMLDivElement>('div');\r\n this._bottomSpacer.element.style.cssText = 'height: 0px;';\r\n this._bottomSpacer.class.add('motif-virtualization-bottom-spacer');\r\n\r\n this._virtualContent = new Component<Comment>(document.createComment('')); \r\n\r\n if (this.props.mainTemplate) {\r\n this.contentWrapper.controls.add(this._topSpacer, this._virtualContent, this._bottomSpacer); \r\n this.contentWrapper.onBuilding = ((s) => {\r\n var el = findAppendableComponent(s.parent!);\r\n if (el) {\r\n this.wrapper = el!;\r\n this._loadInitial();\r\n el.style({ overflowY: 'auto', position: 'relative' });\r\n el.motif.on('scroll', this._handleScroll);\r\n }\r\n });\r\n\r\n this.controls.add(this.props.mainTemplate(this.contentWrapper, this._state));\r\n } else {\r\n this.wrapper = this;\r\n this.element.style.cssText = 'overflow-y: auto; height: 100%; position: relative;';\r\n this.controls.add(this._topSpacer, this._virtualContent, this._bottomSpacer);\r\n this.motif.on('scroll', this._handleScroll); \r\n }\r\n }\r\n\r\n private _initialLoadStarted = false;\r\n onBuilding() {\r\n if (this.props.mainTemplate || this._initialLoadStarted) return;\r\n this._initialLoadStarted = true;\r\n this._loadInitial();\r\n }\r\n\r\n onMounted() {\r\n this._observeResize();\r\n if (this._renderPending) this.renderViewport();\r\n }\r\n\r\n onDisposing() {\r\n this._stopResizeObserver();\r\n this._stopDataWatch();\r\n this._clearContent();\r\n }\r\n\r\n private _offsets: number[] | null = null;\r\n private _resizeObserver?: ResizeObserver;\r\n private _observed?: Element;\r\n private _observedHeight = -1;\r\n\r\n private _fixedHeight(): number | null {\r\n const h = this.props.itemHeight;\r\n return typeof h === 'function' ? null : h;\r\n }\r\n\r\n private _computeOffsets(): void {\r\n const fn = this.props.itemHeight;\r\n if (typeof fn !== 'function') { this._offsets = null; return; }\r\n const view = this._view;\r\n const offsets = new Array<number>(view.length + 1);\r\n offsets[0] = 0;\r\n for (let i = 0; i < view.length; i++) {\r\n let h = 0;\r\n try { h = Number(fn(view[i], i)); } catch { h = 0; }\r\n offsets[i + 1] = offsets[i] + (h > 0 && Number.isFinite(h) ? h : 0);\r\n }\r\n this._offsets = offsets;\r\n }\r\n\r\n private _layoutOffsets(): number[] {\r\n if (!this._offsets || this._offsets.length !== this._view.length + 1) this._computeOffsets();\r\n return this._offsets!;\r\n }\r\n\r\n private _offsetOf(index: number): number {\r\n const h = this._fixedHeight();\r\n if (h !== null) return index * h;\r\n const offsets = this._layoutOffsets();\r\n return offsets[Math.min(Math.max(0, index), offsets.length - 1)];\r\n }\r\n\r\n private _indexAt(y: number, offsets: number[]): number {\r\n const total = offsets.length - 1;\r\n if (total <= 0) return 0;\r\n let lo = 0, hi = total - 1;\r\n while (lo < hi) {\r\n const mid = (lo + hi + 1) >> 1;\r\n if (offsets[mid] <= y) lo = mid; else hi = mid - 1;\r\n }\r\n return lo;\r\n }\r\n\r\n private _observeResize(): void {\r\n const el = this.wrapper?.element as unknown as HTMLElement | undefined;\r\n if (!el || this._observed === el || this.isDisposed) return;\r\n const RO = (globalThis as any).ResizeObserver;\r\n if (typeof RO !== 'function') return;\r\n this._stopResizeObserver();\r\n this._observedHeight = el.clientHeight;\r\n const observer: ResizeObserver = new RO(() => {\r\n if (this.isDisposed) return;\r\n const h = el.clientHeight;\r\n if (h === this._observedHeight) return;\r\n this._observedHeight = h;\r\n this.renderViewport();\r\n });\r\n observer.observe(el);\r\n this._resizeObserver = observer;\r\n this._observed = el;\r\n }\r\n\r\n private _stopResizeObserver(): void {\r\n try { this._resizeObserver?.disconnect(); } catch { }\r\n this._resizeObserver = undefined;\r\n this._observed = undefined;\r\n }\r\n\r\n \r\n private _loadSeq = 0;\r\n private _dataWatchStop?: () => void;\r\n private _reloadScheduled = false;\r\n private _reloadTimes: number[] = [];\r\n\r\n private _stopDataWatch(): void {\r\n this._dataWatchStop?.();\r\n this._dataWatchStop = undefined;\r\n }\r\n\r\n /**\r\n * dataRequest'i çağırır. `watch` açıksa çağrının senkron kısmında okunan reaktif veriyi izler;\r\n * değişince yeniden yükleme planlar. Aksi hâlde çağrı hiçbir dış effect'e bağımlılık sızdırmaz.\r\n */\r\n private _request(request: VirtualizationDataRequest, watch: boolean): Promise<VirtualizationDataResponse<T>> {\r\n const call = (): Promise<VirtualizationDataResponse<T>> => {\r\n try { return Promise.resolve(this.props.dataRequest(request)); }\r\n catch (error) { return Promise.reject(error); }\r\n };\r\n if (!watch || this.props.autoRefresh === false) return untracked(call);\r\n\r\n this._stopDataWatch();\r\n let result!: Promise<VirtualizationDataResponse<T>>;\r\n let first = true;\r\n this._dataWatchStop = effect(() => {\r\n if (first) {\r\n first = false;\r\n try { this.props.watch?.(); } catch (error) { reportError('MJX205', error); }\r\n result = call();\r\n return;\r\n }\r\n this._scheduleReload();\r\n });\r\n return result;\r\n }\r\n\r\n private _scheduleReload(): void {\r\n if (this._reloadScheduled || this.isDisposed) return;\r\n this._reloadScheduled = true;\r\n queueMicrotask(() => {\r\n this._reloadScheduled = false;\r\n if (this.isDisposed) return;\r\n // Sonsuz döngü koruması, 1 sn'de 30'u aşınca dur.\r\n const now = Date.now();\r\n this._reloadTimes = this._reloadTimes.filter(t => now - t < 1000);\r\n this._reloadTimes.push(now);\r\n if (this._reloadTimes.length > 30) {\r\n this._stopDataWatch();\r\n reportWarning('MJX206', []);\r\n return;\r\n }\r\n if (this._state.isInitialized) void this._reloadLoaded();\r\n else void this._loadInitial();\r\n });\r\n }\r\n\r\n /** Yüklü aralığı (0..currentPage) tek istekte yeniden alır; içerik yanıt gelene kadar kalır. */\r\n private async _reloadLoaded(): Promise<void> {\r\n const seq = ++this._loadSeq;\r\n const pageSize = this.props.pageSize || 50;\r\n const pages = this._state.currentPage + 1;\r\n try {\r\n const response = await this._request({\r\n page: 0,\r\n pageSize: pageSize * pages,\r\n scrollTop: this.wrapper?.element?.scrollTop ?? 0\r\n }, true);\r\n if (this.isDisposed || seq !== this._loadSeq) return;\r\n const el = this.wrapper?.element as HTMLElement | undefined;\r\n const top = el?.scrollTop ?? 0;\r\n this._state.currentPage = pages - 1;\r\n this._state.totalCount = response.totalCount;\r\n this._state.hasMore = response.hasMore;\r\n this._state.error = undefined;\r\n this._state.data = response.items;\r\n this._rebuildView();\r\n // Satırlar sökülürken içerik kısalmasın: kısalırsa tarayıcı kaydırmayı kırpar.\r\n // Boşluğu geçici olarak yeni listenin tam boyuna sabitle; renderViewport düzeltir.\r\n this._topSpacer.style({ height: '0px' });\r\n this._bottomSpacer.style({ height: this._offsetOf(this._view.length) + 'px' });\r\n this._clearContent();\r\n if (el && el.scrollTop !== top) el.scrollTop = top;\r\n this.renderViewport();\r\n } catch (error) {\r\n if (this.isDisposed || seq !== this._loadSeq) return;\r\n this._state.error = error as Error;\r\n this._renderErrorState(error as Error);\r\n }\r\n }\r\n\r\n private _handleScroll = (_sender: Component, _event: Event) => {\r\n this.renderViewport();\r\n if (this.props.autoLoad === false) return;\r\n if (!this._state.hasMore || this._isLoadingMore || !this._state.isInitialized) return;\r\n const el = this.wrapper.element as HTMLElement;\r\n const fixed = this._fixedHeight();\r\n const loadedBottom = fixed !== null ? this._state.data.length * fixed : this._offsetOf(this._view.length);\r\n const distanceToLoaded = loadedBottom - (el.scrollTop + el.clientHeight);\r\n if (distanceToLoaded < (this.props.autoLoadThreshold ?? 100)) void this._loadMore();\r\n }\r\n\r\n private async _loadInitial(): Promise<void> {\r\n const seq = ++this._loadSeq;\r\n this._state.isLoading = true;\r\n this._renderLoadingState();\r\n\r\n try {\r\n const pageSize = this.props.pageSize || 50;\r\n\r\n const response = await this._request({\r\n page: 0,\r\n pageSize,\r\n scrollTop: 0\r\n }, true);\r\n if (this.isDisposed || seq !== this._loadSeq) return;\r\n this._state.currentPage = 0;\r\n this._state.totalCount = response.totalCount;\r\n this._state.hasMore = response.hasMore;\r\n this._state.isInitialized = true;\r\n this._state.isLoading = false;\r\n this._state.error = undefined;\r\n this._state.data = response.items;\r\n this._clearContent();\r\n this._rebuildView();\r\n this.renderViewport();\r\n\r\n } catch (error) {\r\n if (this.isDisposed || seq !== this._loadSeq) return;\r\n this._state.isLoading = false;\r\n this._state.error = error as Error;\r\n this._renderErrorState(error as Error);\r\n }\r\n }\r\n\r\n private async _loadMore(): Promise<void> {\r\n if (this._isLoadingMore || !this._state.hasMore || !this._state.isInitialized) return;\r\n const seq = this._loadSeq;\r\n try {\r\n this._isLoadingMore = true;\r\n const nextPage = this._state.currentPage + 1;\r\n\r\n const pageSize = this.props.pageSize || 50;\r\n const response = await this._request({\r\n page: nextPage,\r\n pageSize,\r\n scrollTop: this.wrapper?.element?.scrollTop ?? 0\r\n }, false);\r\n if (this.isDisposed || seq !== this._loadSeq) return;\r\n this._state.totalCount = response.totalCount;\r\n this._state.currentPage = nextPage;\r\n this._state.hasMore = response.hasMore;\r\n this._state.error = undefined;\r\n this._state.data.push(...response.items);\r\n this._rebuildView();\r\n this.renderViewport();\r\n\r\n } catch (error) {\r\n if (this.isDisposed || seq !== this._loadSeq) return;\r\n this._state.error = error as Error;\r\n reportError('MJX207', error);\r\n } finally {\r\n this._isLoadingMore = false;\r\n }\r\n\r\n }\r\n\r\n\r\n private _rebuildView(): void {\r\n this._view = this.props.filter ? this.props.filter(this._state.data) : this._state.data;\r\n const seen = new Map<object, number>();\r\n this._occurrence = this._view.map(item => {\r\n if (typeof item !== 'object' || item === null) return 0;\r\n const n = seen.get(item) ?? 0;\r\n seen.set(item, n + 1);\r\n return n;\r\n });\r\n if (typeof this.props.itemHeight === 'function') this._computeOffsets();\r\n else this._offsets = null;\r\n }\r\n\r\n private _clearContent(): void {\r\n if (!this._virtualContent) return;\r\n const controls = this._virtualContent.controls;\r\n\r\n for (const c of this._cache.values()) {\r\n controls.silentUnlink(c);\r\n if (!c.isDisposed) void c.dispose();\r\n }\r\n this._cache.clear();\r\n controls.clear();\r\n this._emptyRendered = false;\r\n }\r\n\r\n private renderViewport(): void {\r\n if (this.isDisposed || !this.wrapper || !this._state.isInitialized) return;\r\n const el = this.wrapper.element as HTMLElement;\r\n this._observeResize();\r\n const view = this._view;\r\n const total = view.length;\r\n\r\n if (total === 0) {\r\n if (!this._emptyRendered) {\r\n this._clearContent();\r\n this._renderEmptyState();\r\n }\r\n this._topSpacer.style({ height: '0px' });\r\n this._bottomSpacer.style({ height: '0px' });\r\n return;\r\n }\r\n if (this._emptyRendered) this._clearContent();\r\n\r\n const h = this._fixedHeight();\r\n let overscan: number, first: number, last: number, topPx: number, bottomPx: number;\r\n if (h !== null) {\r\n const visible = Math.floor(el.clientHeight / h);\r\n if (visible <= 0) {\r\n this._renderPending = !(el as any).isConnected;\r\n return;\r\n }\r\n this._renderPending = false;\r\n\r\n overscan = Math.max(0, this.props.overscan ?? visible);\r\n const anchor = Math.min(Math.max(0, Math.floor(el.scrollTop / h)), total - 1);\r\n first = Math.max(0, anchor - overscan);\r\n last = Math.min(total, anchor + visible + overscan);\r\n topPx = first * h;\r\n bottomPx = Math.max(0, total - last) * h;\r\n } else {\r\n if (el.clientHeight <= 0) {\r\n this._renderPending = !(el as any).isConnected;\r\n return;\r\n }\r\n this._renderPending = false;\r\n\r\n const offsets = this._layoutOffsets();\r\n const top = Math.max(0, el.scrollTop);\r\n const bottom = top + el.clientHeight;\r\n const anchor = this._indexAt(top, offsets);\r\n let end = anchor;\r\n while (end < total && offsets[end] < bottom) end++;\r\n const visible = Math.max(1, end - anchor);\r\n overscan = Math.max(0, this.props.overscan ?? visible);\r\n first = Math.max(0, anchor - overscan);\r\n last = Math.min(total, Math.max(end, anchor + 1) + overscan);\r\n topPx = offsets[first];\r\n bottomPx = Math.max(0, offsets[total] - offsets[last]);\r\n }\r\n\r\n const rows: ComponentBase[] = new Array(last - first);\r\n const keep = new Set<ComponentBase>();\r\n for (let i = first; i < last; i++) {\r\n const c = this._rowFor(view[i], i);\r\n rows[i - first] = c;\r\n keep.add(c);\r\n }\r\n\r\n const inDom = this._virtualContent.controls.items;\r\n for (const c of inDom.slice()) {\r\n if (!keep.has(c)) this._detachRow(c);\r\n }\r\n\r\n for (let pos = 0; pos < rows.length; pos++) {\r\n const c = rows[pos];\r\n if (inDom[pos] === c) continue;\r\n if (c.parent === this._virtualContent) this._detachRow(c);\r\n this._virtualContent.controls.insert(pos, c);\r\n }\r\n this._topSpacer.style({ height: topPx + 'px' });\r\n this._bottomSpacer.style({ height: bottomPx + 'px' });\r\n\r\n this._evictCache(Math.max(200, (last - first) * 3));\r\n\r\n if (this.props.autoLoad !== false && this._state.hasMore && !this._isLoadingMore && total < last + overscan) {\r\n void this._loadMore();\r\n }\r\n }\r\n\r\n private _occurrenceKey(item: object, occurrence: number): object {\r\n let keys = this._occurrenceKeys.get(item);\r\n if (!keys) {\r\n keys = [];\r\n this._occurrenceKeys.set(item, keys);\r\n }\r\n return keys[occurrence] ??= {};\r\n }\r\n\r\n private _rowFor(item: T, index: number): ComponentBase {\r\n const occurrence = this._occurrence[index] ?? 0;\r\n const key = (typeof item === 'object' && item !== null)\r\n ? (occurrence === 0 ? item : this._occurrenceKey(item, occurrence))\r\n : index;\r\n let component = this._cache.get(key);\r\n if (component && component.isDisposed) {\r\n this._cache.delete(key);\r\n component = undefined;\r\n }\r\n if (component) {\r\n this._cache.delete(key);\r\n this._cache.set(key, component);\r\n return component;\r\n }\r\n const rendered = this.props.itemTemplate(item, index);\r\n component = rendered instanceof ComponentBase ? rendered : new Component(rendered);\r\n (component as any).__listItemRef = item;\r\n this._cache.set(key, component);\r\n return component;\r\n }\r\n\r\n private _detachRow(c: ComponentBase): void {\r\n const controls = this._virtualContent.controls;\r\n if (c.isDisposed) { controls.silentUnlink(c); return; }\r\n const node = c.element as unknown as Node;\r\n if (node.nodeType === Node.COMMENT_NODE) {\r\n controls.silentUnlink(c);\r\n const close = (c.motif.options as any).closeFragment as Node | undefined;\r\n const frag: DocumentFragment = (c.motif.options as any).cache ?? ((c.motif.options as any).cache = document.createDocumentFragment());\r\n let cur: Node | null = node;\r\n while (cur) {\r\n const next: Node | null = cur.nextSibling;\r\n frag.appendChild(cur);\r\n if (cur === close) break;\r\n cur = next;\r\n }\r\n notifyDeactivated(c);\r\n } else {\r\n controls.silentDetach(c);\r\n }\r\n }\r\n\r\n private _evictCache(limit: number): void {\r\n const max = this.props.cacheSize ?? limit;\r\n if (this._cache.size <= max) return;\r\n for (const [key, c] of this._cache) {\r\n if (this._cache.size <= max) break;\r\n if (c.parent === this._virtualContent) continue;\r\n this._cache.delete(key);\r\n if (!c.isDisposed) void c.dispose();\r\n }\r\n }\r\n\r\n private _renderLoadingState(): void {\r\n if (!this._virtualContent || !this.props.loadingTemplate) return;\r\n this._clearContent();\r\n const loadingElement = this.props.loadingTemplate(this._state);\r\n this._virtualContent.controls.add(loadingElement);\r\n }\r\n\r\n private _renderEmptyState(): void {\r\n if (!this._virtualContent || !this.props.emptyTemplate) return;\r\n this._clearContent();\r\n const emptyElement = this.props.emptyTemplate();\r\n this._virtualContent.controls.add(emptyElement);\r\n this._emptyRendered = true;\r\n }\r\n\r\n private _renderErrorState(error: Error): void {\r\n if (!this._virtualContent) {\r\n reportError('MJX207', error);\r\n return;\r\n }\r\n this._clearContent();\r\n if (this.props.errorTemplate) {\r\n const errorElement = this.props.errorTemplate(error);\r\n this._virtualContent.controls.add(errorElement);\r\n } else {\r\n reportError('MJX207', error);\r\n }\r\n }\r\n\r\n public refresh(): Promise<void> {\r\n this._state.data = [];\r\n this._state.currentPage = 0;\r\n this._state.isInitialized = false;\r\n this._state.hasMore = true;\r\n this._rebuildView();\r\n return this._loadInitial();\r\n }\r\n\r\n public setData(data: T[]) { \r\n this._loadSeq++;\r\n this._stopDataWatch();\r\n this._state.data = data;\r\n this._state.currentPage = 0;\r\n this._state.totalCount = data.length;\r\n this._state.hasMore = false;\r\n this._state.isInitialized = true;\r\n this._state.isLoading = false;\r\n this._state.error = undefined;\r\n this._clearContent();\r\n this._rebuildView();\r\n this.renderViewport();\r\n }\r\n\r\n public scrollToIndex(index: number): void {\r\n if (!this.wrapper) return;\r\n const total = this._view.length;\r\n const i = Math.min(Math.max(0, index), Math.max(0, total - 1));\r\n this.wrapper.element.scrollTop = this._offsetOf(i);\r\n this.renderViewport();\r\n }\r\n\r\n public getState(): Readonly<VirtualizationState<T>> {\r\n return { ...this._state };\r\n }\r\n\r\n}\r\n","import type { ServiceLifetime } from \"./ServiceCollection\";\r\n\r\nexport const autoRegistry = new Map<any, { lifetime?: ServiceLifetime, deps?: any[] }>();\r\n","import { ServiceProvider } from \"./ServiceProvider\";\nimport { autoRegistry } from \"./autoRegistry\";\nimport { motifError, reportWarning } from \"../common/diagnostics\";\n\nexport type ServiceLifetime = 'transient' | 'singleton' | 'scoped';\n\nexport type ServiceImplementation<V> = V extends abstract new (...args: any[]) => any\n ? V\n : V extends (...args: any[]) => any\n ? 'Use { useValue: fn } or { useFactory: fn } to register a function'\n : V;\n\nfunction isConstructor(fn: Function): boolean {\n try {\n Reflect.construct(String, [], fn);\n return true;\n } catch {\n return false;\n }\n}\n\nexport interface ServiceDescriptor<T = any> {\n token: any;\n lifetime: ServiceLifetime;\n useClass?: new (...args: any[]) => T;\n useFactory?: (...args: any[]) => T | Promise<T>;\n useValue?: T;\n deps?: any[];\n}\n\nexport class ServiceCollection {\n private descriptors: Map<any, ServiceDescriptor> = new Map();\n\n public reset(): void {\n this.descriptors.clear();\n }\n public addTransient<V>(token: any, impl: ServiceImplementation<V>): void {\n this._add(token, impl, 'transient');\n }\n public addSingleton<V>(token: any, impl: ServiceImplementation<V>): void {\n this._add(token, impl, 'singleton');\n }\n public addScoped<V>(token: any, impl: ServiceImplementation<V>): void {\n this._add(token, impl, 'scoped');\n }\n\n private _add(token: any, impl: any, lifetime: ServiceLifetime) {\n const desc: ServiceDescriptor = { token, lifetime };\n if (impl && typeof impl === 'object' && (impl.useClass || impl.useFactory || Object.prototype.hasOwnProperty.call(impl, 'useValue') || Array.isArray(impl.deps))) {\n desc.useClass = impl.useClass;\n desc.useFactory = impl.useFactory;\n desc.useValue = impl.useValue;\n desc.deps = Array.isArray(impl.deps) ? impl.deps : undefined;\n try {\n const sources = [\n desc.useClass ? 'useClass' : null,\n desc.useFactory ? 'useFactory' : null,\n (desc.useValue !== undefined) ? 'useValue' : null\n ].filter(Boolean);\n if ((sources as any).length > 1) {\n reportWarning('MJX410', [this._tokenName(token), sources.join(', ')], { token });\n }\n if (impl.deps && !Array.isArray(impl.deps)) {\n reportWarning('MJX411', [this._tokenName(token)], { token });\n }\n } catch { /* no-op */ }\n if (desc.useValue && typeof (desc.useValue as any).then === 'function') {\n const p = desc.useValue as any;\n desc.useFactory = async () => await p;\n desc.useValue = undefined;\n }\n } else if (typeof impl === 'function') {\n if (!isConstructor(impl)) throw motifError('MJX413', this._tokenName(token));\n desc.useClass = impl as any;\n } else {\n if (impl && typeof (impl as any).then === 'function') {\n const p = impl as any;\n desc.useFactory = async () => await p;\n } else {\n desc.useValue = impl;\n }\n }\n this.descriptors.set(token, desc);\n }\n\n private _tokenName(token: any): string {\n if (typeof token === 'string') return token;\n if (typeof token === 'symbol') return token.toString();\n if (typeof token === 'function') return token.name || '[AnonymousClass]';\n return String(token);\n }\n\n public getDescriptor(token: any): ServiceDescriptor | null {\n const existing = this.descriptors.get(token);\n if (existing) return existing;\n const meta = autoRegistry.get(token);\n if (meta) {\n this._add(token, {\n useClass: token,\n deps: meta.deps,\n useValue: undefined,\n useFactory: undefined\n }, meta.lifetime || 'transient');\n return this.descriptors.get(token) || null;\n }\n return null;\n }\n\n /** `@Injectable` ile işaretlenmiş ama henüz kaydedilmemiş bir token var mı? */\n public canAutoRegister(token: any): boolean {\n return !this.descriptors.has(token) && autoRegistry.has(token);\n }\n\n public getService(token: any): ServiceDescriptor | null {\n return this.getDescriptor(token);\n }\n\n public buildServiceProvider(): ServiceProvider {\n return new ServiceProvider(this);\n }\n\n\n public has(token: any): boolean {\n return this.descriptors.has(token);\n }\n\n\n public remove(token: any): boolean {\n return this.descriptors.delete(token);\n }\n\n\n public replace<V>(token: any, impl: ServiceImplementation<V>, lifetime?: ServiceLifetime): void {\n const existing = this.descriptors.get(token);\n const lt: ServiceLifetime = lifetime ?? (existing?.lifetime ?? 'transient');\n this._add(token, impl, lt);\n }\n\n\n public tryAddTransient<V>(token: any, impl: ServiceImplementation<V>): boolean {\n if (this.descriptors.has(token)) return false;\n this._add(token, impl, 'transient');\n return true;\n }\n public tryAddSingleton<V>(token: any, impl: ServiceImplementation<V>): boolean {\n if (this.descriptors.has(token)) return false;\n this._add(token, impl, 'singleton');\n return true;\n }\n public tryAddScoped<V>(token: any, impl: ServiceImplementation<V>): boolean {\n if (this.descriptors.has(token)) return false;\n this._add(token, impl, 'scoped');\n return true;\n }\n\n public autoRegisterInjectables() {\n for (const [target, meta] of autoRegistry.entries()) {\n if (this.descriptors.has(target)) continue;\n this._add(target, {\n useClass: target,\n deps: meta.deps,\n useValue: undefined,\n useFactory: undefined\n }, meta.lifetime || \"transient\");\n }\n }\n}","import type { RouteItem } from \"../routing/RouteItem\";\r\nimport { reportWarning } from \"../common/diagnostics\";\r\n\r\ntype RouteNode = RouteItem & { childs?: RouteItem[] };\r\n\r\nfunction joinPaths(parent: string, child: string): string {\r\n const p = (parent || '').trim();\r\n const c = (child || '').trim();\r\n const base = p && p !== '/' && p.endsWith('/') ? p.slice(0, -1) : p;\r\n if (c === '/') {\r\n return base || '/';\r\n }\r\n const seg = c ? (c.startsWith('/') ? c : '/' + c) : '';\r\n if (!base || base === '/') {\r\n return seg || '/';\r\n }\r\n return base + seg;\r\n}\r\n\r\nexport function lintRoutes(routes: RouteNode[]): void {\r\n const seenFull: Map<string, number> = new Map();\r\n const seenAlias: Map<string, number> = new Map();\r\n\r\n function visit(node: RouteNode, parentPath: string, depth: number) {\r\n const rawPath = node.path ?? '';\r\n const path = String(rawPath);\r\n const full = parentPath === '' ? path : joinPaths(parentPath, path);\r\n const isDefaultSlash = depth > 0 && path.trim() === '/';\r\n const isEmptyPath = path.trim() === '';\r\n\r\n if (isEmptyPath) {\r\n reportWarning('MJX310', [parentPath || '/'], { parentPath, path });\r\n }\r\n\r\n if (depth > 0 && path.length > 0 && path !== '/' && !path.startsWith('/') && !path.startsWith('*')) {\r\n reportWarning('MJX311', [path, parentPath || '/'], { parentPath, path });\r\n }\r\n\r\n if (parentPath && full === parentPath) {\r\n if (!isDefaultSlash && !isEmptyPath) {\r\n reportWarning('MJX312', [full], { parentPath, childPath: path });\r\n }\r\n }\r\n\r\n const cnt = (seenFull.get(full) || 0) + 1;\r\n seenFull.set(full, cnt);\r\n if (cnt > 1) {\r\n if (!isDefaultSlash && !isEmptyPath) {\r\n reportWarning('MJX313', [full], { full });\r\n }\r\n }\r\n\r\n const aliases = node.alias == null ? [] : (Array.isArray(node.alias) ? node.alias : [node.alias]);\r\n for (const rawAlias of aliases) {\r\n const alias = String(rawAlias ?? '');\r\n if (depth > 0 && alias.length > 0 && alias !== '/' && !alias.startsWith('/') && !alias.startsWith('*')) {\r\n reportWarning('MJX314', [alias, parentPath || '/'], { parentPath, alias });\r\n }\r\n const aliasFull = parentPath === '' ? alias : joinPaths(parentPath, alias);\r\n if (aliasFull === full) {\r\n reportWarning('MJX315', [aliasFull], { full, alias });\r\n }\r\n const aliasCount = (seenAlias.get(aliasFull) || 0) + 1;\r\n seenAlias.set(aliasFull, aliasCount);\r\n if (aliasCount > 1) {\r\n reportWarning('MJX316', [aliasFull], { aliasFull });\r\n }\r\n }\r\n\r\n\r\n const children = (node as any).childs as RouteNode[] | undefined;\r\n if (Array.isArray(children)) {\r\n for (const ch of children) visit(ch, full, depth + 1);\r\n }\r\n }\r\n\r\n for (const r of routes) visit(r as RouteNode, '', 0);\r\n}\r","export class RouterViewRegistry {\r\n private static outlets: Map<string, Map<string, any>> = new Map();\r\n static register(name: string, scopeId: string, instance: any) {\r\n if (!this.outlets.has(name)) this.outlets.set(name, new Map());\r\n this.outlets.get(name)!.set(scopeId, instance);\r\n }\r\n static unregister(name: string, scopeId: string) {\r\n this.outlets.get(name)?.delete(scopeId);\r\n if (this.outlets.get(name)?.size === 0) this.outlets.delete(name);\r\n }\r\n static find(name: string, scopeId?: string): any | null {\r\n if (scopeId && this.outlets.get(name)?.has(scopeId)) {\r\n return this.outlets.get(name)!.get(scopeId);\r\n }\r\n const group = this.outlets.get(name);\r\n if (group && group.size > 0) return Array.from(group.values())[0];\r\n return null;\r\n }\r\n static findAll(name: string): any[] {\r\n return Array.from(this.outlets.get(name)?.values() ?? []);\r\n }\r\n}\r","import { Component } from \"..\";\r\nimport { ComponentBase, IBaseProp } from \"../\";\r\nimport { disposeNavigationTarget, navigateHost } from \"../component/navigation\";\r\nimport { RouterViewRegistry } from \"./RouterViewRegistry\";\r\n\r\nexport interface RouterViewProps extends IBaseProp<{ name?: string }> { }\r\nexport const RouterViewBuilt = Symbol.for(\"RouterView.built\");;\r\nexport class RouterView extends Component {\r\n constructor(props: IBaseProp<RouterViewProps>) {\r\n super(props);\r\n }\r\n public _navLock: Promise<void> = Promise.resolve();\r\n public _navAbort?: AbortController;\r\n public get __isRouterView(): boolean {\r\n return true;\r\n }\r\n public get scopeId(): string {\r\n let p: any = this.parent, ids: string[] = [];\r\n while (p) {\r\n ids.push(p.constructor?.name ?? '');\r\n p = p.parent;\r\n }\r\n return ids.join('>');\r\n }\r\n public disposingChilds = false;\r\n previouspage: any;\r\n current: ComponentBase | ComponentBase[] | null = null;\r\n _latestNavigateId = 0;\r\n isBusy: boolean = false;\r\n\r\n public async navigate(page: ComponentBase | ComponentBase[], keepOldControl: boolean = false) {\r\n await navigateHost(this, page, keepOldControl);\r\n }\r\n\r\n public async disposeTarget(target: ComponentBase | ComponentBase[] | null): Promise<void> {\r\n await disposeNavigationTarget(target);\r\n }\r\n public override onBuilt() {\r\n try {\r\n\r\n RouterViewRegistry.register(this.props.name ?? 'default', this.scopeId, this);\r\n let p: any = this.parent;\r\n while (p) {\r\n p.motif.trigger(RouterViewBuilt, this);\r\n p = p.parent;\r\n }\r\n } catch { /* ignore */ }\r\n }\r\n\r\n public override onDisposed() {\r\n try {\r\n RouterViewRegistry.unregister(this.props.name ?? 'default', this.scopeId);\r\n } catch { /* ignore */ }\r\n }\r\n\r\n}","\nimport type { NavigationDirection, ScrollMemoryOptions } from './common';\n\nexport interface ScrollViewport {\n scrollTop(): number;\n scrollTo(top: number): void;\n scrollToAnchor(id: string, follow?: boolean): boolean;\n}\n\nconst STORAGE_KEY = 'motifjs:scroll';\nconst DEFAULT_LIMIT = 60;\nconst DEFAULT_SETTLE_MS = 1200;\n\nconst USER_INPUT = ['wheel', 'touchstart', 'keydown', 'mousedown'] as const;\n\nexport class ScrollMemory {\n private readonly options: ScrollMemoryOptions;\n private readonly viewport: ScrollViewport;\n private readonly positions = new Map<string, number>();\n\n private currentKey = '';\n private currentPath: string | null = null;\n\n private visited = false;\n private restoring = false;\n private cancelFrame: (() => void) | null = null;\n private disarmAbort: (() => void) | null = null;\n private readonly offs: Array<() => void> = [];\n\n public locationAnchor = true;\n\n constructor(options: ScrollMemoryOptions = {}, viewport?: ScrollViewport) {\n this.options = options;\n this.viewport = viewport ?? (options.container ? containerViewport(options.container) : windowViewport());\n this.load();\n\n try {\n if (typeof history !== 'undefined' && 'scrollRestoration' in history) {\n history.scrollRestoration = 'manual';\n }\n } catch { /* salt okunur bırakan gömülü tarayıcılar */ }\n\n if (typeof window !== 'undefined') {\n this.offs.push(listen(window, 'pagehide', () => this.persistNow()));\n this.offs.push(listen(document, 'visibilitychange', () => {\n if (document.visibilityState === 'hidden') this.persistNow();\n }));\n }\n }\n\n public leaving(): void {\n this.cancelRestore();\n if (!this.visited) return;\n this.remember(this.currentKey, this.viewport.scrollTop());\n this.persist();\n }\n\n public arrived(uri: string, direction?: NavigationDirection): void {\n this.visited = true;\n const { path, hash } = splitUri(uri);\n const inPage = !!hash && path === this.currentPath && (direction === 'push' || direction === 'replace' || direction === 'traverse');\n this.currentPath = path;\n this.currentKey = this.keyOf(path);\n this.restore(this.currentKey, this.options.anchor === false ? '' : hash || (this.locationAnchor ? locationHash() : ''), inPage);\n }\n\n public saved(key: string): number {\n return this.positions.get(this.keyOf(splitUri(key).path)) ?? 0;\n }\n\n public dispose(): void {\n this.cancelRestore();\n this.persistNow();\n for (const off of this.offs.splice(0)) off();\n this.positions.clear();\n }\n\n\n private keyOf(path: string): string {\n const key = this.options.key ? this.options.key(path) : path;\n return key || '/';\n }\n\n private remember(key: string, top: number): void {\n const limit = this.options.limit ?? DEFAULT_LIMIT;\n this.positions.delete(key);\n this.positions.set(key, Math.max(0, Math.round(top)));\n while (this.positions.size > limit) {\n const oldest = this.positions.keys().next();\n if (oldest.done) break;\n this.positions.delete(oldest.value);\n }\n }\n\n private restore(key: string, anchor: string, follow: boolean): void {\n this.cancelRestore();\n\n const target = this.positions.get(key) ?? 0;\n\n if (!anchor && target <= 0) {\n if (this.options.top !== false) this.viewport.scrollTo(0);\n return;\n }\n\n this.restoring = true;\n const settleMs = this.options.settleMs ?? DEFAULT_SETTLE_MS;\n const startedAt = Date.now();\n\n const attempt = (): void => {\n this.cancelFrame = null;\n const done = anchor ? this.viewport.scrollToAnchor(anchor, follow) : this.reached(target);\n if (done || Date.now() - startedAt >= settleMs) {\n this.cancelRestore();\n this.remember(key, this.viewport.scrollTop());\n return;\n }\n this.armAbort();\n this.cancelFrame = frame(attempt);\n };\n attempt();\n }\n\n private reached(target: number): boolean {\n this.viewport.scrollTo(target);\n return this.viewport.scrollTop() >= target - 1;\n }\n\n private armAbort(): void {\n if (this.disarmAbort || typeof window === 'undefined') return;\n const abort = () => this.cancelRestore();\n const removers = USER_INPUT.map((type) => listen(window, type, abort, { passive: true }));\n this.disarmAbort = () => { for (const remove of removers) remove(); };\n }\n\n private cancelRestore(): void {\n this.cancelFrame?.();\n this.cancelFrame = null;\n this.disarmAbort?.();\n this.disarmAbort = null;\n this.restoring = false;\n }\n private persistNow(): void {\n if (this.visited && !this.restoring) {\n this.remember(this.currentKey, this.viewport.scrollTop());\n }\n this.persist();\n }\n\n private get storage(): Storage | null {\n if (this.options.persist === false) return null;\n try {\n return typeof sessionStorage === 'undefined' ? null : sessionStorage;\n } catch {\n return null;\n }\n }\n\n private persist(): void {\n const storage = this.storage;\n if (!storage) return;\n try {\n storage.setItem(STORAGE_KEY, JSON.stringify([...this.positions]));\n } catch {\n }\n }\n\n private load(): void {\n const storage = this.storage;\n if (!storage) return;\n try {\n const raw = storage.getItem(STORAGE_KEY);\n if (!raw) return;\n const parsed: unknown = JSON.parse(raw);\n if (!Array.isArray(parsed)) return;\n for (const pair of parsed) {\n if (!Array.isArray(pair) || typeof pair[0] !== 'string') continue;\n const top = Number(pair[1]);\n if (Number.isFinite(top) && top > 0) this.positions.set(pair[0], top);\n }\n } catch {\n }\n }\n}\n\n/** Gerçek pencere (`documentElement`). */\nfunction windowViewport(): ScrollViewport {\n return {\n scrollTop: () => {\n try { return window.scrollY || document.documentElement?.scrollTop || 0; } catch { return 0; }\n },\n scrollTo: (top) => {\n try { window.scrollTo({ top, behavior: 'instant' }); }\n catch { try { window.scrollTo(0, top); } catch { } }\n },\n scrollToAnchor: (id, follow) => {\n try {\n const node = document.getElementById(id);\n if (!node) return false;\n if (follow) node.scrollIntoView();\n else {\n try { node.scrollIntoView({ behavior: 'instant' }); }\n catch { node.scrollIntoView(); }\n }\n return true;\n } catch { return false; }\n },\n };\n}\n\nfunction containerViewport(container: NonNullable<ScrollMemoryOptions['container']>): ScrollViewport {\n const fallback = windowViewport();\n const resolve = (): HTMLElement | null => {\n try {\n if (typeof container === 'string') return document.querySelector(container) as HTMLElement | null;\n if (typeof container === 'function') return container() ?? null;\n return container;\n } catch { return null; }\n };\n return {\n scrollTop: () => {\n const el = resolve();\n if (!el) return fallback.scrollTop();\n return el.scrollTop || 0;\n },\n scrollTo: (top) => {\n const el = resolve();\n if (!el) { fallback.scrollTo(top); return; }\n try { el.scrollTo({ top, behavior: 'instant' }); }\n catch { try { el.scrollTop = top; } catch { } }\n },\n scrollToAnchor: (id, follow) => fallback.scrollToAnchor(id, follow),\n };\n}\n\n/** `/docs/x#bolum` → `{ path: '/docs/x', hash: 'bolum' }`. */\nfunction splitUri(uri: string): { path: string; hash: string } {\n const index = uri.indexOf('#');\n if (index < 0) return { path: uri, hash: '' };\n return { path: uri.slice(0, index) || '/', hash: decodeHash(uri.slice(index + 1)) };\n}\n\nfunction locationHash(): string {\n try {\n const hash = location?.hash ?? '';\n return hash.length > 1 ? decodeHash(hash.slice(1)) : '';\n } catch { return ''; }\n}\n\nfunction decodeHash(value: string): string {\n try { return decodeURIComponent(value); } catch { return value; }\n}\n\nfunction frame(run: () => void): () => void {\n if (typeof requestAnimationFrame !== 'function') {\n const id = setTimeout(run, 16);\n return () => clearTimeout(id);\n }\n const id = requestAnimationFrame(run);\n return () => cancelAnimationFrame(id);\n}\n\nfunction listen(\n target: EventTarget,\n type: string,\n handler: () => void,\n options?: AddEventListenerOptions,\n): () => void {\n try {\n target.addEventListener(type, handler, options);\n return () => { try { target.removeEventListener(type, handler, options); } catch { } };\n } catch {\n return () => { };\n }\n}","import { ComponentBase, notifyDeactivated } from \"../\";\nimport { disposeNavigationTarget, hasOwnTransition } from \"../component/navigation\";\nimport { reportError } from \"../common/diagnostics\";\nimport type { NavigationDirection, RouteItem, StackEntryInfo, StackOptions, StackTransitionContext } from \"./\";\n\nexport type HistoryPoint = { index: number; session: string };\n\nexport type StackNavigation = {\n direction: NavigationDirection;\n from: HistoryPoint | null;\n to: HistoryPoint | null;\n uri: string;\n};\n\ntype SavedScroll = Array<[Element, number, number]>;\n\ntype SavedPresentation = {\n style: string | null;\n inert: boolean;\n ariaHidden: string | null;\n};\n\nexport type RetainedEntry = {\n point: HistoryPoint;\n uri: string;\n chain: RouteItem[];\n instances: ComponentBase[];\n top: ComponentBase;\n topIndex: number;\n outlet: any;\n attached: boolean;\n hidden: boolean;\n pendingDetach: boolean;\n saved: SavedPresentation | null;\n scroll: SavedScroll;\n};\n\ntype Gesture = {\n startX: number;\n startY: number;\n lastX: number;\n samples: Array<[number, number]>;\n dragging: boolean;\n width: number;\n top: HTMLElement;\n topSaved: string | null;\n under: RetainedEntry | null;\n underSaved: string | null;\n offs: Array<() => void>;\n};\n\nconst STORAGE_KEY = 'motifjs:stack';\nconst SLIDE_OFFSET = 30;\nconst EASING = 'cubic-bezier(0.2, 0.8, 0.2, 1)';\n\nconst isElement = (node: any): node is HTMLElement => !!node && node.nodeType === 1 && !!node.style;\n\nexport { hasOwnTransition };\n\nexport function markDirection(component: ComponentBase | null | undefined, direction: NavigationDirection): void {\n const el = component?.element as any;\n if (!component || component.isDisposed || !isElement(el)) return;\n try { el.setAttribute('data-nav-direction', direction); } catch { }\n (component.motif.options.transition as any)._markedDirection = true;\n}\n\nexport function unmarkDirection(component: ComponentBase | null | undefined): void {\n const transition: any = component?.motif?.options?.transition;\n if (!transition?._markedDirection) return;\n transition._markedDirection = false;\n try { (component!.element as any)?.removeAttribute?.('data-nav-direction'); } catch { }\n}\n\nexport function playLeave(component: ComponentBase): Promise<void> {\n return new Promise<void>((resolve) => {\n let settled = false;\n const done = () => { if (!settled) { settled = true; resolve(); } };\n try {\n const animation: any = component.motif.options.transition.leaveTransition(done);\n if (animation && typeof animation.addEventListener === 'function') animation.addEventListener('cancel', done);\n } catch {\n done();\n }\n });\n}\n\nfunction saveStyle(el: HTMLElement): string | null {\n return el.getAttribute('style');\n}\n\nfunction restoreStyle(el: HTMLElement, value: string | null): void {\n try {\n el.setAttribute('style', value ?? '');\n if (value === null) el.removeAttribute('style');\n } catch { }\n}\n\nfunction saveScroll(root: HTMLElement): SavedScroll {\n const saved: SavedScroll = [];\n try {\n const visit = (el: Element) => {\n const top = (el as HTMLElement).scrollTop || 0;\n const left = (el as HTMLElement).scrollLeft || 0;\n if (top || left) saved.push([el, top, left]);\n };\n visit(root);\n root.querySelectorAll('*').forEach(visit);\n } catch { }\n return saved;\n}\n\nfunction restoreScroll(saved: SavedScroll): void {\n for (const [el, top, left] of saved) {\n try {\n (el as HTMLElement).scrollTop = top;\n (el as HTMLElement).scrollLeft = left;\n } catch { }\n }\n}\n\nfunction prefersReducedMotion(): boolean {\n try {\n return typeof window !== 'undefined' && typeof window.matchMedia === 'function'\n && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n } catch { return false; }\n}\n\nfunction play(el: HTMLElement, keyframes: Keyframe[], duration: number, running: Animation[]): Promise<void> {\n if (typeof (el as any).animate !== 'function' || duration <= 0) return Promise.resolve();\n try {\n const animation = el.animate(keyframes, { duration, easing: EASING, fill: 'forwards' });\n running.push(animation);\n return animation.finished.then(() => undefined, () => undefined);\n } catch {\n return Promise.resolve();\n }\n}\n\nfunction overlay(floating: HTMLElement, anchor: HTMLElement, above: boolean): void {\n floating.style.position = 'absolute';\n floating.style.top = '0px';\n floating.style.left = '0px';\n floating.style.margin = '0px';\n floating.style.boxSizing = 'border-box';\n const a = anchor.getBoundingClientRect();\n const f = floating.getBoundingClientRect();\n floating.style.top = (a.top - f.top) + 'px';\n floating.style.left = (a.left - f.left) + 'px';\n floating.style.width = a.width + 'px';\n floating.style.height = a.height + 'px';\n floating.style.pointerEvents = 'none';\n floating.style.zIndex = above ? '2' : '0';\n if (!above) {\n let position = '';\n try { position = getComputedStyle(anchor).position; } catch { }\n if (!position || position === 'static') anchor.style.position = 'relative';\n anchor.style.zIndex = '1';\n }\n}\n\nexport class NavigationStack {\n readonly retainAttached: boolean;\n readonly depth: number;\n readonly persist: boolean;\n readonly animation: StackOptions['animation'];\n readonly duration: number;\n private readonly swipe: { edge: number; threshold: number } | null;\n\n private session: string | null = null;\n private readonly entries = new Map<number, RetainedEntry>();\n private readonly uris = new Map<number, string>();\n private loaded: { session: string; uris: Array<[number, string]> } | null = null;\n private current: HistoryPoint | null = null;\n private currentTop: ComponentBase | null = null;\n private readonly offs: Array<() => void> = [];\n private gesture: Gesture | null = null;\n private gestureCommitted = false;\n private awaitingGestureResult = false;\n private disposed = false;\n\n constructor(options: true | StackOptions) {\n const o: StackOptions = options === true ? {} : options;\n this.retainAttached = o.retain === true;\n this.depth = Math.max(0, Math.floor(o.depth ?? 5));\n this.persist = o.persist === true;\n this.animation = o.animation ?? 'none';\n this.duration = Math.max(0, o.duration ?? 300);\n const sb = o.swipeBack;\n this.swipe = sb\n ? {\n edge: (typeof sb === 'object' && typeof sb.edge === 'number' && sb.edge > 0) ? sb.edge : 24,\n threshold: (typeof sb === 'object' && typeof sb.threshold === 'number' && sb.threshold > 0) ? sb.threshold : 0.35,\n }\n : null;\n if (this.persist) this.load();\n if (this.swipe) this.installSwipe();\n }\n\n public get retainedCount(): number {\n return this.entries.size;\n }\n\n public isRetaining(nav: StackNavigation): boolean {\n return !!nav.from && !!nav.to && nav.from.session === nav.to.session && nav.to.index > nav.from.index;\n }\n\n public begin(nav: StackNavigation): void {\n const point = nav.to;\n if (!point) return;\n if (this.session !== point.session) {\n this.disposeAllEntries();\n this.uris.clear();\n this.session = point.session;\n if (this.loaded && this.loaded.session === point.session) {\n for (const [index, uri] of this.loaded.uris) this.uris.set(index, uri);\n }\n this.loaded = null;\n }\n if (nav.direction === 'push') {\n this.truncate(point.index);\n } else if (nav.direction === 'replace') {\n const stale = this.entries.get(point.index);\n if (stale) { this.entries.delete(point.index); void this.disposeEntry(stale); }\n }\n }\n\n public take(point: HistoryPoint | null): RetainedEntry | null {\n if (!point || point.session !== this.session) return null;\n const entry = this.entries.get(point.index);\n if (!entry) return null;\n this.entries.delete(point.index);\n entry.pendingDetach = false;\n return entry;\n }\n\n public retain(point: HistoryPoint, uri: string, chain: RouteItem[], instances: ComponentBase[], topIndex: number, outlet: any, deferHide: boolean): RetainedEntry {\n const top = instances[topIndex];\n const el = top.element as any;\n const entry: RetainedEntry = {\n point, uri, chain: chain.slice(), instances: instances.slice(), top, topIndex, outlet,\n attached: false, hidden: false, pendingDetach: false, saved: null,\n scroll: isElement(el) ? saveScroll(el) : [],\n };\n if (this.retainAttached && isElement(el)) {\n entry.attached = true;\n if (!deferHide) this.hide(entry);\n } else if (deferHide) {\n entry.pendingDetach = true;\n } else {\n try { top.parent?.controls.silentDetach(top); } catch { }\n }\n const previous = this.entries.get(point.index);\n if (previous && previous !== entry) void this.disposeEntry(previous);\n this.entries.set(point.index, entry);\n this.evict();\n return entry;\n }\n\n public settle(entry: RetainedEntry): void {\n if (entry.top.isDisposed || this.entries.get(entry.point.index) !== entry) return;\n if (entry.attached) {\n this.hide(entry);\n } else if (entry.pendingDetach) {\n entry.pendingDetach = false;\n try { entry.top.parent?.controls.silentDetach(entry.top); } catch { }\n }\n }\n\n public hide(entry: RetainedEntry): void {\n if (!entry.attached || entry.hidden) return;\n const el = entry.top.element as any;\n if (!isElement(el)) return;\n entry.saved = {\n style: saveStyle(el),\n inert: el.hasAttribute('inert'),\n ariaHidden: el.getAttribute('aria-hidden'),\n };\n try {\n el.style.setProperty('display', 'none', 'important');\n el.setAttribute('inert', '');\n el.setAttribute('aria-hidden', 'true');\n } catch { }\n entry.hidden = true;\n try { notifyDeactivated(entry.top); } catch { }\n }\n\n public reveal(entry: RetainedEntry): void {\n const el = entry.top.element as any;\n if (entry.hidden && entry.saved && isElement(el)) {\n restoreStyle(el, entry.saved.style);\n try {\n if (!entry.saved.inert) el.removeAttribute('inert');\n if (entry.saved.ariaHidden === null) el.removeAttribute('aria-hidden');\n else el.setAttribute('aria-hidden', entry.saved.ariaHidden);\n } catch { }\n }\n entry.hidden = false;\n entry.saved = null;\n }\n\n public restoreScroll(entry: RetainedEntry): void {\n restoreScroll(entry.scroll);\n }\n\n public record(nav: StackNavigation, top: ComponentBase | null): void {\n if (nav.to && nav.to.session === this.session) {\n this.uris.set(nav.to.index, nav.uri);\n if (nav.direction === 'push') {\n for (const index of Array.from(this.uris.keys())) {\n if (index > nav.to.index) this.uris.delete(index);\n }\n }\n this.current = nav.to;\n }\n this.currentTop = top;\n this.save();\n }\n\n public describe(): StackEntryInfo[] {\n const current = this.current?.index;\n return Array.from(this.uris.entries())\n .sort((a, b) => a[0] - b[0])\n .map(([index, uri]) => ({ index, uri, current: index === current, retained: this.entries.has(index) }));\n }\n\n public get gestureCommitPending(): boolean {\n return this.gestureCommitted;\n }\n\n public consumeGestureCommit(): boolean {\n const committed = this.gestureCommitted;\n this.gestureCommitted = false;\n return committed;\n }\n\n public traversalSettled(cancelled: boolean): void {\n if (!this.awaitingGestureResult) return;\n this.awaitingGestureResult = false;\n const g = this.gesture;\n if (!cancelled) {\n this.gesture = null;\n this.gestureCommitted = false;\n return;\n }\n this.gestureCommitted = false;\n if (g) void this.settleGesture(g, false);\n }\n\n public async transition(direction: NavigationDirection, entering: ComponentBase | null, leaving: ComponentBase | null): Promise<void> {\n if (this.consumeGestureCommit()) return;\n if (this.animation === 'none' || !this.animation) return;\n if (direction !== 'push' && direction !== 'back' && direction !== 'forward') return;\n const enteringEl = entering?.element as any;\n const leavingEl = leaving?.element as any;\n if (!isElement(enteringEl) || !isElement(leavingEl) || !enteringEl.isConnected || !leavingEl.isConnected) return;\n if (prefersReducedMotion()) return;\n\n const backwards = direction === 'back';\n const enteringStyle = saveStyle(enteringEl);\n const leavingStyle = saveStyle(leavingEl);\n const running: Animation[] = [];\n try {\n overlay(leavingEl, enteringEl, backwards);\n if (typeof this.animation === 'function') {\n const context: StackTransitionContext = { direction, entering: enteringEl, leaving: leavingEl };\n await this.animation(context);\n } else {\n const d = this.duration;\n if (backwards) {\n await Promise.all([\n play(leavingEl, [{ transform: 'translateX(0)' }, { transform: 'translateX(100%)' }], d, running),\n play(enteringEl, [{ transform: `translateX(-${SLIDE_OFFSET}%)` }, { transform: 'translateX(0)' }], d, running),\n ]);\n } else {\n await Promise.all([\n play(enteringEl, [{ transform: 'translateX(100%)' }, { transform: 'translateX(0)' }], d, running),\n play(leavingEl, [{ transform: 'translateX(0)' }, { transform: `translateX(-${SLIDE_OFFSET}%)` }], d, running),\n ]);\n }\n }\n } catch (error) {\n reportError('MJX308', error);\n } finally {\n for (const a of running) { try { a.cancel(); } catch { } }\n restoreStyle(enteringEl, enteringStyle);\n restoreStyle(leavingEl, leavingStyle);\n }\n }\n\n public async disposeEntry(entry: RetainedEntry): Promise<void> {\n const top = entry.top;\n if (!top || top.isDisposed) return;\n try { await disposeNavigationTarget(top, { deep: true, skipLeaveTransition: true }); } catch (error) { reportError('MJX307', error); }\n }\n\n public async dispose(): Promise<void> {\n if (this.disposed) return;\n this.disposed = true;\n for (const off of this.offs.splice(0)) { try { off(); } catch { } }\n if (this.gesture) { this.endGestureListeners(this.gesture); this.gesture = null; }\n await this.disposeAllEntries();\n this.uris.clear();\n this.current = null;\n this.currentTop = null;\n }\n\n private async disposeAllEntries(): Promise<void> {\n const all = Array.from(this.entries.values());\n this.entries.clear();\n for (const entry of all) await this.disposeEntry(entry);\n }\n\n private truncate(fromIndex: number): void {\n for (const [index, entry] of Array.from(this.entries)) {\n if (index >= fromIndex) {\n this.entries.delete(index);\n void this.disposeEntry(entry);\n }\n }\n }\n\n private evict(): void {\n while (this.entries.size > this.depth) {\n let oldest = Infinity;\n for (const index of this.entries.keys()) if (index < oldest) oldest = index;\n const entry = this.entries.get(oldest);\n this.entries.delete(oldest);\n if (entry) void this.disposeEntry(entry);\n }\n }\n\n private load(): void {\n try {\n if (typeof sessionStorage === 'undefined') return;\n const raw = sessionStorage.getItem(STORAGE_KEY);\n if (!raw) return;\n const parsed = JSON.parse(raw);\n if (!parsed || typeof parsed.session !== 'string' || !Array.isArray(parsed.uris)) return;\n const uris: Array<[number, string]> = [];\n for (const pair of parsed.uris) {\n if (Array.isArray(pair) && typeof pair[0] === 'number' && typeof pair[1] === 'string') uris.push([pair[0], pair[1]]);\n }\n this.loaded = { session: parsed.session, uris };\n } catch { }\n }\n\n private save(): void {\n if (!this.persist || !this.session) return;\n try {\n if (typeof sessionStorage === 'undefined') return;\n sessionStorage.setItem(STORAGE_KEY, JSON.stringify({ session: this.session, uris: Array.from(this.uris.entries()) }));\n } catch { }\n }\n\n private installSwipe(): void {\n if (typeof document === 'undefined') return;\n const onStart = (e: TouchEvent) => this.onTouchStart(e);\n try {\n document.addEventListener('touchstart', onStart as any, { passive: true });\n this.offs.push(() => { try { document.removeEventListener('touchstart', onStart as any); } catch { } });\n } catch { }\n }\n\n private onTouchStart(e: TouchEvent): void {\n if (this.disposed || this.gesture || this.awaitingGestureResult || !this.swipe) return;\n if (!e.touches || e.touches.length !== 1) return;\n const t = e.touches[0];\n if (!t || t.clientX > this.swipe.edge) return;\n if (!this.current || this.current.index <= 0) return;\n const topEl = this.currentTop?.element as any;\n if (!isElement(topEl) || !topEl.isConnected) return;\n\n const g: Gesture = {\n startX: t.clientX, startY: t.clientY, lastX: t.clientX, samples: [[t.clientX, Date.now()]],\n dragging: false, width: 0, top: topEl, topSaved: null, under: null, underSaved: null, offs: [],\n };\n const onMove = (ev: TouchEvent) => this.onTouchMove(g, ev);\n const onEnd = () => this.onTouchEnd(g);\n try {\n document.addEventListener('touchmove', onMove as any, { passive: false });\n document.addEventListener('touchend', onEnd);\n document.addEventListener('touchcancel', onEnd);\n g.offs.push(() => {\n try { document.removeEventListener('touchmove', onMove as any); } catch { }\n try { document.removeEventListener('touchend', onEnd); } catch { }\n try { document.removeEventListener('touchcancel', onEnd); } catch { }\n });\n } catch { }\n this.gesture = g;\n }\n\n private endGestureListeners(g: Gesture): void {\n for (const off of g.offs.splice(0)) { try { off(); } catch { } }\n }\n\n private beginDrag(g: Gesture): void {\n g.dragging = true;\n g.width = g.top.getBoundingClientRect().width || (typeof window !== 'undefined' ? window.innerWidth : 0) || 1;\n g.topSaved = saveStyle(g.top);\n const current = this.current;\n const under = current ? this.entries.get(current.index - 1) ?? null : null;\n if (under && under.attached && isElement(under.top.element) && (under.top.element as any).isConnected) {\n const el = under.top.element as any as HTMLElement;\n g.under = under;\n g.underSaved = saveStyle(el);\n if (under.saved) restoreStyle(el, under.saved.style);\n overlay(el, g.top, false);\n el.style.transform = `translateX(-${SLIDE_OFFSET}%)`;\n restoreScroll(under.scroll);\n }\n g.top.style.willChange = 'transform';\n }\n\n private applyDrag(g: Gesture, dx: number): void {\n const progress = Math.min(1, Math.max(0, dx / g.width));\n g.top.style.transform = `translateX(${Math.max(0, dx)}px)`;\n if (g.under) {\n (g.under.top.element as any as HTMLElement).style.transform = `translateX(-${SLIDE_OFFSET * (1 - progress)}%)`;\n }\n }\n\n private onTouchMove(g: Gesture, e: TouchEvent): void {\n const t = e.touches && e.touches[0];\n if (!t) return;\n const dx = t.clientX - g.startX;\n const dy = t.clientY - g.startY;\n if (!g.dragging) {\n if (Math.abs(dx) < 8 && Math.abs(dy) < 8) return;\n if (dx <= 0 || Math.abs(dy) > Math.abs(dx)) {\n this.endGestureListeners(g);\n this.gesture = null;\n return;\n }\n this.beginDrag(g);\n }\n if (e.cancelable) { try { e.preventDefault(); } catch { } }\n const now = Date.now();\n g.lastX = t.clientX;\n g.samples.push([t.clientX, now]);\n while (g.samples.length > 2 && now - g.samples[0][1] > 100) g.samples.shift();\n this.applyDrag(g, dx);\n }\n\n private onTouchEnd(g: Gesture): void {\n this.endGestureListeners(g);\n if (!g.dragging) { this.gesture = null; return; }\n const dx = g.lastX - g.startX;\n const progress = dx / g.width;\n const first = g.samples[0];\n const last = g.samples[g.samples.length - 1];\n const span = last && first ? last[1] - first[1] : 0;\n const idle = last ? Date.now() - last[1] : Infinity;\n const velocity = span >= 16 && idle <= 50 ? (last[0] - first[0]) / span : 0;\n const commit = progress > this.swipe!.threshold || (velocity > 0.5 && dx > 0);\n void this.settleGesture(g, commit);\n }\n\n private async settleGesture(g: Gesture, commit: boolean): Promise<void> {\n const running: Animation[] = [];\n const topEl = g.top;\n const underEl = g.under ? g.under.top.element as any as HTMLElement : null;\n const duration = prefersReducedMotion() ? 0 : Math.max(0, Math.round(this.duration * 0.6));\n const currentTop = topEl.style.transform || 'translateX(0px)';\n const currentUnder = underEl?.style.transform || `translateX(-${SLIDE_OFFSET}%)`;\n if (commit) {\n await Promise.all([\n play(topEl, [{ transform: currentTop }, { transform: 'translateX(100%)' }], duration, running),\n underEl ? play(underEl, [{ transform: currentUnder }, { transform: 'translateX(0)' }], duration, running) : Promise.resolve(),\n ]);\n topEl.style.transform = 'translateX(100%)';\n if (underEl) underEl.style.transform = 'translateX(0px)';\n for (const a of running) { try { a.cancel(); } catch { } }\n this.gestureCommitted = true;\n this.awaitingGestureResult = true;\n try { window.history.back(); } catch { this.traversalSettled(true); }\n return;\n }\n await Promise.all([\n play(topEl, [{ transform: currentTop }, { transform: 'translateX(0)' }], duration, running),\n underEl ? play(underEl, [{ transform: currentUnder }, { transform: `translateX(-${SLIDE_OFFSET}%)` }], duration, running) : Promise.resolve(),\n ]);\n for (const a of running) { try { a.cancel(); } catch { } }\n restoreStyle(topEl, g.topSaved);\n if (underEl && g.under) {\n restoreStyle(underEl, g.underSaved);\n }\n if (this.gesture === g) this.gesture = null;\n }\n}\n","export const enum CharacterCodes {\n slash = 0x2F, // /\n question = 0x3F, // ?\n colon = 0x3A, // :\n openBrace = 0x7B, // {\n closeBrace = 0x7D, // }\n equals = 0x3D, // =\n $ = 0x24,\n backslash = 0x5C, // \\\n}\n\n\n\n\nexport interface IToken {\n type: 'static' | 'optional' | 'parameter';\n regexs: [];\n input: string;\n default: string | undefined;\n parameterName: string;\n isOptinal: boolean;\n parameterIndex: number;\n sectionIndex: number;\n hasLeadingSlash?: boolean;\n leadingSlashTokenIndex?: number;\n hasLeadingStatic?: boolean;\n leadingStaticTokenIndex?: number;\n consumed?: boolean;\n}\nexport class Scanner {\n\n constructor(public source: string) {\n this.tokens = [];\n }\n currentColumn = 0;\n tokens: IToken[] = [];\n addToken(token: IToken) {\n this.tokens.push(token);\n }\n\n public parse(): RegExp {\n if (!this.source.startsWith(\"/\")) {\n this.source = \"/\" + this.source;\n }\n // Sondaki '/' karakterlerini normalize et (kök '/' hariç): '/app/' deseni '/app' ile aynı\n while (this.source.length > 1 && this.source.endsWith('/')) {\n this.source = this.source.slice(0, -1);\n }\n\n var currentType: 'static' | 'optional' | 'parameter' | 'defaultValue' = 'static';\n var parentTokenIndex = -1;\n var parameterIndex = 0;\n var sectionIndex = -1;\n this.tokens = [];\n this.currentColumn = 0;\n while (this.currentColumn < this.source.length) {\n\n var cpa = this.codePointAt(this.source, this.currentColumn);\n\n var currentToken = this.tokens[parentTokenIndex];\n switch (cpa) {\n case CharacterCodes.slash:\n sectionIndex++;\n if (currentToken === undefined || currentToken.input.length > 1) {\n this.tokens.push({ default: '', input: '/', isOptinal: false, regexs: [], type: 'static', parameterName: '', parameterIndex: parameterIndex, sectionIndex });\n parentTokenIndex = this.tokens.length - 1;\n }\n break;\n case CharacterCodes.openBrace:\n parameterIndex++;\n let hasLeadingSlash = false;\n let leadingSlashTokenIndex: number | undefined = undefined;\n let hasLeadingStatic = false;\n let leadingStaticTokenIndex: number | undefined = undefined;\n if (this.tokens.length > 0) {\n const prev = this.tokens[this.tokens.length - 1];\n if (prev && prev.type === 'static' && prev.input === '/' && !prev.consumed) {\n hasLeadingSlash = true;\n leadingSlashTokenIndex = this.tokens.length - 1;\n } else if (prev && prev.type === 'static' && prev.input !== '/' && prev.sectionIndex === sectionIndex && !prev.consumed) {\n hasLeadingStatic = true;\n leadingStaticTokenIndex = this.tokens.length - 1;\n }\n }\n this.tokens.push({ default: undefined, input: '', isOptinal: false, regexs: [], type: 'parameter', parameterName: '', parameterIndex: parameterIndex, sectionIndex, hasLeadingSlash, leadingSlashTokenIndex, hasLeadingStatic, leadingStaticTokenIndex });\n parentTokenIndex = this.tokens.length - 1;\n currentType = 'parameter';\n break;\n case CharacterCodes.closeBrace:\n currentType = 'static';\n parentTokenIndex = -1;\n break;\n case CharacterCodes.colon:\n currentType = 'defaultValue';\n break;\n\n case CharacterCodes.question:\n if (currentToken) {\n currentToken.isOptinal = true;\n }\n break;\n default:\n const ch = this.source[this.currentColumn];\n if (currentToken) {\n if (currentType === 'parameter') {\n currentToken.parameterName = `${currentToken.parameterName + ch}`;\n } else if (currentType === 'defaultValue') {\n currentToken.default = `${(currentToken.default ?? '') + ch}`;\n } else {\n if (currentToken.type === 'static') {\n currentToken.input = `${currentToken.input + ch}`;\n } else {\n this.tokens.push({ default: undefined, input: ch, isOptinal: false, regexs: [], type: 'static', parameterName: '', parameterIndex: parameterIndex, sectionIndex });\n parentTokenIndex = this.tokens.length - 1;\n }\n }\n } else {\n this.tokens.push({ default: undefined, input: ch, isOptinal: false, regexs: [], type: 'static', parameterName: '', parameterIndex: parameterIndex, sectionIndex });\n parentTokenIndex = this.tokens.length - 1;\n }\n break;\n }\n this.currentColumn++;\n }\n\n const escapeRegex = (s: string) => s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n const charClass = \"[\\\\w\\\\d\\\\_\\\\-\\\\%\\\\&\\\\$\\\\+\\\\#\\\\,\\\\.\\\\{\\\\}\\\\(\\\\)\\\\[\\\\]\\\\?\\\\:\\\\=\\\\;\\\\'\\\\\\\"\\\\~\\\\\\\\]\";\n\n for (const t of this.tokens) {\n if (t.type === 'parameter' && t.isOptinal && t.hasLeadingSlash && typeof t.leadingSlashTokenIndex === 'number') {\n const prev = this.tokens[t.leadingSlashTokenIndex];\n if (prev && prev.type === 'static' && prev.input === '/') {\n prev.consumed = true;\n }\n }\n if (t.type === 'parameter' && t.isOptinal && t.hasLeadingStatic && typeof t.leadingStaticTokenIndex === 'number') {\n const prev = this.tokens[t.leadingStaticTokenIndex];\n if (prev && prev.type === 'static' && prev.input && prev.sectionIndex === t.sectionIndex) {\n prev.consumed = true;\n }\n }\n }\n\n const escapeClassChar = (c: string) => c.replace(/[\\\\\\]\\^\\-]/g, '\\\\$&');\n\n const getNextDelimChar = (idx: number): string | undefined => {\n const t = this.tokens[idx];\n for (let j = idx + 1; j < this.tokens.length; j++) {\n const nx = this.tokens[j];\n if (nx.type === 'static' && nx.sectionIndex === t.sectionIndex) {\n if (nx.input && nx.input !== '/') {\n return nx.input[0];\n }\n }\n if (nx.type === 'static' && nx.input === '/') break;\n }\n return undefined;\n };\n const buildCapture = (idx: number, isOptional: boolean) => {\n const delim = getNextDelimChar(idx);\n const innerClass = delim ? `[^${escapeClassChar(escapeRegex(delim))}]` : charClass;\n const quant = isOptional ? '{0,255}' : '{1,255}';\n return `(${innerClass}${quant})`;\n };\n\n let pattern = '^';\n for (let i = 0; i < this.tokens.length;) {\n const tok = this.tokens[i];\n if (tok.type === 'static' && tok.input === '/') {\n if (!tok.consumed) pattern += '/';\n i++;\n continue;\n }\n const segStart = i;\n let segEnd = i;\n while (segEnd < this.tokens.length) {\n const t = this.tokens[segEnd];\n if (t.type === 'static' && t.input === '/' && segEnd !== segStart) break;\n if (t.type === 'static' && t.input === '/' && segEnd === segStart) { segEnd++; break; }\n segEnd++;\n }\n const visited: Record<number, boolean> = {};\n let k = segStart;\n while (k < segEnd) {\n if (visited[k]) { k++; continue; }\n const t = this.tokens[k];\n if (t.type === 'static') {\n if (!t.consumed) pattern += escapeRegex(t.input);\n visited[k] = true;\n k++;\n continue;\n }\n if (t.isOptinal && !t.hasLeadingStatic) {\n\n const firstIdx = k;\n let hasDependent = false;\n for (let jj = firstIdx + 1; jj < segEnd; jj++) {\n const sj = this.tokens[jj];\n const pj = this.tokens[jj + 1] as IToken | undefined;\n if (sj && sj.type === 'static' && pj && pj.type === 'parameter' && pj.isOptinal && pj.hasLeadingStatic && typeof pj.leadingStaticTokenIndex === 'number' && pj.leadingStaticTokenIndex === jj) {\n hasDependent = true;\n break;\n }\n if (sj && sj.type === 'static' && sj.input === '/') break;\n }\n\n let groupInner = '';\n if (t.hasLeadingSlash) groupInner += '/';\n groupInner += buildCapture(firstIdx, !hasDependent);\n visited[firstIdx] = true;\n let j = firstIdx + 1;\n while (j < segEnd) {\n const sj = this.tokens[j];\n if (sj.type === 'static' && this.tokens[j + 1] && this.tokens[j + 1].type === 'parameter') {\n const prm = this.tokens[j + 1] as IToken;\n if (prm.isOptinal && prm.hasLeadingStatic && typeof prm.leadingStaticTokenIndex === 'number' && prm.leadingStaticTokenIndex === j) {\n const lit = escapeRegex(sj.input);\n const cap = buildCapture(j + 1, true);\n groupInner += `(?:${lit}${cap})?`;\n visited[j] = true;\n visited[j + 1] = true;\n j += 2;\n continue;\n }\n }\n break;\n }\n pattern += `(?:${groupInner})?`;\n k = j;\n continue;\n } else {\n const cap = buildCapture(k, t.isOptinal);\n if (t.isOptinal) {\n if (t.hasLeadingSlash) {\n pattern += `(?:/${cap})?`;\n } else if (t.hasLeadingStatic && typeof t.leadingStaticTokenIndex === 'number') {\n const prev = this.tokens[t.leadingStaticTokenIndex];\n const lit = prev && prev.type === 'static' ? escapeRegex(prev.input) : '';\n pattern += `(?:${lit}${cap})?`;\n } else {\n pattern += `(?:${cap})?`;\n }\n } else {\n pattern += cap;\n }\n visited[k] = true;\n k++;\n }\n }\n i = segEnd;\n }\n\n pattern += '$';\n return new RegExp(pattern, \"i\");\n }\n public parameters: Record<string, any> = {};\n public exist(input: string, pageSearch?: string): boolean {\n const hashIdx = input.indexOf('#');\n const withoutHash = hashIdx >= 0 ? input.substring(0, hashIdx) : input;\n let path = withoutHash;\n let query = '';\n const qIdx = withoutHash.indexOf('?');\n if (qIdx >= 0) {\n path = withoutHash.substring(0, qIdx);\n query = withoutHash.substring(qIdx + 1);\n }\n\n // İstek yolundaki sondaki '/' karakterlerini yok say (kök '/' hariç):\n // '/app/' → '/app'; desen ^...$ tam eşleşme olduğundan aksi halde not-found olur.\n while (path.length > 1 && path.endsWith('/')) {\n path = path.slice(0, -1);\n }\n\n var tx = this.parse();\n var rx = tx.exec(path);\n\n if (rx) {\n var i = rx ? rx.length : 0;\n var arr = <any>[];\n\n this.parameters = {};\n rx?.forEach((t, indx) => {\n arr.push(t);\n })\n if (query && query.length) {\n const urlSearchParams = new URLSearchParams(query);\n const queryMap = new Map<string, string[]>();\n urlSearchParams.forEach((val, key) => {\n const existing = queryMap.get(key) || [];\n existing.push(val);\n queryMap.set(key, existing);\n });\n queryMap.forEach((values, key) => {\n if (values.length === 1) {\n this.parameters[key] = values[0];\n } else {\n this.parameters[key] = values;\n }\n });\n } else if (pageSearch) {\n const urlSearchParams = new URLSearchParams(pageSearch);\n const queryMap = new Map<string, string[]>();\n urlSearchParams.forEach((val, key) => {\n const existing = queryMap.get(key) || [];\n existing.push(val);\n queryMap.set(key, existing);\n });\n queryMap.forEach((values, key) => {\n if (values.length === 1) {\n this.parameters[key] = values[0];\n } else {\n this.parameters[key] = values;\n }\n });\n }\n\n if (rx.input === arr[0]) {\n rx?.forEach((t, indx) => {\n\n if (indx !== 0) {\n var all = this.tokens.find(t => t.parameterIndex == indx);\n if (all) {\n let val: any = t;\n if ((val === undefined || val === '') && all.isOptinal) {\n const def = (all.default === undefined || all.default === '') ? undefined : all.default;\n val = def;\n }\n if (val === undefined) {\n this.parameters[all.parameterName] = undefined;\n } else {\n this.parameters[all.parameterName] = val;\n }\n }\n }\n })\n /* TODO: route detayları ile ilgili mesajı Geliştirici Araçları'na gönder */\n return true;\n }\n }\n\n return false;\n }\n codePointAt: (s: string, i: number) =>\n number = (String.prototype as any).codePointAt ?\n (s, i) => (s as any).codePointAt(i) : function codePointAt(str, i): number {\n const size = str.length;\n if (i < 0 || i >= size) {\n return undefined!;\n }\n const first = str.charCodeAt(i);\n if (first >= 0xD800 && first <= 0xDBFF && size > i + 1) {\n const second = str.charCodeAt(i + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n return first;\n };\n\n}","import { RouteItem, RouteRecord } from \"./RouteItem\";\r\nimport { Scanner } from \"./scanner\";\r\n\r\n\r\n/** Bir fullPath'in statik (parametresiz) ve parametreli segment sayıları. */\r\nexport function routeSpecificity(fullPath: string): { statics: number; params: number } {\r\n let statics = 0, params = 0;\r\n for (const seg of (fullPath || '').split('/')) {\r\n if (!seg) continue;\r\n if (seg.startsWith('{') && seg.endsWith('}')) params++; else statics++;\r\n }\r\n return { statics, params };\r\n}\r\n\r\nexport function compareRouteRecords(a: RouteRecord, b: RouteRecord): number {\r\n const d = a.chain.length - b.chain.length;\r\n if (d !== 0) return d;\r\n const sa = routeSpecificity(a.fullPath), sb = routeSpecificity(b.fullPath);\r\n if (sa.statics !== sb.statics) return sb.statics - sa.statics;\r\n if (sa.params !== sb.params) return sa.params - sb.params;\r\n return b.fullPath.length - a.fullPath.length;\r\n}\r\n\r\nexport class RouteCollection {\r\n\r\n public records: RouteRecord[] = [];\r\n private routesMap: Map<any, RouteItem> = new Map();\r\n constructor(private routes: RouteItem[]) {\r\n this.build();\r\n }\r\n\r\n private build() {\r\n this.records = [];\r\n this.routesMap.clear();\r\n\r\n for (const r of this.routes) this.walk([], \"\", r);\r\n\r\n this.records.sort(compareRouteRecords);\r\n }\r\n\r\n walk = (chain: RouteItem[], parentPath: string, node: RouteItem, viaAlias: boolean = false) => {\r\n const fullPath = this.joinPaths(parentPath, node.path);\r\n if (!viaAlias) {\r\n const existing = (node as any).fullPath as string | null | undefined;\r\n if (existing == null || (typeof existing === 'string' && existing.trim() === '')) {\r\n (node as any).fullPath = fullPath;\r\n }\r\n if (node.name != null) {\r\n this.routesMap.set(node.name, node);\r\n }\r\n }\r\n const nextChain = [...chain, node];\r\n const aliases = node.alias == null ? [] : (Array.isArray(node.alias) ? node.alias : [node.alias]);\r\n const variants = [\r\n { path: fullPath, isAlias: viaAlias },\r\n ...aliases.map(a => ({ path: this.joinPaths(parentPath, a), isAlias: true }))\r\n ];\r\n for (const variant of variants) {\r\n this.records.push({\r\n fullPath: variant.path,\r\n chain: nextChain,\r\n leaf: node,\r\n scanner: new Scanner(variant.path),\r\n aliasOf: variant.isAlias ? ((node as any).fullPath ?? null) : null\r\n });\r\n if (node.childs && node.childs.length) {\r\n for (const child of node.childs) this.walk(nextChain, variant.path, child, variant.isAlias);\r\n }\r\n }\r\n }\r\n\r\n joinPaths(parent: string, child: string): string {\r\n parent = parent || \"\";\r\n child = child || \"\";\r\n\r\n const base = parent && parent !== \"/\" && parent.endsWith(\"/\") ? parent.slice(0, -1) : parent;\r\n\r\n if (child === \"/\") {\r\n return base || \"/\";\r\n }\r\n\r\n const seg = child ? (child.startsWith(\"/\") ? child : \"/\" + child) : \"\";\r\n\r\n if (!base || base === \"/\") {\r\n return seg || \"/\";\r\n }\r\n return base + seg;\r\n }\r\n}\r","import { Component, ComponentBase, assertLoadedComponent, resolveToComponent, unwrapModule, notifyActivated, notifyDeactivated } from \"../\";\nimport { cancelAnimationsDeep } from \"../component/navigation\";\nimport { errorHandler } from \"../common/ErrorHandler\";\nimport { callReported, reportError, reportWarning } from \"../common/diagnostics\";\nimport { NavigationDirection, NavigationOptions, ResolveResult } from \"./\";\nimport { RouterView, RouterViewBuilt } from \"./\";\nimport { UrlRoutingModule } from \"./\";\nimport { RouterViewRegistry } from \"./RouterViewRegistry\";\nimport { RouteItem } from \"./\";\nimport { Application } from \"../\";\nimport { pinServiceOwner, runInConstructionScope } from \"../dependencyInjection/ServiceProvider\";\nimport type { ServiceProvider } from \"../dependencyInjection/ServiceProvider\";\nimport { hasOwnTransition, markDirection, playLeave, unmarkDirection } from \"./NavigationStack\";\nimport type { NavigationStack, RetainedEntry, StackNavigation } from \"./NavigationStack\";\nimport type { RouteSnapshot } from \"./routerState\";\n\ntype StackLeave = { top: ComponentBase | null; retained: RetainedEntry | null; disposeAfter: ComponentBase[] };\ntype StackMotion = { animate: boolean; pages: boolean; direction: NavigationDirection };\ntype NavigationRun = { provider?: ServiceProvider; scope?: ServiceProvider; route: RouteSnapshot; committed: boolean; suppressed: ComponentBase[] };\n\nexport class RoutingEngine {\n\n public stack: NavigationStack | null = null;\n private _revealed: Set<ComponentBase> = new Set();\n\n private root!: ComponentBase;\n private application!: Application;\n private routingModule!: UrlRoutingModule;\n private _previousPath: ResolveResult | null = null;\n private _previousInstances: ComponentBase[] = [];\n\n public register(mainApp: ComponentBase, application: Application, routingModule: UrlRoutingModule) {\n this.root = mainApp;\n this.application = application;\n this.routingModule = routingModule;\n }\n\n private controlCache: Map<RouteItem, any> = new Map();\n\n public async evict(route?: RouteItem | null): Promise<void> {\n const targets: RouteItem[] = route ? [route] : Array.from(this.controlCache.keys());\n for (const r of targets) {\n const inst = this.controlCache.get(r);\n if (!inst || inst.isDisposed) { this.controlCache.delete(r); continue; }\n if (this._previousInstances.includes(inst)) continue;\n this.controlCache.delete(r);\n try { await inst.dispose(); } catch (error) { reportError('MJX307', error); }\n }\n }\n\n\n public async dispose(): Promise<void> {\n this._navVersion++;\n this._previousPath = null;\n this._previousInstances = [];\n this._revealed.clear();\n const stack = this.stack;\n this.stack = null;\n if (stack) { try { await stack.dispose(); } catch { } }\n await this.evict();\n }\n\n generatePathString(routeDefinition: string, params: Record<string, any>): string {\n const parts = routeDefinition.split('/');\n const result = parts.map(part => {\n if (part.startsWith('{') && part.endsWith('}')) {\n const paramDefinition = part.slice(1, -1);\n\n let [paramName, defaultValue] = paramDefinition.split(':');\n\n const isOptional = paramName.endsWith('?');\n if (isOptional) {\n paramName = paramName.slice(0, -1);\n }\n const value = params[paramName];\n if (value !== undefined && value !== null && value !== '') {\n return String(value);\n }\n return defaultValue ?? '';\n\n } else {\n return part;\n }\n })\n .filter(part => part !== '')\n .join('/');\n\n if (routeDefinition.startsWith('/')) {\n return '/' + (result ? result : '');\n }\n return result;\n }\n\n private _navVersion = 0;\n\n private _pendingActivate: Set<ComponentBase> = new Set();\n public async execute(path: ResolveResult, nav?: StackNavigation, route?: RouteSnapshot) {\n route ??= {\n target: path,\n chain: path.chain.map(r => this.generatePathString(r.path, path.params) || ''),\n direction: undefined,\n state: undefined,\n };\n const provider = this._rootProvider();\n const run: NavigationRun = { provider, scope: provider?._beginNavigation(), route, committed: false, suppressed: [] };\n try {\n await this._execute(path, nav, run);\n } finally {\n if (!run.committed && run.scope) provider!._abandonNavigation(run.scope);\n for (const inst of run.suppressed) if (!inst.isDisposed) inst.motif.options.transition._suppressEnter = false;\n }\n }\n\n private _commitNavigation(run: NavigationRun): void {\n if (run.committed) return;\n run.committed = true;\n if (run.scope) run.provider!._commitNavigation(run.scope);\n this.application?._routerState.commit(run.route);\n }\n\n private async _execute(path: ResolveResult, nav: StackNavigation | undefined, run: NavigationRun) {\n const navVersion = ++this._navVersion;\n const stack = this.stack && nav && nav.to ? this.stack : null;\n if (stack) stack.begin(nav!);\n const restored = stack ? stack.take(nav!.to) : null;\n const controlList: any[] = new Array(path.chain.length);\n\n const isSameRoute = !!(this._previousPath &&\n this._previousPath.route === path.route &&\n (this._previousPath.route != null || this._previousPath.fullPath === path.fullPath));\n\n var enableEnter = !!(this._previousPath && this._previousPath.uri === path.uri);\n let paramsChanged = false;\n\n\n if (isSameRoute && path.route) {\n\n const prevParams = this._previousPath!.params || {};\n const newParams = path.params || {};\n let changed = false;\n const allKeys = new Set([...Object.keys(prevParams), ...Object.keys(newParams)]);\n for (const k of allKeys) {\n if (prevParams[k] !== newParams[k]) { changed = true; break; }\n }\n if (changed) {\n paramsChanged = true;\n\n const leafRoute = path.route;\n if (leafRoute && !leafRoute.keepAlive && this.controlCache.has(leafRoute)) {\n if (stack) {\n this.controlCache.delete(leafRoute);\n } else {\n const oldInstance = this.controlCache.get(leafRoute);\n if (oldInstance && typeof oldInstance.dispose === 'function' && !oldInstance.isDisposed) {\n try { await oldInstance.dispose(); } catch { }\n }\n this.controlCache.delete(leafRoute);\n }\n }\n\n try {\n const globalHooks = this.routingModule.getHooks?.() || undefined;\n const updateHook = path.route.onUpdate || globalHooks?.onUpdate;\n if (updateHook) {\n const updateContext = {\n from: {\n path: this._previousPath!.uri || this._previousPath!.fullPath || '',\n params: prevParams\n },\n to: {\n path: path.uri || path.fullPath || '',\n params: newParams\n },\n meta: (path as any).meta ?? path.extend\n };\n await updateHook(updateContext);\n }\n } catch (error) {\n reportError('MJX306', error, 'onUpdate');\n }\n }\n }\n\n if ((!isSameRoute || paramsChanged) && path.route) {\n try {\n const metaInfo = (path as any).meta ?? path.extend;\n const enterContext: any = {\n path: path.uri || path.fullPath || '',\n params: path.params,\n meta: metaInfo,\n to: {\n path: path.uri || path.fullPath || '',\n params: path.params,\n meta: metaInfo\n }\n };\n const globalHooks = this.routingModule.getHooks?.() || undefined;\n const enterHook = path.route.onEntering || globalHooks?.onEntering;\n if (enterHook) {\n await enterHook(enterContext);\n }\n } catch (error) {\n reportError('MJX306', error, 'onEntering');\n }\n }\n\n const prepTasks: Promise<void>[] = [];\n for (let i = 0; i < path.chain.length; i++) {\n const element = path.chain[i];\n const kept = restored && restored.chain[i] === element ? restored.instances[i] : undefined;\n if (kept && !kept.isDisposed && !element.keepAlive) {\n controlList[i] = kept;\n this.controlCache.set(element, kept);\n continue;\n }\n if (this.controlCache.has(element)) {\n let control = this.controlCache.get(element);\n if (!control || control.isDisposed) {\n this.controlCache.delete(element);\n const task = this.createInstance(element.control, run.scope, run.route).then(inst => {\n this.controlCache.set(element, inst);\n controlList[i] = inst;\n });\n prepTasks.push(task);\n } else {\n controlList[i] = control;\n if (element.keepAlive && !this._previousInstances.includes(control)) {\n this._pendingActivate.add(control);\n }\n }\n } else {\n const task = this.createInstance(element.control, run.scope, run.route).then(inst => {\n this.controlCache.set(element, inst);\n controlList[i] = inst;\n });\n prepTasks.push(task);\n }\n }\n if (prepTasks.length) {\n await Promise.all(prepTasks);\n }\n let leave: StackLeave | null = null;\n let motion: StackMotion | null = null;\n const previousInstances = this._previousInstances;\n if (stack) {\n const animate = !!stack.animation && stack.animation !== 'none'\n && (nav!.direction === 'push' || nav!.direction === 'back' || nav!.direction === 'forward');\n motion = { animate, pages: !animate && !stack.gestureCommitPending, direction: nav!.direction };\n leave = await this._stackLeave(path.chain, controlList, nav!, stack, motion);\n if (restored) {\n const top = restored.top;\n if (!top.isDisposed && restored.outlet && top.parent === restored.outlet) {\n stack.reveal(restored);\n restored.outlet.current = top;\n restored.outlet.previouspage = top;\n this._revealed.add(top);\n }\n if (!top.isDisposed) this._pendingActivate.add(top);\n }\n } else {\n await this.disposeFromDivergencePoint(path.chain, controlList);\n }\n const entering: ComponentBase[] = motion ? controlList.filter(c => c && !previousInstances.includes(c)) : [];\n if (motion) {\n for (const inst of previousInstances) unmarkDirection(inst);\n for (const inst of entering) {\n if (motion.pages) markDirection(inst, motion.direction);\n else {\n inst.motif.options.transition._suppressEnter = true;\n run.suppressed.push(inst);\n }\n }\n }\n if (navVersion === this._navVersion) this._commitNavigation(run);\n await this.mountChain(controlList, path.chain, this.root, navVersion);\n if (motion?.pages) {\n if (restored?.attached && !restored.top.isDisposed && hasOwnTransition(restored.top, 'enter')) {\n restored.top.motif.options.transition.enterTransition(() => { });\n }\n for (const inst of entering) if (inst.isBuilt && !hasOwnTransition(inst, 'enter')) unmarkDirection(inst);\n }\n let enteringTop: ComponentBase | null = null;\n if (stack) {\n if (restored) stack.restoreScroll(restored);\n for (let i = 0; i < controlList.length; i++) {\n if (controlList[i] && controlList[i] !== previousInstances[i]) { enteringTop = controlList[i]; break; }\n }\n if (!enteringTop) enteringTop = controlList.length ? controlList[controlList.length - 1] : null;\n stack.record(nav!, enteringTop);\n }\n\n\n\n if (!enableEnter && path.route) {\n\n try {\n const metaInfo = (path as any).meta ?? path.extend;\n const enterContext: any = {\n path: path.uri || path.fullPath || '',\n params: path.params,\n meta: metaInfo,\n to: {\n path: path.uri || path.fullPath || '',\n params: path.params,\n meta: metaInfo\n }\n };\n const globalHooks = this.routingModule.getHooks?.() || undefined;\n const enterHook = path.route?.onEnter || globalHooks?.onEnter;\n if (enterHook) {\n await enterHook(enterContext);\n }\n } catch (error) {\n reportError('MJX306', error, 'onEnter');\n }\n }\n this._previousPath = path;\n this._previousInstances = controlList.slice();\n\n if (stack && leave) {\n if (leave.top && navVersion === this._navVersion && (leave.retained || leave.disposeAfter.length)) {\n await stack.transition(nav!.direction, enteringTop, leave.top);\n }\n if (leave.retained) stack.settle(leave.retained);\n for (const inst of leave.disposeAfter) {\n try { if (!inst.isDisposed) await inst.dispose({ deep: true, skipLeaveTransition: true }); } catch (error) { reportError('MJX307', error); }\n }\n }\n }\n\n private async _stackLeave(newChain: RouteItem[], newInstances: ComponentBase[], nav: StackNavigation, stack: NavigationStack, motion: StackMotion): Promise<StackLeave> {\n const result: StackLeave = { top: null, retained: null, disposeAfter: [] };\n const prevChain = this._previousPath?.chain ?? [];\n const prevInstances = this._previousInstances;\n if (!prevInstances.length) return result;\n\n let d = -1;\n for (let i = 0; i < prevInstances.length; i++) {\n const inst = prevInstances[i];\n if (inst && !newInstances.includes(inst)) { d = i; break; }\n }\n if (d < 0) return result;\n\n if (!prevInstances[d].isDisposed) pinServiceOwner(prevInstances[d]);\n\n const outletFor = (i: number): RouterView | null => {\n const container = i - 1 >= 0 ? prevInstances[i - 1] : this.root;\n const outletName = (prevChain[i]?.extend?.targetOutlet) || 'default';\n try { return container && !container.isDisposed ? this.findRouterView(container, outletName) : null; } catch { return null; }\n };\n\n const top = prevInstances[d];\n const topItem = prevChain[d];\n if (stack.isRetaining(nav) && top && !top.isDisposed && !topItem?.keepAlive) {\n const outlet = outletFor(d);\n if (outlet && outlet.current === top) {\n outlet.current = null;\n outlet.previouspage = null;\n }\n cancelAnimationsDeep(top);\n if (motion.pages && hasOwnTransition(top, 'leave')) {\n markDirection(top, motion.direction);\n await playLeave(top);\n unmarkDirection(top);\n }\n for (let i = d; i < prevInstances.length; i++) {\n const item = prevChain[i];\n if (item && !item.keepAlive && this.controlCache.get(item) === prevInstances[i]) this.controlCache.delete(item);\n }\n result.top = top;\n result.retained = stack.retain(nav.from!, this._previousPath?.uri ?? '', prevChain, prevInstances, d, outlet, motion.animate);\n return result;\n }\n\n const deferTop = motion.animate && !!top && !top.isDisposed && !topItem?.keepAlive;\n for (let i = prevInstances.length - 1; i >= d; i--) {\n const inst = prevInstances[i];\n const item = prevChain[i];\n if (!inst || newInstances.includes(inst)) continue;\n if (inst.isDisposed) {\n if (item && this.controlCache.get(item) === inst) this.controlCache.delete(item);\n continue;\n }\n if (deferTop && i > d && !item?.keepAlive) {\n if (item && this.controlCache.get(item) === inst) this.controlCache.delete(item);\n continue;\n }\n try {\n const outlet = outletFor(i);\n if (outlet && outlet.current === inst) {\n outlet.current = null;\n outlet.previouspage = null;\n }\n if (item?.keepAlive) {\n cancelAnimationsDeep(inst);\n try { inst.parent?.controls.silentDetach(inst); } catch { /* ignore */ }\n if (!this.controlCache.has(item)) this.controlCache.set(item, inst);\n notifyDeactivated(inst);\n } else {\n if (item && this.controlCache.get(item) === inst) this.controlCache.delete(item);\n if (deferTop && i === d) {\n result.top = inst;\n result.disposeAfter.push(inst);\n } else if (motion.pages) {\n markDirection(inst, motion.direction);\n await inst.dispose();\n } else {\n await inst.dispose({ deep: true, skipLeaveTransition: true });\n }\n }\n } catch (error) {\n reportError('MJX307', error);\n }\n }\n return result;\n }\n\n private async disposeFromDivergencePoint(newChain: RouteItem[], newInstances: ComponentBase[]): Promise<void> {\n if (!this._previousPath || !this._previousInstances.length) {\n return;\n }\n\n const prevChain = this._previousPath.chain;\n const prevInstances = this._previousInstances;\n\n let divergeIndex = 0;\n const minLength = Math.min(prevChain.length, newChain.length);\n\n for (let i = 0; i < minLength; i++) {\n if (prevChain[i] === newChain[i]) {\n divergeIndex = i + 1;\n } else {\n break;\n }\n }\n\n for (let i = prevInstances.length - 1; i >= divergeIndex; i--) {\n const inst = prevInstances[i];\n const item = prevChain[i];\n if (!inst || inst.isDisposed) {\n if (item && this.controlCache.get(item) === inst) this.controlCache.delete(item);\n continue;\n }\n try {\n const containerIndex = i - 1;\n const container = containerIndex >= 0 ? prevInstances[containerIndex] : this.root;\n const outletName = (item?.extend?.targetOutlet) || 'default';\n const outlet = this.findRouterView(container, outletName);\n\n if (outlet && outlet.current === inst) {\n outlet.current = null;\n outlet.previouspage = null;\n }\n\n if (item?.keepAlive) {\n cancelAnimationsDeep(inst);\n try { inst.parent?.controls.silentDetach(inst); } catch { /* ignore */ }\n if (!this.controlCache.has(item)) this.controlCache.set(item, inst);\n notifyDeactivated(inst);\n } else {\n if (this.controlCache.get(item) === inst) this.controlCache.delete(item);\n await inst.dispose();\n }\n } catch (error) {\n reportError('MJX307', error);\n }\n }\n }\n\n private _construct<T>(scope: ServiceProvider | undefined, route: RouteSnapshot | undefined, create: () => T): T {\n const state = this.application?._routerState;\n return runInConstructionScope(scope, () => state ? state.constructWith(route, create) : create());\n }\n\n private async parseControl(control: RouteItem['control'], scope?: ServiceProvider, route?: RouteSnapshot): Promise<any> {\n var instance = this._construct(scope, route, () => this._resolveFrom(scope, control));\n if (instance) {\n return instance;\n }\n let val = control as any;\n if (val instanceof Promise) {\n val = unwrapModule(await val);\n }\n\n instance = this._construct(scope, route, () => this._resolveFrom(scope, val));\n if (instance) {\n return instance;\n }\n\n if (typeof val === 'function') {\n return this.parseControl(this._construct(scope, route, () => resolveToComponent(val, this.application)), scope, route);\n }\n return resolveToComponent(val);\n }\n\n private _resolveFrom(scope: ServiceProvider | undefined, token: any): any {\n const provider = scope ?? this._rootProvider();\n if (!provider || !provider.getAllServices().getDescriptor(token)) return null;\n return provider.get(token);\n }\n\n private _rootProvider(): ServiceProvider | undefined {\n try { return this.application?.provider ?? Application.main?.provider; } catch { return undefined; }\n }\n\n private async createInstance(control: RouteItem['control'], scope?: ServiceProvider, route?: RouteSnapshot): Promise<any> {\n return await this._instanceCreator(control, scope, route);\n }\n\n private async _instanceCreator(control: RouteItem['control'], scope?: ServiceProvider, route?: RouteSnapshot): Promise<any> {\n let val = await this.parseControl(control, scope, route) as any;\n assertLoadedComponent(val);\n // if (val instanceof Promise) {\n // return result.default ? result.default : result;\n\n // if (typeof val === 'function') {\n // try {\n // return val(this.application);\n // } catch {\n // // fallback: try as constructor\n // return new (val as any)(this.application);\n\n\n // if (val && typeof val.then === 'function') {\n // return await val;\n return val;\n }\n\n private async activator(container: ComponentBase) {\n try {\n //const reflect: any = (Reflect as any)?.getMetadata ? Reflect : null;\n //const paramTypes: any[] | undefined = reflect ? (Reflect as any).getMetadata('design:paramtypes', container) as any[] : undefined;\n // if (Array.isArray(paramTypes) && paramTypes.length) {\n // const args: any[] = [];\n // let anyResolved = false;\n // for (const t of paramTypes) {\n // try {\n // // try resolve token; if not registered, provider.getAsync will throw\n // const inst = await sp.getAsync(t);\n // } catch {\n // if (anyResolved) {\n // // If it looks like a constructor, try `new`, otherwise call as function\n // try { return new (container as any)(...args); } catch { return (container as any)(...args); }\n } catch { /* ignore */ }\n }\n pendingMount: WeakMap<any, Promise<void>> = new WeakMap();\n private pendingListeners = new WeakMap<ComponentBase, Function>(); \n private static readonly OUTLET_WARN_MS = 3000;\n \n private async mountChain(instances: any[], chain: any[], container: ComponentBase, navVersion: number): Promise<void> { \n for (let index = 0; index < instances.length;) { \n if (navVersion !== this._navVersion) return;\n\n let inst = instances[index] as ComponentBase; \n if (inst?.isDisposed) {\n inst = await this.createInstance(chain[index].control, this._rootProvider()?._currentScope());\n instances[index] = inst;\n }\n const outletName = (chain[index] && chain[index].extend && chain[index].extend.targetOutlet) || 'default';\n \n const outlet = this.findRouterView(container, outletName);\n \n if (!outlet || !container.isBuilt) {\n this._waitForOutlet(container, instances.slice(index), chain.slice(index), navVersion, outletName);\n return;\n }\n\n const revealed = this._revealed.delete(inst);\n const alreadyShown = outlet.current === inst && !revealed;\n await outlet.navigate(inst);\n if (this._pendingActivate.delete(inst)) {\n notifyActivated(inst);\n }\n const showHook = (chain[index] as RouteItem | undefined)?.onShow;\n if (showHook && !alreadyShown && outlet.current === inst && navVersion === this._navVersion) {\n callReported(() => showHook(inst), 'MJX306', 'onShow');\n }\n container = inst;\n index++;\n }\n }\n \n private _waitForOutlet(container: ComponentBase, instances: any[], chain: any[], navVersion: number, outletName: string): void {\n \n const oldCleanup = this.pendingListeners.get(container);\n if (oldCleanup) {\n try { oldCleanup(); } catch { }\n this.pendingListeners.delete(container);\n }\n\n let done = false;\n let warnTimer: any = undefined;\n\n const handler = async (_s: any, _e: any) => {\n if (done) return;\n cleanup(); \n if (navVersion !== this._navVersion) return;\n await this.mountChain(instances, chain, container, navVersion);\n };\n\n const cleanup = () => {\n if (done) return;\n done = true;\n this.pendingListeners.delete(container);\n try { (container as any).motif?.off?.(RouterViewBuilt as any, handler); } catch { }\n if (warnTimer !== undefined) {\n try { clearTimeout(warnTimer); } catch { }\n warnTimer = undefined;\n }\n };\n\n container.motif.on(RouterViewBuilt as any, handler);\n this.pendingListeners.set(container, cleanup);\n\n if (errorHandler.isDevelopment()) {\n warnTimer = setTimeout(() => {\n if (!done && navVersion === this._navVersion) {\n reportWarning('MJX301', [outletName, RoutingEngine.OUTLET_WARN_MS]);\n }\n }, RoutingEngine.OUTLET_WARN_MS);\n }\n }\n\n\n\n\n private findRouterView(root: ComponentBase, name: string = 'default'): RouterView | null {\n // 1) Önce mevcut container'ın ALT AĞACINDA ara (yakınlık öncelikli)\n const stack: ComponentBase[] = (root.controls?.items || []).slice();\n while (stack.length) {\n const c = stack.shift()!;\n if (!c || c.isDisposed) continue;\n if ((c as any).__isRouterView) {\n const rv = c as any as RouterView;\n if ((rv.props.name || 'default') === name) return rv;\n }\n if (c.controls && c.controls.items && c.controls.items.length) {\n for (const ch of c.controls.items) stack.push(ch);\n }\n }\n\n // 2) Alt ağaçta bulunamadıysa ve isim 'default' ise: üst/yan dallara BAKMA.\n if (!name || name === 'default') {\n return null;\n }\n\n const scopeId = typeof (root as any).scopeId === 'function' ? (root as any).scopeId() : (root as any).scopeId ?? '';\n var x = RouterViewRegistry.find(name, scopeId);\n if (x) return x;\n\n // 3) İsimli outlet için ÜST AĞAÇLARDA arama: her bir üst ata için, o atanının\n let current: any = root;\n let parent: any = current?.parent;\n while (parent) {\n const siblings: ComponentBase[] = (parent.controls?.items || []).filter((it: any) => it !== current);\n const q: ComponentBase[] = siblings.slice();\n while (q.length) {\n const node = q.shift()!;\n if (!node || (node as any).isDisposed) continue;\n if ((node as any).__isRouterView) {\n const rv = node as any as RouterView;\n if ((rv.props.name || 'default') === name) return rv;\n }\n if ((node as any).controls && (node as any).controls.items && (node as any).controls.items.length) {\n for (const ch of (node as any).controls.items) q.push(ch);\n }\n }\n current = parent;\n parent = parent.parent;\n }\n\n // 4) Hiçbir yerde bulunmadı\n return null;\n }\n\n}","import { Application, Component, ComponentBase, dom, EventArgs, isExactMatch, startsWithPath } from \"../\";\r\nimport { Router } from \"./common\";\r\n\r\ntype RouterLinkOptions = {\r\n to: string;\r\n el?: string | Node;\r\n showHref?: boolean;\r\n text?: string;\r\n exactClass?: string;\r\n activeClass?: string;\r\n bypass?: boolean;\r\n target?: string;\r\n onExact?: () => void;\r\n offExact?: () => void;\r\n onActive?: () => void;\r\n offActive?: () => void;\r\n};\r\n\r\nexport class RouterLink extends Component<any, RouterLinkOptions> {\r\n constructor(props: RouterLinkOptions) {\r\n\r\n super(props.el ?? 'a', props);\r\n if (props.showHref !== false) this.attr.add({ href: Application.main?._addressOf(props.to) ?? props.to });\r\n if (props.target) this.attr.add({ target: props.target });\r\n\r\n this.motif.on('click', (s, e: MouseEvent) => {\r\n if (props.bypass) return;\r\n if (props.target && props.target !== '_self') return;\r\n if (e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return;\r\n e.preventDefault();\r\n const router: Router | undefined = Application.main.router;\r\n if (router) router.navigate(props.to);\r\n });\r\n\r\n if (this.childs && this.childs.length) {\r\n this.controls.add(...this.childs);\r\n } else if (props.text != null) {\r\n this.attr.add({ textContent: props.text });\r\n }\r\n\r\n }\r\n\r\n public onBuilt(sender: ComponentBase, e: EventArgs): void {\r\n this.motif.options.enableRouterClassing = {\r\n to: 'all',\r\n path: this.props.to,\r\n activeClass: this.props.activeClass,\r\n exactClass: this.props.exactClass,\r\n onActive: this.props.onActive,\r\n offActive: this.props.offActive,\r\n onExact: this.props.onExact,\r\n offExact: this.props.offExact\r\n }\r\n }\r\n\r\n}\r\n","import { $, Application, dom, safeCallSilentAsync } from \"..\";\nimport { Component } from \"../\";\nimport { NavigationDirection, NavigationOptions, ResolveResult, RouteInfo, RouteResolveContext, RouterOptions, StackEntryInfo } from \"./\";\nimport type { RouteSnapshot } from \"./routerState\";\nimport { ScrollMemory } from \"./scrollMemory\";\nimport { NavigationStack, StackNavigation } from \"./NavigationStack\";\nimport { RouteCollection, compareRouteRecords } from \"./\";\nimport { RouteItem, RouteRecord, RouterValidateEventArgs } from \"./\";\nimport { RoutingEngine } from \"./\";\nimport { errorHandler } from \"../common/ErrorHandler\";\nimport { devtools } from \"../devtools/devbus\";\nimport { motifError, reportError, reportWarning } from \"../common/diagnostics\";\n\nconst pathOf = (uri: string): string => uri.split('#')[0].split('?')[0];\n\ntype HistoryStamp = { index: number; session: string; hasState?: boolean };\n\ntype TraversalInfo = { direction: NavigationDirection; state: any; from: HistoryStamp | null };\n\nconst newHistorySession = (): string => Math.random().toString(36).slice(2, 10) + Date.now().toString(36);\n\nexport class UrlRoutingModule {\n private static readonly MAX_REDIRECTS = 10;\n private _routerOptions: RouterOptions;\n private routingEngine: RoutingEngine;\n routeCollection!: RouteCollection\n private routesMap: Map<any, RouteItem> = new Map();\n private mainApp!: Component;\n private application: Application;\n private _suppressBeforeEachOnce: boolean = false;\n private _suppressMiddlewaresOnce: boolean = false;\n private _scroll: ScrollMemory | null = null;\n\n constructor(options: RouterOptions, application: Application) {\n this._routerOptions = options;\n this.routeCollection = new RouteCollection(options.RouteItems);\n this.routingEngine = new RoutingEngine();\n this.application = application;\n this._installLinkInterceptor();\n\n const scrollMemory = options.scrollMemory;\n if (scrollMemory) {\n this._scroll = new ScrollMemory(scrollMemory === true ? {} : scrollMemory);\n this._scroll.locationAnchor = this._addressMode() === 'history';\n }\n\n if (options.stack && options.mode !== 'shell') {\n this._stack = new NavigationStack(options.stack);\n this.routingEngine.stack = this._stack;\n }\n }\n\n private _stack: NavigationStack | null = null;\n public getHooks(): RouterOptions['hooks'] | undefined {\n return this._routerOptions.hooks;\n }\n\n private _windowNavListener: ((this: Window, ev: Event) => any) | null = null;\n public start(mainApp: Component, shellUri?: string) {\n this.mainApp = mainApp;\n this.routingEngine.register(this.mainApp, this.application, this);\n const path = this._routerOptions.mode === 'shell' ? (shellUri ?? '/') : this._getCurrentUri();\n this._seedHistoryIndex();\n this._suppressMiddlewaresOnce = true;\n this.navigate(path);\n if (this._routerOptions.mode === 'shell') return;\n this._windowNavListener = () => {\n void this._onHistoryTraversal();\n };\n window.addEventListener(\n this._routerOptions.mode === 'hash' || this._routerOptions.mode === 'file' ? 'hashchange' : 'popstate',\n this._windowNavListener\n );\n }\n\n public get shownUri(): string | undefined {\n return this._previousRoute ? this._currentUri : undefined;\n }\n\n private _getCurrentUri(): string {\n try {\n const w = window as any;\n const mode = this._routerOptions.mode || (w?.location?.protocol === 'file:' ? 'hash' : 'history');\n if (mode === 'hash' || mode === 'file') {\n const h = w?.location?.hash || '';\n return h && h.startsWith('#') ? h.slice(1) || '/' : '/';\n }\n return (w?.location?.pathname || '/') + (w?.location?.search || '') + (w?.location?.hash || '');\n } catch { return '/'; }\n }\n\n private static readonly HISTORY_STAMP_KEY = '__motifHistory';\n private _historyStamp: HistoryStamp | null = null;\n\n private _addressMode(): NonNullable<RouterOptions['mode']> {\n const w = window as any;\n return this._routerOptions.mode || (w?.location?.protocol === 'file:' ? 'hash' : 'history');\n }\n\n public addressOf(uri: string): string {\n const mode = this._addressMode();\n if (mode === 'hash' || mode === 'file') return uri.startsWith('#') ? uri : '#' + uri;\n return uri;\n }\n\n private _readHistoryStamp(): HistoryStamp | null {\n try {\n const state = (window as any)?.history?.state;\n const stamp = state && typeof state === 'object' ? state[UrlRoutingModule.HISTORY_STAMP_KEY] : null;\n if (stamp && typeof stamp === 'object' && typeof stamp.index === 'number' && Number.isFinite(stamp.index) && typeof stamp.session === 'string') {\n return { index: stamp.index, session: stamp.session };\n }\n } catch { }\n return null;\n }\n\n private static _isPlainObject(value: any): boolean {\n if (!value || typeof value !== 'object') return false;\n const proto = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n }\n\n private _withHistoryStamp(state: any, stamp: HistoryStamp): any {\n if (state == null) return { [UrlRoutingModule.HISTORY_STAMP_KEY]: stamp };\n if (UrlRoutingModule._isPlainObject(state)) {\n return { ...state, [UrlRoutingModule.HISTORY_STAMP_KEY]: stamp };\n }\n return state;\n }\n\n private _routerState(userState: any, stamp: HistoryStamp): any {\n return userState\n ? this._withHistoryStamp(userState, { ...stamp, hasState: true })\n : this._withHistoryStamp(null, stamp);\n }\n\n private _userStateOf(historyState: any): any {\n if (historyState == null) return undefined;\n if (!UrlRoutingModule._isPlainObject(historyState)) return historyState;\n const key = UrlRoutingModule.HISTORY_STAMP_KEY;\n if (!(key in historyState)) return historyState;\n const stamp = historyState[key];\n if (!stamp || stamp.hasState !== true) return undefined;\n const { [key]: _omit, ...rest } = historyState;\n return rest;\n }\n\n private _currentHistoryUserState(): any {\n if (this._addressMode() === 'shell') return undefined;\n try { return this._userStateOf((window as any)?.history?.state); } catch { return undefined; }\n }\n\n private _nextHistoryStamp(push: boolean): HistoryStamp {\n const base = this._historyStamp;\n if (!base) return { index: 0, session: newHistorySession() };\n return { index: push ? base.index + 1 : base.index, session: base.session };\n }\n\n private _stampCurrentEntry(stamp: HistoryStamp, userState?: any): void {\n try {\n const w = window as any;\n if (!w?.history || typeof w.history.replaceState !== 'function') return;\n const current = w.history.state;\n let next: any;\n if (userState) {\n next = this._routerState(userState, stamp);\n } else {\n const hasState = UrlRoutingModule._isPlainObject(current) && Object.keys(current).length > 0;\n next = this._withHistoryStamp(current, hasState ? { ...stamp, hasState: true } : stamp);\n }\n if (next !== current) w.history.replaceState(next, '');\n } catch { }\n }\n\n private _seedHistoryIndex(): void {\n if (this._addressMode() === 'shell') return;\n const existing = this._readHistoryStamp();\n if (existing) {\n this._historyStamp = existing;\n return;\n }\n const stamp: HistoryStamp = { index: 0, session: newHistorySession() };\n this._stampCurrentEntry(stamp);\n this._historyStamp = stamp;\n }\n\n private _pendingTraversal: TraversalInfo | null = null;\n\n private async _onHistoryTraversal(): Promise<void> {\n const shown = this._historyStamp;\n const arrived = this._readHistoryStamp();\n this._historyStamp = arrived;\n let direction: NavigationDirection = 'traverse';\n if (shown && arrived && shown.session === arrived.session && shown.index !== arrived.index) {\n direction = arrived.index < shown.index ? 'back' : 'forward';\n }\n this._pendingTraversal = { direction, state: this._currentHistoryUserState(), from: shown };\n let result: any;\n try {\n result = await this.navigate(this._getCurrentUri());\n } finally {\n this._pendingTraversal = null;\n }\n const cancelled = !!result && result.cancelled === true;\n try { this._stack?.traversalSettled(cancelled); } catch { }\n if (!cancelled) return;\n const now = this._readHistoryStamp();\n this._historyStamp = now;\n if (!shown || !now || now.session !== shown.session) return;\n const delta = shown.index - now.index;\n if (delta === 0) return;\n try { (window as any).history.go(delta); } catch { }\n }\n\n private _currentUri: string = '___startup___';\n private _previousRoute: any = null;\n\n public get currentUri(): string {\n return this._currentUri;\n }\n\n public async navigate(uri: string, options?: NavigationOptions): Promise<any> {\n const traversal = this._pendingTraversal;\n this._pendingTraversal = null;\n\n return await safeCallSilentAsync(async () => {\n\n try { devtools()?.('route:navigation-start', { uri }); } catch { }\n const suppressBeforeEachThisCall = this._suppressBeforeEachOnce;\n if (suppressBeforeEachThisCall) {\n this._suppressBeforeEachOnce = false;\n }\n const suppressMiddlewaresThisCall = this._suppressMiddlewaresOnce;\n if (suppressMiddlewaresThisCall) {\n this._suppressMiddlewaresOnce = false;\n }\n const navOptions: NavigationOptions = options || {};\n const force = navOptions.force || false;\n\n if (uri === this._currentUri && !force) {\n return { ok: true, skipped: true, uri };\n }\n\n let gate: { proceed: boolean; uri: string };\n if (suppressMiddlewaresThisCall) {\n gate = { proceed: true, uri };\n } else {\n gate = await this._runMiddlewares(uri);\n }\n\n if (!gate.proceed) {\n return {\n ok: false,\n uri: gate.uri,\n cancelled: true,\n reason: 'middleware'\n };\n }\n uri = gate.uri;\n\n let target = this.resolve(uri);\n\n let redirectedFrom: string | undefined;\n let redirectError: Error | undefined;\n let redirectChain = '';\n if (target.ok && target.route?.redirect) {\n const requested = uri;\n const visited: string[] = [requested];\n while (target.ok && target.route?.redirect) {\n const next = this._resolveRedirect(target, uri);\n if (!next) break;\n if (visited.length > UrlRoutingModule.MAX_REDIRECTS || visited.some(v => pathOf(v) === pathOf(next))) {\n redirectChain = [...visited, next].join(' → ');\n redirectError = motifError('MJX303', redirectChain);\n break;\n }\n visited.push(next);\n uri = next;\n target = this.resolve(uri);\n }\n if (redirectError) {\n reportWarning('MJX303', [redirectChain]);\n uri = requested;\n target = this._buildFallbackResult(uri, 'error', { path: uri, error: redirectError });\n } else if (uri !== requested) {\n redirectedFrom = requested;\n if (uri === this._currentUri && !force) {\n return { ok: true, skipped: true, uri };\n }\n }\n }\n\n const wasInitialNavigation = !this._previousRoute;\n const direction: NavigationDirection = wasInitialNavigation\n ? 'initial'\n : traversal ? traversal.direction : (navOptions.replace ? 'replace' : 'push');\n const entryState = traversal\n ? traversal.state\n : (wasInitialNavigation && navOptions.state === undefined ? this._currentHistoryUserState() : (navOptions.state || undefined));\n\n const toRoute = {\n path: target.uri || uri,\n params: target.params,\n meta: (target as any).meta ?? target.extend,\n options: options,\n redirectedFrom,\n direction,\n state: entryState\n };\n\n const fromRoute = this._previousRoute ? {\n path: this._previousRoute.path,\n params: this._previousRoute.params,\n meta: this._previousRoute.meta,\n options: this._previousRoute.options\n } : null;\n\n if (this._previousRoute && this._previousRoute.routeItem) {\n const currentRouteItem = this._previousRoute.routeItem as RouteItem;\n const leaveHook = currentRouteItem.onLeave || this._routerOptions.hooks?.onLeave;\n if (leaveHook) {\n try {\n const leaveContext = {\n from: {\n path: this._previousRoute.path,\n params: this._previousRoute.params,\n meta: this._previousRoute.meta\n },\n to: toRoute\n };\n const leaveResult = await leaveHook(leaveContext);\n if (leaveResult === false) {\n return { ok: false, cancelled: true, reason: 'onLeave' };\n }\n if (leaveResult && typeof leaveResult === 'object' && (leaveResult as any).cancel === true) {\n const customReason = (leaveResult as any).reason || 'onLeave';\n return { ok: false, cancelled: true, reason: customReason };\n }\n } catch (error) {\n reportError('MJX306', error, 'onLeave');\n }\n }\n }\n\n let guardResult: string | false | true = true;\n if (!suppressBeforeEachThisCall) {\n guardResult = await this.application._runBeforeEachGuards(toRoute, fromRoute);\n }\n\n if (guardResult === false) {\n return { ok: false, cancelled: true, reason: 'guard' };\n }\n\n if (typeof guardResult === 'string') {\n const addressShowsBlocked = this._addressShows(uri, redirectedFrom);\n return await this.navigate(guardResult, addressShowsBlocked ? { ...navOptions, replace: true } : options);\n }\n\n const snapshotOf = (result: ResolveResult): RouteSnapshot => ({\n target: result,\n chain: this.chainOf(result),\n direction,\n state: entryState,\n });\n\n if (!target.ok && !redirectError) {\n target = this._buildFallbackResult(uri, 'notFound', { path: uri });\n }\n this._currentUri = uri;\n this._previousRoute = {\n path: target.uri,\n params: target.params,\n meta: (target as any).meta ?? target.extend,\n routeItem: target.route\n };\n\n let appliedPath = target.uri;\n\n this._scroll?.leaving();\n\n const leavingStamp = traversal ? traversal.from : this._historyStamp;\n try {\n const replaceSource = !!redirectedFrom && this._addressShows(redirectedFrom);\n this._applyUrl(appliedPath, replaceSource ? { ...navOptions, replace: true } : navOptions);\n } catch { }\n const stackNav: StackNavigation | undefined = this._stack\n ? { direction, from: leavingStamp, to: this._historyStamp, uri: appliedPath }\n : undefined;\n\n try {\n await this.routingEngine.execute(target, stackNav, snapshotOf(target));\n } catch (error) {\n reportError('MJX304', error);\n target = this._buildFallbackResult(uri, 'error', { path: uri, error });\n try { await this.routingEngine.execute(target, stackNav, snapshotOf(target)); } catch (e2) { reportError('MJX305', e2); }\n }\n if (this._stack) this.application._routerState.touch();\n if (navOptions.scroll) { \n this._handleScrollBehavior(navOptions.scroll);\n } else {\n this._scroll?.arrived(this._uriWithHash(appliedPath, uri), direction);\n }\n this.application.fire?.('motifjs-router-navigated', {\n uri: appliedPath,\n params: target.params,\n meta: (target as any).meta ?? target.extend,\n route: target.ok ? target.route : null,\n ok: target.ok,\n initial: wasInitialNavigation,\n redirectedFrom,\n direction,\n state: entryState\n });\n try { devtools()?.('route:navigation-end', { uri: appliedPath, params: target.params }); } catch { }\n\n return target;\n\n }, 'UrlRoutingModule.navigate');\n\n }\n \n public describeStack(): StackEntryInfo[] | undefined {\n return this._stack ? this._stack.describe() : undefined;\n }\n\n public routeInfos(): RouteInfo[] {\n const out: RouteInfo[] = [];\n const visit = (node: RouteItem, chain: RouteItem[]) => {\n const nextChain = [...chain, node];\n out.push({\n fullPath: node.fullPath || node.path,\n name: node.name ?? null,\n meta: node.meta ?? node.extend ?? {},\n route: node,\n chain: nextChain,\n });\n for (const child of node.childs || []) visit(child, nextChain);\n };\n for (const node of this.routeCollection?.['routes'] || []) visit(node, []);\n return out;\n }\n\n public href(name: string, params?: Record<string, any>): string {\n const routeItem = this.routeCollection['routesMap']?.get(name);\n if (!routeItem) throw motifError('MJX302', name);\n const path = routeItem.fullPath || routeItem.path;\n return this.routingEngine.generatePathString(path, params || {}) || path;\n }\n\n public async evict(route?: RouteItem | string | null): Promise<void> {\n let item: RouteItem | null | undefined = null;\n if (typeof route === 'string') {\n item = this.routeCollection['routesMap']?.get(route);\n if (!item) throw motifError('MJX302', String(route));\n } else {\n item = route;\n }\n await this.routingEngine.evict(item);\n }\n\n private _fallbackRoutes: { notFound?: RouteItem; error?: RouteItem } = {};\n\n private _getFallbackRoute(kind: 'notFound' | 'error'): RouteItem {\n const existing = this._fallbackRoutes[kind];\n if (existing) return existing;\n const custom = this._routerOptions.fallbacks?.[kind];\n const control = custom ?? (kind === 'notFound' ? UrlRoutingModule._builtinNotFound : UrlRoutingModule._builtinError);\n const item: RouteItem = {\n path: '',\n fullPath: null,\n control,\n name: kind === 'notFound' ? 'not-found' : 'error',\n childs: [],\n extend: {},\n meta: {},\n validate: undefined,\n keepAlive: false,\n };\n this._fallbackRoutes[kind] = item;\n return item;\n }\n\n private _buildFallbackResult(uri: string, kind: 'notFound' | 'error', params: Record<string, any>): ResolveResult {\n const fallback = this._getFallbackRoute(kind);\n const prefix = this._findLayoutPrefix(uri);\n const chain = [...(prefix?.chain ?? []), fallback];\n const mergedExtend: Record<string, any> = {};\n const mergedMeta: Record<string, any> = {};\n for (const item of chain) {\n if (item?.extend && typeof item.extend === 'object') Object.assign(mergedExtend, item.extend);\n if (item?.meta && typeof item.meta === 'object') Object.assign(mergedMeta, item.meta);\n }\n return {\n ok: false,\n uri,\n fullPath: null,\n route: fallback,\n chain,\n params: { ...(prefix?.params ?? {}), ...params },\n extend: mergedExtend,\n meta: mergedMeta,\n };\n }\n\n private _findLayoutPrefix(uri: string): { chain: RouteItem[]; params: Record<string, any> } | null {\n const path = uri.split('?')[0].split('#')[0];\n const segs = path.split('/').filter(Boolean);\n let best: { rec: RouteRecord; params: Record<string, any>; depth: number } | null = null;\n for (const rec of this.routeCollection?.records || []) {\n if (!rec.leaf.childs || !rec.leaf.childs.length) continue;\n const depth = rec.fullPath.split('/').filter(Boolean).length;\n if (depth > segs.length) continue;\n const prefix = '/' + segs.slice(0, depth).join('/');\n let matched = false;\n try { matched = rec.scanner.exist(prefix, this._pageSearch()); } catch { matched = false; }\n if (!matched) continue;\n const params = { ...rec.scanner.parameters };\n if (!this.validateChain(prefix, rec, params)) continue;\n if (!best || rec.chain.length > best.rec.chain.length || (rec.chain.length === best.rec.chain.length && depth > best.depth)) {\n best = { rec, params, depth };\n }\n }\n return best ? { chain: best.rec.chain, params: best.params } : null;\n }\n\n private static _builtinNotFound = () => new Component('div', {\n initializeComponent(sender: Component) {\n sender.style({\n padding: '20px', fontFamily: 'Arial, sans-serif', display: 'flex', 'flex-direction': 'column', 'align-items': 'center'\n });\n (sender.element as HTMLElement).appendChild($('h2', {}, ...['404 - Not Found']));\n (sender.element as HTMLElement).appendChild($('p', {}, ...['The requested page was not found.']));\n },\n });\n\n private static _builtinError = () => new Component('div', {\n initializeComponent(sender: Component) {\n sender.style({\n padding: '20px', fontFamily: 'Arial, sans-serif', display: 'flex', 'flex-direction': 'column', 'align-items': 'center'\n });\n (sender.element as HTMLElement).appendChild($('h2', {}, ...['Error']));\n (sender.element as HTMLElement).appendChild($('p', {}, ...['The requested page could not be loaded.']));\n },\n });\n\n public async navigateByName(name: string, params?: Record<string, any>, options?: NavigationOptions): Promise<any> {\n\n return await this.navigate(this.href(name, params), options);\n }\n\n private async _runMiddlewares(initialUri: string): Promise<{ proceed: boolean, uri: string }> {\n let urix = initialUri;\n const ctx: RouteResolveContext = {\n uri: urix,\n rewritePath: (uri: string) => {\n urix = uri;\n (ctx as any).uri = uri;\n },\n context: this.application\n };\n let proceed = false;\n const stack = this._routerOptions.middlewareCollections ? this._routerOptions.middlewareCollections() || [] : [];\n const dispatch = async (i: number): Promise<void> => {\n if (i === stack.length) { proceed = true; return; }\n const fn = stack[i];\n await fn(ctx, async () => { await dispatch(i + 1); });\n };\n if (stack.length === 0) {\n proceed = true;\n } else {\n await dispatch(0);\n }\n return { proceed, uri: urix };\n }\n\n public chainOf(result: ResolveResult): string[] {\n return result.chain.map(r => this.routingEngine.generatePathString(r.path, result.params) || '');\n }\n\n public resolve(uri: string): ResolveResult {\n const candidates: Array<{ rec: RouteRecord; params: Record<string, any> }> = [];\n const pageSearch = this._pageSearch();\n for (const rec of this.routeCollection?.records! || []) {\n if (!rec.scanner.exist(uri, pageSearch)) continue;\n const params = { ...rec.scanner.parameters };\n if (!this.validateChain(uri, rec, params)) continue;\n candidates.push({ rec, params });\n }\n\n if (candidates.length === 0) {\n const catchAll = (this.routeCollection?.records || []).find(r => r.scanner.exist('/*'));\n if (catchAll) {\n const mergedExtend: Record<string, any> = {};\n try {\n for (const item of catchAll.chain) {\n if (item && item.extend && typeof item.extend === 'object') {\n Object.assign(mergedExtend, item.extend);\n }\n }\n } catch { /* ignore */ }\n\n return {\n ok: true,\n uri,\n fullPath: catchAll.fullPath,\n route: catchAll.leaf,\n chain: catchAll.chain,\n params: {},\n extend: mergedExtend || {},\n meta: (catchAll as any).meta || {}\n };\n }\n\n return {\n ok: false,\n uri,\n fullPath: null,\n route: null,\n chain: [],\n params: {},\n extend: {}\n };\n }\n\n let best = candidates[0];\n const groups = new Map<string, Array<{ rec: RouteRecord; params: Record<string, any> }>>();\n for (const c of candidates) {\n // Aynı path grubunda en uzun zincirli olanı seç.\n const key = c.rec.fullPath;\n const arr = groups.get(key) || [];\n arr.push(c); groups.set(key, arr);\n }\n let pickedFromDuplicate = false;\n for (const [key, arr] of groups) {\n if (arr.length > 1) {\n // Legacy sıralamaya dön: sığ zincir önce, sonra uzun fullPath. \n const pool = arr.some(c => !c.rec.aliasOf) ? arr.filter(c => !c.rec.aliasOf) : arr;\n const deepest = pool.reduce((a, b) => a.rec.chain.length >= b.rec.chain.length ? a : b);\n best = deepest;\n pickedFromDuplicate = true;\n break;\n }\n }\n if (!pickedFromDuplicate) {\n // En iyi adayı ResolveResult'a dönüştür.\n // Ortak tercih kuralı (RouteCollection.compareRouteRecords): sığ zincir, statik segment, az parametre, uzun path\n best = candidates.reduce((a, b) => compareRouteRecords(a.rec, b.rec) <= 0 ? a : b, candidates[0]);\n }\n\n const rec = best.rec;\n const params = best.params;\n const mergedExtend: Record<string, any> = {};\n try {\n for (const item of rec.chain) {\n if (item && item.extend && typeof item.extend === 'object') {\n Object.assign(mergedExtend, item.extend);\n }\n }\n } catch { /* ignore */ }\n return {\n ok: true,\n uri,\n fullPath: rec.fullPath,\n aliasOf: rec.aliasOf ?? null,\n route: rec.leaf,\n chain: rec.chain,\n params,\n extend: mergedExtend,\n meta: (() => {\n const mergedMeta: Record<string, any> = {};\n try {\n for (const item of rec.chain) {\n if (item && (item as any).meta && typeof (item as any).meta === 'object') {\n Object.assign(mergedMeta, (item as any).meta);\n }\n }\n } catch { /* ignore */ }\n return mergedMeta;\n })()\n };\n }\n\n // Doğrulama başarısızsa zincir geçersiz.\n private validateChain(uri: string, rec: RouteRecord, params: Record<string, any>): boolean {\n for (const item of rec.chain) {\n if (typeof item.validate === 'function') {\n const e: RouterValidateEventArgs = {\n uri,\n key: item.name ?? rec.fullPath,\n // createInstance: control alanından gerçek component instance'ını üretir.\n routes: this.routesMap,\n params\n };\n // Fonksiyon ise: doğrudan çağırmayı dener (factory gibi).\n if (!item.validate(e)) return false;\n }\n }\n return true;\n }\n\n private _navHandler: ((e: Event) => void) | null = null;\n private _installLinkInterceptor() {\n try {\n if (this._navHandler) return;\n this._navHandler = (ev: Event) => {\n const w = window as any;\n const mode = this._routerOptions.mode || (w?.location?.protocol === 'file:' ? 'hash' : 'history');\n let el = ev.target as HTMLElement | null;\n while (el && el !== document.body) {\n if (el instanceof HTMLAnchorElement) break;\n el = el.parentElement;\n }\n if (!el || !(el instanceof HTMLAnchorElement)) return;\n // opt-in via data-router-link veya rel=\"router\"\n const rel = el.getAttribute('rel') || '';\n const optIn = el.getAttribute(\"x-command\") == 'router' || el.hasAttribute('data-router-link') || rel.toLowerCase() === 'router';\n if (!optIn) return;\n // modifier keys veya target=\"_blank\" => ignore\n const a = el as HTMLAnchorElement;\n if (a.target && a.target !== '_self') return;\n if ((ev as MouseEvent).metaKey || (ev as MouseEvent).ctrlKey || (ev as MouseEvent).shiftKey || (ev as MouseEvent).altKey) return;\n let href = a.getAttribute('href') || '';\n if (!href) {\n href = a.getAttribute('x-to') || '';\n };\n if (!href) return;\n // same-origin kontorlü (history mode için)\n if (mode === 'history') {\n const u = new URL(href, w.location.href);\n if (u.origin !== w.location.origin) return;\n ev.preventDefault();\n const path = u.pathname + u.search + u.hash;\n this.navigate(path);\n return;\n }\n ev.preventDefault();\n const path = href.startsWith('#') ? href.slice(1) : href;\n this.navigate(path);\n };\n document.addEventListener('click', this._navHandler);\n } catch { }\n }\n\n private _applyUrl(uri: string, options: NavigationOptions = {}) {\n try {\n const w = window as any;\n const mode = this._routerOptions.mode || (w?.location?.protocol === 'file:' ? 'hash' : 'history');\n if (mode === 'shell') return; // shell mode'da URL değişikliğine izin verme\n\n if (mode === 'hash' || mode === 'file') {\n const target = uri.startsWith('#') ? uri : ('#' + uri);\n if (w?.location?.hash !== target) {\n if (options.replace && w?.history && typeof w.history.replaceState === 'function') {\n const stamp = this._nextHistoryStamp(false);\n w.history.replaceState(this._routerState(options.state, stamp), '', target);\n this._historyStamp = stamp;\n } else {\n w.location.hash = target;\n const stamp = this._nextHistoryStamp(true);\n this._stampCurrentEntry(stamp, options.state);\n this._historyStamp = stamp;\n }\n }\n return;\n }\n\n if (w?.history && typeof w.history.pushState === 'function') {\n const current = (w.location.pathname || '/') + (w.location.search || '') + (w.location.hash || '');\n let wanted = uri;\n try {\n const url = new URL(uri, w.location.href);\n wanted = url.pathname + url.search + url.hash;\n } catch { }\n if (current !== wanted) {\n if (options.replace) {\n const stamp = this._nextHistoryStamp(false);\n w.history.replaceState(this._routerState(options.state, stamp), '', uri);\n this._historyStamp = stamp;\n } else {\n const stamp = this._nextHistoryStamp(true);\n w.history.pushState(this._routerState(options.state, stamp), '', uri);\n this._historyStamp = stamp;\n }\n }\n }\n } catch { }\n }\n\n private _resolveRedirect(target: ResolveResult, uri: string): string | null {\n const redirect = target.route?.redirect;\n if (!redirect) return null;\n if (typeof redirect === 'function') {\n const result = redirect({\n path: target.uri,\n params: target.params,\n meta: (target as any).meta ?? target.extend\n });\n return typeof result === 'string' && result.length > 0 ? result : null;\n }\n const path = this.routingEngine.generatePathString(redirect, target.params || {});\n const hashIndex = uri.indexOf('#');\n const hash = hashIndex >= 0 ? uri.slice(hashIndex) : '';\n const beforeHash = hashIndex >= 0 ? uri.slice(0, hashIndex) : uri;\n const queryIndex = beforeHash.indexOf('?');\n const query = queryIndex >= 0 ? beforeHash.slice(queryIndex) : '';\n const ownHashIndex = path.indexOf('#');\n const ownHash = ownHashIndex >= 0 ? path.slice(ownHashIndex) : '';\n let result = ownHashIndex >= 0 ? path.slice(0, ownHashIndex) : path;\n if (query && !result.includes('?')) result += query;\n return result + (ownHash || hash);\n }\n\n private _pageSearch(): string | undefined {\n try {\n const w = window as any;\n const mode = this._routerOptions.mode || (w?.location?.protocol === 'file:' ? 'hash' : 'history');\n if (mode === 'history' || mode === 'shell') return undefined;\n return w?.location?.search || undefined;\n } catch { return undefined; }\n }\n\n private _addressShows(...uris: Array<string | undefined>): boolean {\n const current = this._getCurrentUri().split('#')[0];\n return uris.some(u => !!u && u.split('#')[0] === current);\n }\n\n private _uriWithHash(appliedPath: string, requestedUri: string): string {\n const index = requestedUri.indexOf('#');\n if (index < 0 || appliedPath.indexOf('#') >= 0) return appliedPath;\n return appliedPath + requestedUri.slice(index);\n }\n\n private _handleScrollBehavior(scrollOption?: NavigationOptions['scroll']) {\n if (!scrollOption) return;\n\n try {\n if (scrollOption === 'top') {\n window.scrollTo({ top: 0, behavior: 'auto' });\n } else if (scrollOption === 'smooth') {\n window.scrollTo({ top: 0, behavior: 'smooth' });\n } else if (scrollOption === 'instant') {\n window.scrollTo({ top: 0, behavior: 'instant' });\n } else if (typeof scrollOption === 'object') {\n window.scrollTo({\n top: scrollOption.top || 0,\n left: scrollOption.left || 0,\n behavior: scrollOption.behavior || 'auto'\n });\n }\n } catch { }\n }\n\n public dispose(): Promise<void> {\n try { this._scroll?.dispose(); } catch { }\n this._scroll = null;\n this._historyStamp = null;\n let done: Promise<void> = Promise.resolve();\n try {\n // keepAlive önbelleğindeki örnekleri bırak\n try { done = this.routingEngine.dispose(); } catch { }\n if (this._navHandler) {\n try { document.removeEventListener('click', this._navHandler); } catch { }\n this._navHandler = null;\n }\n if (this._windowNavListener) {\n const evt = this._routerOptions.mode === 'hash' || this._routerOptions.mode === 'file' ? 'hashchange' : 'popstate';\n try { window.removeEventListener(evt, this._windowNavListener); } catch { }\n this._windowNavListener = null;\n }\n } catch { }\n return done;\n }\n\n}","import { Signal } from \"../store/Signal\";\nimport { motifError } from \"../common/diagnostics\";\nimport type { UrlRoutingModule } from \"./UrlRoutingModule\";\nimport type { NavigationDirection, NavigationOptions, ResolveResult, Router } from \"./common\";\nimport type { RouteItem } from \"./RouteItem\";\n\nexport type RouteSnapshot = {\n target: ResolveResult;\n chain: string[];\n direction: NavigationDirection | undefined;\n state: any;\n};\n\nexport class RouterState {\n readonly version = new Signal(0);\n private _current: RouteSnapshot | null = null;\n private _constructing: RouteSnapshot | null = null;\n\n read(): RouteSnapshot | null {\n this.version.value;\n return this._constructing ?? this._current;\n }\n\n commit(snapshot: RouteSnapshot): void {\n this._current = snapshot;\n this.touch();\n }\n\n reset(): void {\n this._current = null;\n this.touch();\n }\n\n touch(): void {\n this.version.value = this.version.peek() + 1;\n }\n\n constructWith<T>(snapshot: RouteSnapshot | undefined, create: () => T): T {\n if (!snapshot) return create();\n const previous = this._constructing;\n this._constructing = snapshot;\n try {\n return create();\n } finally {\n this._constructing = previous;\n }\n }\n}\n\nexport function createRouter(state: RouterState, module: () => UrlRoutingModule | undefined): Router {\n const required = (): UrlRoutingModule => {\n const current = module();\n if (!current) throw motifError('MJX309');\n return current;\n };\n const target = () => state.read()?.target;\n return {\n get params() { return target()?.params ?? {}; },\n get route() { return target()?.route ?? null; },\n get ok() { return target()?.ok ?? false; },\n get uri() { return target()?.uri ?? ''; },\n get fullPath() { return target()?.fullPath ?? null; },\n get aliasOf() { return target()?.aliasOf ?? null; },\n get extend() { return target()?.extend ?? {}; },\n get meta() {\n const current = target();\n return current ? ((current as any).meta ?? current.extend) : {};\n },\n get chain() { return state.read()?.chain ?? []; },\n get direction() { return state.read()?.direction; },\n get state() { return state.read()?.state; },\n get stack() {\n state.version.value;\n return module()?.describeStack();\n },\n get routes() {\n state.version.value;\n return module()?.routeInfos() ?? [];\n },\n navigate: async (uri: string, options?: NavigationOptions) => {\n return await required().navigate(uri, options);\n },\n navigateByName: async (name: string, params?: Record<string, any>, options?: NavigationOptions) => {\n return await required().navigateByName(name, params, options);\n },\n evict: async (route?: RouteItem | string | null) => {\n await required().evict(route);\n },\n resolve: (uri: string) => {\n const current = required();\n const result = current.resolve(uri);\n return { chain: current.chainOf(result), result };\n },\n href: (name: string, params?: Record<string, any>) => required().href(name, params),\n };\n}\n","import { ServiceCollection } from \"./dependencyInjection/ServiceCollection\";\nimport { ServiceProvider } from \"./dependencyInjection/ServiceProvider\";\nimport { Component } from \"./component/Component\";\nimport { RouteItem } from \"./routing/RouteItem\";\nimport { setRoutes, setDevtoolsEnabled } from \"./devtools/devbus\";\nimport { lintRoutes } from \"./devtools/routeLinter\";\nimport { RouterView } from \"./routing/RouterView\";\nimport { UrlRoutingModule } from \"./routing/UrlRoutingModule\";\nimport { RouterState, createRouter } from \"./routing/routerState\";\nimport { NavigationDirection, NavigationOptions, Router, RouteResolveContext, RouterNavigatedEventArgs, RouterEvents, RouterOptions, ScrollMemoryOptions, StackOptions } from \"./routing\";\nimport { errorHandler, safeCall, safeCallSilent, setErrorConsoleLogging } from \"./common/ErrorHandler\";\nimport { engine, configureReactivityLeakMonitor } from \"./store\";\nimport { MotifError, callReported, formatMotifMessage, motifError, reportError } from \"./common/diagnostics\";\nimport { flushCompilerContractWarnings } from \"./common/compilerContract\";\nimport { isTransitionMode, transitionSettings, TransitionMode } from \"./common/transitionRegistry\";\nimport { ComponentBase } from \"./component\";\nexport interface IStartup {\n configuration?: (services: any) => void;\n\n}\n\nlet _globalApplication: Application | null = null;\n\nexport type ApplicationState = 'initializing' | 'running' | 'disposing' | 'disposed';\nlet _globalBuilder: ApplicationBuilder | null = null;\nlet startedApplicationBuilder = false;\nconst _applicationStack = new Map<string | symbol, { builder: ApplicationBuilder, app: Application }>();\n\nexport class ApplicationBuilder {\n\n public services: ServiceCollection = new ServiceCollection();\n\n constructor() {\n if ((_globalApplication && _globalApplication.state !== 'disposing') || startedApplicationBuilder) {\n throw new MotifError('MJX405', formatMotifMessage('MJX405'), { cause: _globalApplication });\n }\n startedApplicationBuilder = true;\n }\n\n build() {\n // if (_globalApplication) {\n // throw new Error(\"ApplicationBuilder: Only one instance of ApplicationBuilder is allowed.\");\n this.services.autoRegisterInjectables();\n const provider = this.services.buildServiceProvider();\n this.services.addSingleton(ServiceProvider, provider);\n var app = new Application(provider);\n this.services.addSingleton(Application, app);\n _globalApplication = app;\n return app;\n }\n\n rebuild() {\n if (_globalApplication) {\n _globalApplication.provider.dispose();\n _globalApplication.provider = this.services.buildServiceProvider();\n return _globalApplication;\n }\n return this.build();\n }\n}\n\ninterface ApplicationEvents {\n 'router-changed': 'motifjs-router-navigated';\n}\nexport type AppLifecycleState = 'visible' | 'hidden' | 'frozen' | 'resumed' | 'restored' | 'online' | 'offline';\n\nexport type AppLifecycleEventArgs = {\n state: AppLifecycleState;\n visible: boolean;\n online: boolean;\n};\n\nexport type NavigationGuardContext = {\n to: { path: string; params: Record<string, any>; meta: Record<string, any>, options?: NavigationOptions, redirectedFrom?: string, direction?: NavigationDirection, state?: any };\n from: { path: string; params: Record<string, any>; meta: Record<string, any>, options?: NavigationOptions } | null;\n};\n\nexport type NavigationGuard = (\n context: NavigationGuardContext,\n next: (redirect?: string | false) => void\n) => void | Promise<void>;\n\nexport type ContainerGroups = {\n [key: string]: {\n registry: () => any;\n initialize: () => any\n };\n}\n\nexport class Application {\n public static get main(): Application {\n return _globalApplication!;\n }\n\n constructor(public provider: ServiceProvider) { }\n public static _disposingCount = 0;\n private _state: ApplicationState = 'initializing';\n private _disposing?: Promise<void>;\n public get state(): ApplicationState {\n return this._state;\n }\n private _middlewares: Array<(ctx: RouteResolveContext, next: () => Promise<void>) => any> = [];\n private _beforeEachGuards: NavigationGuard[] = [];\n public readonly _routerState = new RouterState();\n public readonly router: Router = createRouter(this._routerState, () => this.urlRoutingModule);\n public _addressOf(uri: string): string { return this.urlRoutingModule?.addressOf(uri) ?? uri; }\n private events: Map<any, Set<any>> = new Map();\n\n public static CreateBuilder(): ApplicationBuilder {\n return new ApplicationBuilder();\n }\n private appShell!: Component;\n public getAppShell(): Component {\n return this.appShell;\n }\n public run(host: HTMLElement | string | Node, appRoot?: any): void {\n safeCallSilent(() => {\n engine.startGc();\n }, 'Application.run.engine.startGc');\n let target: HTMLElement | null;\n if (typeof host === 'string') {\n target = document.querySelector(host) as HTMLElement | null;\n if (!target) throw motifError('MJX406', host);\n } else {\n target = host as HTMLElement;\n }\n let rootInstance: any = appRoot;\n\n\n this._state = 'running';\n const AppShell = new Component(target);\n this.appShell = AppShell;\n safeCallSilent(() => {\n (AppShell as any)._keepElementOnDispose = true;\n (AppShell as any).application = this;\n (AppShell as any).provider = this.provider;\n\n }, 'Application.run.setupAppShell');\n\n if (!rootInstance) {\n rootInstance = AppShell;\n rootInstance.controls.add(new RouterView({ name: 'default' }));\n } else {\n rootInstance.parent = AppShell;\n AppShell.controls.add(rootInstance);\n }\n AppShell.build();\n this._routerRoot = rootInstance;\n if (this.urlRoutingModule) {\n this.urlRoutingModule.start(rootInstance);\n this._startedRouter = this.urlRoutingModule;\n } else {\n } \n try {\n } catch { }\n }\n\n public insert(component: Component): void {\n this.appShell.controls.add(component);\n }\n public remove(component: Component): void {\n this.appShell.controls.remove(component);\n }\n\n public attach(component: Component): void {\n this.appShell.controls.add(component);\n }\n\n public detach(component: Component): void {\n this.appShell.controls.detach(component);\n }\n\n public appendToMainHost(component: Node): void {\n this.appShell.element?.appendChild(component);\n }\n\n public dispose(): Promise<void> {\n if (this._disposing) return this._disposing;\n this._state = 'disposing';\n Application._disposingCount++;\n startedApplicationBuilder = false;\n let routerDone: Promise<void> | undefined;\n safeCallSilent(() => { this._removeLifecycleListeners(); }, 'Application.dispose.lifecycle');\n safeCallSilent(() => { routerDone = (this as any).urlRoutingModule?.dispose?.(); }, 'Application.dispose.router');\n safeCallSilent(() => { engine.stopGc(); }, 'Application.dispose.gcStop');\n safeCallSilent(() => {\n try {\n const w = window as any;\n if (w && w.history && typeof w.history.replaceState === 'function') {\n // Normalize to root path; for hash mode also clear the hash\n w.history.replaceState({}, '', '/');\n }\n } catch { /* ignore */ }\n }, 'Application.dispose.resetUrl');\n transitionSettings.mode = 'concurrent';\n const shell = this.appShell;\n return this._disposing = (async () => {\n try { await routerDone; } catch (error) { reportError('MJX307', error); }\n if (shell && !shell.isDisposed) {\n try { await shell.dispose(); } catch (error) { reportError('MJX307', error); }\n }\n try { await this.provider.dispose(); } catch { }\n if (_globalApplication === this) _globalApplication = null;\n this._state = 'disposed';\n Application._disposingCount--;\n })();\n }\n\n public useTransitions(options: { mode?: TransitionMode }): Application {\n if (isTransitionMode(options?.mode)) transitionSettings.mode = options.mode;\n return this;\n }\n\n public use(callback: (ctx: RouteResolveContext, next: () => Promise<void>) => any): Application {\n this._middlewares.push(callback);\n return this;\n }\n\n public useGuard(guard: NavigationGuard): Application {\n this._beforeEachGuards.push(guard);\n return this;\n }\n\n public async _runBeforeEachGuards(to: any, from: any): Promise<string | false | true> {\n const context: NavigationGuardContext = { to, from };\n\n for (const guard of this._beforeEachGuards) {\n let redirectPath: string | false | undefined;\n let guardResolved = false;\n\n const next = (redirect?: string | false) => {\n guardResolved = true;\n redirectPath = redirect;\n };\n\n try {\n await guard(context, next);\n } catch (error) {\n reportError('MJX306', error, 'guard');\n return false;\n }\n\n if (!guardResolved) {\n return false;\n }\n\n if (redirectPath === false) {\n return false;\n }\n\n if (typeof redirectPath === 'string') {\n return redirectPath;\n }\n }\n\n return true; \n }\n\n private urlRoutingModule!: UrlRoutingModule;\n private _routerConfig: RouterOptions | null = null;\n private _routerRoot: Component | null = null;\n private _startedRouter: UrlRoutingModule | null = null;\n public useRouter(options: RouteItem[] | {\n routes: RouteItem[],\n mode?: 'history' | 'hash' | 'file' | 'shell',\n fallbacks?: { notFound?: any, error?: any },\n hooks?: RouterEvents,\n scrollMemory?: boolean | ScrollMemoryOptions,\n stack?: boolean | StackOptions\n }): Application {\n let routes: RouteItem[];\n let mode: 'history' | 'hash' | 'file' | 'shell' | undefined;\n let fallbacks: { notFound?: any, error?: any } | undefined;\n let hooks: RouterEvents | undefined;\n let scrollMemory: boolean | ScrollMemoryOptions | undefined;\n let stack: boolean | StackOptions | undefined;\n if (Array.isArray(options)) {\n routes = options;\n } else {\n routes = options.routes;\n mode = options.mode;\n fallbacks = options.fallbacks;\n hooks = options.hooks;\n scrollMemory = options.scrollMemory;\n stack = options.stack;\n }\n\n if (this.urlRoutingModule) {\n this.urlRoutingModule.dispose();\n }\n\n this._routerConfig = {\n mode,\n fallbacks,\n middlewareCollections: () => this._middlewares,\n RouteItems: routes,\n hooks,\n scrollMemory,\n stack,\n };\n this.urlRoutingModule = new UrlRoutingModule(this._routerConfig, this);\n\n this._routerState.reset();\n\n\n\n safeCallSilent(() => {\n setRoutes(routes as any);\n if (this._isDevelopment || (globalThis as any).__MOTIF_DEV__ === true) {\n lintRoutes(routes as any);\n }\n }, 'Application.useRouter.devtools');\n\n return this;\n }\n\n public restartRouter() {\n const root = this._routerRoot;\n if (!root || !this._routerConfig) return this;\n const previous = this._startedRouter;\n const shownUri = previous?.shownUri;\n let fresh = this.urlRoutingModule;\n if (!fresh || fresh === previous) {\n previous?.dispose();\n fresh = new UrlRoutingModule(this._routerConfig, this);\n this.urlRoutingModule = fresh;\n }\n this._routerState.reset();\n this._startedRouter = fresh;\n fresh.start(root, shownUri);\n return this;\n }\n\n public async navigate(uri: string, options?: NavigationOptions) {\n if (this.urlRoutingModule) {\n return await this.urlRoutingModule.navigate(uri, options);\n } else {\n throw motifError('MJX309');\n }\n }\n\n public async navigateByName(name: string, params?: Record<string, any>, options?: NavigationOptions) {\n if (this.urlRoutingModule) {\n return await this.urlRoutingModule.navigateByName(name, params, options);\n } else {\n throw motifError('MJX309');\n }\n }\n\n public on<T>(event: ApplicationEvents[keyof ApplicationEvents & string] | any, handler: (args?: T) => void): any {\n var e = this.events.get(event);\n if (!e) {\n this.events.set(event, new Set());\n e = this.events.get(event);\n }\n if (e) {\n e.add(handler);\n }\n return () => this.off(event, handler);\n }\n public off<T>(event: any, handler: (args?: T) => void): void {\n var e = this.events.get(event);\n if (e) {\n e.delete(handler);\n }\n }\n\n public fire<T>(event: any, args?: T): void {\n var e = this.events.get(event);\n if (e) {\n e.forEach(handler => {\n callReported(() => handler(args), 'MJX123', String(event));\n });\n }\n }\n\n public onRouterChanged(handler: (args?: RouterNavigatedEventArgs) => unknown): any {\n return this.on<RouterNavigatedEventArgs>('motifjs-router-navigated', handler);\n }\n\n public get isVisible(): boolean {\n try { return typeof document === 'undefined' || document.visibilityState !== 'hidden'; } catch { return true; }\n }\n\n public get isOnline(): boolean {\n try { return typeof navigator === 'undefined' || navigator.onLine !== false; } catch { return true; }\n }\n\n private _lifecycleOff: Array<() => void> | null = null;\n\n public onLifecycle(handler: (args?: AppLifecycleEventArgs) => unknown): () => void {\n this._installLifecycleListeners();\n return this.on<AppLifecycleEventArgs>('motifjs-app-lifecycle', handler);\n }\n\n private _emitLifecycle(state: AppLifecycleState): void {\n this.fire<AppLifecycleEventArgs>('motifjs-app-lifecycle', { state, visible: this.isVisible, online: this.isOnline });\n }\n\n private _installLifecycleListeners(): void {\n if (this._lifecycleOff) return;\n const offs: Array<() => void> = [];\n const listen = (target: EventTarget | undefined, type: string, fn: (e: any) => void) => {\n if (!target) return;\n try {\n target.addEventListener(type, fn);\n offs.push(() => { try { target.removeEventListener(type, fn); } catch { } });\n } catch { }\n };\n const doc = typeof document !== 'undefined' ? document : undefined;\n const win = typeof window !== 'undefined' ? window : undefined;\n listen(doc, 'visibilitychange', () => this._emitLifecycle(this.isVisible ? 'visible' : 'hidden'));\n listen(doc, 'freeze', () => this._emitLifecycle('frozen'));\n listen(doc, 'resume', () => this._emitLifecycle('resumed'));\n listen(win, 'pageshow', (e: PageTransitionEvent) => { if (e && e.persisted) this._emitLifecycle('restored'); });\n listen(win, 'online', () => this._emitLifecycle('online'));\n listen(win, 'offline', () => this._emitLifecycle('offline'));\n this._lifecycleOff = offs;\n }\n\n private _removeLifecycleListeners(): void {\n const offs = this._lifecycleOff;\n this._lifecycleOff = null;\n if (offs) for (const off of offs) off();\n }\n\n\n private _isDevelopment: boolean = false;\n private _enableErrorLogging: boolean = true;\n public get isDevelopmentModeEnabled(): boolean {\n return this._isDevelopment;\n }\n\n /** Enable reactive leak monitoring (dev önerilir) */\n public useReactiveMonitor(opts: { enabled?: boolean; threshold?: number; name?: string } = {}): this {\n safeCallSilent(() => { configureReactivityLeakMonitor(opts); }, 'Application.useReactiveMonitor.core');\n return this;\n }\n\n public useDevelopment(isDev: boolean = true): this {\n this._isDevelopment = isDev;\n errorHandler.setDevelopmentMode(isDev);\n safeCallSilent(() => { (globalThis as any).__MOTIF_DEV__ = isDev; }, 'Application.useDevelopment.flag');\n safeCallSilent(() => { setDevtoolsEnabled(isDev); }, 'Application.useDevelopment.devtools');\n if (isDev) flushCompilerContractWarnings();\n return this;\n }\n\n public useLogging(enabled: boolean = true): this {\n this._enableErrorLogging = enabled;\n setErrorConsoleLogging(enabled);\n return this;\n }\n\n\n\n\n}\n\n\nexport class ApplicationService {\n public static get current(): Application {\n return Application.main;\n }\n public static initialized: boolean = false;\n public static addToMain(...components: ComponentBase[]) {\n this.current && this.current.getAppShell().controls.add(...components);\n }\n}\n\nexport function useNavigation(): Router {\n return Application.main.router;\n}\n\nexport function useApplication() {\n return {\n application: Application.main,\n services: Application.main.provider,\n router: Application.main.router,\n attach(...components: ComponentBase[]) {\n Application.main && Application.main.getAppShell().controls.add(...components);\n }\n }\n}","import { Application, ServiceLifetime } from \"..\";\nimport { autoRegistry } from \"./autoRegistry\";\nimport { reportWarning } from \"../common/diagnostics\";\n\n\n\nexport function Injectable(options?: {\n lifetime?: ServiceLifetime,\n deps?: any[]\n}): (target: any, context?: ClassDecoratorContext) => void {\n\n return (target: any) => {\n autoRegistry.set(target, {\n lifetime: options?.lifetime ?? \"transient\",\n deps: options?.deps\n });\n };\n}\n\n\n\nexport function FromService<T>(token: (abstract new (...args: any) => T) | { prototype: T }): T;\nexport function FromService<T = any>(token: string | symbol | object): T;\nexport function FromService(token: any): any {\n try {\n return Application.main.provider.get(token);\n } catch (error) {\n reportWarning('MJX414', [describeServiceToken(token), String((error as any)?.message ?? error)], { token, error });\n return null as any;\n }\n}\n\nfunction describeServiceToken(token: any): string {\n if (typeof token === 'function') return token.name || '[AnonymousClass]';\n return String(token);\n}\n","import { MotifError, formatMotifMessage, motifError } from \"./diagnostics\";\r\n\r\ntype AsyncOrSync<T> = Promise<T> | T;\r\n\r\nexport interface ResilienceContext {\r\n [key: string]: any;\r\n}\r\n\r\ntype Context = ResilienceContext;\r\n\r\nexport type ResilienceAction<T> = (ctx?: ResilienceContext) => AsyncOrSync<T>;\r\n\r\ntype Action<T> = ResilienceAction<T>;\r\n\r\ntype ShouldHandlePredicate = (err: any) => boolean;\r\n\r\nexport interface ResiliencePolicy {\r\n execute<T>(action: ResilienceAction<T>, ctx?: ResilienceContext): Promise<T>;\r\n}\r\n\r\nfunction isTimeoutError(err: any) {\r\n return err && err.name === 'TimeoutError';\r\n}\r\n\r\nclass TimeoutError extends MotifError {\r\n constructor() {\r\n super('MJX605', formatMotifMessage('MJX605'));\r\n this.name = 'TimeoutError';\r\n }\r\n}\r\n\r\nfunction delay(ms: number) {\r\n return new Promise<void>(res => setTimeout(res, ms));\r\n}\r\n\r\nfunction addJitter(base: number, jitterFactor = 0.1) {\r\n const jitter = (Math.random() * 2 - 1) * jitterFactor * base;\r\n return Math.max(0, Math.floor(base + jitter));\r\n}\r\n\r\n\r\nabstract class Policy implements ResiliencePolicy {\r\n abstract execute<T>(action: Action<T>, ctx?: Context): Promise<T>;\r\n}\r\n\r\n\r\nexport interface RetryOptions {\r\n retries?: number;\r\n backoff?: 'fixed' | 'exponential' | 'none';\r\n delay?: number;\r\n jitter?: number;\r\n shouldHandle?: ShouldHandlePredicate;\r\n onRetry?: (attempt: number, err: any, delayMs: number, ctx?: Context) => void | Promise<void>;\r\n}\r\n\r\nclass RetryPolicy extends Policy {\r\n private retries: number;\r\n private backoff: 'fixed' | 'exponential' | 'none';\r\n private delayMs: number;\r\n private jitter: number;\r\n private shouldHandle: ShouldHandlePredicate;\r\n private onRetry?: (attempt: number, err: any, delayMs: number, ctx?: Context) => void | Promise<void>;\r\n\r\n constructor(options: RetryOptions = {}) {\r\n super();\r\n this.retries = options.retries ?? 3;\r\n this.backoff = options.backoff ?? 'exponential';\r\n this.delayMs = options.delay ?? 100;\r\n this.jitter = Math.min(Math.max(options.jitter ?? 0.1, 0), 1);\r\n this.shouldHandle = options.shouldHandle ?? ((err) => !!err && !isTimeoutError(err));\r\n this.onRetry = options.onRetry;\r\n }\r\n\r\n private calcDelay(attempt: number) {\r\n if (this.backoff === 'none') return 0;\r\n if (this.backoff === 'fixed') return addJitter(this.delayMs, this.jitter);\r\n const base = this.delayMs * Math.pow(2, attempt - 1);\r\n return addJitter(base, this.jitter);\r\n }\r\n\r\n async execute<T>(action: Action<T>, ctx?: Context): Promise<T> {\r\n let lastErr: any;\r\n\r\n for (let attempt = 1; attempt <= this.retries + 1; attempt++) {\r\n try {\r\n return await Promise.resolve(action(ctx));\r\n } catch (err) {\r\n lastErr = err;\r\n if (!this.shouldHandle(err) || attempt > this.retries) break;\r\n const wait = this.calcDelay(attempt);\r\n if (this.onRetry) await this.onRetry(attempt, err, wait, ctx);\r\n if (wait > 0) await delay(wait);\r\n }\r\n }\r\n\r\n throw lastErr;\r\n }\r\n}\r\n\r\n\r\nexport interface TimeoutOptions {\r\n timeoutMs: number;\r\n}\r\n\r\nclass TimeoutPolicy extends Policy {\r\n private timeoutMs: number;\r\n\r\n constructor(opts: TimeoutOptions) {\r\n super();\r\n this.timeoutMs = opts.timeoutMs;\r\n }\r\n\r\n async execute<T>(action: Action<T>, ctx?: Context): Promise<T> {\r\n let timer: any;\r\n const p = Promise.resolve(action(ctx));\r\n const t = new Promise<never>((_, rej) => {\r\n timer = setTimeout(() => rej(new TimeoutError()), this.timeoutMs);\r\n });\r\n\r\n try {\r\n return await Promise.race([p, t]);\r\n } finally {\r\n clearTimeout(timer);\r\n }\r\n }\r\n}\r\n\r\n\r\nexport type CircuitState = 'CLOSED' | 'OPEN' | 'HALF_OPEN';\r\n\r\nexport interface CircuitBreakerOptions {\r\n failureThreshold?: number;\r\n successThreshold?: number;\r\n durationOfBreakMs?: number;\r\n shouldHandle?: ShouldHandlePredicate;\r\n onStateChange?: (oldState: CircuitState, newState: CircuitState) => void | Promise<void>;\r\n}\r\n\r\nclass CircuitBreakerPolicy extends Policy {\r\n private failureThreshold: number;\r\n private successThreshold: number;\r\n private durationOfBreakMs: number;\r\n private shouldHandle: ShouldHandlePredicate;\r\n private onStateChange?: (oldState: CircuitState, newState: CircuitState) => void | Promise<void>;\r\n\r\n private state: CircuitState = 'CLOSED';\r\n private failureCount = 0;\r\n private successCount = 0;\r\n private nextAttemptTime = 0; \r\n\r\n constructor(opts: CircuitBreakerOptions = {}) {\r\n super();\r\n this.failureThreshold = opts.failureThreshold ?? 5;\r\n this.successThreshold = opts.successThreshold ?? 2;\r\n this.durationOfBreakMs = opts.durationOfBreakMs ?? 60000; \r\n this.shouldHandle = opts.shouldHandle ?? ((err) => !!err && !isTimeoutError(err));\r\n this.onStateChange = opts.onStateChange;\r\n }\r\n\r\n private async changeState(newState: CircuitState) {\r\n const old = this.state;\r\n this.state = newState;\r\n this.failureCount = 0;\r\n this.successCount = 0;\r\n if (newState === 'OPEN') this.nextAttemptTime = Date.now() + this.durationOfBreakMs;\r\n if (this.onStateChange) await this.onStateChange(old, newState);\r\n }\r\n\r\n async execute<T>(action: Action<T>, ctx?: Context): Promise<T> {\r\n if (this.state === 'OPEN') {\r\n if (Date.now() >= this.nextAttemptTime) {\r\n await this.changeState('HALF_OPEN');\r\n } else {\r\n throw motifError('MJX602');\r\n }\r\n }\r\n\r\n try {\r\n const result = await Promise.resolve(action(ctx));\r\n if (this.state === 'HALF_OPEN') {\r\n this.successCount++;\r\n if (this.successCount >= this.successThreshold) await this.changeState('CLOSED');\r\n } else if (this.state === 'CLOSED') {\r\n this.failureCount = 0;\r\n }\r\n return result;\r\n } catch (err) {\r\n if (this.shouldHandle(err)) {\r\n this.failureCount++;\r\n if (this.state === 'HALF_OPEN' || (this.state === 'CLOSED' && this.failureCount >= this.failureThreshold)) {\r\n await this.changeState('OPEN');\r\n }\r\n }\r\n throw err;\r\n }\r\n }\r\n\r\n getState() {\r\n return this.state;\r\n }\r\n}\r\n\r\n\r\nexport interface BulkheadOptions {\r\n maxConcurrent?: number;\r\n maxQueue?: number;\r\n}\r\n\r\nclass BulkheadPolicy extends Policy {\r\n private maxConcurrent: number;\r\n private maxQueue: number;\r\n private active = 0;\r\n private queue: Array<() => void> = [];\r\n\r\n constructor(opts: BulkheadOptions = {}) {\r\n super();\r\n this.maxConcurrent = opts.maxConcurrent ?? 10;\r\n this.maxQueue = opts.maxQueue ?? 50;\r\n }\r\n\r\n private dequeue() {\r\n if (this.queue.length === 0) return;\r\n if (this.active >= this.maxConcurrent) return;\r\n const resolver = this.queue.shift()!;\r\n resolver();\r\n }\r\n\r\n async execute<T>(action: Action<T>, ctx?: Context): Promise<T> {\r\n if (this.active >= this.maxConcurrent) {\r\n if (this.queue.length >= this.maxQueue) {\r\n throw motifError('MJX603');\r\n }\r\n await new Promise<void>((res) => {\r\n this.queue.push(res);\r\n });\r\n }\r\n\r\n this.active++;\r\n try {\r\n const result = await Promise.resolve(action(ctx));\r\n return result;\r\n } finally {\r\n this.active--;\r\n this.dequeue();\r\n }\r\n }\r\n}\r\n\r\n\r\nexport interface RateLimiterOptions {\r\n tokensPerInterval?: number;\r\n intervalMs?: number;\r\n capacity?: number;\r\n}\r\n\r\nclass RateLimiterPolicy extends Policy {\r\n private tokensPerInterval: number;\r\n private intervalMs: number;\r\n private capacity: number;\r\n private tokens: number;\r\n private lastRefill: number;\r\n\r\n constructor(opts: RateLimiterOptions = {}) {\r\n super();\r\n this.tokensPerInterval = opts.tokensPerInterval ?? 1;\r\n this.intervalMs = opts.intervalMs ?? 1000;\r\n this.capacity = opts.capacity ?? this.tokensPerInterval;\r\n this.tokens = this.capacity;\r\n this.lastRefill = Date.now();\r\n }\r\n\r\n private refill() {\r\n const now = Date.now();\r\n const elapsed = now - this.lastRefill;\r\n if (elapsed <= 0) return;\r\n const tokensToAdd = Math.floor(elapsed / this.intervalMs) * this.tokensPerInterval;\r\n if (tokensToAdd > 0) {\r\n this.tokens = Math.min(this.capacity, this.tokens + tokensToAdd);\r\n this.lastRefill = now;\r\n }\r\n }\r\n\r\n async execute<T>(action: Action<T>, ctx?: Context): Promise<T> {\r\n this.refill();\r\n if (this.tokens <= 0) {\r\n throw motifError('MJX604');\r\n }\r\n this.tokens -= 1;\r\n return Promise.resolve(action(ctx));\r\n }\r\n}\r\n\r\n\r\nexport interface FallbackOptions<T> {\r\n fallback: (err: any, ctx?: Context) => AsyncOrSync<T>;\r\n shouldHandle?: ShouldHandlePredicate;\r\n}\r\n\r\nclass FallbackPolicy<T> extends Policy {\r\n private fallback: (err: any, ctx?: Context) => AsyncOrSync<T>;\r\n private shouldHandle: ShouldHandlePredicate;\r\n\r\n constructor(opts: FallbackOptions<T>) {\r\n super();\r\n this.fallback = opts.fallback;\r\n this.shouldHandle = opts.shouldHandle ?? (() => true);\r\n }\r\n\r\n async execute<T>(action: Action<T>, ctx?: Context): Promise<T> {\r\n\r\n try {\r\n return await Promise.resolve(action(ctx)) as T;\r\n } catch (err) {\r\n if (!this.shouldHandle(err)) throw err;\r\n return await Promise.resolve(this.fallback(err, ctx)) as unknown as T;\r\n }\r\n\r\n }\r\n}\r\n\r\nclass PolicyWrap extends Policy {\r\n private policies: Policy[];\r\n\r\n constructor(...policies: Policy[]) {\r\n super();\r\n this.policies = policies;\r\n }\r\n\r\n async execute<T>(action: Action<T>, ctx?: Context): Promise<T> {\r\n const wrapped = this.policies.reduceRight((next: Action<T>, p: Policy) => {\r\n return (c?: Context) => p.execute(() => next(c), c);\r\n }, action);\r\n\r\n return wrapped(ctx);\r\n }\r\n}\r\n\r\n\r\nconst resilience = {\r\n retry: (opts?: RetryOptions) => new RetryPolicy(opts),\r\n timeout: (opts: TimeoutOptions) => new TimeoutPolicy(opts),\r\n circuitBreaker: (opts?: CircuitBreakerOptions) => new CircuitBreakerPolicy(opts),\r\n bulkhead: (opts?: BulkheadOptions) => new BulkheadPolicy(opts),\r\n rateLimiter: (opts?: RateLimiterOptions) => new RateLimiterPolicy(opts),\r\n fallback: <T>(opts: FallbackOptions<T>) => new FallbackPolicy<T>(opts),\r\n wrap: (...policies: Policy[]) => new PolicyWrap(...policies),\r\n};\r\n\r\n\r\nexport function decorate<T>(policy: ResiliencePolicy, fn: ResilienceAction<T>) {\r\n return (ctx?: ResilienceContext) => policy.execute(fn, ctx);\r\n}\r\n\r\nexport class Resilience implements ResiliencePolicy {\r\n static get create(): Resilience {\r\n return new Resilience();\r\n }\r\n private resiliences: Policy[] = [];\r\n retry = (opts?: RetryOptions): Resilience => {\r\n this.resiliences.push(resilience.retry(opts));\r\n return this;\r\n }\r\n timeout = (opts: TimeoutOptions): Resilience => {\r\n this.resiliences.push(resilience.timeout(opts));\r\n return this;\r\n }\r\n\r\n circuitBreaker = (opts?: CircuitBreakerOptions): Resilience => {\r\n this.resiliences.push(resilience.circuitBreaker(opts));\r\n return this;\r\n }\r\n\r\n bulkhead = (opts?: BulkheadOptions): Resilience => {\r\n this.resiliences.push(resilience.bulkhead(opts));\r\n return this;\r\n }\r\n\r\n rateLimiter = (opts?: RateLimiterOptions): Resilience => {\r\n this.resiliences.push(resilience.rateLimiter(opts));\r\n return this;\r\n }\r\n fallback = <T>(opts: FallbackOptions<T>): Resilience => {\r\n this.resiliences.push(resilience.fallback<T>(opts));\r\n return this;\r\n }\r\n\r\n async execute<T>(action: Action<T>, ctx?: Context): Promise<T> {\r\n return resilience.wrap(...this.resiliences).execute(action, ctx);\r\n }\r\n}\r"],"names":["state","enabled","listeners","Set","warnings","routes","exposed","isDevLike","globalThis","__MOTIF_DEV__","isEnabled","devtools","emit","undefined","on","listener","add","delete","type","payload","ev","l","getWarnings","slice","getRoutes","rethrowLater","error","setTimeout","ErrorHandler","constructor","this","unexpectedErrorHandler","_isDevelopment","_enableConsoleLogging","setDevelopmentMode","isDev","setConsoleLogging","isDevelopment","reportSuppressed","context","logIfDev","report","cause","console","message","code","name","serializeError","Error","stack","JSON","parse","stringify","String","addListener","push","index","indexOf","splice","setUnexpectedErrorHandler","handler","getUnexpectedErrorHandler","onUnexpectedError","safeCall","fn","fallback","safeCallAsync","safeCallSilent","safeCallSilentAsync","wrapSafe","args","wrapSafeAsync","async","errorHandler","motifMessages","MJX101","tag","MJX102","description","MJX103","MJX104","MJX105","MJX106","MJX107","MJX108","MJX109","MJX110","ms","MJX111","MJX112","depth","MJX113","MJX114","MJX115","MJX116","MJX117","MJX118","MJX119","MJX120","MJX121","compiled","runtime","MJX122","hook","MJX123","event","MJX124","key","MJX125","MJX126","MJX127","got","MJX128","cls","member","how","MJX201","MJX202","MJX203","max","MJX204","MJX205","MJX206","MJX207","MJX208","MJX301","outlet","MJX302","MJX303","chain","MJX304","MJX305","MJX306","MJX307","MJX308","MJX309","MJX310","parentPath","MJX311","path","MJX312","full","MJX313","MJX314","alias","MJX315","MJX316","MJX401","token","MJX402","MJX403","MJX404","MJX405","MJX406","selector","MJX407","MJX408","reason","MJX409","MJX410","sources","MJX411","MJX413","MJX414","MJX501","MJX502","MJX503","MJX504","MJX505","MJX507","limit","count","MJX601","MJX602","MJX603","MJX604","MJX605","MJX607","MJX608","MJX609","MJX610","MotifError","options","super","formatMotifMessage","motifError","reportError","callReported","result","then","reportWarning","details","w","warn","devWarn","disposableCore","disposableTracker","notifyCreated","target","trackDisposable","notifyDisposed","markAsDisposed","notifyOwner","owner","setParent","toDisposable","pending","handle","dispose","DisposableStore","_closed","isDisposed","item","_items","_one","_take","detach","clear","size","failures","done","items","one","length","AggregateError","closedStore","Disposable","_disposables","store","_store","owned","disposable","_register","Flags","IS_REACTIVE","Symbol","for","IS_READONLY","IS_SUPERFICIAL","RAW","GET_SETUP","ITERATE_KEY","followTracking","arrayScope","getRaw","value","current","hasOwn","Object","prototype","hasOwnProperty","call","isObject","intrinsicSymbols","values","getOwnPropertyDescriptors","map","descriptor","filter","isIntrinsicSymbol","has","proxyableTags","Map","canonicalIndex","savedTracking","trackingDepth","enterTracking","pauseTracking","resetTracking","arrayStack","ListBinding","component","itemsFn","renderFn","propertyName","_isActive","_rendered","_identityMap","WeakMap","container","motifFragment","olditems","controls","activate","_setupBinding","deactivate","_effectCleanup","_disposeAll","reActivate","forEach","c","_toArray","src","Array","isArray","iterator","from","_getComponentKey","comp","p","props","indexkey","k","motif","__key","isPreCreated","element","parent","_render","idx","untracked","rendered","processRendered","resolveComponent","ComponentBase","_base","itemRef","__fromList","f","_flags","F_LIST_SEEN","F_LIST_ADOPTED","noteListAdopted","_indexSensitive","_isPrimitive","v","update","source","rawSource","i","prevItems","prevComponents","currentRaws","old","raw","list","get","newComponents","usedComponents","seenKeys","claimed","positionalReuse","isReusable","isListAdopted","shared","Math","min","it","is","set","valuePool","prev","queue","occurrences","occurrence","existing","reused","shift","userKey","_syncContainer","effect","appendOnly","oldIndex","oi","stable","predecessors","fill","tails","lo","hi","mid","u","reverse","longestIncreasingIndices","components","seen","Uint8Array","s","isPermutation","_reorder","anchor","at","move","NameValuePair","List","__list","_map","Dispose","Add","ItemAdded","AddBefore","unshift","ItemAddedBefore","Insert","start","ItemSplice","remove","FindFromKey","removeIndex","deleted","t","callbackfn","ReverseClone","normalizePath","replace","findAppendableComponent","nodeType","Node","COMMENT_NODE","DOCUMENT_FRAGMENT_NODE","TEXT_NODE","LeakMonitor","threshold","_origins","_quietChecks","check","origin","_busiestOrigin","busiest","entry","Dictionary","__values","Key","Value","n","OnItemAdded","x","callback","find","predicate","thisArg","createRing","ring","linked","before","after","LinkedList","_ring","_count","isEmpty","_link","pop","link","previous","_unlink","toGetter","read","compareKeys","a","b","Query","where","select","orderBy","keySelector","sort","orderByDescending","distinctBy","groupBy","group","first","firstOrDefault","any","some","all","every","aggregate","seed","func","reduce","toArray","SUPPORTED_CONTRACTS","reported","motifCompiled","contract","includes","NodeTypes","pushTight","Effect","deps","active","running","run","cleanup","effectStack","stop","depMap","effectQueue","leakMonitor","isFlushing","leakEnabled","leakThreshold","leakCleanups","configureReactivityLeakMonitor","opts","track","rawTarget","dep","m","trigger","effects","queued","scheduler","runReported","Promise","resolve","runCounts","batch","e","runs","MAX_EFFECT_RUNS_PER_FLUSH","flushEffects","keyMap","depSet","onValueChanged","popAsyncTracking","pushed","lastIndexOf","asyncTracking","capture","suspend","resume","end","UNTRACKED_SENTINEL","isCheckedInput","el","tagName","toLowerCase","readModelValue","checked","isNumericInput","valueAsNumber","Number","isFinite","Binding","dataSource","dataMember","formatString","formatInfo","updateMode","_memberPath","_component","split","_memberPathSource","functional","getValue","prop","_applyFormat","converter","updateTarget","_updateComponentProperty","isWaiting","isBuilt","isWait","setText","innerHTML","show","hide","style","format","locale","currency","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","decimals","parseInt","match","Date","toLocaleDateString","toLocaleTimeString","toString","QuietCleanup","_fn","TrackedCleanup","coreToDisposable","quietCleanup","trackedCleanup","RAW_KEY","overridesBelow","instance","proto","getPrototypeOf","lazyBindMethods","names","defineProperty","configurable","enumerable","o","bound","bind","writable","resolveValue","isWritablePathKey","BindingCollection","_branchScope","_own","register","when","computeFn","frame","Frame","last","shown","navigate","text","cb","binding","wait","display","html","loop","method","host","place","next","insert","Component","dom","createTextNode","ternary","conditionFn","trueFn","falseFn","_ternaryCallTop","_ternarySchedule","condFn","onTrue","onFalse","defer","stopped","inner","stopInner","stopEffect","condition","outer","ternaryCall","queueMicrotask","watch","ef","activateAll","model","tn","setter","write","converterBack","_modelWriters","lowerTag","writeBack","writeModel","writers","written","deactivateAll","reActivateAll","switchCase","discriminatorFn","cases","defaultFn","currentValue","defaultRunned","caseKey","Emitter","_subscriptions","_disposed","_subscribe","thisArgs","disposables","subscription","_writable","_unsubscribe","fire","_resume","_delivery","targets","delivery","ComponentEmiter","hasListeners","eventName","_emitters","createEvent","off","lower","_listenerDisposables","d","getOrCreateEmitter","emitters","lowerFull","startsWith","invoke","res","disp","addSource","forward","_sourceDisposables","srcs","agg","keys","METHOD_ATTRS","OPEN_METHODS","showModal","showPopover","WHEN_TRUTHY_METHODS","ARGUMENT_METHODS","PROPERTY_FIRST","controlAttribute","_parent","_attrMap","_attrMapStore","_watchers","_watchersStore","attributes","entries","attribute","bag","Reflect","ownKeys","stopper","bindings","_getElement","removeAttribute","HTMLElement","Element","hasAttribute","getAttribute","val","_applyValue","arg","apply","schedule","cacheValue","blur","inp","setSelectionRange","document","fullscreenElement","exitFullscreen","exitPointerLock","catch","pause","exitPictureInPicture","other","srcObject","setAttribute","isBool","input","isComponentLike","hasMethodState","getMethodState","activeElement","selectionStart","selectionEnd","controlClass","_watcherSeq","_counts","_plain","_promote","_countsStore","_createCounts","counts","_sole","_watcherOne","_staticSet","_staticSetStore","_watcherEntries","id","_dropWatcher","_keepWatcher","rec","_addReactive","_addStaticFromArray","_addStaticFromObject","test","_addStaticNames","_splitClasses","_addStaticName","plain","charCodeAt","hasName","classList","classNames","cn","_applySourceDiff","className","trim","contains","_normalizeToSet","obj","sourceId","now","prevCount","staticSet","fresh","join","arr","el2","shimAnimation","cancel","addEventListener","removeEventListener","oncancel","playState","cssTimeToMs","amount","substring","sampleTiming","styles","kind","listOf","aspect","delays","durations","longest","Infinity","total","tracks","transformTrack","computeTransitionInfo","Type","timeout","propCount","hasTransform","samples","transition","animation","winner","forced","transitionProperty","getTransitionInfo","isConnected","window","getComputedStyle","fxElement","createElement","body","appendChild","runCssTransition","phase","appear","css","classes","enter","enterFromClass","enterActiveClass","to","enterToClass","appearFromClass","appearActiveClass","appearToClass","leaveFromClass","leaveActiveClass","leaveToClass","resolveTransitionClasses","addC","removeC","guardTimer","finished","endEvent","endHandler","finish","clearTimeout","offsetHeight","raf","requestAnimationFrame","nextFrame","expectedEnds","dur","duration","leave","info","getTransitionInfoFromElement","ended","ComponentMotif","toggle","domEvent","addHandler","setDisposable","stopAnimations","SIGNAL_TARGET","SIGNAL_KEY","Signal","create","initialValue","equals","_value","_target","_key","_equals","newValue","peek","updater","mutate","mutator","notify","asReadonly","self","valueOf","Computed","getter","_dirty","_computing","_getter","_cleanup","newVal","changed","LazyComputed","_runner","createScheduledEffect","_refresh","isDirty","activeResolver","activeSlot","rawScopedIn","constructionScope","navigatingRoot","slotsByOwner","handlesBySlot","pins","builtIn","boundMethods","runWithResolver","resolver","runWith","slot","previousSlot","previousRaw","pinnedScopeOf","pin","scope","built","_pending","inject","describeInjectToken","recordServiceOwner","pinServiceOwner","root","live","_currentScope","_livePins","retireServiceOwner","_releaseLivePin","ServiceProvider","services","scopedCache","transientSet","_autoDisposeTransients","pendingScoped","_ownerlessSlot","ownerless","_navigationDisposed","describeToken","singletonCache","pendingSingleton","createScope","scoped","scopeName","enableAutoDisposeTransients","enable","desc","getDescriptor","resolveDescriptorSync","getAsync","resolveDescriptorAsync","_getFor","getAllServices","_beginNavigation","navigation","_navigation","version","scopes","_commitNavigation","_touch","_releaseIfUnused","_abandonNavigation","_scopeFor","pinned","_handle","handles","_createHandle","_scopedInstanceSync","_handleAsync","_scopedInstanceAsync","Proxy","_","cache","hit","bindTo","_isSystemScope","inst","instantiateSync","promise","instantiateAsyncIn","checkCycle","lifetime","instantiateAsync","construct","useValue","useFactory","resolveDepsSync","injectionResolver","describeTokenWithSource","useClass","resolveDepsAsyncIn","callDispose","close","ad","asyncDispose","getDeps","resolveTokenSync","results","resolveTokenAsync","dependencies","nextPath","concat","firstIndex","contentBlocks","OPTIONS_OWNER","TRANSITION_SLOT","transitionSettings","mode","noop","createTracker","node","via","parentNode","release","r","settled","except","waits","leaves","enters","trackLeave","pendingLeaves","trackEnter","pendingEnters","isTransitionMode","describeServiceToken","F_DISPOSED_FIRED","F_BUILDING","optionsOf","_motif","peekTransition","clearNavDirection","_markedDirection","enterModeOf","_baseCtx","_leaveContainer","wantsEnterTransition","transitionIn","createTransitionApi","cur","transitionInfo","in","out","activeCssCancel","activeCssPhase","cssProps","skipNextLeave","_suppressEnter","op","transitionOut","enterTransition","base","_enterPlayed","_enterSeq","attempt","_enterRun","placeholder","keyframes","_runCss","leaveTransition","play","deferUntilEntered","activeAnimations","animate","cleanedUp","safeCleanup","g","Animation","ComponentOptionsImpl","enableRouterClassing","ins","contextApplication","onRouterChanged","ComponentHelper","routerClassing","getInstance","isVisible","hasEvent","hasEventKey","fireLifecycle","_emiters","runHooks","listName","sender","label","hasLifecycleHook","lowerName","RESERVED_METHODS","checkedComponentClasses","WeakSet","callsSuper","escaped","RegExp","Function","checkReservedMembers","ctor","problems","own","getOwnPropertyDescriptor","Boolean","anyC","ControlCollection","class","attr","reservedMemberProblems","callInitializeComponent","initializeComponent","_init","oninitializeComponent","_initializeComponentHandlers","_onInitializeComponentHandlers","releaseInitializers","callDisposing","onDisposing","callActivated","onActivated","callDeactivated","onDeactivated","deactivateTree","deep","_inactive","childrenOf","activateTree","callDisposed","onDisposed","callBuilt","onBuilt","scheduleMounted","_mountedScheduled","onMounted","_onMountedHandlers","onElementAttached","callMounted","_mountedFired","callBuilding","onBuilding","callConfig","isConfigured","preconfig","_preconfig","onConfig","callConfigured","_configDeferred","onConfigured","callOnInitialized","isInitialized","onInitialized","callOnInitializing","onInitializing","callVisibilityChanged","visible","onVisibilityChanged","findFragmentContent","controlElement","childNodes","child","closeFragment","backgroundCallback","internalBuild","activatePreBindings","keepsTrace","trace","createComment","insertBefore","followingAnchor","placeTrace","cisBuilt","enterSeq","pendingLeave","__pendingLeave","build","ownItems","currentIndex","appendableElement","getContent","insertHost","ownTrace","referenceNode","removeChild","router","requestPath","uri","targetPath","exact","strip","isExactMatch","prefix","rp","pp","startsWithPath","activeClass","offActive","onActive","exactClass","offExact","onExact","hideStrategy","domAnchor","siblings","removeComponentDom","alsoPlaceholder","nextSibling","detachDomWithAnimation","_keepElementOnDispose","_forceInstantDetach","detachDomWithAnimationAsync","disposeShallow","offAll","deactivateBindings","_controls","deepCleanup","_eventHandlers","_class","_attr","childs","F_DISPOSED","DISPOSE_STARTED","subtreeDisposesSync","_disposing","disposeAsync","teardownApplications","lastCheckedCtor","teardownSeen","contextOverridden","checkedCtors","baseContextGetter","applicationOf","app","__lookupGetter__","ctx","RAW_APPLICATION","Application","main","disposePrefix","asChild","_disposingCount","application","recorded","owningApplication","skipLeaveTransition","silentDetach","disposeFinish","disposeRemainderAsync","liveContentBlocks","findContentBlocks","block","disposeContentBlocks","childOptions","ctrls","BASE_PROTO","emiters","_offAll","_deactivateBindings","_activateBindings","activateBindings","_reactivateBindings","reactivateBindings","_activatePreBindings","_detachDomWithAnimation","_detachDomWithAnimationAsync","_disposeShallow","_deepCleanup","EV_CAPTURE","EV_DOM","EV_REMOVED","NO_MODS","eventDispatchDepth","EventRecord","original","flags","handleEvent","isTrusted","preventEvent","stopEvent","preventDefault","stopPropagation","detached","head","_bindings","registered","setLeaveContainer","createBaseCtx","controlsOwner","collection","NO_CHILDREN","freeze","NO_BINDINGS","ownerControlAdded","control","ownerControlAddedBeforeBuild","ownerControlRemoved","fragmentCloseMarkers","LIFECYCLE_X_EVENTS","SCOPED_SUBSCRIBERS","isPainting","isPainted","onAdd","onAddBeforeBuild","onRemove","createOwnedControls","useModel","modelCtor","reactive","_computeHideStrategy","_isInDom","noteContextOverride","asComponentRoot","constructingComponentRoot","onElementCreating","refs","extractRefs","ParseProps","applyComponentOptions","ctor0","applyPlainElementProps","applyFallthroughProps","takePendingRefs","_scopedContext","_trackContextSubscription","createScopedContext","building","ph","createDocumentFragment","isFragment","textContent","view","templ","deferredSelectValue","nodeName","kids","seq","appendData","append","setState","reState","_textBindingWarned","warnComponentInTextBinding","content","styleObj","_stopStyleEffect","prevKeys","prevWasString","so","cssText","assign","_styleFx","fx","_addHandler","_show","showHost","_showSeq","needAttach","placeholderParent","parentElement","expectedParent","replaceChild","_hide","skip","_toggle","_on","xName","sub","_mountedSubs","subs","colon","mods","evt","once","passive","record","addEventRecord","_trigger","_off","tail","compactEventRecords","_disposeCore","rootDetached","nodes","parents","j","heights","order","disposeRemainderSync","_clear","disableDisposal","clearAsync","using","waitable","onfulfilled","onrejected","doWork","_siblingsSet","_siblingsApi","_createSiblingsApi","nextAll","prevAll","serviceProvider","provider","getService","sp","err","$","fromDom","fromComponent","findingTarget","findContainer","querySelectorAll","findingComponent","found","walk","cmp","ELEMENT_NODE","matches","msMatchesSelector","webkitMatchesSelector","_stopAnimations","_appliedRefs","ref","fns","applied","disposeUnplacedChilds","kid","isCallableRef","runover","rest","LIFECYCLE_HANDLER_LISTS","initializecomponent","oninitializecomponent","onbuilding","onbuilt","onmounted","oninitializing","oninitialized","onconfig","onconfigured","onvisibilitychanged","onactivated","ondeactivated","ondisposing","ondisposed","collectLifecycleHandlers","lowerKey","flat","applyTransitionProp","nkey","_transitionSources","setTransition","COMPONENT_OPTION_KEYS","PLAIN_ELEMENT_SKIP","SPREAD_HTML_KEYS","SPREAD_URL_ATTRIBUTES","JAVASCRIPT_URL","isJavascriptUrl","guardSpreadUrl","attrs","appliedDomProps","_appliedDomProps","FALLTHROUGH_KEYS","isFallthroughKey","subset","attachWaiters","attachObserver","releaseAttachObserver","disconnect","flushAttachWaiters","waiter","MutationObserver","observe","documentElement","childList","subtree","notifyActivated","unpinServiceOwner","notifyDeactivated","MAX_FACTORY_DEPTH","SVG_NAMESPACE","derivedCtor","elementOrParams","arguments","isOptionsObject","materializeOptionsObject","CreateFragment","ops","isSvg","__isSvgElement","createElementNS","fragmentProps","declaredTag","elementTag","trimmed","readElementTag","declaredNs","elementNamespace","createDeclaredElement","_placesChilds","FNComponent","applyRefs","hookList","handlerCount","callAddedHandlers","motifComponent","lone","init","__childExpr","resolved","probe","resolveChildExpression","configuredBefore","initializingBefore","initializedBefore","pre","applyJsxFrameworkProps","unwrapModule","default","assertLoadedComponent","__esModule","describeLoaded","resolveToComponent","spec","make","constructComponentRoot","getOwnPropertyNames","FragmentNode","arg1","arg2","glblths","getCurrentDom","motifDom","_created","doc","cloneNode","cd","selectors","namepsaceUri","convertToSvgElement","newSvgElement","firstChild","SELECTOR_REGEX","Namespace","children","namespace","exec","HTML","_$","_insertOne","takeAt","resolveDone","detachComponentDom","arrive","visit","arrived","runLeaveThenDetach","unlinkOnly","silentUnlink","beforeIndex","newBeforeIndex","insertAt","findAppendableElement","moveComponentDomRange","computeAppendReference","anchorFrom","moveToIndex","open","maxIterations","isNodeInRange","frag","ownerDocument","defaultMapper","Lazy","timers","trackTimer","clearAllTimers","initial","Placeholderview","Loaderview","attemptLoad","timeoutMs","signal","caller","parts","reject","finally","onAbortClear","aborted","onAbort","race","retry","floor","delayMs","whenOnline","normalizeRetry","cleanups","waitBeforeRetry","go","onlineHandler","navigator","onLine","loadPromise","onRetry","loadWithRetry","startTs","fail","onError","Fallbackview","mapResult","elapsed","minDelay","minDelayMs","remaining","onAbortClearDelay","hasOwnTransition","cancelAnimationsDeep","anims","anim","disposeNavigationTarget","xr","navigateHost","page","keepOldControl","navigateId","_latestNavigateId","isBusy","complete","xP","previouspage","_navPending","prevLock","_navLock","_navAbort","abort","AbortController","oldPage","animated","leaving","lazyFrame","flush","navigateLazy","preprocessitem","preProcessing","ContentBodyCollectionHandable","changeBodyCollectionHandler","ContentBlock","ContentBody","SLOT_REGISTERED_EVENT","SLOT_UNREGISTERED_EVENT","TransportRegistry","slots","registerSlot","unregisterSlot","getSlot","Transport","clearSlot","Transporter","transport","newParent","ownerTransporter","keepState","transportMany","createSlot","mount","unmount","detachAll","TransportTo","_transported","_countedLive","_handleSlotChange","eventArgs","_rememberTransported","_clearChildrenFromSlot","kept","_slotRegisteredListener","_slotUnregisteredListener","_onAddRef","currentSlot","_onRemoveRef","ARRAY_MUTATORS","NOT_META","metaReaders","engine","isReadonly","superficial","_engine","receiver","ReactiveMap","readMeta","reader","createGetter","meta","patched","arrayMethods","createSetter","candidate","oldValue","oldLength","numeric","hadKey","proxy","removeArrayStack","createOwn","createHas","createDelete","isOwned","deleteProperty","PATCHED_ARRAY_METHODS","ArrayMethods","createArrayMethods","table","patch","needles","direct","outcome","needle","sorted","KEYS_KEY","keysChanged","lookupKey","wrapIterator","convert","step","createCollectionHandler","methods","wrap","wrapEntry","stored","existed","removed","isMap","createCollectionMethods","ReactiveEngineMapper","AllreactiveMap","startGc","_intervalMs","stopGc","_gci","clearInterval","DisposeMapper","arrayTriggerCache","arrayHandler","deepHandler","collectionHandler","targetType","cname","isExtensible","existingProxy","clearModel","ArrayTrigger","toRaw","deepClone","array","enableTracking","cnt","reactiveRegistry","isDevRegistryEnabled","__MOTIF_STORE_REGISTRY__","createSignal","sig","createComputed","createLazyComputed","Virtualization","_cache","_view","_occurrence","_occurrenceKeys","_isLoadingMore","_emptyRendered","_renderPending","contentWrapper","_initialLoadStarted","_offsets","_observedHeight","_loadSeq","_reloadScheduled","_reloadTimes","_handleScroll","_sender","_event","renderViewport","autoLoad","_state","hasMore","wrapper","fixed","_fixedHeight","data","_offsetOf","scrollTop","clientHeight","autoLoadThreshold","_loadMore","isLoading","currentPage","totalCount","_renderLoadingState","_renderErrorState","_renderEmptyState","_loadInitial","_makeView","_topSpacer","_bottomSpacer","_virtualContent","mainTemplate","overflowY","position","_observeResize","_stopResizeObserver","_stopDataWatch","_clearContent","h","itemHeight","_computeOffsets","offsets","_layoutOffsets","_indexAt","y","_observed","RO","ResizeObserver","observer","_resizeObserver","_dataWatchStop","_request","request","dataRequest","autoRefresh","_scheduleReload","_reloadLoaded","pageSize","pages","response","top","_rebuildView","height","nextPage","overscan","topPx","bottomPx","bottom","rows","keep","_rowFor","inDom","_detachRow","pos","_evictCache","_occurrenceKey","itemTemplate","__listItemRef","cacheSize","loadingTemplate","loadingElement","emptyTemplate","emptyElement","errorTemplate","errorElement","refresh","setData","scrollToIndex","getState","autoRegistry","ServiceCollection","descriptors","reset","addTransient","impl","_add","addSingleton","addScoped","_tokenName","isConstructor","canAutoRegister","buildServiceProvider","lt","tryAddTransient","tryAddSingleton","tryAddScoped","autoRegisterInjectables","joinPaths","endsWith","seg","RouterViewRegistry","outlets","scopeId","unregister","findAll","RouterViewBuilt","RouterView","disposingChilds","__isRouterView","ids","disposeTarget","STORAGE_KEY","USER_INPUT","ScrollMemory","viewport","positions","currentKey","currentPath","visited","restoring","cancelFrame","disarmAbort","offs","locationAnchor","windowViewport","querySelector","scrollTo","behavior","scrollToAnchor","follow","containerViewport","load","history","scrollRestoration","listen","persistNow","visibilityState","cancelRestore","remember","persist","direction","hash","splitUri","inPage","keyOf","restore","location","decodeHash","locationHash","saved","round","oldest","settleMs","startedAt","reached","armAbort","cancelAnimationFrame","removers","storage","sessionStorage","setItem","getItem","parsed","pair","scrollY","getElementById","scrollIntoView","decodeURIComponent","SLIDE_OFFSET","isElement","markDirection","unmarkDirection","saveStyle","restoreStyle","saveScroll","left","scrollLeft","restoreScroll","prefersReducedMotion","matchMedia","easing","overlay","floating","above","margin","boxSizing","getBoundingClientRect","width","pointerEvents","zIndex","NavigationStack","session","uris","loaded","currentTop","gesture","gestureCommitted","awaitingGestureResult","disposed","retainAttached","retain","sb","swipeBack","swipe","edge","installSwipe","retainedCount","isRetaining","nav","begin","point","disposeAllEntries","truncate","stale","disposeEntry","take","pendingDetach","instances","topIndex","deferHide","attached","hidden","scroll","evict","settle","inert","ariaHidden","setProperty","reveal","save","describe","retained","gestureCommitPending","consumeGestureCommit","committed","traversalSettled","cancelled","settleGesture","entering","enteringEl","leavingEl","backwards","enteringStyle","leavingStyle","transform","endGestureListeners","fromIndex","onStart","onTouchStart","touches","clientX","topEl","startX","startY","clientY","lastX","dragging","topSaved","under","underSaved","onMove","onTouchMove","onEnd","onTouchEnd","beginDrag","innerWidth","willChange","applyDrag","dx","progress","dy","abs","cancelable","span","idle","velocity","commit","underEl","currentUnder","back","Scanner","currentColumn","tokens","parameters","codePointAt","str","second","addToken","currentType","parentTokenIndex","parameterIndex","sectionIndex","cpa","currentToken","isOptinal","regexs","parameterName","leadingSlashTokenIndex","leadingStaticTokenIndex","hasLeadingSlash","hasLeadingStatic","consumed","ch","escapeRegex","getNextDelimChar","nx","buildCapture","isOptional","delim","pattern","tok","segStart","segEnd","firstIdx","hasDependent","jj","sj","pj","groupInner","prm","cap","exist","pageSearch","hashIdx","withoutHash","query","qIdx","rx","indx","urlSearchParams","URLSearchParams","queryMap","routeSpecificity","fullPath","statics","params","compareRouteRecords","sa","RouteCollection","records","routesMap","viaAlias","nextChain","variants","isAlias","variant","leaf","scanner","aliasOf","RoutingEngine","_revealed","_previousPath","_previousInstances","controlCache","_navVersion","_pendingActivate","pendingMount","pendingListeners","mainApp","routingModule","route","generatePathString","routeDefinition","part","paramDefinition","paramName","defaultValue","execute","_rootProvider","suppressed","_execute","_routerState","navVersion","restored","controlList","isSameRoute","enableEnter","paramsChanged","prevParams","newParams","allKeys","leafRoute","keepAlive","oldInstance","globalHooks","getHooks","updateHook","onUpdate","updateContext","extend","metaInfo","enterContext","enterHook","onEntering","prepTasks","task","createInstance","motion","previousInstances","_stackLeave","disposeFromDivergencePoint","mountChain","enteringTop","onEnter","disposeAfter","newChain","newInstances","prevChain","prevInstances","outletFor","outletName","targetOutlet","findRouterView","topItem","deferTop","divergeIndex","minLength","containerIndex","_construct","runInConstructionScope","constructWith","parseControl","_resolveFrom","_instanceCreator","activator","OUTLET_WARN_MS","_waitForOutlet","revealed","alreadyShown","showHook","onShow","oldCleanup","warnTimer","_s","_e","rv","q","RouterLink","showHref","href","_addressOf","bypass","metaKey","ctrlKey","shiftKey","altKey","pathOf","newHistorySession","random","UrlRoutingModule","MAX_REDIRECTS","_suppressBeforeEachOnce","_suppressMiddlewaresOnce","_scroll","_stack","_windowNavListener","_historyStamp","_pendingTraversal","_currentUri","_previousRoute","_fallbackRoutes","_navHandler","_routerOptions","routeCollection","RouteItems","routingEngine","_installLinkInterceptor","scrollMemory","_addressMode","hooks","shellUri","_getCurrentUri","_seedHistoryIndex","_onHistoryTraversal","shownUri","protocol","pathname","search","HISTORY_STAMP_KEY","addressOf","_readHistoryStamp","stamp","_isPlainObject","_withHistoryStamp","userState","hasState","_userStateOf","historyState","_omit","_currentHistoryUserState","_nextHistoryStamp","_stampCurrentEntry","replaceState","delta","currentUri","traversal","suppressBeforeEachThisCall","suppressMiddlewaresThisCall","navOptions","force","ok","skipped","gate","proceed","_runMiddlewares","redirectedFrom","redirectError","redirectChain","redirect","requested","_resolveRedirect","_buildFallbackResult","wasInitialNavigation","entryState","toRoute","fromRoute","routeItem","leaveHook","onLeave","leaveContext","leaveResult","guardResult","_runBeforeEachGuards","addressShowsBlocked","_addressShows","snapshotOf","chainOf","appliedPath","leavingStamp","replaceSource","_applyUrl","stackNav","e2","touch","_handleScrollBehavior","_uriWithHash","describeStack","routeInfos","_getFallbackRoute","custom","fallbacks","_builtinNotFound","_builtinError","validate","_findLayoutPrefix","mergedExtend","mergedMeta","segs","best","matched","_pageSearch","validateChain","padding","fontFamily","navigateByName","initialUri","urix","rewritePath","middlewareCollections","dispatch","candidates","catchAll","groups","pickedFromDuplicate","HTMLAnchorElement","rel","URL","pushState","wanted","url","hashIndex","beforeHash","queryIndex","ownHashIndex","ownHash","requestedUri","scrollOption","RouterState","_current","_constructing","snapshot","_globalApplication","startedApplicationBuilder","ApplicationBuilder","rebuild","_middlewares","_beforeEachGuards","module","required","createRouter","urlRoutingModule","events","_routerConfig","_routerRoot","_startedRouter","_lifecycleOff","_enableErrorLogging","CreateBuilder","getAppShell","appShell","appRoot","rootInstance","AppShell","attach","appendToMainHost","routerDone","_removeLifecycleListeners","shell","useTransitions","use","useGuard","guard","redirectPath","guardResolved","useRouter","setRoutes","seenFull","seenAlias","rawPath","isDefaultSlash","isEmptyPath","childPath","aliases","rawAlias","aliasFull","aliasCount","lintRoutes","restartRouter","isOnline","onLifecycle","_installLifecycleListeners","_emitLifecycle","online","win","persisted","isDevelopmentModeEnabled","useReactiveMonitor","useDevelopment","__MOTIF_DEVTOOLS__","setDevtoolsEnabled","flushCompilerContractWarnings","useLogging","setErrorConsoleLogging","useNavigation","useApplication","Injectable","FromService","isTimeoutError","TimeoutError","delay","addJitter","jitterFactor","jitter","Policy","RetryPolicy","retries","backoff","shouldHandle","calcDelay","pow","action","lastErr","TimeoutPolicy","timer","rej","CircuitBreakerPolicy","failureCount","successCount","nextAttemptTime","failureThreshold","successThreshold","durationOfBreakMs","onStateChange","changeState","newState","BulkheadPolicy","maxConcurrent","maxQueue","dequeue","RateLimiterPolicy","tokensPerInterval","intervalMs","capacity","lastRefill","refill","tokensToAdd","FallbackPolicy","PolicyWrap","policies","reduceRight","wrapped","resilience","decorate","policy","Resilience","resiliences","circuitBreaker","bulkhead","rateLimiter"],"mappings":"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"}
|