@agentsmith.bgd/as-components 21.0.29 → 21.0.31

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, signal, output, ViewContainerRef, ViewChild, ChangeDetectionStrategy, Directive, createComponent, isSignal, Injectable, inject, Injector, ElementRef, input, computed, HostListener, effect, forwardRef } from '@angular/core';
2
+ import { Component, signal, output, ViewContainerRef, ViewChild, ChangeDetectionStrategy, Directive, createComponent, Injectable, inject, Injector, ElementRef, input, computed, HostListener, effect, forwardRef } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule, NgClass } from '@angular/common';
5
5
  import { Subject } from 'rxjs';
@@ -24,7 +24,9 @@ class ModalContainerComponent {
24
24
  title = signal(undefined, ...(ngDevMode ? [{ debugName: "title" }] : []));
25
25
  size = signal('md', ...(ngDevMode ? [{ debugName: "size" }] : []));
26
26
  showClose = signal(true, ...(ngDevMode ? [{ debugName: "showClose" }] : []));
27
+ enableLog = signal(false, ...(ngDevMode ? [{ debugName: "enableLog" }] : []));
27
28
  closed = output();
29
+ modalRef;
28
30
  get sizeClass() {
29
31
  return this.size(); // template uses size() directly; keep helper for compatibility if needed
30
32
  }
@@ -41,11 +43,11 @@ class ModalContainerComponent {
41
43
  const inst = compRef.instance;
42
44
  for (const key in inst) {
43
45
  const prop = inst[key];
44
- //console.log('prop check', { key, prop, typeofProp: typeof prop });
46
+ this.log('prop check', { key, prop, typeofProp: typeof prop });
45
47
  if (typeof prop === 'function') {
46
48
  // **real consumer read** → forces input() to become WritableSignal
47
49
  const value = prop(); // ← Angular input() **must** be called
48
- //console.log('>>> primed', { key, value, constructor: prop?.constructor?.name, proto: Object.prototype.toString.call(prop) });
50
+ this.log('>>> primed', { key, value, constructor: prop?.constructor?.name, proto: Object.prototype.toString.call(prop) });
49
51
  }
50
52
  }
51
53
  for (const key in inst) {
@@ -59,15 +61,15 @@ class ModalContainerComponent {
59
61
  if (typeof inputs === 'object' && !Array.isArray(inputs)) {
60
62
  for (const key of Object.keys(inputs)) {
61
63
  const prop = compRef.instance[key];
62
- // console.log('>>> setInput dump', {
63
- // key,
64
- // prop,
65
- // typeofProp: typeof prop,
66
- // isFunction: typeof prop === 'function',
67
- // hasSet: prop?.set !== undefined,
68
- // constructor: prop?.constructor?.name,
69
- // proto: Object.prototype.toString.call(prop)
70
- // });
64
+ this.log('>>> setInput dump', {
65
+ key,
66
+ prop,
67
+ typeofProp: typeof prop,
68
+ isFunction: typeof prop === 'function',
69
+ hasSet: prop?.set !== undefined,
70
+ constructor: prop?.constructor?.name,
71
+ proto: Object.prototype.toString.call(prop)
72
+ });
71
73
  this.setInput(compRef.instance, key, inputs[key], compRef);
72
74
  }
73
75
  }
@@ -89,36 +91,38 @@ class ModalContainerComponent {
89
91
  }
90
92
  setInput(targetInstance, key, value, compRef) {
91
93
  const before = targetInstance[key];
92
- //console.log('>>> inside setInput BEFORE', key, before);
94
+ this.log('>>> inside setInput BEFORE', key, before);
93
95
  const target = targetInstance[key];
94
96
  if (typeof target === 'function' && 'set' in target && typeof target.set === 'function') {
95
97
  // ✅ writable signal
96
98
  target.set(value);
97
- //console.log(`setInput: signal .set() called for ${key}`, targetInstance[key]);
99
+ this.log(`setInput: signal .set() called for ${key}`, targetInstance[key]);
98
100
  }
99
101
  else if (typeof target === 'function') {
100
102
  // 🔹 signal is readonly → cannot set
101
103
  compRef.setInput(key, value);
102
- //console.log(`setInput: target ${key} is a readonly signal!`, targetInstance[key]);
104
+ this.log(`setInput: target ${key} is a readonly signal!`, targetInstance[key]);
103
105
  }
104
106
  else {
105
107
  // fallback for raw primitive (optional)
106
108
  targetInstance[key] = value;
107
- //console.log(`setInput: raw assign for ${key}`, targetInstance[key]);
109
+ this.log(`setInput: raw assign for ${key}`, targetInstance[key]);
108
110
  }
109
111
  }
110
- backdropClick() {
111
- this.close();
112
+ dismiss() {
113
+ this.modalRef.dismiss();
112
114
  }
113
- close(result) {
114
- this.closed.emit(result);
115
+ log(value, ...rest) {
116
+ if (this.enableLog() || localStorage.getItem('loggerEnable')) {
117
+ console.log('%c DEBUG ', 'background: gray; color: white; font-weight: bold;', `AS modal container -> ${value}`, ...rest);
118
+ }
115
119
  }
116
120
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ModalContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
117
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: ModalContainerComponent, isStandalone: true, selector: "as-modal-container", outputs: { closed: "closed" }, viewQueries: [{ propertyName: "contentHost", first: true, predicate: ["contentHost"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div class=\"as-modal-backdrop\" (click)=\"backdropClick()\"></div>\n<div class=\"as-modal\" [ngClass]=\"size()\" role=\"dialog\" aria-modal=\"true\">\n\t@if (title() || showClose()) {\n\t\t<div class=\"as-modal-header\">\n\t\t\t<h3 class=\"as-modal-title\">{{ title() }}</h3>\n\t\t\t@if (showClose()) {\n\t\t\t\t<button class=\"btn-close close pull-right\" type=\"button\" (click)=\"backdropClick()\"></button>\n\t\t\t}\n\t\t</div>\n\t}\n\t<div class=\"as-modal-body\">\n\t\t<ng-template #contentHost></ng-template>\n\t</div>\n</div>\n", styles: [".as-modal-backdrop{position:fixed;inset:0;background:#00000080;z-index:1000}.as-modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:1001;background:#fff;border-radius:4px;max-width:90%}.as-modal.sm{width:300px}.as-modal.md{width:600px}.as-modal.lg{width:900px}.as-modal-header{display:flex;justify-content:space-between;align-items:center;padding:12px;border-bottom:1px solid #eee}.as-modal-body{padding:12px}.as-modal-close{background:none;border:0;font-size:20px;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
121
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: ModalContainerComponent, isStandalone: true, selector: "as-modal-container", outputs: { closed: "closed" }, viewQueries: [{ propertyName: "contentHost", first: true, predicate: ["contentHost"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div class=\"as-modal-backdrop\" (click)=\"dismiss()\"></div>\n<div class=\"as-modal\" [ngClass]=\"size()\" role=\"dialog\" aria-modal=\"true\">\n\t@if (title() || showClose()) {\n\t\t<div class=\"as-modal-header\">\n\t\t\t<h3 class=\"as-modal-title\">{{ title() }}</h3>\n\t\t\t@if (showClose()) {\n\t\t\t\t<button class=\"btn-close close pull-right\" type=\"button\" (click)=\"dismiss()\"></button>\n\t\t\t}\n\t\t</div>\n\t}\n\t<div class=\"as-modal-body\">\n\t\t<ng-template #contentHost></ng-template>\n\t</div>\n</div>\n", styles: [".as-modal-backdrop{position:fixed;inset:0;background:#00000080;z-index:1000}.as-modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:1001;background:#fff;border-radius:4px;max-width:90%}.as-modal.sm{width:300px}.as-modal.md{width:600px}.as-modal.lg{width:900px}.as-modal-header{display:flex;justify-content:space-between;align-items:center;padding:12px;border-bottom:1px solid #eee}.as-modal-body{padding:12px}.as-modal-close{background:none;border:0;font-size:20px;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
118
122
  }
119
123
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ModalContainerComponent, decorators: [{
120
124
  type: Component,
121
- args: [{ selector: 'as-modal-container', imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<div class=\"as-modal-backdrop\" (click)=\"backdropClick()\"></div>\n<div class=\"as-modal\" [ngClass]=\"size()\" role=\"dialog\" aria-modal=\"true\">\n\t@if (title() || showClose()) {\n\t\t<div class=\"as-modal-header\">\n\t\t\t<h3 class=\"as-modal-title\">{{ title() }}</h3>\n\t\t\t@if (showClose()) {\n\t\t\t\t<button class=\"btn-close close pull-right\" type=\"button\" (click)=\"backdropClick()\"></button>\n\t\t\t}\n\t\t</div>\n\t}\n\t<div class=\"as-modal-body\">\n\t\t<ng-template #contentHost></ng-template>\n\t</div>\n</div>\n", styles: [".as-modal-backdrop{position:fixed;inset:0;background:#00000080;z-index:1000}.as-modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:1001;background:#fff;border-radius:4px;max-width:90%}.as-modal.sm{width:300px}.as-modal.md{width:600px}.as-modal.lg{width:900px}.as-modal-header{display:flex;justify-content:space-between;align-items:center;padding:12px;border-bottom:1px solid #eee}.as-modal-body{padding:12px}.as-modal-close{background:none;border:0;font-size:20px;cursor:pointer}\n"] }]
125
+ args: [{ selector: 'as-modal-container', imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<div class=\"as-modal-backdrop\" (click)=\"dismiss()\"></div>\n<div class=\"as-modal\" [ngClass]=\"size()\" role=\"dialog\" aria-modal=\"true\">\n\t@if (title() || showClose()) {\n\t\t<div class=\"as-modal-header\">\n\t\t\t<h3 class=\"as-modal-title\">{{ title() }}</h3>\n\t\t\t@if (showClose()) {\n\t\t\t\t<button class=\"btn-close close pull-right\" type=\"button\" (click)=\"dismiss()\"></button>\n\t\t\t}\n\t\t</div>\n\t}\n\t<div class=\"as-modal-body\">\n\t\t<ng-template #contentHost></ng-template>\n\t</div>\n</div>\n", styles: [".as-modal-backdrop{position:fixed;inset:0;background:#00000080;z-index:1000}.as-modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:1001;background:#fff;border-radius:4px;max-width:90%}.as-modal.sm{width:300px}.as-modal.md{width:600px}.as-modal.lg{width:900px}.as-modal-header{display:flex;justify-content:space-between;align-items:center;padding:12px;border-bottom:1px solid #eee}.as-modal-body{padding:12px}.as-modal-close{background:none;border:0;font-size:20px;cursor:pointer}\n"] }]
122
126
  }], propDecorators: { contentHost: [{
123
127
  type: ViewChild,
124
128
  args: ['contentHost', { read: ViewContainerRef, static: true }]
@@ -126,9 +130,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
126
130
 
127
131
  class BaseModalComponent {
128
132
  onClose = output();
129
- sendEvent(result = undefined) {
133
+ // injected by ModalService
134
+ _dismiss;
135
+ /** called by ModalService */
136
+ _registerDismiss(fn) {
137
+ this._dismiss = fn;
138
+ }
139
+ /** CONFIRM */
140
+ confirm(result = { action: 'default' }) {
130
141
  this.onClose.emit(result);
131
142
  }
143
+ /** CANCEL / SILENT */
144
+ dismiss() {
145
+ this._dismiss?.();
146
+ }
132
147
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BaseModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
133
148
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: BaseModalComponent, isStandalone: true, outputs: { onClose: "onClose" }, ngImport: i0 });
134
149
  }
@@ -150,6 +165,10 @@ class ModalRef {
150
165
  this._onClose.complete();
151
166
  this.destroy();
152
167
  }
168
+ dismiss() {
169
+ this._onClose.complete();
170
+ this.destroy();
171
+ }
153
172
  destroy() {
154
173
  try {
155
174
  if (this.componentRef) {
@@ -164,7 +183,6 @@ class ModalRef {
164
183
  }
165
184
  }
166
185
 
167
- // TypeScript
168
186
  class ModalService {
169
187
  injector;
170
188
  appRef;
@@ -184,14 +202,22 @@ class ModalService {
184
202
  this.setInput(compRef.instance, 'title', config.title);
185
203
  this.setInput(compRef.instance, 'size', config.size ?? 'md');
186
204
  this.setInput(compRef.instance, 'showClose', config.showClose !== false);
205
+ this.setInput(compRef.instance, 'enableLog', config.enableLog !== false);
187
206
  this.appRef.attachView(compRef.hostView);
188
207
  hostEl.appendChild(compRef.hostView.rootNodes[0]);
189
208
  // the container's loadComponent handles assigning inputs (including signals) to the child
190
209
  const childRef = compRef.instance.loadComponent(component, config.data);
191
210
  const modalRef = new ModalRef(compRef, hostEl);
211
+ compRef.instance.modalRef = modalRef;
192
212
  compRef.instance.closed.subscribe((result) => {
193
213
  modalRef.close(result);
194
214
  });
215
+ const maybeBase = childRef.instance;
216
+ if (maybeBase._registerDismiss) {
217
+ maybeBase._registerDismiss(() => {
218
+ modalRef.dismiss(); // calls ModalRef.dismiss
219
+ });
220
+ }
195
221
  const maybeEmitter = childRef.instance.onClose;
196
222
  if (maybeEmitter && typeof maybeEmitter.subscribe === 'function') {
197
223
  maybeEmitter.subscribe((res) => modalRef.close(res));
@@ -207,9 +233,6 @@ class ModalService {
207
233
  targetInstance[key] = value;
208
234
  }
209
235
  }
210
- isWritableSignal(s) {
211
- return isSignal(s) && typeof s.set === 'function';
212
- }
213
236
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ModalService, deps: [{ token: i0.Injector }, { token: i0.ApplicationRef }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable });
214
237
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ModalService, providedIn: 'root' });
215
238
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agentsmith.bgd-as-components.mjs","sources":["../../../projects/as-components/src/lib/as-components.ts","../../../projects/as-components/src/lib/modal-container/modal-container.component.ts","../../../projects/as-components/src/lib/modal-container/modal-container.component.html","../../../projects/as-components/src/lib/modal-container/base-modal.component.ts","../../../projects/as-components/src/lib/services/modal-ref.ts","../../../projects/as-components/src/lib/services/modal.service.ts","../../../projects/as-components/src/lib/tooltip/tooltip.component.ts","../../../projects/as-components/src/lib/tooltip/tooltip.directive.ts","../../../projects/as-components/src/lib/typeahead/typeahead-panel.component.ts","../../../projects/as-components/src/lib/typeahead/typeahead.directive.ts","../../../projects/as-components/src/lib/datepicker/as-flatpickr.component.ts","../../../projects/as-components/src/public-api.ts","../../../projects/as-components/src/agentsmith.bgd-as-components.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n\tselector: 'lib-as-components',\n\timports: [],\n\ttemplate: ` <p> as-components works! </p> `,\n\tstyles: ``,\n})\nexport class AsComponents {}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tComponentRef,\n\toutput,\n\tsignal,\n\tType,\n\tViewChild,\n\tViewContainerRef,\n\tViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport interface ResultPayload {\n\taction: string;\n\tpayload?: unknown;\n}\n\n@Component({\n\tselector: 'as-modal-container',\n\ttemplateUrl: 'modal-container.component.html',\n\tstyleUrl: 'modal-container.component.scss',\n\timports: [CommonModule],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n})\nexport class ModalContainerComponent {\n\t@ViewChild('contentHost', { read: ViewContainerRef, static: true }) contentHost!: ViewContainerRef;\n\n\t// signal-based inputs\n\ttitle = signal<string | undefined>(undefined);\n\tsize = signal<'sm' | 'md' | 'lg'>('md');\n\tshowClose = signal<boolean>(true);\n\n\tclosed = output<ResultPayload | undefined>();\n\n\tget sizeClass() {\n\t\treturn this.size(); // template uses size() directly; keep helper for compatibility if needed\n\t}\n\n\t/**\n\t * Create a component inside the container and set inputs.\n\t * Supports:\n\t * - assigning to writable signals (calls `.set(...)`)\n\t * - assigning to plain properties\n\t * Also handles primitive `inputs` mapping to common names.\n\t */\n\tloadComponent<T>(component: Type<T>, inputs?: Partial<T> | any): ComponentRef<T> {\n\t\tconst compRef = this.contentHost.createComponent<T>(component);\n\n\t\t/* 🟡 PRIME every signal (factory → real signal) */\n\t\tconst inst = compRef.instance as Record<string, any>;\n\t\tfor (const key in inst) {\n\t\t\tconst prop = inst[key];\n\t\t\t//console.log('prop check', { key, prop, typeofProp: typeof prop });\n\t\t\tif (typeof prop === 'function') {\n\t\t\t\t// **real consumer read** → forces input() to become WritableSignal\n\t\t\t\tconst value = prop(); // ← Angular input() **must** be called\n\t\t\t\t//console.log('>>> primed', { key, value, constructor: prop?.constructor?.name, proto: Object.prototype.toString.call(prop) });\n\t\t\t}\n\t\t}\n\n\t\tfor (const key in inst) {\n\t\t\tconst prop = inst[key];\n\t\t\tif (typeof prop === 'function' && prop.length === 0) {\n\t\t\t\t// cheap check: call once (forces input() to become WritableSignal)\n\t\t\t\tprop();\n\t\t\t}\n\t\t}\n\n\t\tif (inputs !== undefined && inputs !== null) {\n\t\t\tif (typeof inputs === 'object' && !Array.isArray(inputs)) {\n\t\t\t\tfor (const key of Object.keys(inputs)) {\n\t\t\t\t\tconst prop = (compRef.instance as any)[key];\n\t\t\t\t\t// console.log('>>> setInput dump', {\n\t\t\t\t\t// key,\n\t\t\t\t\t// prop,\n\t\t\t\t\t// typeofProp: typeof prop,\n\t\t\t\t\t// isFunction: typeof prop === 'function',\n\t\t\t\t\t// hasSet: prop?.set !== undefined,\n\t\t\t\t\t// constructor: prop?.constructor?.name,\n\t\t\t\t\t// proto: Object.prototype.toString.call(prop)\n\t\t\t\t\t// });\n\t\t\t\t\tthis.setInput(compRef.instance as any, key, (inputs as any)[key], compRef);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// primitive mapping\n\t\t\t\t// const inst = compRef.instance as any;\n\t\t\t\tconst inst = compRef as any;\n\t\t\t\tif ('message' in inst) this.setInput(inst, 'message', inputs, compRef);\n\t\t\t\telse if ('data' in inst) this.setInput(inst, 'data', inputs, compRef);\n\t\t\t\telse this.setInput(inst, 'value', inputs, compRef);\n\t\t\t}\n\n\t\t\t// ensure rendering for OnPush / signal changes\n\t\t\tcompRef.changeDetectorRef?.detectChanges();\n\t\t}\n\n\t\treturn compRef;\n\t}\n\n\tprivate setInput(targetInstance: any, key: string, value: any, compRef: ComponentRef<any>) {\n\t\tconst before = targetInstance[key];\n\t\t//console.log('>>> inside setInput BEFORE', key, before);\n\t\tconst target = targetInstance[key];\n\n\t\tif (typeof target === 'function' && 'set' in target && typeof target.set === 'function') {\n\t\t\t// ✅ writable signal\n\t\t\ttarget.set(value);\n\t\t\t//console.log(`setInput: signal .set() called for ${key}`, targetInstance[key]);\n\t\t} else if (typeof target === 'function') {\n\t\t\t// 🔹 signal is readonly → cannot set\n\t\t\tcompRef.setInput(key, value);\n\t\t\t//console.log(`setInput: target ${key} is a readonly signal!`, targetInstance[key]);\n\t\t} else {\n\t\t\t// fallback for raw primitive (optional)\n\t\t\ttargetInstance[key] = value;\n\t\t\t//console.log(`setInput: raw assign for ${key}`, targetInstance[key]);\n\t\t}\n\t}\n\n\tbackdropClick() {\n\t\tthis.close();\n\t}\n\n\tclose(result?: ResultPayload) {\n\t\tthis.closed.emit(result);\n\t}\n}\n","<div class=\"as-modal-backdrop\" (click)=\"backdropClick()\"></div>\n<div class=\"as-modal\" [ngClass]=\"size()\" role=\"dialog\" aria-modal=\"true\">\n\t@if (title() || showClose()) {\n\t\t<div class=\"as-modal-header\">\n\t\t\t<h3 class=\"as-modal-title\">{{ title() }}</h3>\n\t\t\t@if (showClose()) {\n\t\t\t\t<button class=\"btn-close close pull-right\" type=\"button\" (click)=\"backdropClick()\"></button>\n\t\t\t}\n\t\t</div>\n\t}\n\t<div class=\"as-modal-body\">\n\t\t<ng-template #contentHost></ng-template>\n\t</div>\n</div>\n","import { Directive, EventEmitter, output } from '@angular/core';\nimport { ResultPayload } from './modal-container.component';\n\n@Directive()\nexport abstract class BaseModalComponent {\n\treadonly onClose = output<ResultPayload | undefined>();\n\n\tprotected sendEvent(result: ResultPayload | undefined = undefined) {\n\t\tthis.onClose.emit(result);\n\t}\n}\n","// TypeScript\nimport { ComponentRef } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\nimport {ResultPayload} from '../modal-container/modal-container.component';\n\nexport class ModalRef {\n\tprivate _onClose = new Subject<ResultPayload | undefined>();\n\tonClose: Observable<ResultPayload | undefined> = this._onClose.asObservable();\n\n\tconstructor(\n\t\tprivate componentRef: ComponentRef<any>,\n\t\tprivate hostElement: HTMLElement,\n\t) {}\n\n\tclose(result?: ResultPayload | undefined) {\n\t\tthis._onClose.next(result);\n\t\tthis._onClose.complete();\n\t\tthis.destroy();\n\t}\n\n\tprivate destroy() {\n\t\ttry {\n\t\t\tif (this.componentRef) {\n\t\t\t\tthis.componentRef.destroy();\n\t\t\t}\n\t\t} finally {\n\t\t\tif (this.hostElement && this.hostElement.parentNode) {\n\t\t\t\tthis.hostElement.parentNode.removeChild(this.hostElement);\n\t\t\t}\n\t\t}\n\t}\n}\n","// TypeScript\nimport {\n\tInjectable,\n\tApplicationRef,\n\tInjector,\n\tType,\n\tComponentRef,\n\tcreateComponent,\n\tEnvironmentInjector,\n\tisSignal,\n\tWritableSignal,\n} from '@angular/core';\nimport { ModalRef } from './modal-ref';\nimport { ModalContainerComponent, ResultPayload } from '../modal-container/modal-container.component';\n\nexport interface ModalConfig {\n\tid?: string;\n\tsize?: 'sm' | 'md' | 'lg';\n\ttitle?: string;\n\tshowClose?: boolean;\n\tdata?: any;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ModalService {\n\tconstructor(\n\t\tprivate injector: Injector,\n\t\tprivate appRef: ApplicationRef,\n\t\tprivate envInjector: EnvironmentInjector,\n\t) {}\n\n\tshow<T>(component: Type<T>, config: ModalConfig = {}): ModalRef {\n\t\tconst hostEl = document.createElement('div');\n\t\tdocument.body.appendChild(hostEl);\n\n\t\tconst compRef: ComponentRef<ModalContainerComponent> = createComponent(ModalContainerComponent, {\n\t\t\tenvironmentInjector: this.envInjector,\n\t\t});\n\n\t\t// set container inputs using signal-aware helper\n\t\tthis.setInput(compRef.instance as any, 'title', config.title);\n\t\tthis.setInput(compRef.instance as any, 'size', config.size ?? 'md');\n\t\tthis.setInput(compRef.instance as any, 'showClose', config.showClose !== false);\n\n\t\tthis.appRef.attachView(compRef.hostView);\n\t\thostEl.appendChild((compRef.hostView as any).rootNodes[0] as HTMLElement);\n\n\t\t// the container's loadComponent handles assigning inputs (including signals) to the child\n\t\tconst childRef: ComponentRef<T> = compRef.instance.loadComponent(component, config.data);\n\n\t\tconst modalRef = new ModalRef(compRef as any, hostEl);\n\n\t\tcompRef.instance.closed.subscribe((result: ResultPayload | undefined) => {\n\t\t\tmodalRef.close(result);\n\t\t});\n\n\t\tconst maybeEmitter = (childRef.instance as any).onClose;\n\t\tif (maybeEmitter && typeof maybeEmitter.subscribe === 'function') {\n\t\t\tmaybeEmitter.subscribe((res: any) => modalRef.close(res));\n\t\t}\n\n\t\treturn modalRef;\n\t}\n\n\tprivate setInput(targetInstance: any, key: string, value: any) {\n\t\tconst target = targetInstance[key];\n\t\tif (typeof target === 'function' && target && 'set' in target && typeof (target as any).set === 'function') {\n\t\t\t(target as any).set(value);\n\t\t} else {\n\t\t\ttargetInstance[key] = value;\n\t\t}\n\t}\n\tprivate isWritableSignal<T>(s: unknown): s is WritableSignal<T> {\n\t\treturn isSignal(s) && typeof (s as WritableSignal<T>).set === 'function';\n\t}\n}\n","import { Component, signal, WritableSignal, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n\tselector: 'as-tooltip',\n\tstandalone: true,\n\timports: [CommonModule],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplate: `\n\t\t<div\n\t\t\tclass=\"as-tooltip\"\n\t\t\t[class.as-placement-top]=\"placement() === 'bottom'\"\n\t\t\t[class.as-placement-bottom]=\"placement() === 'top'\"\n\t\t\t[class.as-placement-left]=\"placement() === 'right'\"\n\t\t\t[class.as-placement-right]=\"placement() === 'left'\"\n\t\t\t[attr.id]=\"id()\"\n\t\t\trole=\"tooltip\"\n\t\t\t[attr.aria-hidden]=\"!text()\"\n\t\t>\n\t\t\t{{ text() }}\n\t\t\t<span class=\"as-tooltip-arrow\" aria-hidden=\"true\"></span>\n\t\t</div>\n\t`,\n\tstyles: [\n\t\t`\n\t\t\t:host {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\t.as-tooltip {\n\t\t\t\tposition: relative;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tbackground: rgba(97, 97, 97, 0.95);\n\t\t\t\tcolor: #fff;\n\t\t\t\tpadding: 6px 10px;\n\t\t\t\tborder-radius: 4px;\n\t\t\t\tfont-size: 12px;\n\t\t\t\tmax-width: 240px;\n\t\t\t\tbox-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);\n\t\t\t\tline-height: 1.2;\n\t\t\t}\n\n\t\t\t/* Arrow base: zero-sized element using borders to form a triangle */\n\t\t\t.as-tooltip-arrow {\n\t\t\t\tposition: absolute;\n\t\t\t\twidth: 0;\n\t\t\t\theight: 0;\n\t\t\t}\n\n\t\t\t/* Bottom placement: tooltip sits above origin, arrow points downwards (at bottom of tooltip) */\n\t\t\t.as-placement-bottom .as-tooltip-arrow {\n\t\t\t\tleft: 50%;\n\t\t\t\ttransform: translateX(-50%);\n\t\t\t\ttop: 100%;\n\t\t\t\tborder-left: 6px solid transparent;\n\t\t\t\tborder-right: 6px solid transparent;\n\t\t\t\tborder-top: 6px solid rgba(97, 97, 97, 0.95);\n\t\t\t}\n\n\t\t\t/* Top placement: tooltip sits below origin, arrow points upwards (at top of tooltip) */\n\t\t\t.as-placement-top .as-tooltip-arrow {\n\t\t\t\tleft: 50%;\n\t\t\t\ttransform: translateX(-50%);\n\t\t\t\tbottom: 100%;\n\t\t\t\tborder-left: 6px solid transparent;\n\t\t\t\tborder-right: 6px solid transparent;\n\t\t\t\tborder-bottom: 6px solid rgba(97, 97, 97, 0.95);\n\t\t\t}\n\n\t\t\t/* Left placement: tooltip sits to the right of origin, arrow points left (at left edge) */\n\t\t\t.as-placement-left .as-tooltip-arrow {\n\t\t\t\ttop: 50%;\n\t\t\t\ttransform: translateY(-50%);\n\t\t\t\tright: 100%;\n\t\t\t\tborder-top: 6px solid transparent;\n\t\t\t\tborder-bottom: 6px solid transparent;\n\t\t\t\tborder-right: 6px solid rgba(97, 97, 97, 0.95);\n\t\t\t}\n\n\t\t\t/* Right placement: tooltip sits to the left of origin, arrow points right (at right edge) */\n\t\t\t.as-placement-right .as-tooltip-arrow {\n\t\t\t\ttop: 50%;\n\t\t\t\ttransform: translateY(-50%);\n\t\t\t\tleft: 100%;\n\t\t\t\tborder-top: 6px solid transparent;\n\t\t\t\tborder-bottom: 6px solid transparent;\n\t\t\t\tborder-left: 6px solid rgba(97, 97, 97, 0.95);\n\t\t\t}\n\t\t`,\n\t],\n})\nexport class TooltipComponent {\n\treadonly id: WritableSignal<string> = signal(`as-tooltip-${Math.random().toString(36).slice(2, 9)}`);\n\n\t// Writable text so directive can update via `.set(...)`\n\treadonly text: WritableSignal<string | null> = signal<string | null>(null);\n\n\t// Placement signal — set by directive to switch arrow orientation\n\treadonly placement: WritableSignal<'top' | 'bottom' | 'left' | 'right'> = signal<'top' | 'bottom' | 'left' | 'right'>('bottom');\n}\n","import { Directive, ElementRef, HostListener, inject, input, signal, computed, OnDestroy, WritableSignal, Injector } from '@angular/core';\nimport { Overlay, OverlayRef, FlexibleConnectedPositionStrategy, ConnectedPosition } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Subscription } from 'rxjs';\nimport { TooltipComponent } from './tooltip.component';\n\n@Directive({\n\tselector: '[asTooltip]',\n\tstandalone: true,\n})\nexport class TooltipDirective implements OnDestroy {\n\tprivate readonly overlay = inject(Overlay);\n\tprivate readonly injector = inject(Injector);\n\tprivate readonly host = inject(ElementRef<HTMLElement>);\n\n\treadonly asTooltip = input<string | null>(null);\n\treadonly asTooltipPlacement = input<'top' | 'bottom' | 'left' | 'right' | 'auto'>('auto');\n\n\tprivate overlayRef: OverlayRef | null = null;\n\tprivate strategy: FlexibleConnectedPositionStrategy | null = null;\n\tprivate posSub: Subscription | null = null;\n\n\tprivate readonly positions = computed(() => this.buildPositions(this.asTooltipPlacement()));\n\n\t@HostListener('mouseenter')\n\tshow(): void {\n\t\tconst text = this.asTooltip();\n\t\tif (!text) return;\n\n\t\tif (!this.overlayRef) {\n\t\t\tthis.createOverlay();\n\t\t}\n\n\t\tif (!this.overlayRef!.hasAttached()) {\n\t\t\tconst portal = new ComponentPortal(TooltipComponent);\n\t\t\tconst compRef = this.overlayRef!.attach(portal);\n\n\t\t\tcompRef.instance.text.set(text);\n\n\t\t\t// set aria-describedby\n\t\t\tconst id = compRef.instance.id();\n\t\t\tthis.host.nativeElement.setAttribute('aria-describedby', id);\n\n\t\t\t// subscribe to CDK's chosen position and write to tooltip placement signal\n\t\t\tif (this.strategy && !this.posSub) {\n\t\t\t\tthis.posSub = this.strategy.positionChanges.subscribe((change: any) => {\n\t\t\t\t\t// `change` may contain different property names across CDK versions;\n\t\t\t\t\t// try common locations for the resolved connected position.\n\t\t\t\t\tconst pos: ConnectedPosition | undefined =\n\t\t\t\t\t\tchange?.connectionPair ?? change?.connectedPosition ?? change?.lastConnectedPosition ?? change;\n\n\t\t\t\t\tif (pos) {\n\t\t\t\t\t\tconst placement = this.mapPositionToPlacement(pos);\n\t\t\t\t\t\tcompRef.instance.placement.set(placement);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// initial placement hint: map the first position we provided\n\t\t\tconst initial = this.positions()[0];\n\t\t\tcompRef.instance.placement.set(this.mapPositionToPlacement(initial));\n\n\t\t\tthis.overlayRef!.updatePosition();\n\t\t}\n\t}\n\n\t@HostListener('mouseleave')\n\thide(): void {\n\t\tthis.detachOverlay();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.detachOverlay(true);\n\t}\n\n\tprivate createOverlay(): void {\n\t\tconst strategy = this.overlay\n\t\t\t.position()\n\t\t\t.flexibleConnectedTo(this.host)\n\t\t\t.withPositions(this.positions())\n\t\t\t.withPush(true) as FlexibleConnectedPositionStrategy;\n\n\t\t// store strategy so we can watch positionChanges\n\t\tthis.strategy = strategy;\n\n\t\tstrategy.withDefaultOffsetY(8);\n\t\tstrategy.withDefaultOffsetX(8);\n\n\t\tthis.overlayRef = this.overlay.create({\n\t\t\tpositionStrategy: strategy,\n\t\t\tscrollStrategy: this.overlay.scrollStrategies.reposition(),\n\t\t\tpanelClass: 'as-tooltip-panel',\n\t\t\thasBackdrop: false,\n\t\t});\n\t}\n\n\tprivate detachOverlay(dispose = false): void {\n\t\tif (!this.overlayRef) return;\n\n\t\tif (this.overlayRef.hasAttached()) {\n\t\t\tconst hostEl = this.host.nativeElement;\n\t\t\tif (hostEl.getAttribute('aria-describedby')) {\n\t\t\t\thostEl.removeAttribute('aria-describedby');\n\t\t\t}\n\t\t}\n\n\t\tthis.overlayRef.detach();\n\n\t\tif (this.posSub) {\n\t\t\tthis.posSub.unsubscribe();\n\t\t\tthis.posSub = null;\n\t\t}\n\n\t\tif (dispose) {\n\t\t\tthis.overlayRef.dispose();\n\t\t\tthis.overlayRef = null;\n\t\t\tthis.strategy = null;\n\t\t}\n\t}\n\n\tprivate buildPositions(preferred: 'top' | 'bottom' | 'left' | 'right' | 'auto'): ConnectedPosition[] {\n\t\tconst top: ConnectedPosition = {\n\t\t\toriginX: 'center',\n\t\t\toriginY: 'top',\n\t\t\toverlayX: 'center',\n\t\t\toverlayY: 'bottom',\n\t\t\toffsetY: -8,\n\t\t};\n\t\tconst bottom: ConnectedPosition = {\n\t\t\toriginX: 'center',\n\t\t\toriginY: 'bottom',\n\t\t\toverlayX: 'center',\n\t\t\toverlayY: 'top',\n\t\t\toffsetY: 8,\n\t\t};\n\t\tconst left: ConnectedPosition = {\n\t\t\toriginX: 'start',\n\t\t\toriginY: 'center',\n\t\t\toverlayX: 'end',\n\t\t\toverlayY: 'center',\n\t\t\toffsetX: -8,\n\t\t};\n\t\tconst right: ConnectedPosition = {\n\t\t\toriginX: 'end',\n\t\t\toriginY: 'center',\n\t\t\toverlayX: 'start',\n\t\t\toverlayY: 'center',\n\t\t\toffsetX: 8,\n\t\t};\n\n\t\tif (preferred === 'auto') {\n\t\t\treturn [bottom, top, right, left];\n\t\t}\n\n\t\tswitch (preferred) {\n\t\t\tcase 'top':\n\t\t\t\treturn [top, bottom, right, left];\n\t\t\tcase 'bottom':\n\t\t\t\treturn [bottom, top, right, left];\n\t\t\tcase 'left':\n\t\t\t\treturn [left, right, bottom, top];\n\t\t\tcase 'right':\n\t\t\t\treturn [right, left, bottom, top];\n\t\t\tdefault:\n\t\t\t\treturn [bottom, top, right, left];\n\t\t}\n\t}\n\n\tprivate mapPositionToPlacement(pos: ConnectedPosition): 'top' | 'bottom' | 'left' | 'right' {\n\t\t// Determine placement by comparing origin/overlay alignment used by CDK\n\t\tif (pos.originY === 'top' && pos.overlayY === 'bottom') return 'top';\n\t\tif (pos.originY === 'bottom' && pos.overlayY === 'top') return 'bottom';\n\t\tif (pos.originX === 'start' && pos.overlayX === 'end') return 'left';\n\t\tif (pos.originX === 'end' && pos.overlayX === 'start') return 'right';\n\t\t// fallback\n\t\treturn 'bottom';\n\t}\n}\n","// typescript\nimport { Component, signal, WritableSignal, ChangeDetectionStrategy, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport interface Option {\n\tkey: string;\n\tvalue: string;\n}\n\n@Component({\n\tselector: 'as-typeahead-panel',\n\tstandalone: true,\n\timports: [CommonModule],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplate: `\n\t\t<div\n\t\t\tclass=\"as-typeahead-panel\"\n\t\t\trole=\"listbox\"\n\t\t\t[attr.id]=\"id()\"\n\t\t\t[class.as-empty]=\"items().length === 0\"\n\t\t\t[style.max-height.px]=\"visibleCount() * itemHeight\"\n\t\t>\n\t\t\t@for (item of items(); track item.key) {\n\t\t\t\t<div\n\t\t\t\t\trole=\"option\"\n\t\t\t\t\t[attr.id]=\"optionId($index)\"\n\t\t\t\t\t[attr.aria-selected]=\"$index === activeIndex()\"\n\t\t\t\t\tclass=\"as-typeahead-option\"\n\t\t\t\t\t[class.as-active]=\"$index === activeIndex()\"\n\t\t\t\t\t(mouseenter)=\"setActive($index)\"\n\t\t\t\t\t(mousemove)=\"setActive($index)\"\n\t\t\t\t\t(click)=\"select($index)\"\n\t\t\t\t>\n\t\t\t\t\t@if (optionTemplate) {\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: items()[$index] }\"></ng-container>\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t{{ displayWith()(item) }}\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t}\n\n\t\t\t@if (items().length === 0) {\n\t\t\t\t<div class=\"as-no-results\">No results</div>\n\t\t\t}\n\t\t</div>\n\t`,\n\tstyles: [\n\t\t`\n\t\t\t:host {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\t\t\t.as-typeahead-panel {\n\t\t\t\tmin-width: 160px;\n\t\t\t\toverflow: scroll;\n\t\t\t\tbackground: #fff;\n\t\t\t\tborder: 1px solid rgba(0, 0, 0, 0.12);\n\t\t\t\tbox-shadow: 0 4px 10px rgba(0, 0, 0, 0.12);\n\t\t\t\tborder-radius: 4px;\n\t\t\t\tpadding: 4px 0;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t}\n\t\t\t.as-typeahead-option {\n\t\t\t\tpadding: 8px 12px;\n\t\t\t\tcursor: pointer;\n\t\t\t\tuser-select: none;\n\t\t\t\tcolor: #222;\n\t\t\t\tdisplay: block;\n\t\t\t}\n\t\t\t.as-typeahead-option.as-active {\n\t\t\t\tbackground: #f1f1f1;\n\t\t\t}\n\t\t\t.as-no-results {\n\t\t\t\tpadding: 8px 12px;\n\t\t\t\tcolor: rgba(0, 0, 0, 0.5);\n\t\t\t}\n\t\t\t.as-empty {\n\t\t\t\tmin-width: 120px;\n\t\t\t}\n\t\t`,\n\t],\n})\nexport class TypeaheadPanelComponent {\n\treadonly id: WritableSignal<string> = signal(`as-typeahead-panel-${Math.random().toString(36).slice(2, 9)}`);\n\n\treadonly items: WritableSignal<Option[]> = signal<Option[]>([]);\n\t// default shows the `value` field\n\treadonly displayWith: WritableSignal<(item: Option) => string> = signal<(item: Option) => string>((i: Option) => String(i?.value ?? ''));\n\n\treadonly activeIndex: WritableSignal<number | null> = signal<number | null>(null);\n\n\t// visual config: how many items visible before scrollbar (set by directive)\n\treadonly visibleCount: WritableSignal<number> = signal<number>(5);\n\treadonly itemHeight = 40; // px - used to compute maxHeight\n\n\t// optional custom template & callback (set by directive)\n\toptionTemplate: TemplateRef<any> | null = null;\n\tonSelect: ((item: Option) => void) | null = null;\n\n\toptionId(i: number) {\n\t\treturn `${this.id()}-option-${i}`;\n\t}\n\n\tsetActive(i: number | null) {\n\t\tthis.activeIndex.set(i);\n\t}\n\n\tselect(i: number) {\n\t\tconst items = this.items();\n\t\tif (i == null || i < 0 || i >= items.length) return;\n\t\tconst item = items[i];\n\t\tif (this.onSelect) this.onSelect(item);\n\t}\n}\n","import {\n\tDirective,\n\tElementRef,\n\tHostListener,\n\tinject,\n\tinput,\n\tsignal,\n\tcomputed,\n\tOnDestroy,\n\tTemplateRef,\n\tViewContainerRef,\n\teffect,\n\toutput,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Overlay, OverlayRef, FlexibleConnectedPositionStrategy, ConnectedPosition } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { TypeaheadPanelComponent, Option } from './typeahead-panel.component';\n\n@Directive({\n\tselector: '[asTypeahead]',\n\tstandalone: true,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: TypeaheadDirective,\n\t\t\tmulti: true,\n\t\t},\n\t],\n})\nexport class TypeaheadDirective implements ControlValueAccessor, OnDestroy {\n\t/* ---------------- injections ---------------- */\n\tprivate readonly overlay = inject(Overlay);\n\tprivate readonly host = inject(ElementRef<HTMLInputElement>);\n\tprivate readonly vcr = inject(ViewContainerRef);\n\n\t/* ---------------- inputs ---------------- */\n\treadonly options = input<Option[] | null>(null);\n\treadonly displayWith = input<(item: Option) => string>((it: Option) => String(it?.value ?? ''));\n\treadonly filterBy = input<'key' | 'value'>('value');\n\treadonly visibleCount = input<number>(5);\n\treadonly restrictToList = input<boolean>(false);\n\treadonly asTypeaheadTemplate = input<TemplateRef<any> | null>(null);\n\treadonly disabled = input<boolean>(false);\n\treadonly enableLog = input<boolean>(false);\n\n\t/* ---------------- outputs ---------------- */\n\treadonly typeaheadOnSelect = output<Option | null>();\n\n\t/* ---------------- internal ---------------- */\n\tprivate readonly cvaDisabled = signal(false);\n\tprivate readonly selected = signal<Option | null>(null);\n\n\tprivate overlayRef: OverlayRef | null = null;\n\tprivate panel: TypeaheadPanelComponent | null = null;\n\tprivate destroyed = false;\n\n\tprivate onChange: (value: any) => void = () => {};\n\tprivate onTouched: () => void = () => {};\n\n\tprivate readonly positions = computed(() => this.buildPositions());\n\n\tconstructor() {\n\t\t/* sync initial value -> input text */\n\t\teffect(() => {\n\t\t\tconst sel = this.selected();\n\t\t\tif (!sel) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.log('init select value', sel.key, sel.value);\n\t\t\tthis.host.nativeElement.value = this.displayWith()(sel);\n\t\t});\n\t}\n\n\t/* ---------------- CVA ---------------- */\n\twriteValue(value: any): void {\n\t\tif (value == null) {\n\t\t\tthis.setInternalSelection(null);\n\t\t\tthis.host.nativeElement.value = '';\n\t\t\treturn;\n\t\t}\n\n\t\tconst match = this.options()?.find(o => o.key === value) ?? null;\n\t\tthis.setInternalSelection(match);\n\n\t\tif (match) {\n\t\t\tthis.host.nativeElement.value = this.displayWith()(match);\n\t\t} else {\n\t\t\tthis.host.nativeElement.value = String(value);\n\t\t}\n\t}\n\n\tregisterOnChange(fn: any): void {\n\t\tthis.onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: any): void {\n\t\tthis.onTouched = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.log('component disabled', isDisabled);\n\t\tthis.cvaDisabled.set(isDisabled);\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.destroyed = true;\n\t\tthis.detach(true);\n\t}\n\n\t/* ---------------- host events ---------------- */\n\t@HostListener('focus')\n\t@HostListener('click')\n\tonFocus() {\n\t\tif (this.isDisabled()) return;\n\t\tthis.open();\n\t\tthis.showAll();\n\t}\n\n\t@HostListener('input', ['$event'])\n\tonInput(e: Event) {\n\t\tif (this.isDisabled()) return;\n\t\tconst value = (e.target as HTMLInputElement).value;\n\t\tvalue ? this.filter(value) : this.showAll();\n\t}\n\n\t@HostListener('keydown', ['$event'])\n\tonKeydown(e: KeyboardEvent) {\n\t\tif (this.isDisabled() || !this.panel) return;\n\n\t\tconst items = this.panel.items();\n\t\tif (!items.length) return;\n\n\t\tlet idx = this.panel.activeIndex();\n\n\t\tswitch (e.key) {\n\t\t\tcase 'ArrowDown':\n\t\t\t\te.preventDefault();\n\t\t\t\tidx = idx == null ? 0 : Math.min(items.length - 1, idx + 1);\n\t\t\t\tthis.panel.setActive(idx);\n\t\t\t\tbreak;\n\n\t\t\tcase 'ArrowUp':\n\t\t\t\te.preventDefault();\n\t\t\t\tidx = idx == null ? items.length - 1 : Math.max(0, idx - 1);\n\t\t\t\tthis.panel.setActive(idx);\n\t\t\t\tbreak;\n\n\t\t\tcase 'Enter':\n\t\t\t\te.preventDefault();\n\t\t\t\tif (idx != null) this.panel.select(idx);\n\t\t\t\tbreak;\n\n\t\t\tcase 'Escape':\n\t\t\t\tthis.close();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t@HostListener('blur')\n\tonBlur() {\n\t\tsetTimeout(() => {\n\t\t\tif (this.destroyed) return;\n\n\t\t\tconst text = this.host.nativeElement.value;\n\t\t\tconst match = this.findMatch(text);\n\n\t\t\tif (this.restrictToList()) {\n\t\t\t\tthis.commitSelection(match);\n\t\t\t\tthis.host.nativeElement.value = match ? this.displayWith()(match) : '';\n\t\t\t} else if (match) {\n\t\t\t\tthis.commitSelection(match);\n\t\t\t} else {\n\t\t\t\tthis.commitSelection(null);\n\t\t\t}\n\n\t\t\tthis.onTouched();\n\t\t\tthis.close();\n\t\t}, 150);\n\t}\n\n\t/* ---------------- overlay ---------------- */\n\tprivate open() {\n\t\tif (!this.overlayRef) this.createOverlay();\n\t\tif (!this.overlayRef!.hasAttached()) {\n\t\t\tconst portal = new ComponentPortal(TypeaheadPanelComponent, this.vcr);\n\t\t\tconst ref = this.overlayRef!.attach(portal);\n\t\t\tthis.panel = ref.instance;\n\n\t\t\tthis.panel.displayWith.set(this.displayWith());\n\t\t\tthis.panel.optionTemplate = this.asTypeaheadTemplate();\n\t\t\tthis.panel.visibleCount.set(this.visibleCount());\n\t\t\tthis.panel.onSelect = (it: Option) => this.select(it);\n\t\t}\n\t}\n\n\tprivate close() {\n\t\tthis.detach();\n\t}\n\n\tprivate detach(dispose = false) {\n\t\tif (!this.overlayRef) return;\n\t\tif (this.overlayRef.hasAttached()) this.overlayRef.detach();\n\t\tif (dispose) {\n\t\t\tthis.overlayRef.dispose();\n\t\t\tthis.overlayRef = null;\n\t\t\tthis.panel = null;\n\t\t}\n\t}\n\n\tprivate createOverlay() {\n\t\tconst strategy = this.overlay\n\t\t\t.position()\n\t\t\t.flexibleConnectedTo(this.host)\n\t\t\t.withPositions(this.positions())\n\t\t\t.withPush(true) as FlexibleConnectedPositionStrategy;\n\n\t\tstrategy.withDefaultOffsetY(4);\n\n\t\tthis.overlayRef = this.overlay.create({\n\t\t\tpositionStrategy: strategy,\n\t\t\tscrollStrategy: this.overlay.scrollStrategies.reposition(),\n\t\t});\n\t}\n\n\t/* ---------------- helpers ---------------- */\n\tprivate showAll() {\n\t\tthis.open();\n\t\tthis.panel?.items.set(this.options() ?? []);\n\t\tthis.panel?.setActive(null);\n\t}\n\n\tprivate filter(q: string) {\n\t\tconst key = q.toLowerCase();\n\t\tconst list = this.options() ?? [];\n\t\tconst filtered = list.filter(it => {\n\t\t\tconst target = this.filterBy() === 'key' ? String(it.key) : String(it.value);\n\t\t\treturn target.toLowerCase().includes(key);\n\t\t});\n\n\t\tthis.open();\n\t\tthis.panel?.items.set(filtered);\n\t\tthis.panel?.setActive(filtered.length ? 0 : null);\n\t}\n\n\tprivate select(item: Option) {\n\t\tthis.commitSelection(item);\n\t\tthis.host.nativeElement.value = this.displayWith()(item);\n\t\tthis.close();\n\t\tthis.host.nativeElement.focus();\n\t}\n\n\tprivate findMatch(text: string): Option | null {\n\t\tconst list = this.options() ?? [];\n\t\treturn list.find(it => this.displayWith()(it) === text) ?? list.find(it => String(it.key) === text) ?? null;\n\t}\n\n\tprivate isDisabled(): boolean {\n\t\treturn this.disabled() || this.cvaDisabled();\n\t}\n\n\tprivate buildPositions(): ConnectedPosition[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\toriginX: 'start',\n\t\t\t\toriginY: 'bottom',\n\t\t\t\toverlayX: 'start',\n\t\t\t\toverlayY: 'top',\n\t\t\t\toffsetY: 4,\n\t\t\t},\n\t\t\t{\n\t\t\t\toriginX: 'start',\n\t\t\t\toriginY: 'top',\n\t\t\t\toverlayX: 'start',\n\t\t\t\toverlayY: 'bottom',\n\t\t\t\toffsetY: -4,\n\t\t\t},\n\t\t];\n\t}\n\n\tprivate commitSelection(sel: Option | null) {\n\t\tthis.selected.set(sel);\n\t\tthis.log('Set value and emit', sel);\n\n\t\t// CVA\n\t\tthis.onChange(sel?.key ?? null);\n\n\t\t// OUTPUT\n\t\tthis.typeaheadOnSelect.emit(sel);\n\t}\n\n\tprivate setInternalSelection(sel: Option | null) {\n\t\tthis.log('Set value only', sel);\n\t\tthis.selected.set(sel);\n\t}\n\n\tlog(value: any, ...rest: any[]): void {\n\t\tif (this.enableLog() || localStorage.getItem('loggerEnable')) {\n\t\t\tconsole.log('%c DEBUG ', 'background: gray; color: white; font-weight: bold;', `AS typeahead -> ${value}`, ...rest);\n\t\t}\n\t}\n}\n","import { AfterViewInit, Component, effect, ElementRef, forwardRef, input, NgZone, OnDestroy, output, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport flatpickr from 'flatpickr';\nimport 'flatpickr/dist/flatpickr.css';\nimport { NgClass } from '@angular/common';\n\nimport { FlatpickrDateFormat, FlatpickrMode, FlatpickrValue } from './flatpickr.types';\n\n@Component({\n\tselector: 'as-flatpickr',\n\tstandalone: true,\n\ttemplate: `<input\n\t\t#input\n\t\ttype=\"text\"\n\t\t[attr.placeholder]=\"placeholder()\"\n\t\t[ngClass]=\"elementClass()\"\n\t\t[autocomplete]=\"autocomplete()\"\n\t\t[id]=\"id()\"\n\t/>`,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => AsFlatpickrComponent),\n\t\t\tmulti: true,\n\t\t},\n\t],\n\timports: [NgClass],\n})\nexport class AsFlatpickrComponent implements ControlValueAccessor, AfterViewInit, OnDestroy {\n\t/* ---------------- Inputs ---------------- */\n\tmode = input<FlatpickrMode>('single');\n\tenableTime = input(false);\n\ttimeOnly = input(false);\n\tplaceholder = input<string | null>(null);\n\tid = input<string | null>(null);\n\tdateFormat = input<FlatpickrDateFormat>('Y-m-d');\n\telementClass = input<string>('form-control form-icon-calendar');\n\ttime24h = input(true);\n\tautocomplete = input<'on' | 'off'>('off');\n\n\t/* External value (string-based now) */\n\tvalue = input<FlatpickrValue>(null);\n\tvalueChange = output<FlatpickrValue>();\n\n\t/* ---------------- Internals ---------------- */\n\t@ViewChild('input', { static: true }) private inputEl!: ElementRef<HTMLInputElement>;\n\tprivate fp: flatpickr.Instance | null = null;\n\n\tprivate onChange: (value: FlatpickrValue) => void = () => {};\n\tprivate onTouched: () => void = () => {};\n\tprivate disabled = false;\n\n\tconstructor(private zone: NgZone) {\n\t\t/* ---------------- Signal effect for syncing value ---------------- */\n\t\teffect(() => {\n\t\t\tconst val = this.value();\n\t\t\tif (!this.fp) return;\n\n\t\t\tthis.zone.runOutsideAngular(() => {\n\t\t\t\tconst displayFormat = this.getDisplayFormat();\n\t\t\t\tif (Array.isArray(val)) {\n\t\t\t\t\tconst dates = val.map(v => flatpickr.parseDate(v, displayFormat));\n\t\t\t\t\tthis.fp!.setDate(dates as Date[], false);\n\t\t\t\t} else if (val) {\n\t\t\t\t\tconst date = flatpickr.parseDate(val, displayFormat);\n\t\t\t\t\tthis.fp!.setDate(date ?? [], false);\n\t\t\t\t} else {\n\t\t\t\t\tthis.fp!.clear();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate handleOpen = () => {\n\t\tif (this.disabled) {\n\t\t\tthis.fp?.close();\n\t\t}\n\t};\n\n\t/* ---------------- Initialize Flatpickr ---------------- */\n\tngAfterViewInit() {\n\t\tthis.zone.runOutsideAngular(() => {\n\t\t\tthis.fp = flatpickr(this.inputEl.nativeElement, {\n\t\t\t\tmode: this.mode(),\n\t\t\t\tenableTime: this.enableTime() || this.timeOnly(),\n\t\t\t\tnoCalendar: this.timeOnly(),\n\t\t\t\tallowInput: true,\n\t\t\t\ttime_24hr: this.time24h(),\n\t\t\t\tdateFormat: this.getDisplayFormat(),\n\t\t\t\tonOpen: this.handleOpen,\n\t\t\t\tonChange: (dates, _str, instance) => this.handleChange(dates, instance),\n\t\t\t\tonClose: () => this.zone.run(() => this.onTouched()),\n\t\t\t});\n\n\t\t\t// Manual validation for typed input\n\t\t\tthis.inputEl.nativeElement.addEventListener('blur', () => {\n\t\t\t\tconst typedValue = this.inputEl.nativeElement.value;\n\t\t\t\tconst parsed = this.parseTypedValue(typedValue);\n\n\t\t\t\tthis.zone.run(() => {\n\t\t\t\t\tif (parsed === null) {\n\t\t\t\t\t\tthis.onChange(null);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.onChange(parsed);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\t/* ---------------- CVA Implementation ---------------- */\n\twriteValue(value: FlatpickrValue): void {\n\t\tif (!this.fp) return;\n\t\tconst displayFormat = this.getDisplayFormat();\n\t\tif (Array.isArray(value)) {\n\t\t\tconst dates = value.map(v => flatpickr.parseDate(v, displayFormat));\n\t\t\tthis.fp.setDate(dates as Date[], false);\n\t\t} else if (value) {\n\t\t\tconst date = flatpickr.parseDate(value, displayFormat);\n\t\t\tthis.fp.setDate(date ?? [], false);\n\t\t} else {\n\t\t\tthis.fp.clear();\n\t\t}\n\t}\n\n\tregisterOnChange(fn: (value: FlatpickrValue) => void): void {\n\t\tthis.onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: () => void): void {\n\t\tthis.onTouched = fn;\n\t}\n\n\tsetDisabledState(disabled: boolean): void {\n\t\tthis.disabled = disabled;\n\t\tif (this.inputEl) this.inputEl.nativeElement.disabled = disabled;\n\t}\n\n\t/* ---------------- Handle Flatpickr changes ---------------- */\n\tprivate handleChange(dates: Date[], instance: flatpickr.Instance) {\n\t\tconst format = this.dateFormat() ?? this.getDefaultDateFormat();\n\t\tlet value: FlatpickrValue = null;\n\n\t\tif (this.mode() === 'range') {\n\t\t\tif (dates.length === 2) {\n\t\t\t\tvalue = dates.map(d => flatpickr.formatDate(d, format)) as [string, string];\n\t\t\t}\n\t\t} else if (dates[0]) {\n\t\t\tif (this.enableTime() || this.timeOnly()) {\n\t\t\t\tconst timeFormat = this.time24h() ? 'H:i' : 'h:i K';\n\t\t\t\tvalue = flatpickr.formatDate(dates[0], `${format} ${timeFormat}`);\n\t\t\t} else {\n\t\t\t\tvalue = flatpickr.formatDate(dates[0], format);\n\t\t\t}\n\n\t\t\t// ✅ REMOVE automatic close here\n\t\t\t// instance.close();\n\t\t}\n\n\t\tthis.zone.run(() => {\n\t\t\tthis.onChange(value);\n\t\t\tthis.valueChange.emit(value);\n\t\t});\n\t}\n\n\t/* ---------------- Typed input parsing ---------------- */\n\tprivate parseTypedValue(inputValue: string): FlatpickrValue {\n\t\ttry {\n\t\t\tconst displayFormat = this.getDisplayFormat();\n\t\t\tif (!inputValue) return null;\n\n\t\t\tif (this.mode() === 'range') {\n\t\t\t\tconst parts = inputValue.split(' to ').map(s => s.trim());\n\t\t\t\tif (parts.length !== 2) return null;\n\n\t\t\t\tconst start = flatpickr.parseDate(parts[0], displayFormat);\n\t\t\t\tconst end = flatpickr.parseDate(parts[1], displayFormat);\n\t\t\t\tif (!start || !end || start > end) return null;\n\n\t\t\t\treturn [flatpickr.formatDate(start, displayFormat), flatpickr.formatDate(end, displayFormat)];\n\t\t\t} else {\n\t\t\t\tconst parsed = flatpickr.parseDate(inputValue, displayFormat);\n\t\t\t\treturn parsed ? flatpickr.formatDate(parsed, displayFormat) : null;\n\t\t\t}\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/* ---------------- Format helpers ---------------- */\n\tprivate getDefaultDateFormat(): string {\n\t\tif (this.timeOnly()) return 'H:i';\n\t\tif (this.enableTime()) return 'Y-m-d';\n\t\treturn 'Y-m-d';\n\t}\n\n\t/** Combine dateFormat + optional time for display/input */\n\tprivate getDisplayFormat(): string {\n\t\tif (this.timeOnly()) {\n\t\t\treturn this.time24h() ? 'H:i' : 'h:i K'; // time only\n\t\t}\n\t\tconst baseFormat = this.dateFormat() ?? 'Y-m-d';\n\t\tif (this.enableTime()) {\n\t\t\tconst timeFormat = this.time24h() ? 'H:i' : 'h:i K';\n\t\t\treturn `${baseFormat} ${timeFormat}`; // date + time\n\t\t}\n\t\treturn baseFormat; // date only\n\t}\n\n\t/* ---------------- Cleanup ---------------- */\n\tngOnDestroy() {\n\t\tthis.fp?.destroy();\n\t\tthis.fp = null;\n\t}\n}\n","/*\n * Public API Surface of as-components\n */\n\nexport * from './lib/as-components';\nexport * from './lib/modal-container/modal-container.component';\nexport * from './lib/modal-container/base-modal.component';\nexport * from './lib/services/modal-ref';\nexport * from './lib/services/modal.service';\nexport * from './lib/tooltip/tooltip.directive';\nexport * from './lib/tooltip/tooltip.component';\nexport * from './lib/typeahead/typeahead.directive';\nexport * from './lib/typeahead/typeahead-panel.component';\nexport * from './lib/datepicker/as-flatpickr.component';\nexport * from './lib/datepicker/flatpickr.types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;MAQa,YAAY,CAAA;uGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,6EAHd,CAAA,+BAAA,CAAiC,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAG/B,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;+BACC,mBAAmB,EAAA,OAAA,EACpB,EAAE,EAAA,QAAA,EACD,CAAA,+BAAA,CAAiC,EAAA;;;MCqB/B,uBAAuB,CAAA;AACiC,IAAA,WAAW;;AAG/E,IAAA,KAAK,GAAG,MAAM,CAAqB,SAAS,iDAAC;AAC7C,IAAA,IAAI,GAAG,MAAM,CAAqB,IAAI,gDAAC;AACvC,IAAA,SAAS,GAAG,MAAM,CAAU,IAAI,qDAAC;IAEjC,MAAM,GAAG,MAAM,EAA6B;AAE5C,IAAA,IAAI,SAAS,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB;AAEA;;;;;;AAMG;IACH,aAAa,CAAI,SAAkB,EAAE,MAAyB,EAAA;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAI,SAAS,CAAC;;AAG9D,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,QAA+B;AACpD,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACvB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;;AAEtB,YAAA,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;;AAE/B,gBAAA,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC;;YAEtB;QACD;AAEA,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACvB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;YACtB,IAAI,OAAO,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;;AAEpD,gBAAA,IAAI,EAAE;YACP;QACD;QAEA,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE;AAC5C,YAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACzD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;oBACtC,MAAM,IAAI,GAAI,OAAO,CAAC,QAAgB,CAAC,GAAG,CAAC;;;;;;;;;;AAU3C,oBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAe,EAAE,GAAG,EAAG,MAAc,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;gBAC3E;YACD;iBAAO;;;gBAGN,MAAM,IAAI,GAAG,OAAc;gBAC3B,IAAI,SAAS,IAAI,IAAI;oBAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;qBACjE,IAAI,MAAM,IAAI,IAAI;oBAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;;oBAChE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;YACnD;;AAGA,YAAA,OAAO,CAAC,iBAAiB,EAAE,aAAa,EAAE;QAC3C;AAEA,QAAA,OAAO,OAAO;IACf;AAEQ,IAAA,QAAQ,CAAC,cAAmB,EAAE,GAAW,EAAE,KAAU,EAAE,OAA0B,EAAA;AACxF,QAAA,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC;;AAElC,QAAA,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC;AAElC,QAAA,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,KAAK,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,UAAU,EAAE;;AAExF,YAAA,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;;QAElB;AAAO,aAAA,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;;AAExC,YAAA,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;;QAE7B;aAAO;;AAEN,YAAA,cAAc,CAAC,GAAG,CAAC,GAAG,KAAK;;QAE5B;IACD;IAEA,aAAa,GAAA;QACZ,IAAI,CAAC,KAAK,EAAE;IACb;AAEA,IAAA,KAAK,CAAC,MAAsB,EAAA;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IACzB;uGArGY,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACD,gBAAgB,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BnD,0hBAcA,ojBDQW,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAIV,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;+BACC,oBAAoB,EAAA,OAAA,EAGrB,CAAC,YAAY,CAAC,mBACN,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,QAAA,EAAA,0hBAAA,EAAA,MAAA,EAAA,CAAA,6fAAA,CAAA,EAAA;;sBAGf,SAAS;uBAAC,aAAa,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE;;;MEvB7C,kBAAkB,CAAA;IAC9B,OAAO,GAAG,MAAM,EAA6B;IAE5C,SAAS,CAAC,SAAoC,SAAS,EAAA;AAChE,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1B;uGALqB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBADvC;;;MCEY,QAAQ,CAAA;AAKX,IAAA,YAAA;AACA,IAAA,WAAA;AALD,IAAA,QAAQ,GAAG,IAAI,OAAO,EAA6B;AAC3D,IAAA,OAAO,GAA0C,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;IAE7E,WAAA,CACS,YAA+B,EAC/B,WAAwB,EAAA;QADxB,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,WAAW,GAAX,WAAW;IACjB;AAEH,IAAA,KAAK,CAAC,MAAkC,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACxB,IAAI,CAAC,OAAO,EAAE;IACf;IAEQ,OAAO,GAAA;AACd,QAAA,IAAI;AACH,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACtB,gBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;YAC5B;QACD;gBAAU;YACT,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;gBACpD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;YAC1D;QACD;IACD;AACA;;AC/BD;MAwBa,YAAY,CAAA;AAEf,IAAA,QAAA;AACA,IAAA,MAAA;AACA,IAAA,WAAA;AAHT,IAAA,WAAA,CACS,QAAkB,EAClB,MAAsB,EACtB,WAAgC,EAAA;QAFhC,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,WAAW,GAAX,WAAW;IACjB;AAEH,IAAA,IAAI,CAAI,SAAkB,EAAE,MAAA,GAAsB,EAAE,EAAA;QACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC5C,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAEjC,QAAA,MAAM,OAAO,GAA0C,eAAe,CAAC,uBAAuB,EAAE;YAC/F,mBAAmB,EAAE,IAAI,CAAC,WAAW;AACrC,SAAA,CAAC;;AAGF,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAe,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;AAC7D,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAe,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC;AACnE,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAe,EAAE,WAAW,EAAE,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC;QAE/E,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC;AACxC,QAAA,MAAM,CAAC,WAAW,CAAE,OAAO,CAAC,QAAgB,CAAC,SAAS,CAAC,CAAC,CAAgB,CAAC;;AAGzE,QAAA,MAAM,QAAQ,GAAoB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC;QAExF,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAc,EAAE,MAAM,CAAC;QAErD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAiC,KAAI;AACvE,YAAA,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;AACvB,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,YAAY,GAAI,QAAQ,CAAC,QAAgB,CAAC,OAAO;QACvD,IAAI,YAAY,IAAI,OAAO,YAAY,CAAC,SAAS,KAAK,UAAU,EAAE;AACjE,YAAA,YAAY,CAAC,SAAS,CAAC,CAAC,GAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1D;AAEA,QAAA,OAAO,QAAQ;IAChB;AAEQ,IAAA,QAAQ,CAAC,cAAmB,EAAE,GAAW,EAAE,KAAU,EAAA;AAC5D,QAAA,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC;AAClC,QAAA,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,OAAQ,MAAc,CAAC,GAAG,KAAK,UAAU,EAAE;AAC1G,YAAA,MAAc,CAAC,GAAG,CAAC,KAAK,CAAC;QAC3B;aAAO;AACN,YAAA,cAAc,CAAC,GAAG,CAAC,GAAG,KAAK;QAC5B;IACD;AACQ,IAAA,gBAAgB,CAAI,CAAU,EAAA;QACrC,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAQ,CAAuB,CAAC,GAAG,KAAK,UAAU;IACzE;uGAlDY,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cADC,MAAM,EAAA,CAAA;;2FACnB,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCoErB,gBAAgB,CAAA;IACnB,EAAE,GAA2B,MAAM,CAAC,CAAA,WAAA,EAAc,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAG3F,IAAA,IAAI,GAAkC,MAAM,CAAgB,IAAI,gDAAC;;AAGjE,IAAA,SAAS,GAAwD,MAAM,CAAsC,QAAQ,qDAAC;uGAPnH,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnFlB;;;;;;;;;;;;;;AAcT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ohCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAhBS,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAqFV,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAxF5B,SAAS;+BACC,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,eAAA,EACN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;AAcT,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,ohCAAA,CAAA,EAAA;;;MCZW,gBAAgB,CAAA;AACX,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,IAAA,IAAI,GAAG,MAAM,EAAC,UAAuB,EAAC;AAE9C,IAAA,SAAS,GAAG,KAAK,CAAgB,IAAI,qDAAC;AACtC,IAAA,kBAAkB,GAAG,KAAK,CAA+C,MAAM,8DAAC;IAEjF,UAAU,GAAsB,IAAI;IACpC,QAAQ,GAA6C,IAAI;IACzD,MAAM,GAAwB,IAAI;AAEzB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,qDAAC;IAG3F,IAAI,GAAA;AACH,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC7B,QAAA,IAAI,CAAC,IAAI;YAAE;AAEX,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACrB,IAAI,CAAC,aAAa,EAAE;QACrB;QAEA,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC,WAAW,EAAE,EAAE;AACpC,YAAA,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,gBAAgB,CAAC;YACpD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAW,CAAC,MAAM,CAAC,MAAM,CAAC;YAE/C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;;YAG/B,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;YAChC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,kBAAkB,EAAE,EAAE,CAAC;;YAG5D,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAClC,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,MAAW,KAAI;;;AAGrE,oBAAA,MAAM,GAAG,GACR,MAAM,EAAE,cAAc,IAAI,MAAM,EAAE,iBAAiB,IAAI,MAAM,EAAE,qBAAqB,IAAI,MAAM;oBAE/F,IAAI,GAAG,EAAE;wBACR,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC;wBAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;oBAC1C;AACD,gBAAA,CAAC,CAAC;YACH;;YAGA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AACnC,YAAA,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAEpE,YAAA,IAAI,CAAC,UAAW,CAAC,cAAc,EAAE;QAClC;IACD;IAGA,IAAI,GAAA;QACH,IAAI,CAAC,aAAa,EAAE;IACrB;IAEA,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;IACzB;IAEQ,aAAa,GAAA;AACpB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC;AACpB,aAAA,QAAQ;AACR,aAAA,mBAAmB,CAAC,IAAI,CAAC,IAAI;AAC7B,aAAA,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE;aAC9B,QAAQ,CAAC,IAAI,CAAsC;;AAGrD,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAExB,QAAA,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAC9B,QAAA,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAE9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACrC,YAAA,gBAAgB,EAAE,QAAQ;YAC1B,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC1D,YAAA,UAAU,EAAE,kBAAkB;AAC9B,YAAA,WAAW,EAAE,KAAK;AAClB,SAAA,CAAC;IACH;IAEQ,aAAa,CAAC,OAAO,GAAG,KAAK,EAAA;QACpC,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE;AAEtB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE;AAClC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa;AACtC,YAAA,IAAI,MAAM,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE;AAC5C,gBAAA,MAAM,CAAC,eAAe,CAAC,kBAAkB,CAAC;YAC3C;QACD;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AAExB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AACzB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;QACnB;QAEA,IAAI,OAAO,EAAE;AACZ,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACrB;IACD;AAEQ,IAAA,cAAc,CAAC,SAAuD,EAAA;AAC7E,QAAA,MAAM,GAAG,GAAsB;AAC9B,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,CAAC,CAAC;SACX;AACD,QAAA,MAAM,MAAM,GAAsB;AACjC,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,OAAO,EAAE,CAAC;SACV;AACD,QAAA,MAAM,IAAI,GAAsB;AAC/B,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,CAAC,CAAC;SACX;AACD,QAAA,MAAM,KAAK,GAAsB;AAChC,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,OAAO,EAAE,CAAC;SACV;AAED,QAAA,IAAI,SAAS,KAAK,MAAM,EAAE;YACzB,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC;QAClC;QAEA,QAAQ,SAAS;AAChB,YAAA,KAAK,KAAK;gBACT,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;AAClC,YAAA,KAAK,QAAQ;gBACZ,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC;AAClC,YAAA,KAAK,MAAM;gBACV,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC;AAClC,YAAA,KAAK,OAAO;gBACX,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC;AAClC,YAAA;gBACC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC;;IAEpC;AAEQ,IAAA,sBAAsB,CAAC,GAAsB,EAAA;;QAEpD,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;AAAE,YAAA,OAAO,KAAK;QACpE,IAAI,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK;AAAE,YAAA,OAAO,QAAQ;QACvE,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK;AAAE,YAAA,OAAO,MAAM;QACpE,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO;AAAE,YAAA,OAAO,OAAO;;AAErE,QAAA,OAAO,QAAQ;IAChB;uGAtKY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,IAAI;AAChB,iBAAA;;sBAeC,YAAY;uBAAC,YAAY;;sBA0CzB,YAAY;uBAAC,YAAY;;;AClE3B;MAiFa,uBAAuB,CAAA;IAC1B,EAAE,GAA2B,MAAM,CAAC,CAAA,mBAAA,EAAsB,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEnG,IAAA,KAAK,GAA6B,MAAM,CAAW,EAAE,iDAAC;;AAEtD,IAAA,WAAW,GAA6C,MAAM,CAA2B,CAAC,CAAS,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,uDAAC;AAE/H,IAAA,WAAW,GAAkC,MAAM,CAAgB,IAAI,uDAAC;;AAGxE,IAAA,YAAY,GAA2B,MAAM,CAAS,CAAC,wDAAC;AACxD,IAAA,UAAU,GAAG,EAAE,CAAC;;IAGzB,cAAc,GAA4B,IAAI;IAC9C,QAAQ,GAAoC,IAAI;AAEhD,IAAA,QAAQ,CAAC,CAAS,EAAA;QACjB,OAAO,CAAA,EAAG,IAAI,CAAC,EAAE,EAAE,CAAA,QAAA,EAAW,CAAC,EAAE;IAClC;AAEA,IAAA,SAAS,CAAC,CAAgB,EAAA;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB;AAEA,IAAA,MAAM,CAAC,CAAS,EAAA;AACf,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM;YAAE;AAC7C,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;QACrB,IAAI,IAAI,CAAC,QAAQ;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IACvC;uGA9BY,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ucAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAjCS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAqEV,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAxEnC,SAAS;+BACC,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,eAAA,EACN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BT,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,ucAAA,CAAA,EAAA;;;MCfW,kBAAkB,CAAA;;AAEb,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,IAAI,GAAG,MAAM,EAAC,UAA4B,EAAC;AAC3C,IAAA,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;;AAGtC,IAAA,OAAO,GAAG,KAAK,CAAkB,IAAI,mDAAC;AACtC,IAAA,WAAW,GAAG,KAAK,CAA2B,CAAC,EAAU,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,uDAAC;AACtF,IAAA,QAAQ,GAAG,KAAK,CAAkB,OAAO,oDAAC;AAC1C,IAAA,YAAY,GAAG,KAAK,CAAS,CAAC,wDAAC;AAC/B,IAAA,cAAc,GAAG,KAAK,CAAU,KAAK,0DAAC;AACtC,IAAA,mBAAmB,GAAG,KAAK,CAA0B,IAAI,+DAAC;AAC1D,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;;IAGjC,iBAAiB,GAAG,MAAM,EAAiB;;AAGnC,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,uDAAC;AAC3B,IAAA,QAAQ,GAAG,MAAM,CAAgB,IAAI,oDAAC;IAE/C,UAAU,GAAsB,IAAI;IACpC,KAAK,GAAmC,IAAI;IAC5C,SAAS,GAAG,KAAK;AAEjB,IAAA,QAAQ,GAAyB,MAAK,EAAE,CAAC;AACzC,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;IAEvB,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAElE,IAAA,WAAA,GAAA;;QAEC,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC3B,IAAI,CAAC,GAAG,EAAE;gBACT;YACD;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC;AACjD,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC;AACxD,QAAA,CAAC,CAAC;IACH;;AAGA,IAAA,UAAU,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AAClB,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;YAClC;QACD;QAEA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,IAAI,IAAI;AAChE,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;QAEhC,IAAI,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC;QAC1D;aAAO;YACN,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC9C;IACD;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACnB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACpB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,UAAU,CAAC;AAC1C,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;IACjC;IAEA,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAClB;;IAKA,OAAO,GAAA;QACN,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;QACvB,IAAI,CAAC,IAAI,EAAE;QACX,IAAI,CAAC,OAAO,EAAE;IACf;AAGA,IAAA,OAAO,CAAC,CAAQ,EAAA;QACf,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACvB,QAAA,MAAM,KAAK,GAAI,CAAC,CAAC,MAA2B,CAAC,KAAK;AAClD,QAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;IAC5C;AAGA,IAAA,SAAS,CAAC,CAAgB,EAAA;QACzB,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE;QAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;QAChC,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE;QAEnB,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;AAElC,QAAA,QAAQ,CAAC,CAAC,GAAG;AACZ,YAAA,KAAK,WAAW;gBACf,CAAC,CAAC,cAAc,EAAE;gBAClB,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;AAC3D,gBAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC;gBACzB;AAED,YAAA,KAAK,SAAS;gBACb,CAAC,CAAC,cAAc,EAAE;gBAClB,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;AAC3D,gBAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC;gBACzB;AAED,YAAA,KAAK,OAAO;gBACX,CAAC,CAAC,cAAc,EAAE;gBAClB,IAAI,GAAG,IAAI,IAAI;AAAE,oBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;gBACvC;AAED,YAAA,KAAK,QAAQ;gBACZ,IAAI,CAAC,KAAK,EAAE;gBACZ;;IAEH;IAGA,MAAM,GAAA;QACL,UAAU,CAAC,MAAK;YACf,IAAI,IAAI,CAAC,SAAS;gBAAE;YAEpB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK;YAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAElC,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AAC1B,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;YACvE;iBAAO,IAAI,KAAK,EAAE;AACjB,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAC5B;iBAAO;AACN,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YAC3B;YAEA,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,KAAK,EAAE;QACb,CAAC,EAAE,GAAG,CAAC;IACR;;IAGQ,IAAI,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,aAAa,EAAE;QAC1C,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC,WAAW,EAAE,EAAE;YACpC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,uBAAuB,EAAE,IAAI,CAAC,GAAG,CAAC;YACrE,MAAM,GAAG,GAAG,IAAI,CAAC,UAAW,CAAC,MAAM,CAAC,MAAM,CAAC;AAC3C,YAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ;AAEzB,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACtD,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAChD,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAU,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD;IACD;IAEQ,KAAK,GAAA;QACZ,IAAI,CAAC,MAAM,EAAE;IACd;IAEQ,MAAM,CAAC,OAAO,GAAG,KAAK,EAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE;AACtB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;AAAE,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;QAC3D,IAAI,OAAO,EAAE;AACZ,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;QAClB;IACD;IAEQ,aAAa,GAAA;AACpB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC;AACpB,aAAA,QAAQ;AACR,aAAA,mBAAmB,CAAC,IAAI,CAAC,IAAI;AAC7B,aAAA,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE;aAC9B,QAAQ,CAAC,IAAI,CAAsC;AAErD,QAAA,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAE9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACrC,YAAA,gBAAgB,EAAE,QAAQ;YAC1B,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC1D,SAAA,CAAC;IACH;;IAGQ,OAAO,GAAA;QACd,IAAI,CAAC,IAAI,EAAE;AACX,QAAA,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC;IAC5B;AAEQ,IAAA,MAAM,CAAC,CAAS,EAAA;AACvB,QAAA,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,IAAG;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC;YAC5E,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC1C,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,IAAI,EAAE;QACX,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/B,QAAA,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC;IAClD;AAEQ,IAAA,MAAM,CAAC,IAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC;QACxD,IAAI,CAAC,KAAK,EAAE;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;IAChC;AAEQ,IAAA,SAAS,CAAC,IAAY,EAAA;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;AACjC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI;IAC5G;IAEQ,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE;IAC7C;IAEQ,cAAc,GAAA;QACrB,OAAO;AACN,YAAA;AACC,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE,CAAC;AACV,aAAA;AACD,YAAA;AACC,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,CAAC,CAAC;AACX,aAAA;SACD;IACF;AAEQ,IAAA,eAAe,CAAC,GAAkB,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;AACtB,QAAA,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC;;QAGnC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC;;AAG/B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC;IACjC;AAEQ,IAAA,oBAAoB,CAAC,GAAkB,EAAA;AAC9C,QAAA,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;IACvB;AAEA,IAAA,GAAG,CAAC,KAAU,EAAE,GAAG,IAAW,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;AAC7D,YAAA,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,oDAAoD,EAAE,CAAA,gBAAA,EAAmB,KAAK,CAAA,CAAE,EAAE,GAAG,IAAI,CAAC;QACpH;IACD;uGA9QY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,OAAA,EAAA,WAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,EAAA,SAAA,EARnB;AACV,YAAA;AACC,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,kBAAkB;AAC/B,gBAAA,KAAK,EAAE,IAAI;AACX,aAAA;AACD,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAEW,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAX9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE;AACV,wBAAA;AACC,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,kBAAoB;AAC/B,4BAAA,KAAK,EAAE,IAAI;AACX,yBAAA;AACD,qBAAA;AACD,iBAAA;;sBAkFC,YAAY;uBAAC,OAAO;;sBACpB,YAAY;uBAAC,OAAO;;sBAOpB,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBAOhC,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;sBAiClC,YAAY;uBAAC,MAAM;;;MClIR,oBAAoB,CAAA;AAwBZ,IAAA,IAAA;;AAtBpB,IAAA,IAAI,GAAG,KAAK,CAAgB,QAAQ,gDAAC;AACrC,IAAA,UAAU,GAAG,KAAK,CAAC,KAAK,sDAAC;AACzB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,WAAW,GAAG,KAAK,CAAgB,IAAI,uDAAC;AACxC,IAAA,EAAE,GAAG,KAAK,CAAgB,IAAI,8CAAC;AAC/B,IAAA,UAAU,GAAG,KAAK,CAAsB,OAAO,sDAAC;AAChD,IAAA,YAAY,GAAG,KAAK,CAAS,iCAAiC,wDAAC;AAC/D,IAAA,OAAO,GAAG,KAAK,CAAC,IAAI,mDAAC;AACrB,IAAA,YAAY,GAAG,KAAK,CAAe,KAAK,wDAAC;;AAGzC,IAAA,KAAK,GAAG,KAAK,CAAiB,IAAI,iDAAC;IACnC,WAAW,GAAG,MAAM,EAAkB;;AAGQ,IAAA,OAAO;IAC7C,EAAE,GAA8B,IAAI;AAEpC,IAAA,QAAQ,GAAoC,MAAK,EAAE,CAAC;AACpD,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;IAChC,QAAQ,GAAG,KAAK;AAExB,IAAA,WAAA,CAAoB,IAAY,EAAA;QAAZ,IAAA,CAAA,IAAI,GAAJ,IAAI;;QAEvB,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,EAAE;gBAAE;AAEd,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;AAChC,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC7C,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACvB,oBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;oBACjE,IAAI,CAAC,EAAG,CAAC,OAAO,CAAC,KAAe,EAAE,KAAK,CAAC;gBACzC;qBAAO,IAAI,GAAG,EAAE;oBACf,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC;oBACpD,IAAI,CAAC,EAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC;gBACpC;qBAAO;AACN,oBAAA,IAAI,CAAC,EAAG,CAAC,KAAK,EAAE;gBACjB;AACD,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;IACH;IAEQ,UAAU,GAAG,MAAK;AACzB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE;QACjB;AACD,IAAA,CAAC;;IAGD,eAAe,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;YAChC,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAC/C,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;gBACjB,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;AAChD,gBAAA,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC3B,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE;AACzB,gBAAA,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE;gBACnC,MAAM,EAAE,IAAI,CAAC,UAAU;AACvB,gBAAA,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC;AACvE,gBAAA,OAAO,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;AACpD,aAAA,CAAC;;YAGF,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAK;gBACxD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK;gBACnD,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AAE/C,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AAClB,oBAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACpB,wBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACpB;yBAAO;AACN,wBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACtB;AACD,gBAAA,CAAC,CAAC;AACH,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;IACH;;AAGA,IAAA,UAAU,CAAC,KAAqB,EAAA;QAC/B,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE;AACd,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC7C,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACzB,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;YACnE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAe,EAAE,KAAK,CAAC;QACxC;aAAO,IAAI,KAAK,EAAE;YACjB,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC;YACtD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC;QACnC;aAAO;AACN,YAAA,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;QAChB;IACD;AAEA,IAAA,gBAAgB,CAAC,EAAmC,EAAA;AACnD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACnB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACpB;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;QACxB,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,GAAG,QAAQ;IACjE;;IAGQ,YAAY,CAAC,KAAa,EAAE,QAA4B,EAAA;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,oBAAoB,EAAE;QAC/D,IAAI,KAAK,GAAmB,IAAI;AAEhC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,EAAE;AAC5B,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACvB,gBAAA,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAqB;YAC5E;QACD;AAAO,aAAA,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;YACpB,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACzC,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,OAAO;AACnD,gBAAA,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE,CAAC;YAClE;iBAAO;AACN,gBAAA,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;YAC/C;;;QAID;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,QAAA,CAAC,CAAC;IACH;;AAGQ,IAAA,eAAe,CAAC,UAAkB,EAAA;AACzC,QAAA,IAAI;AACH,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC7C,YAAA,IAAI,CAAC,UAAU;AAAE,gBAAA,OAAO,IAAI;AAE5B,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,EAAE;gBAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACzD,gBAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAAE,oBAAA,OAAO,IAAI;AAEnC,gBAAA,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC;AAC1D,gBAAA,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC;gBACxD,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG;AAAE,oBAAA,OAAO,IAAI;AAE9C,gBAAA,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;YAC9F;iBAAO;gBACN,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC;AAC7D,gBAAA,OAAO,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,IAAI;YACnE;QACD;AAAE,QAAA,MAAM;AACP,YAAA,OAAO,IAAI;QACZ;IACD;;IAGQ,oBAAoB,GAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,KAAK;QACjC,IAAI,IAAI,CAAC,UAAU,EAAE;AAAE,YAAA,OAAO,OAAO;AACrC,QAAA,OAAO,OAAO;IACf;;IAGQ,gBAAgB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,OAAO,CAAC;QACzC;QACA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,OAAO;AAC/C,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACtB,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,OAAO;AACnD,YAAA,OAAO,GAAG,UAAU,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE,CAAC;QACtC;QACA,OAAO,UAAU,CAAC;IACnB;;IAGA,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE;AAClB,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI;IACf;uGAzLY,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EATrB;AACV,YAAA;AACC,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,gBAAA,KAAK,EAAE,IAAI;AACX,aAAA;SACD,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdS,CAAA;;;;;;;AAOP,GAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAQO,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEL,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBApBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;AAOP,GAAA,CAAA;AACH,oBAAA,SAAS,EAAE;AACV,wBAAA;AACC,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACnD,4BAAA,KAAK,EAAE,IAAI;AACX,yBAAA;AACD,qBAAA;oBACD,OAAO,EAAE,CAAC,OAAO,CAAC;AAClB,iBAAA;;sBAkBC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;AC9CrC;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"agentsmith.bgd-as-components.mjs","sources":["../../../projects/as-components/src/lib/as-components.ts","../../../projects/as-components/src/lib/modal-container/modal-container.component.ts","../../../projects/as-components/src/lib/modal-container/modal-container.component.html","../../../projects/as-components/src/lib/modal-container/base-modal.component.ts","../../../projects/as-components/src/lib/services/modal-ref.ts","../../../projects/as-components/src/lib/services/modal.service.ts","../../../projects/as-components/src/lib/tooltip/tooltip.component.ts","../../../projects/as-components/src/lib/tooltip/tooltip.directive.ts","../../../projects/as-components/src/lib/typeahead/typeahead-panel.component.ts","../../../projects/as-components/src/lib/typeahead/typeahead.directive.ts","../../../projects/as-components/src/lib/datepicker/as-flatpickr.component.ts","../../../projects/as-components/src/public-api.ts","../../../projects/as-components/src/agentsmith.bgd-as-components.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n\tselector: 'lib-as-components',\n\timports: [],\n\ttemplate: ` <p> as-components works! </p> `,\n\tstyles: ``,\n})\nexport class AsComponents {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n output,\n signal,\n Type,\n ViewChild,\n ViewContainerRef, ViewEncapsulation\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ModalRef} from '../services/modal-ref';\n\nexport interface ResultPayload {\n action: string,\n payload?: unknown\n}\n\n@Component({\n selector: 'as-modal-container',\n templateUrl: 'modal-container.component.html',\n styleUrl: 'modal-container.component.scss',\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class ModalContainerComponent {\n @ViewChild('contentHost', {read: ViewContainerRef, static: true}) contentHost!: ViewContainerRef;\n\n // signal-based inputs\n title = signal<string | undefined>(undefined);\n size = signal<'sm' | 'md' | 'lg'>('md');\n showClose = signal<boolean>(true);\n enableLog = signal<boolean>(false);\n\n closed = output<ResultPayload>();\n\n modalRef!: ModalRef;\n\n get sizeClass() {\n return this.size(); // template uses size() directly; keep helper for compatibility if needed\n }\n\n /**\n * Create a component inside the container and set inputs.\n * Supports:\n * - assigning to writable signals (calls `.set(...)`)\n * - assigning to plain properties\n * Also handles primitive `inputs` mapping to common names.\n */\n loadComponent<T>(component: Type<T>, inputs?: Partial<T> | any): ComponentRef<T> {\n const compRef = this.contentHost.createComponent<T>(component);\n\n /* 🟡 PRIME every signal (factory → real signal) */\n const inst = compRef.instance as Record<string, any>;\n for (const key in inst) {\n const prop = inst[key];\n this.log('prop check', { key, prop, typeofProp: typeof prop });\n if (typeof prop === 'function') {\n // **real consumer read** → forces input() to become WritableSignal\n const value = prop(); // ← Angular input() **must** be called\n this.log('>>> primed', { key, value, constructor: prop?.constructor?.name, proto: Object.prototype.toString.call(prop) });\n }\n }\n\n for (const key in inst) {\n const prop = inst[key];\n if (typeof prop === 'function' && prop.length === 0) {\n // cheap check: call once (forces input() to become WritableSignal)\n prop();\n }\n }\n\n if (inputs !== undefined && inputs !== null) {\n if (typeof inputs === 'object' && !Array.isArray(inputs)) {\n for (const key of Object.keys(inputs)) {\n const prop = (compRef.instance as any)[key];\n this.log('>>> setInput dump', {\n key,\n prop,\n typeofProp: typeof prop,\n isFunction: typeof prop === 'function',\n hasSet: prop?.set !== undefined,\n constructor: prop?.constructor?.name,\n proto: Object.prototype.toString.call(prop)\n });\n this.setInput(compRef.instance as any, key, (inputs as any)[key], compRef);\n }\n } else {\n // primitive mapping\n // const inst = compRef.instance as any;\n const inst = compRef as any;\n if ('message' in inst) this.setInput(inst, 'message', inputs, compRef);\n else if ('data' in inst) this.setInput(inst, 'data', inputs, compRef);\n else this.setInput(inst, 'value', inputs, compRef);\n }\n\n // ensure rendering for OnPush / signal changes\n compRef.changeDetectorRef?.detectChanges();\n }\n\n return compRef;\n }\n\n private setInput(targetInstance: any, key: string, value: any, compRef: ComponentRef<any>) {\n const before = targetInstance[key];\n this.log('>>> inside setInput BEFORE', key, before);\n const target = targetInstance[key];\n\n if (typeof target === 'function' && 'set' in target && typeof target.set === 'function') {\n // ✅ writable signal\n target.set(value);\n this.log(`setInput: signal .set() called for ${key}`, targetInstance[key]);\n } else if (typeof target === 'function') {\n // 🔹 signal is readonly → cannot set\n compRef.setInput(key, value);\n this.log(`setInput: target ${key} is a readonly signal!`, targetInstance[key]);\n } else {\n // fallback for raw primitive (optional)\n targetInstance[key] = value;\n this.log(`setInput: raw assign for ${key}`, targetInstance[key]);\n }\n }\n\n dismiss() {\n this.modalRef.dismiss();\n }\n log(value: any, ...rest: any[]): void {\n if (this.enableLog() || localStorage.getItem('loggerEnable')) {\n console.log('%c DEBUG ', 'background: gray; color: white; font-weight: bold;', `AS modal container -> ${value}`, ...rest);\n }\n }\n}\n","<div class=\"as-modal-backdrop\" (click)=\"dismiss()\"></div>\n<div class=\"as-modal\" [ngClass]=\"size()\" role=\"dialog\" aria-modal=\"true\">\n\t@if (title() || showClose()) {\n\t\t<div class=\"as-modal-header\">\n\t\t\t<h3 class=\"as-modal-title\">{{ title() }}</h3>\n\t\t\t@if (showClose()) {\n\t\t\t\t<button class=\"btn-close close pull-right\" type=\"button\" (click)=\"dismiss()\"></button>\n\t\t\t}\n\t\t</div>\n\t}\n\t<div class=\"as-modal-body\">\n\t\t<ng-template #contentHost></ng-template>\n\t</div>\n</div>\n","import { Directive, EventEmitter, output } from '@angular/core';\nimport { ResultPayload } from './modal-container.component';\n\n@Directive()\nexport abstract class BaseModalComponent {\n\treadonly onClose = output<ResultPayload | undefined>();\n\n // injected by ModalService\n private _dismiss?: () => void;\n\n /** called by ModalService */\n _registerDismiss(fn: () => void) {\n this._dismiss = fn;\n }\n\n /** CONFIRM */\n protected confirm(result: ResultPayload = { action: 'default' }) {\n this.onClose.emit(result);\n }\n\n /** CANCEL / SILENT */\n protected dismiss() {\n this._dismiss?.();\n }\n}\n","// TypeScript\nimport { ComponentRef } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\nimport {ResultPayload} from '../modal-container/modal-container.component';\n\nexport class ModalRef {\n\tprivate _onClose = new Subject<ResultPayload>();\n\tonClose: Observable<ResultPayload> = this._onClose.asObservable();\n\n\tconstructor(\n\t\tprivate componentRef: ComponentRef<any>,\n\t\tprivate hostElement: HTMLElement,\n\t) {}\n\n\tclose(result: ResultPayload) {\n\t\tthis._onClose.next(result);\n\t\tthis._onClose.complete();\n\t\tthis.destroy();\n\t}\n\n dismiss() {\n this._onClose.complete();\n this.destroy();\n }\n\n\tprivate destroy() {\n\t\ttry {\n\t\t\tif (this.componentRef) {\n\t\t\t\tthis.componentRef.destroy();\n\t\t\t}\n\t\t} finally {\n\t\t\tif (this.hostElement && this.hostElement.parentNode) {\n\t\t\t\tthis.hostElement.parentNode.removeChild(this.hostElement);\n\t\t\t}\n\t\t}\n\t}\n}\n","import {\n ApplicationRef,\n ComponentRef,\n createComponent,\n EnvironmentInjector,\n Injectable,\n Injector,\n Type,\n} from '@angular/core';\nimport {ModalRef} from './modal-ref';\nimport {ModalContainerComponent, ResultPayload} from '../modal-container/modal-container.component';\nimport {BaseModalComponent} from '../modal-container/base-modal.component';\n\nexport interface ModalConfig {\n id?: string;\n size?: 'sm' | 'md' | 'lg';\n title?: string;\n showClose?: boolean;\n enableLog?: boolean;\n data?: any;\n}\n\n@Injectable({providedIn: 'root'})\nexport class ModalService {\n constructor(\n private injector: Injector,\n private appRef: ApplicationRef,\n private envInjector: EnvironmentInjector,\n ) {\n }\n\n show<T>(component: Type<T>, config: ModalConfig = {}): ModalRef {\n const hostEl = document.createElement('div');\n document.body.appendChild(hostEl);\n\n const compRef: ComponentRef<ModalContainerComponent> = createComponent(ModalContainerComponent, {\n environmentInjector: this.envInjector,\n });\n\n // set container inputs using signal-aware helper\n this.setInput(compRef.instance as any, 'title', config.title);\n this.setInput(compRef.instance as any, 'size', config.size ?? 'md');\n this.setInput(compRef.instance as any, 'showClose', config.showClose !== false);\n this.setInput(compRef.instance as any, 'enableLog', config.enableLog !== false);\n\n this.appRef.attachView(compRef.hostView);\n hostEl.appendChild((compRef.hostView as any).rootNodes[0] as HTMLElement);\n\n // the container's loadComponent handles assigning inputs (including signals) to the child\n const childRef: ComponentRef<T> = compRef.instance.loadComponent(component, config.data);\n\n const modalRef = new ModalRef(compRef as any, hostEl);\n\n (compRef.instance as any).modalRef = modalRef;\n compRef.instance.closed.subscribe((result: ResultPayload) => {\n modalRef.close(result);\n });\n\n const maybeBase = childRef.instance as BaseModalComponent;\n if (maybeBase._registerDismiss) {\n maybeBase._registerDismiss(() => {\n modalRef.dismiss(); // calls ModalRef.dismiss\n });\n }\n\n const maybeEmitter = (childRef.instance as any).onClose;\n if (maybeEmitter && typeof maybeEmitter.subscribe === 'function') {\n maybeEmitter.subscribe((res: any) => modalRef.close(res));\n }\n\n return modalRef;\n }\n\n private setInput(targetInstance: any, key: string, value: any) {\n const target = targetInstance[key];\n if (typeof target === 'function' && target && 'set' in target && typeof (target as any).set === 'function') {\n (target as any).set(value);\n } else {\n targetInstance[key] = value;\n }\n }\n}\n","import { Component, signal, WritableSignal, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n\tselector: 'as-tooltip',\n\tstandalone: true,\n\timports: [CommonModule],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplate: `\n\t\t<div\n\t\t\tclass=\"as-tooltip\"\n\t\t\t[class.as-placement-top]=\"placement() === 'bottom'\"\n\t\t\t[class.as-placement-bottom]=\"placement() === 'top'\"\n\t\t\t[class.as-placement-left]=\"placement() === 'right'\"\n\t\t\t[class.as-placement-right]=\"placement() === 'left'\"\n\t\t\t[attr.id]=\"id()\"\n\t\t\trole=\"tooltip\"\n\t\t\t[attr.aria-hidden]=\"!text()\"\n\t\t>\n\t\t\t{{ text() }}\n\t\t\t<span class=\"as-tooltip-arrow\" aria-hidden=\"true\"></span>\n\t\t</div>\n\t`,\n\tstyles: [\n\t\t`\n\t\t\t:host {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\t.as-tooltip {\n\t\t\t\tposition: relative;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tbackground: rgba(97, 97, 97, 0.95);\n\t\t\t\tcolor: #fff;\n\t\t\t\tpadding: 6px 10px;\n\t\t\t\tborder-radius: 4px;\n\t\t\t\tfont-size: 12px;\n\t\t\t\tmax-width: 240px;\n\t\t\t\tbox-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);\n\t\t\t\tline-height: 1.2;\n\t\t\t}\n\n\t\t\t/* Arrow base: zero-sized element using borders to form a triangle */\n\t\t\t.as-tooltip-arrow {\n\t\t\t\tposition: absolute;\n\t\t\t\twidth: 0;\n\t\t\t\theight: 0;\n\t\t\t}\n\n\t\t\t/* Bottom placement: tooltip sits above origin, arrow points downwards (at bottom of tooltip) */\n\t\t\t.as-placement-bottom .as-tooltip-arrow {\n\t\t\t\tleft: 50%;\n\t\t\t\ttransform: translateX(-50%);\n\t\t\t\ttop: 100%;\n\t\t\t\tborder-left: 6px solid transparent;\n\t\t\t\tborder-right: 6px solid transparent;\n\t\t\t\tborder-top: 6px solid rgba(97, 97, 97, 0.95);\n\t\t\t}\n\n\t\t\t/* Top placement: tooltip sits below origin, arrow points upwards (at top of tooltip) */\n\t\t\t.as-placement-top .as-tooltip-arrow {\n\t\t\t\tleft: 50%;\n\t\t\t\ttransform: translateX(-50%);\n\t\t\t\tbottom: 100%;\n\t\t\t\tborder-left: 6px solid transparent;\n\t\t\t\tborder-right: 6px solid transparent;\n\t\t\t\tborder-bottom: 6px solid rgba(97, 97, 97, 0.95);\n\t\t\t}\n\n\t\t\t/* Left placement: tooltip sits to the right of origin, arrow points left (at left edge) */\n\t\t\t.as-placement-left .as-tooltip-arrow {\n\t\t\t\ttop: 50%;\n\t\t\t\ttransform: translateY(-50%);\n\t\t\t\tright: 100%;\n\t\t\t\tborder-top: 6px solid transparent;\n\t\t\t\tborder-bottom: 6px solid transparent;\n\t\t\t\tborder-right: 6px solid rgba(97, 97, 97, 0.95);\n\t\t\t}\n\n\t\t\t/* Right placement: tooltip sits to the left of origin, arrow points right (at right edge) */\n\t\t\t.as-placement-right .as-tooltip-arrow {\n\t\t\t\ttop: 50%;\n\t\t\t\ttransform: translateY(-50%);\n\t\t\t\tleft: 100%;\n\t\t\t\tborder-top: 6px solid transparent;\n\t\t\t\tborder-bottom: 6px solid transparent;\n\t\t\t\tborder-left: 6px solid rgba(97, 97, 97, 0.95);\n\t\t\t}\n\t\t`,\n\t],\n})\nexport class TooltipComponent {\n\treadonly id: WritableSignal<string> = signal(`as-tooltip-${Math.random().toString(36).slice(2, 9)}`);\n\n\t// Writable text so directive can update via `.set(...)`\n\treadonly text: WritableSignal<string | null> = signal<string | null>(null);\n\n\t// Placement signal — set by directive to switch arrow orientation\n\treadonly placement: WritableSignal<'top' | 'bottom' | 'left' | 'right'> = signal<'top' | 'bottom' | 'left' | 'right'>('bottom');\n}\n","import { Directive, ElementRef, HostListener, inject, input, signal, computed, OnDestroy, WritableSignal, Injector } from '@angular/core';\nimport { Overlay, OverlayRef, FlexibleConnectedPositionStrategy, ConnectedPosition } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Subscription } from 'rxjs';\nimport { TooltipComponent } from './tooltip.component';\n\n@Directive({\n\tselector: '[asTooltip]',\n\tstandalone: true,\n})\nexport class TooltipDirective implements OnDestroy {\n\tprivate readonly overlay = inject(Overlay);\n\tprivate readonly injector = inject(Injector);\n\tprivate readonly host = inject(ElementRef<HTMLElement>);\n\n\treadonly asTooltip = input<string | null>(null);\n\treadonly asTooltipPlacement = input<'top' | 'bottom' | 'left' | 'right' | 'auto'>('auto');\n\n\tprivate overlayRef: OverlayRef | null = null;\n\tprivate strategy: FlexibleConnectedPositionStrategy | null = null;\n\tprivate posSub: Subscription | null = null;\n\n\tprivate readonly positions = computed(() => this.buildPositions(this.asTooltipPlacement()));\n\n\t@HostListener('mouseenter')\n\tshow(): void {\n\t\tconst text = this.asTooltip();\n\t\tif (!text) return;\n\n\t\tif (!this.overlayRef) {\n\t\t\tthis.createOverlay();\n\t\t}\n\n\t\tif (!this.overlayRef!.hasAttached()) {\n\t\t\tconst portal = new ComponentPortal(TooltipComponent);\n\t\t\tconst compRef = this.overlayRef!.attach(portal);\n\n\t\t\tcompRef.instance.text.set(text);\n\n\t\t\t// set aria-describedby\n\t\t\tconst id = compRef.instance.id();\n\t\t\tthis.host.nativeElement.setAttribute('aria-describedby', id);\n\n\t\t\t// subscribe to CDK's chosen position and write to tooltip placement signal\n\t\t\tif (this.strategy && !this.posSub) {\n\t\t\t\tthis.posSub = this.strategy.positionChanges.subscribe((change: any) => {\n\t\t\t\t\t// `change` may contain different property names across CDK versions;\n\t\t\t\t\t// try common locations for the resolved connected position.\n\t\t\t\t\tconst pos: ConnectedPosition | undefined =\n\t\t\t\t\t\tchange?.connectionPair ?? change?.connectedPosition ?? change?.lastConnectedPosition ?? change;\n\n\t\t\t\t\tif (pos) {\n\t\t\t\t\t\tconst placement = this.mapPositionToPlacement(pos);\n\t\t\t\t\t\tcompRef.instance.placement.set(placement);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// initial placement hint: map the first position we provided\n\t\t\tconst initial = this.positions()[0];\n\t\t\tcompRef.instance.placement.set(this.mapPositionToPlacement(initial));\n\n\t\t\tthis.overlayRef!.updatePosition();\n\t\t}\n\t}\n\n\t@HostListener('mouseleave')\n\thide(): void {\n\t\tthis.detachOverlay();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.detachOverlay(true);\n\t}\n\n\tprivate createOverlay(): void {\n\t\tconst strategy = this.overlay\n\t\t\t.position()\n\t\t\t.flexibleConnectedTo(this.host)\n\t\t\t.withPositions(this.positions())\n\t\t\t.withPush(true) as FlexibleConnectedPositionStrategy;\n\n\t\t// store strategy so we can watch positionChanges\n\t\tthis.strategy = strategy;\n\n\t\tstrategy.withDefaultOffsetY(8);\n\t\tstrategy.withDefaultOffsetX(8);\n\n\t\tthis.overlayRef = this.overlay.create({\n\t\t\tpositionStrategy: strategy,\n\t\t\tscrollStrategy: this.overlay.scrollStrategies.reposition(),\n\t\t\tpanelClass: 'as-tooltip-panel',\n\t\t\thasBackdrop: false,\n\t\t});\n\t}\n\n\tprivate detachOverlay(dispose = false): void {\n\t\tif (!this.overlayRef) return;\n\n\t\tif (this.overlayRef.hasAttached()) {\n\t\t\tconst hostEl = this.host.nativeElement;\n\t\t\tif (hostEl.getAttribute('aria-describedby')) {\n\t\t\t\thostEl.removeAttribute('aria-describedby');\n\t\t\t}\n\t\t}\n\n\t\tthis.overlayRef.detach();\n\n\t\tif (this.posSub) {\n\t\t\tthis.posSub.unsubscribe();\n\t\t\tthis.posSub = null;\n\t\t}\n\n\t\tif (dispose) {\n\t\t\tthis.overlayRef.dispose();\n\t\t\tthis.overlayRef = null;\n\t\t\tthis.strategy = null;\n\t\t}\n\t}\n\n\tprivate buildPositions(preferred: 'top' | 'bottom' | 'left' | 'right' | 'auto'): ConnectedPosition[] {\n\t\tconst top: ConnectedPosition = {\n\t\t\toriginX: 'center',\n\t\t\toriginY: 'top',\n\t\t\toverlayX: 'center',\n\t\t\toverlayY: 'bottom',\n\t\t\toffsetY: -8,\n\t\t};\n\t\tconst bottom: ConnectedPosition = {\n\t\t\toriginX: 'center',\n\t\t\toriginY: 'bottom',\n\t\t\toverlayX: 'center',\n\t\t\toverlayY: 'top',\n\t\t\toffsetY: 8,\n\t\t};\n\t\tconst left: ConnectedPosition = {\n\t\t\toriginX: 'start',\n\t\t\toriginY: 'center',\n\t\t\toverlayX: 'end',\n\t\t\toverlayY: 'center',\n\t\t\toffsetX: -8,\n\t\t};\n\t\tconst right: ConnectedPosition = {\n\t\t\toriginX: 'end',\n\t\t\toriginY: 'center',\n\t\t\toverlayX: 'start',\n\t\t\toverlayY: 'center',\n\t\t\toffsetX: 8,\n\t\t};\n\n\t\tif (preferred === 'auto') {\n\t\t\treturn [bottom, top, right, left];\n\t\t}\n\n\t\tswitch (preferred) {\n\t\t\tcase 'top':\n\t\t\t\treturn [top, bottom, right, left];\n\t\t\tcase 'bottom':\n\t\t\t\treturn [bottom, top, right, left];\n\t\t\tcase 'left':\n\t\t\t\treturn [left, right, bottom, top];\n\t\t\tcase 'right':\n\t\t\t\treturn [right, left, bottom, top];\n\t\t\tdefault:\n\t\t\t\treturn [bottom, top, right, left];\n\t\t}\n\t}\n\n\tprivate mapPositionToPlacement(pos: ConnectedPosition): 'top' | 'bottom' | 'left' | 'right' {\n\t\t// Determine placement by comparing origin/overlay alignment used by CDK\n\t\tif (pos.originY === 'top' && pos.overlayY === 'bottom') return 'top';\n\t\tif (pos.originY === 'bottom' && pos.overlayY === 'top') return 'bottom';\n\t\tif (pos.originX === 'start' && pos.overlayX === 'end') return 'left';\n\t\tif (pos.originX === 'end' && pos.overlayX === 'start') return 'right';\n\t\t// fallback\n\t\treturn 'bottom';\n\t}\n}\n","// typescript\nimport { Component, signal, WritableSignal, ChangeDetectionStrategy, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport interface Option {\n\tkey: string;\n\tvalue: string;\n}\n\n@Component({\n\tselector: 'as-typeahead-panel',\n\tstandalone: true,\n\timports: [CommonModule],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplate: `\n\t\t<div\n\t\t\tclass=\"as-typeahead-panel\"\n\t\t\trole=\"listbox\"\n\t\t\t[attr.id]=\"id()\"\n\t\t\t[class.as-empty]=\"items().length === 0\"\n\t\t\t[style.max-height.px]=\"visibleCount() * itemHeight\"\n\t\t>\n\t\t\t@for (item of items(); track item.key) {\n\t\t\t\t<div\n\t\t\t\t\trole=\"option\"\n\t\t\t\t\t[attr.id]=\"optionId($index)\"\n\t\t\t\t\t[attr.aria-selected]=\"$index === activeIndex()\"\n\t\t\t\t\tclass=\"as-typeahead-option\"\n\t\t\t\t\t[class.as-active]=\"$index === activeIndex()\"\n\t\t\t\t\t(mouseenter)=\"setActive($index)\"\n\t\t\t\t\t(mousemove)=\"setActive($index)\"\n\t\t\t\t\t(click)=\"select($index)\"\n\t\t\t\t>\n\t\t\t\t\t@if (optionTemplate) {\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: items()[$index] }\"></ng-container>\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t{{ displayWith()(item) }}\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t}\n\n\t\t\t@if (items().length === 0) {\n\t\t\t\t<div class=\"as-no-results\">No results</div>\n\t\t\t}\n\t\t</div>\n\t`,\n\tstyles: [\n\t\t`\n\t\t\t:host {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\t\t\t.as-typeahead-panel {\n\t\t\t\tmin-width: 160px;\n\t\t\t\toverflow: scroll;\n\t\t\t\tbackground: #fff;\n\t\t\t\tborder: 1px solid rgba(0, 0, 0, 0.12);\n\t\t\t\tbox-shadow: 0 4px 10px rgba(0, 0, 0, 0.12);\n\t\t\t\tborder-radius: 4px;\n\t\t\t\tpadding: 4px 0;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t}\n\t\t\t.as-typeahead-option {\n\t\t\t\tpadding: 8px 12px;\n\t\t\t\tcursor: pointer;\n\t\t\t\tuser-select: none;\n\t\t\t\tcolor: #222;\n\t\t\t\tdisplay: block;\n\t\t\t}\n\t\t\t.as-typeahead-option.as-active {\n\t\t\t\tbackground: #f1f1f1;\n\t\t\t}\n\t\t\t.as-no-results {\n\t\t\t\tpadding: 8px 12px;\n\t\t\t\tcolor: rgba(0, 0, 0, 0.5);\n\t\t\t}\n\t\t\t.as-empty {\n\t\t\t\tmin-width: 120px;\n\t\t\t}\n\t\t`,\n\t],\n})\nexport class TypeaheadPanelComponent {\n\treadonly id: WritableSignal<string> = signal(`as-typeahead-panel-${Math.random().toString(36).slice(2, 9)}`);\n\n\treadonly items: WritableSignal<Option[]> = signal<Option[]>([]);\n\t// default shows the `value` field\n\treadonly displayWith: WritableSignal<(item: Option) => string> = signal<(item: Option) => string>((i: Option) => String(i?.value ?? ''));\n\n\treadonly activeIndex: WritableSignal<number | null> = signal<number | null>(null);\n\n\t// visual config: how many items visible before scrollbar (set by directive)\n\treadonly visibleCount: WritableSignal<number> = signal<number>(5);\n\treadonly itemHeight = 40; // px - used to compute maxHeight\n\n\t// optional custom template & callback (set by directive)\n\toptionTemplate: TemplateRef<any> | null = null;\n\tonSelect: ((item: Option) => void) | null = null;\n\n\toptionId(i: number) {\n\t\treturn `${this.id()}-option-${i}`;\n\t}\n\n\tsetActive(i: number | null) {\n\t\tthis.activeIndex.set(i);\n\t}\n\n\tselect(i: number) {\n\t\tconst items = this.items();\n\t\tif (i == null || i < 0 || i >= items.length) return;\n\t\tconst item = items[i];\n\t\tif (this.onSelect) this.onSelect(item);\n\t}\n}\n","import {\n\tDirective,\n\tElementRef,\n\tHostListener,\n\tinject,\n\tinput,\n\tsignal,\n\tcomputed,\n\tOnDestroy,\n\tTemplateRef,\n\tViewContainerRef,\n\teffect,\n\toutput,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Overlay, OverlayRef, FlexibleConnectedPositionStrategy, ConnectedPosition } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { TypeaheadPanelComponent, Option } from './typeahead-panel.component';\n\n@Directive({\n\tselector: '[asTypeahead]',\n\tstandalone: true,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: TypeaheadDirective,\n\t\t\tmulti: true,\n\t\t},\n\t],\n})\nexport class TypeaheadDirective implements ControlValueAccessor, OnDestroy {\n\t/* ---------------- injections ---------------- */\n\tprivate readonly overlay = inject(Overlay);\n\tprivate readonly host = inject(ElementRef<HTMLInputElement>);\n\tprivate readonly vcr = inject(ViewContainerRef);\n\n\t/* ---------------- inputs ---------------- */\n\treadonly options = input<Option[] | null>(null);\n\treadonly displayWith = input<(item: Option) => string>((it: Option) => String(it?.value ?? ''));\n\treadonly filterBy = input<'key' | 'value'>('value');\n\treadonly visibleCount = input<number>(5);\n\treadonly restrictToList = input<boolean>(false);\n\treadonly asTypeaheadTemplate = input<TemplateRef<any> | null>(null);\n\treadonly disabled = input<boolean>(false);\n\treadonly enableLog = input<boolean>(false);\n\n\t/* ---------------- outputs ---------------- */\n\treadonly typeaheadOnSelect = output<Option | null>();\n\n\t/* ---------------- internal ---------------- */\n\tprivate readonly cvaDisabled = signal(false);\n\tprivate readonly selected = signal<Option | null>(null);\n\n\tprivate overlayRef: OverlayRef | null = null;\n\tprivate panel: TypeaheadPanelComponent | null = null;\n\tprivate destroyed = false;\n\n\tprivate onChange: (value: any) => void = () => {};\n\tprivate onTouched: () => void = () => {};\n\n\tprivate readonly positions = computed(() => this.buildPositions());\n\n\tconstructor() {\n\t\t/* sync initial value -> input text */\n\t\teffect(() => {\n\t\t\tconst sel = this.selected();\n\t\t\tif (!sel) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.log('init select value', sel.key, sel.value);\n\t\t\tthis.host.nativeElement.value = this.displayWith()(sel);\n\t\t});\n\t}\n\n\t/* ---------------- CVA ---------------- */\n\twriteValue(value: any): void {\n\t\tif (value == null) {\n\t\t\tthis.setInternalSelection(null);\n\t\t\tthis.host.nativeElement.value = '';\n\t\t\treturn;\n\t\t}\n\n\t\tconst match = this.options()?.find(o => o.key === value) ?? null;\n\t\tthis.setInternalSelection(match);\n\n\t\tif (match) {\n\t\t\tthis.host.nativeElement.value = this.displayWith()(match);\n\t\t} else {\n\t\t\tthis.host.nativeElement.value = String(value);\n\t\t}\n\t}\n\n\tregisterOnChange(fn: any): void {\n\t\tthis.onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: any): void {\n\t\tthis.onTouched = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.log('component disabled', isDisabled);\n\t\tthis.cvaDisabled.set(isDisabled);\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.destroyed = true;\n\t\tthis.detach(true);\n\t}\n\n\t/* ---------------- host events ---------------- */\n\t@HostListener('focus')\n\t@HostListener('click')\n\tonFocus() {\n\t\tif (this.isDisabled()) return;\n\t\tthis.open();\n\t\tthis.showAll();\n\t}\n\n\t@HostListener('input', ['$event'])\n\tonInput(e: Event) {\n\t\tif (this.isDisabled()) return;\n\t\tconst value = (e.target as HTMLInputElement).value;\n\t\tvalue ? this.filter(value) : this.showAll();\n\t}\n\n\t@HostListener('keydown', ['$event'])\n\tonKeydown(e: KeyboardEvent) {\n\t\tif (this.isDisabled() || !this.panel) return;\n\n\t\tconst items = this.panel.items();\n\t\tif (!items.length) return;\n\n\t\tlet idx = this.panel.activeIndex();\n\n\t\tswitch (e.key) {\n\t\t\tcase 'ArrowDown':\n\t\t\t\te.preventDefault();\n\t\t\t\tidx = idx == null ? 0 : Math.min(items.length - 1, idx + 1);\n\t\t\t\tthis.panel.setActive(idx);\n\t\t\t\tbreak;\n\n\t\t\tcase 'ArrowUp':\n\t\t\t\te.preventDefault();\n\t\t\t\tidx = idx == null ? items.length - 1 : Math.max(0, idx - 1);\n\t\t\t\tthis.panel.setActive(idx);\n\t\t\t\tbreak;\n\n\t\t\tcase 'Enter':\n\t\t\t\te.preventDefault();\n\t\t\t\tif (idx != null) this.panel.select(idx);\n\t\t\t\tbreak;\n\n\t\t\tcase 'Escape':\n\t\t\t\tthis.close();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t@HostListener('blur')\n\tonBlur() {\n\t\tsetTimeout(() => {\n\t\t\tif (this.destroyed) return;\n\n\t\t\tconst text = this.host.nativeElement.value;\n\t\t\tconst match = this.findMatch(text);\n\n\t\t\tif (this.restrictToList()) {\n\t\t\t\tthis.commitSelection(match);\n\t\t\t\tthis.host.nativeElement.value = match ? this.displayWith()(match) : '';\n\t\t\t} else if (match) {\n\t\t\t\tthis.commitSelection(match);\n\t\t\t} else {\n\t\t\t\tthis.commitSelection(null);\n\t\t\t}\n\n\t\t\tthis.onTouched();\n\t\t\tthis.close();\n\t\t}, 150);\n\t}\n\n\t/* ---------------- overlay ---------------- */\n\tprivate open() {\n\t\tif (!this.overlayRef) this.createOverlay();\n\t\tif (!this.overlayRef!.hasAttached()) {\n\t\t\tconst portal = new ComponentPortal(TypeaheadPanelComponent, this.vcr);\n\t\t\tconst ref = this.overlayRef!.attach(portal);\n\t\t\tthis.panel = ref.instance;\n\n\t\t\tthis.panel.displayWith.set(this.displayWith());\n\t\t\tthis.panel.optionTemplate = this.asTypeaheadTemplate();\n\t\t\tthis.panel.visibleCount.set(this.visibleCount());\n\t\t\tthis.panel.onSelect = (it: Option) => this.select(it);\n\t\t}\n\t}\n\n\tprivate close() {\n\t\tthis.detach();\n\t}\n\n\tprivate detach(dispose = false) {\n\t\tif (!this.overlayRef) return;\n\t\tif (this.overlayRef.hasAttached()) this.overlayRef.detach();\n\t\tif (dispose) {\n\t\t\tthis.overlayRef.dispose();\n\t\t\tthis.overlayRef = null;\n\t\t\tthis.panel = null;\n\t\t}\n\t}\n\n\tprivate createOverlay() {\n\t\tconst strategy = this.overlay\n\t\t\t.position()\n\t\t\t.flexibleConnectedTo(this.host)\n\t\t\t.withPositions(this.positions())\n\t\t\t.withPush(true) as FlexibleConnectedPositionStrategy;\n\n\t\tstrategy.withDefaultOffsetY(4);\n\n\t\tthis.overlayRef = this.overlay.create({\n\t\t\tpositionStrategy: strategy,\n\t\t\tscrollStrategy: this.overlay.scrollStrategies.reposition(),\n\t\t});\n\t}\n\n\t/* ---------------- helpers ---------------- */\n\tprivate showAll() {\n\t\tthis.open();\n\t\tthis.panel?.items.set(this.options() ?? []);\n\t\tthis.panel?.setActive(null);\n\t}\n\n\tprivate filter(q: string) {\n\t\tconst key = q.toLowerCase();\n\t\tconst list = this.options() ?? [];\n\t\tconst filtered = list.filter(it => {\n\t\t\tconst target = this.filterBy() === 'key' ? String(it.key) : String(it.value);\n\t\t\treturn target.toLowerCase().includes(key);\n\t\t});\n\n\t\tthis.open();\n\t\tthis.panel?.items.set(filtered);\n\t\tthis.panel?.setActive(filtered.length ? 0 : null);\n\t}\n\n\tprivate select(item: Option) {\n\t\tthis.commitSelection(item);\n\t\tthis.host.nativeElement.value = this.displayWith()(item);\n\t\tthis.close();\n\t\tthis.host.nativeElement.focus();\n\t}\n\n\tprivate findMatch(text: string): Option | null {\n\t\tconst list = this.options() ?? [];\n\t\treturn list.find(it => this.displayWith()(it) === text) ?? list.find(it => String(it.key) === text) ?? null;\n\t}\n\n\tprivate isDisabled(): boolean {\n\t\treturn this.disabled() || this.cvaDisabled();\n\t}\n\n\tprivate buildPositions(): ConnectedPosition[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\toriginX: 'start',\n\t\t\t\toriginY: 'bottom',\n\t\t\t\toverlayX: 'start',\n\t\t\t\toverlayY: 'top',\n\t\t\t\toffsetY: 4,\n\t\t\t},\n\t\t\t{\n\t\t\t\toriginX: 'start',\n\t\t\t\toriginY: 'top',\n\t\t\t\toverlayX: 'start',\n\t\t\t\toverlayY: 'bottom',\n\t\t\t\toffsetY: -4,\n\t\t\t},\n\t\t];\n\t}\n\n\tprivate commitSelection(sel: Option | null) {\n\t\tthis.selected.set(sel);\n\t\tthis.log('Set value and emit', sel);\n\n\t\t// CVA\n\t\tthis.onChange(sel?.key ?? null);\n\n\t\t// OUTPUT\n\t\tthis.typeaheadOnSelect.emit(sel);\n\t}\n\n\tprivate setInternalSelection(sel: Option | null) {\n\t\tthis.log('Set value only', sel);\n\t\tthis.selected.set(sel);\n\t}\n\n\tlog(value: any, ...rest: any[]): void {\n\t\tif (this.enableLog() || localStorage.getItem('loggerEnable')) {\n\t\t\tconsole.log('%c DEBUG ', 'background: gray; color: white; font-weight: bold;', `AS typeahead -> ${value}`, ...rest);\n\t\t}\n\t}\n}\n","import { AfterViewInit, Component, effect, ElementRef, forwardRef, input, NgZone, OnDestroy, output, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport flatpickr from 'flatpickr';\nimport 'flatpickr/dist/flatpickr.css';\nimport { NgClass } from '@angular/common';\n\nimport { FlatpickrDateFormat, FlatpickrMode, FlatpickrValue } from './flatpickr.types';\n\n@Component({\n\tselector: 'as-flatpickr',\n\tstandalone: true,\n\ttemplate: `<input\n\t\t#input\n\t\ttype=\"text\"\n\t\t[attr.placeholder]=\"placeholder()\"\n\t\t[ngClass]=\"elementClass()\"\n\t\t[autocomplete]=\"autocomplete()\"\n\t\t[id]=\"id()\"\n\t/>`,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => AsFlatpickrComponent),\n\t\t\tmulti: true,\n\t\t},\n\t],\n\timports: [NgClass],\n})\nexport class AsFlatpickrComponent implements ControlValueAccessor, AfterViewInit, OnDestroy {\n\t/* ---------------- Inputs ---------------- */\n\tmode = input<FlatpickrMode>('single');\n\tenableTime = input(false);\n\ttimeOnly = input(false);\n\tplaceholder = input<string | null>(null);\n\tid = input<string | null>(null);\n\tdateFormat = input<FlatpickrDateFormat>('Y-m-d');\n\telementClass = input<string>('form-control form-icon-calendar');\n\ttime24h = input(true);\n\tautocomplete = input<'on' | 'off'>('off');\n\n\t/* External value (string-based now) */\n\tvalue = input<FlatpickrValue>(null);\n\tvalueChange = output<FlatpickrValue>();\n\n\t/* ---------------- Internals ---------------- */\n\t@ViewChild('input', { static: true }) private inputEl!: ElementRef<HTMLInputElement>;\n\tprivate fp: flatpickr.Instance | null = null;\n\n\tprivate onChange: (value: FlatpickrValue) => void = () => {};\n\tprivate onTouched: () => void = () => {};\n\tprivate disabled = false;\n\n\tconstructor(private zone: NgZone) {\n\t\t/* ---------------- Signal effect for syncing value ---------------- */\n\t\teffect(() => {\n\t\t\tconst val = this.value();\n\t\t\tif (!this.fp) return;\n\n\t\t\tthis.zone.runOutsideAngular(() => {\n\t\t\t\tconst displayFormat = this.getDisplayFormat();\n\t\t\t\tif (Array.isArray(val)) {\n\t\t\t\t\tconst dates = val.map(v => flatpickr.parseDate(v, displayFormat));\n\t\t\t\t\tthis.fp!.setDate(dates as Date[], false);\n\t\t\t\t} else if (val) {\n\t\t\t\t\tconst date = flatpickr.parseDate(val, displayFormat);\n\t\t\t\t\tthis.fp!.setDate(date ?? [], false);\n\t\t\t\t} else {\n\t\t\t\t\tthis.fp!.clear();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate handleOpen = () => {\n\t\tif (this.disabled) {\n\t\t\tthis.fp?.close();\n\t\t}\n\t};\n\n\t/* ---------------- Initialize Flatpickr ---------------- */\n\tngAfterViewInit() {\n\t\tthis.zone.runOutsideAngular(() => {\n\t\t\tthis.fp = flatpickr(this.inputEl.nativeElement, {\n\t\t\t\tmode: this.mode(),\n\t\t\t\tenableTime: this.enableTime() || this.timeOnly(),\n\t\t\t\tnoCalendar: this.timeOnly(),\n\t\t\t\tallowInput: true,\n\t\t\t\ttime_24hr: this.time24h(),\n\t\t\t\tdateFormat: this.getDisplayFormat(),\n\t\t\t\tonOpen: this.handleOpen,\n\t\t\t\tonChange: (dates, _str, instance) => this.handleChange(dates, instance),\n\t\t\t\tonClose: () => this.zone.run(() => this.onTouched()),\n\t\t\t});\n\n\t\t\t// Manual validation for typed input\n\t\t\tthis.inputEl.nativeElement.addEventListener('blur', () => {\n\t\t\t\tconst typedValue = this.inputEl.nativeElement.value;\n\t\t\t\tconst parsed = this.parseTypedValue(typedValue);\n\n\t\t\t\tthis.zone.run(() => {\n\t\t\t\t\tif (parsed === null) {\n\t\t\t\t\t\tthis.onChange(null);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.onChange(parsed);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\t/* ---------------- CVA Implementation ---------------- */\n\twriteValue(value: FlatpickrValue): void {\n\t\tif (!this.fp) return;\n\t\tconst displayFormat = this.getDisplayFormat();\n\t\tif (Array.isArray(value)) {\n\t\t\tconst dates = value.map(v => flatpickr.parseDate(v, displayFormat));\n\t\t\tthis.fp.setDate(dates as Date[], false);\n\t\t} else if (value) {\n\t\t\tconst date = flatpickr.parseDate(value, displayFormat);\n\t\t\tthis.fp.setDate(date ?? [], false);\n\t\t} else {\n\t\t\tthis.fp.clear();\n\t\t}\n\t}\n\n\tregisterOnChange(fn: (value: FlatpickrValue) => void): void {\n\t\tthis.onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: () => void): void {\n\t\tthis.onTouched = fn;\n\t}\n\n\tsetDisabledState(disabled: boolean): void {\n\t\tthis.disabled = disabled;\n\t\tif (this.inputEl) this.inputEl.nativeElement.disabled = disabled;\n\t}\n\n\t/* ---------------- Handle Flatpickr changes ---------------- */\n\tprivate handleChange(dates: Date[], instance: flatpickr.Instance) {\n\t\tconst format = this.dateFormat() ?? this.getDefaultDateFormat();\n\t\tlet value: FlatpickrValue = null;\n\n\t\tif (this.mode() === 'range') {\n\t\t\tif (dates.length === 2) {\n\t\t\t\tvalue = dates.map(d => flatpickr.formatDate(d, format)) as [string, string];\n\t\t\t}\n\t\t} else if (dates[0]) {\n\t\t\tif (this.enableTime() || this.timeOnly()) {\n\t\t\t\tconst timeFormat = this.time24h() ? 'H:i' : 'h:i K';\n\t\t\t\tvalue = flatpickr.formatDate(dates[0], `${format} ${timeFormat}`);\n\t\t\t} else {\n\t\t\t\tvalue = flatpickr.formatDate(dates[0], format);\n\t\t\t}\n\n\t\t\t// ✅ REMOVE automatic close here\n\t\t\t// instance.close();\n\t\t}\n\n\t\tthis.zone.run(() => {\n\t\t\tthis.onChange(value);\n\t\t\tthis.valueChange.emit(value);\n\t\t});\n\t}\n\n\t/* ---------------- Typed input parsing ---------------- */\n\tprivate parseTypedValue(inputValue: string): FlatpickrValue {\n\t\ttry {\n\t\t\tconst displayFormat = this.getDisplayFormat();\n\t\t\tif (!inputValue) return null;\n\n\t\t\tif (this.mode() === 'range') {\n\t\t\t\tconst parts = inputValue.split(' to ').map(s => s.trim());\n\t\t\t\tif (parts.length !== 2) return null;\n\n\t\t\t\tconst start = flatpickr.parseDate(parts[0], displayFormat);\n\t\t\t\tconst end = flatpickr.parseDate(parts[1], displayFormat);\n\t\t\t\tif (!start || !end || start > end) return null;\n\n\t\t\t\treturn [flatpickr.formatDate(start, displayFormat), flatpickr.formatDate(end, displayFormat)];\n\t\t\t} else {\n\t\t\t\tconst parsed = flatpickr.parseDate(inputValue, displayFormat);\n\t\t\t\treturn parsed ? flatpickr.formatDate(parsed, displayFormat) : null;\n\t\t\t}\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/* ---------------- Format helpers ---------------- */\n\tprivate getDefaultDateFormat(): string {\n\t\tif (this.timeOnly()) return 'H:i';\n\t\tif (this.enableTime()) return 'Y-m-d';\n\t\treturn 'Y-m-d';\n\t}\n\n\t/** Combine dateFormat + optional time for display/input */\n\tprivate getDisplayFormat(): string {\n\t\tif (this.timeOnly()) {\n\t\t\treturn this.time24h() ? 'H:i' : 'h:i K'; // time only\n\t\t}\n\t\tconst baseFormat = this.dateFormat() ?? 'Y-m-d';\n\t\tif (this.enableTime()) {\n\t\t\tconst timeFormat = this.time24h() ? 'H:i' : 'h:i K';\n\t\t\treturn `${baseFormat} ${timeFormat}`; // date + time\n\t\t}\n\t\treturn baseFormat; // date only\n\t}\n\n\t/* ---------------- Cleanup ---------------- */\n\tngOnDestroy() {\n\t\tthis.fp?.destroy();\n\t\tthis.fp = null;\n\t}\n}\n","/*\n * Public API Surface of as-components\n */\n\nexport * from './lib/as-components';\nexport * from './lib/modal-container/modal-container.component';\nexport * from './lib/modal-container/base-modal.component';\nexport * from './lib/services/modal-ref';\nexport * from './lib/services/modal.service';\nexport * from './lib/tooltip/tooltip.directive';\nexport * from './lib/tooltip/tooltip.component';\nexport * from './lib/typeahead/typeahead.directive';\nexport * from './lib/typeahead/typeahead-panel.component';\nexport * from './lib/datepicker/as-flatpickr.component';\nexport * from './lib/datepicker/flatpickr.types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentsmith.bgd/as-components",
3
- "version": "21.0.29",
3
+ "version": "21.0.31",
4
4
  "peerDependencies": {
5
5
  "@angular/cdk": "^21.1.0",
6
6
  "@angular/common": "^21.1.0",
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { ViewContainerRef, Type, ComponentRef, Injector, ApplicationRef, EnvironmentInjector, OnDestroy, WritableSignal, TemplateRef, AfterViewInit, NgZone } from '@angular/core';
2
+ import { ComponentRef, ViewContainerRef, Type, Injector, ApplicationRef, EnvironmentInjector, OnDestroy, WritableSignal, TemplateRef, AfterViewInit, NgZone } from '@angular/core';
3
3
  import { Observable } from 'rxjs';
4
4
  import { ControlValueAccessor } from '@angular/forms';
5
5
 
@@ -8,6 +8,17 @@ declare class AsComponents {
8
8
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AsComponents, "lib-as-components", never, {}, {}, never, never, true, never>;
9
9
  }
10
10
 
11
+ declare class ModalRef {
12
+ private componentRef;
13
+ private hostElement;
14
+ private _onClose;
15
+ onClose: Observable<ResultPayload>;
16
+ constructor(componentRef: ComponentRef<any>, hostElement: HTMLElement);
17
+ close(result: ResultPayload): void;
18
+ dismiss(): void;
19
+ private destroy;
20
+ }
21
+
11
22
  interface ResultPayload {
12
23
  action: string;
13
24
  payload?: unknown;
@@ -17,7 +28,9 @@ declare class ModalContainerComponent {
17
28
  title: _angular_core.WritableSignal<string | undefined>;
18
29
  size: _angular_core.WritableSignal<"sm" | "md" | "lg">;
19
30
  showClose: _angular_core.WritableSignal<boolean>;
20
- closed: _angular_core.OutputEmitterRef<ResultPayload | undefined>;
31
+ enableLog: _angular_core.WritableSignal<boolean>;
32
+ closed: _angular_core.OutputEmitterRef<ResultPayload>;
33
+ modalRef: ModalRef;
21
34
  get sizeClass(): "sm" | "md" | "lg";
22
35
  /**
23
36
  * Create a component inside the container and set inputs.
@@ -28,34 +41,31 @@ declare class ModalContainerComponent {
28
41
  */
29
42
  loadComponent<T>(component: Type<T>, inputs?: Partial<T> | any): ComponentRef<T>;
30
43
  private setInput;
31
- backdropClick(): void;
32
- close(result?: ResultPayload): void;
44
+ dismiss(): void;
45
+ log(value: any, ...rest: any[]): void;
33
46
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalContainerComponent, never>;
34
47
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ModalContainerComponent, "as-modal-container", never, {}, { "closed": "closed"; }, never, never, true, never>;
35
48
  }
36
49
 
37
50
  declare abstract class BaseModalComponent {
38
51
  readonly onClose: _angular_core.OutputEmitterRef<ResultPayload | undefined>;
39
- protected sendEvent(result?: ResultPayload | undefined): void;
52
+ private _dismiss?;
53
+ /** called by ModalService */
54
+ _registerDismiss(fn: () => void): void;
55
+ /** CONFIRM */
56
+ protected confirm(result?: ResultPayload): void;
57
+ /** CANCEL / SILENT */
58
+ protected dismiss(): void;
40
59
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseModalComponent, never>;
41
60
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BaseModalComponent, never, never, {}, { "onClose": "onClose"; }, never, never, true, never>;
42
61
  }
43
62
 
44
- declare class ModalRef {
45
- private componentRef;
46
- private hostElement;
47
- private _onClose;
48
- onClose: Observable<ResultPayload | undefined>;
49
- constructor(componentRef: ComponentRef<any>, hostElement: HTMLElement);
50
- close(result?: ResultPayload | undefined): void;
51
- private destroy;
52
- }
53
-
54
63
  interface ModalConfig {
55
64
  id?: string;
56
65
  size?: 'sm' | 'md' | 'lg';
57
66
  title?: string;
58
67
  showClose?: boolean;
68
+ enableLog?: boolean;
59
69
  data?: any;
60
70
  }
61
71
  declare class ModalService {
@@ -65,7 +75,6 @@ declare class ModalService {
65
75
  constructor(injector: Injector, appRef: ApplicationRef, envInjector: EnvironmentInjector);
66
76
  show<T>(component: Type<T>, config?: ModalConfig): ModalRef;
67
77
  private setInput;
68
- private isWritableSignal;
69
78
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalService, never>;
70
79
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<ModalService>;
71
80
  }