@vsn-ux/ngx-gaia 0.2.4 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,15 @@
1
+ import { TemplateRef } from '@angular/core';
1
2
  import { GaFormFieldComponent } from './form-field.component';
2
3
  import * as i0 from "@angular/core";
3
4
  export declare class GaFieldLabelComponent {
4
5
  private readonly document;
5
6
  readonly formField: GaFormFieldComponent;
6
7
  readonly for: import("@angular/core").InputSignal<string | undefined>;
8
+ readonly definition: import("@angular/core").InputSignal<string | TemplateRef<any> | null>;
9
+ readonly state: import("@angular/core").InputSignal<string | undefined>;
7
10
  readonly controlId: import("@angular/core").Signal<string>;
8
11
  readonly controlElement: import("@angular/core").Signal<HTMLElement | null>;
9
12
  focusControl(): void;
10
13
  static ɵfac: i0.ɵɵFactoryDeclaration<GaFieldLabelComponent, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<GaFieldLabelComponent, "ga-label", never, { "for": { "alias": "for"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<GaFieldLabelComponent, "ga-label", never, { "for": { "alias": "for"; "required": false; "isSignal": true; }; "definition": { "alias": "definition"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
12
15
  }
@@ -2,10 +2,12 @@ import { InjectionToken, Signal } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export type GaFormControl = {
4
4
  readonly _formControlId: Signal<string | null | undefined>;
5
+ readonly _formControlDisabled: Signal<boolean | null | undefined>;
5
6
  };
6
7
  export declare const GA_FORM_CONTROL: InjectionToken<GaFormControl>;
7
8
  export declare class GaFormControlDirective implements GaFormControl {
8
9
  readonly _formControlId: import("@angular/core").InputSignal<string | undefined>;
10
+ readonly _formControlDisabled: import("@angular/core").InputSignal<boolean | undefined>;
9
11
  static ɵfac: i0.ɵɵFactoryDeclaration<GaFormControlDirective, never>;
10
- static ɵdir: i0.ɵɵDirectiveDeclaration<GaFormControlDirective, "[gaFormControl]", never, { "_formControlId": { "alias": "gaFormControl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
12
+ static ɵdir: i0.ɵɵDirectiveDeclaration<GaFormControlDirective, "[gaFormControl]", never, { "_formControlId": { "alias": "gaFormControl"; "required": false; "isSignal": true; }; "_formControlDisabled": { "alias": "gaFormControlDisabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
11
13
  }
@@ -6,12 +6,12 @@ type LucideIconNode = readonly [string, HtmlAttributes];
6
6
  export type GaIconData = readonly LucideIconNode[];
7
7
  export declare class GaIconComponent {
8
8
  private readonly elementRef;
9
- readonly icon: import("@angular/core").InputSignal<string | GaIconData | undefined>;
9
+ readonly icon: import("@angular/core").InputSignal<string | GaIconData>;
10
10
  readonly size: import("@angular/core").InputSignal<string | number | undefined>;
11
11
  readonly color: import("@angular/core").InputSignal<string | undefined>;
12
12
  readonly strokeWidth: import("@angular/core").InputSignalWithTransform<number | undefined, unknown>;
13
13
  constructor(ariaHiddenAttr: string);
14
14
  static ɵfac: i0.ɵɵFactoryDeclaration<GaIconComponent, [{ attribute: "aria-hidden"; }]>;
15
- static ɵcmp: i0.ɵɵComponentDeclaration<GaIconComponent, "ga-icon", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<GaIconComponent, "ga-icon", never, { "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
16
16
  }
17
17
  export {};
@@ -11,11 +11,14 @@ export declare class GaInputDirective implements DoCheck, GaFormControl {
11
11
  private readonly implicitErrors;
12
12
  readonly invalidInput: import("@angular/core").InputSignalWithTransform<boolean | null, unknown>;
13
13
  readonly idInput: import("@angular/core").InputSignal<string | undefined>;
14
+ readonly disabledInput: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
14
15
  readonly invalid: import("@angular/core").Signal<boolean>;
15
16
  readonly id: import("@angular/core").Signal<string>;
17
+ readonly disabled: import("@angular/core").WritableSignal<boolean>;
16
18
  readonly errors: import("@angular/core").Signal<ValidationErrors | null>;
17
19
  readonly _formControlId: import("@angular/core").Signal<string>;
20
+ readonly _formControlDisabled: import("@angular/core").Signal<boolean>;
18
21
  ngDoCheck(): void;
19
22
  static ɵfac: i0.ɵɵFactoryDeclaration<GaInputDirective, never>;
20
- static ɵcmp: i0.ɵɵComponentDeclaration<GaInputDirective, "[gaInput]", never, { "invalidInput": { "alias": "invalid"; "required": false; "isSignal": true; }; "idInput": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<GaInputDirective, "[gaInput]", never, { "invalidInput": { "alias": "invalid"; "required": false; "isSignal": true; }; "idInput": { "alias": "id"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
21
24
  }
@@ -1,6 +1,10 @@
1
+ import { GaIconData } from '../icon/';
1
2
  import * as i0 from "@angular/core";
2
3
  import * as i1 from "@angular/cdk/menu";
3
4
  export declare class GaMenuItemComponent {
5
+ readonly icon: import("@angular/core").InputSignal<string | GaIconData | undefined>;
6
+ readonly description: import("@angular/core").InputSignal<string>;
7
+ readonly shortcut: import("@angular/core").InputSignal<string>;
4
8
  static ɵfac: i0.ɵɵFactoryDeclaration<GaMenuItemComponent, never>;
5
- static ɵcmp: i0.ɵɵComponentDeclaration<GaMenuItemComponent, "[gaMenuItem]", never, {}, {}, never, ["*"], true, [{ directive: typeof i1.CdkMenuItem; inputs: {}; outputs: {}; }]>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<GaMenuItemComponent, "[gaMenuItem]", never, { "icon": { "alias": "gaMenuItemIcon"; "required": false; "isSignal": true; }; "description": { "alias": "gaMenuItemDescription"; "required": false; "isSignal": true; }; "shortcut": { "alias": "gaMenuItemShortcut"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1.CdkMenuItem; inputs: {}; outputs: {}; }]>;
6
10
  }
@@ -28,6 +28,8 @@ export declare class GaSelectComponent implements ControlValueAccessor, GaFormCo
28
28
  readonly textValue: import("@angular/core").ModelSignal<string>;
29
29
  readonly leftIcon: import("@angular/core").InputSignal<GaIconData | undefined>;
30
30
  readonly idInput: import("@angular/core").InputSignal<string | null>;
31
+ readonly opened: import("@angular/core").OutputEmitterRef<void>;
32
+ readonly closed: import("@angular/core").OutputEmitterRef<void>;
31
33
  readonly gaOptions: import("@angular/core").Signal<readonly GaOptionComponent<any>[]>;
32
34
  protected readonly cdkListbox: import("@angular/core").Signal<CdkListbox<any>>;
33
35
  protected readonly customSelectValue: import("@angular/core").Signal<GaSelectValueComponent | undefined>;
@@ -42,6 +44,7 @@ export declare class GaSelectComponent implements ControlValueAccessor, GaFormCo
42
44
  readonly hasValue: import("@angular/core").Signal<boolean>;
43
45
  readonly invalid: import("@angular/core").Signal<boolean>;
44
46
  readonly _formControlId: import("@angular/core").Signal<string>;
47
+ readonly _formControlDisabled: import("@angular/core").Signal<boolean>;
45
48
  constructor();
46
49
  ngAfterContentInit(): void;
47
50
  ngDoCheck(): void;
@@ -62,5 +65,5 @@ export declare class GaSelectComponent implements ControlValueAccessor, GaFormCo
62
65
  protected onOverlayDetach(): void;
63
66
  private setItemActive;
64
67
  static ɵfac: i0.ɵɵFactoryDeclaration<GaSelectComponent, never>;
65
- static ɵcmp: i0.ɵɵComponentDeclaration<GaSelectComponent, "ga-select", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalidInput": { "alias": "invalid"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "textValue": { "alias": "textValue"; "required": false; "isSignal": true; }; "leftIcon": { "alias": "leftIcon"; "required": false; "isSignal": true; }; "idInput": { "alias": "id"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "textValue": "textValueChange"; }, ["gaOptions", "cdkListbox", "customSelectValue"], ["ga-select-value", "ga-select-dropdown"], true, [{ directive: typeof i1.CdkOverlayOrigin; inputs: {}; outputs: {}; }]>;
68
+ static ɵcmp: i0.ɵɵComponentDeclaration<GaSelectComponent, "ga-select", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalidInput": { "alias": "invalid"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "textValue": { "alias": "textValue"; "required": false; "isSignal": true; }; "leftIcon": { "alias": "leftIcon"; "required": false; "isSignal": true; }; "idInput": { "alias": "id"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "textValue": "textValueChange"; "opened": "opened"; "closed": "closed"; }, ["gaOptions", "cdkListbox", "customSelectValue"], ["ga-select-value", "ga-select-dropdown"], true, [{ directive: typeof i1.CdkOverlayOrigin; inputs: {}; outputs: {}; }]>;
66
69
  }
@@ -11,7 +11,7 @@ export declare class GaTooltipComponent {
11
11
  readonly content: import("@angular/core").InputSignal<string | TemplateRef<any>>;
12
12
  readonly template: import("@angular/core").Signal<TemplateRef<any> | null>;
13
13
  readonly text: import("@angular/core").Signal<string | null>;
14
- readonly position: import("@angular/core").InputSignal<"top-center" | "top-start" | "top-end" | "bottom-center" | "bottom-start" | "bottom-end" | "left-center" | "left-start" | "left-end" | "right-center" | "right-start" | "right-end" | undefined>;
14
+ readonly position: import("@angular/core").InputSignal<"top-start" | "top-end" | "top-center" | "bottom-start" | "bottom-end" | "bottom-center" | "left-start" | "left-end" | "left-center" | "right-start" | "right-end" | "right-center" | undefined>;
15
15
  readonly offset: import("@angular/core").InputSignal<number>;
16
16
  readonly hideTriggered: import("@angular/core").OutputEmitterRef<void>;
17
17
  readonly triggerHide: () => void;
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@vsn-ux/ngx-gaia",
3
- "version": "0.2.4",
3
+ "version": "0.3.0",
4
4
  "peerDependencies": {
5
5
  "@angular/cdk": "^19.0.0",
6
6
  "@angular/common": "^19.0.0",
7
7
  "@angular/core": "^19.0.0",
8
- "@vsn-ux/gaia-styles": "^0.2.1",
8
+ "@vsn-ux/gaia-styles": "^0.3.0",
9
9
  "lucide-angular": "^0.475.0"
10
10
  },
11
11
  "dependencies": {
@@ -15,48 +15,12 @@ const schematics_2 = require("@angular-devkit/schematics");
15
15
  const workspace_1 = require("@schematics/angular/utility/workspace");
16
16
  const path = require("path");
17
17
  function ngAddSetupProject(options) {
18
- return (0, schematics_2.chain)([updateAppModule(options), addStyles(options)]);
19
- }
20
- function updateAppModule(options) {
21
- return (host, context) => __awaiter(this, void 0, void 0, function* () {
22
- const workspace = yield (0, workspace_1.getWorkspace)(host);
23
- const project = (0, schematics_1.getProjectFromWorkspace)(workspace, options.project);
24
- const mainFilePath = (0, schematics_1.getProjectMainFile)(project);
25
- if ((0, schematics_1.isStandaloneApp)(host, mainFilePath)) {
26
- // TODO: print warning message
27
- return;
28
- }
29
- addAnimationsToNonStandaloneApp(host, project, mainFilePath, context, options);
30
- });
31
- }
32
- function addAnimationsToNonStandaloneApp(host, project, mainFile, context, options) {
33
- const browserAnimationsModuleName = 'BrowserAnimationsModule';
34
- const noopAnimationsModuleName = 'NoopAnimationsModule';
35
- const appModulePath = (0, schematics_1.getAppModulePath)(host, mainFile);
36
- if (options.animations) {
37
- // In case the project explicitly uses the NoopAnimationsModule, we should print a warning
38
- // message that makes the user aware of the fact that we won't automatically set up
39
- // animations. If we would add the BrowserAnimationsModule while the NoopAnimationsModule
40
- // is already configured, we would cause unexpected behavior and runtime exceptions.
41
- if ((0, schematics_1.hasNgModuleImport)(host, appModulePath, noopAnimationsModuleName)) {
42
- context.logger.error(`Could not set up "${browserAnimationsModuleName}" ` +
43
- `because "${noopAnimationsModuleName}" is already imported.`);
44
- context.logger.info(`Please manually set up browser animations.`);
45
- }
46
- else {
47
- (0, schematics_1.addModuleImportToRootModule)(host, browserAnimationsModuleName, '@angular/platform-browser/animations', project);
48
- }
49
- }
50
- else if (!options.animations &&
51
- !(0, schematics_1.hasNgModuleImport)(host, appModulePath, browserAnimationsModuleName)) {
52
- // Do not add the NoopAnimationsModule module if the project already explicitly uses
53
- // the BrowserAnimationsModule.
54
- (0, schematics_1.addModuleImportToRootModule)(host, noopAnimationsModuleName, '@angular/platform-browser/animations', project);
55
- }
18
+ return (0, schematics_2.chain)([addStyles(options)]);
56
19
  }
57
20
  const SUPPORTED_BOOTSTRAP_STYLE_IMPORTS = {
58
21
  '.sass': `@use '@vsn-ux/ngx-gaia'\n`,
59
22
  '.scss': `@use '@vsn-ux/ngx-gaia';\n`,
23
+ '.css': `@import '@vsn-ux/ngx-gaia';\n`,
60
24
  };
61
25
  function addStyles(options) {
62
26
  return (host, context) => __awaiter(this, void 0, void 0, function* () {
@@ -1 +1 @@
1
- {"version":3,"file":"setup-project.js","sourceRoot":"","sources":["../../../../projects/ngx-gaia/schematics/ng-add/setup-project.ts"],"names":[],"mappings":";;;;;;;;;;;AAwBA,8CAEC;AA1BD,wDAQiC;AAEjC,2DAKoC;AACpC,qEAG+C;AAC/C,6BAA6B;AAI7B,SAAgB,iBAAiB,CAAC,OAAe;IAC/C,OAAO,IAAA,kBAAK,EAAC,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACtC,OAAO,CAAO,IAAU,EAAE,OAAyB,EAAE,EAAE;QACrD,MAAM,SAAS,GAAG,MAAM,IAAA,wBAAY,EAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAA,oCAAuB,EAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAEpE,MAAM,YAAY,GAAG,IAAA,+BAAkB,EAAC,OAAO,CAAC,CAAC;QAEjD,IAAI,IAAA,4BAAe,EAAC,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC;YACxC,8BAA8B;YAC9B,OAAO;QACT,CAAC;QAED,+BAA+B,CAC7B,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,OAAO,EACP,OAAO,CACR,CAAC;IACJ,CAAC,CAAA,CAAC;AACJ,CAAC;AAED,SAAS,+BAA+B,CACtC,IAAU,EACV,OAA0B,EAC1B,QAAgB,EAChB,OAAyB,EACzB,OAAe;IAEf,MAAM,2BAA2B,GAAG,yBAAyB,CAAC;IAC9D,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;IACxD,MAAM,aAAa,GAAG,IAAA,6BAAgB,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAEvD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,0FAA0F;QAC1F,mFAAmF;QACnF,yFAAyF;QACzF,oFAAoF;QACpF,IAAI,IAAA,8BAAiB,EAAC,IAAI,EAAE,aAAa,EAAE,wBAAwB,CAAC,EAAE,CAAC;YACrE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qBAAqB,2BAA2B,IAAI;gBAClD,YAAY,wBAAwB,wBAAwB,CAC/D,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,IAAA,wCAA2B,EACzB,IAAI,EACJ,2BAA2B,EAC3B,sCAAsC,EACtC,OAAO,CACR,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IACL,CAAC,OAAO,CAAC,UAAU;QACnB,CAAC,IAAA,8BAAiB,EAAC,IAAI,EAAE,aAAa,EAAE,2BAA2B,CAAC,EACpE,CAAC;QACD,oFAAoF;QACpF,+BAA+B;QAC/B,IAAA,wCAA2B,EACzB,IAAI,EACJ,wBAAwB,EACxB,sCAAsC,EACtC,OAAO,CACR,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,iCAAiC,GAA4B;IACjE,OAAO,EAAE,2BAA2B;IACpC,OAAO,EAAE,4BAA4B;CACtC,CAAC;AAEF,SAAS,SAAS,CAAC,OAAe;IAChC,OAAO,CAAO,IAAU,EAAE,OAAyB,EAAE,EAAE;QACrD,MAAM,SAAS,GAAG,MAAM,IAAA,wBAAY,EAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAA,oCAAuB,EAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACpE,MAAM,aAAa,GAAG,IAAA,gCAAmB,EAAC,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yDAAyD,CAC1D,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,cAAc,GAClB,iCAAiC,CAAC,kBAAkB,CAAC,CAAC;QACxD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QACD,OAAO,eAAe,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IACxD,CAAC,CAAA,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,aAAqB,EAAE,cAAsB;IACpE,OAAO,CAAC,IAAU,EAAE,EAAE;QACpB,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEnD,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACjD,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QACxC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"setup-project.js","sourceRoot":"","sources":["../../../../projects/ngx-gaia/schematics/ng-add/setup-project.ts"],"names":[],"mappings":";;;;;;;;;;;AAgBA,8CAEC;AAlBD,wDAGiC;AAEjC,2DAKoC;AACpC,qEAAqE;AACrE,6BAA6B;AAI7B,SAAgB,iBAAiB,CAAC,OAAe;IAC/C,OAAO,IAAA,kBAAK,EAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,iCAAiC,GAA4B;IACjE,OAAO,EAAE,2BAA2B;IACpC,OAAO,EAAE,4BAA4B;IACrC,MAAM,EAAE,+BAA+B;CACxC,CAAC;AAEF,SAAS,SAAS,CAAC,OAAe;IAChC,OAAO,CAAO,IAAU,EAAE,OAAyB,EAAE,EAAE;QACrD,MAAM,SAAS,GAAG,MAAM,IAAA,wBAAY,EAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAA,oCAAuB,EAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACpE,MAAM,aAAa,GAAG,IAAA,gCAAmB,EAAC,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yDAAyD,CAC1D,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,cAAc,GAClB,iCAAiC,CAAC,kBAAkB,CAAC,CAAC;QACxD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QACD,OAAO,eAAe,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IACxD,CAAC,CAAA,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,aAAqB,EAAE,cAAsB;IACpE,OAAO,CAAC,IAAU,EAAE,EAAE;QACpB,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEnD,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACjD,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QACxC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC,CAAC;AACJ,CAAC"}