@analogjs/astro-angular 0.1.0-beta.0 → 0.1.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -5
- package/package.json +1 -2
- package/src/client.d.ts +2 -2
- package/src/client.js +7 -2
- package/src/client.js.map +1 -1
- package/src/index.js +5 -1
- package/src/index.js.map +1 -1
- package/src/server.d.ts +3 -3
- package/src/server.js +42 -7
- package/src/server.js.map +1 -1
- package/src/test-setup.d.ts +1 -0
- package/src/test-setup.js +2 -0
- package/src/test-setup.js.map +1 -0
- package/vite.config.d.ts +2 -0
- package/vite.config.js +34 -0
- package/vite.config.js.map +1 -0
package/README.md
CHANGED
|
@@ -46,7 +46,8 @@ Create a `tsconfig.app.json` in the root of the project.
|
|
|
46
46
|
"noEmit": false,
|
|
47
47
|
"target": "es2020",
|
|
48
48
|
"module": "es2020",
|
|
49
|
-
"lib": ["es2020", "dom"]
|
|
49
|
+
"lib": ["es2020", "dom"],
|
|
50
|
+
"skipLibCheck": true
|
|
50
51
|
},
|
|
51
52
|
"angularCompilerOptions": {
|
|
52
53
|
"enableI18nLegacyMessageIdFormat": false,
|
|
@@ -98,22 +99,24 @@ Go to [Defining A Component](#defining-a-component)
|
|
|
98
99
|
The Astro Angular integration **only** supports rendering standalone components:
|
|
99
100
|
|
|
100
101
|
```ts
|
|
101
|
-
import {
|
|
102
|
+
import { NgIf } from '@angular/common';
|
|
102
103
|
import { Component } from '@angular/core';
|
|
103
104
|
|
|
104
105
|
@Component({
|
|
105
106
|
selector: 'app-hello',
|
|
106
107
|
standalone: true,
|
|
107
|
-
imports: [
|
|
108
|
+
imports: [NgIf],
|
|
108
109
|
template: `
|
|
109
110
|
<p>Hello from Angular!!</p>
|
|
110
111
|
|
|
111
|
-
<p *ngIf="show">
|
|
112
|
+
<p *ngIf="show">{{ helpText }}</p>
|
|
112
113
|
|
|
113
114
|
<button (click)="toggle()">Toggle</button>
|
|
114
115
|
`,
|
|
115
116
|
})
|
|
116
117
|
export class HelloComponent {
|
|
118
|
+
@Input() helpText = 'help';
|
|
119
|
+
|
|
117
120
|
show = false;
|
|
118
121
|
|
|
119
122
|
toggle() {
|
|
@@ -127,9 +130,13 @@ Add the Angular component to the Astro component template. This only renders the
|
|
|
127
130
|
```ts
|
|
128
131
|
---
|
|
129
132
|
import { HelloComponent } from '../components/hello.component.ts';
|
|
133
|
+
|
|
134
|
+
const helpText = "Helping binding";
|
|
130
135
|
---
|
|
131
136
|
|
|
132
137
|
<HelloComponent />
|
|
138
|
+
<HelloComponent helpText="Helping" />
|
|
139
|
+
<HelloComponent helpText={helpText} />
|
|
133
140
|
```
|
|
134
141
|
|
|
135
142
|
To hydrate the component on the client, use one of the Astro directives:
|
|
@@ -147,5 +154,4 @@ Find more information about [Client Directives](https://docs.astro.build/en/refe
|
|
|
147
154
|
## Current Limitations
|
|
148
155
|
|
|
149
156
|
- Only standalone Angular components in version v14.2+ are supported
|
|
150
|
-
- Component Props/Inputs are not supported
|
|
151
157
|
- Component Outputs are not supported
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@analogjs/astro-angular",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.1",
|
|
4
4
|
"description": "An Angular integration for Astro",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "Brandon Roberts <robertsbt@gmail.com>",
|
|
@@ -37,7 +37,6 @@
|
|
|
37
37
|
"@angular/compiler": "^14.0.0",
|
|
38
38
|
"@angular/core": "^14.0.0",
|
|
39
39
|
"@angular/language-service": "^14.0.0",
|
|
40
|
-
"@angular/forms": "^14.0.0",
|
|
41
40
|
"@angular/platform-browser": "^14.0.0",
|
|
42
41
|
"@angular/platform-browser-dynamic": "^14.0.0",
|
|
43
42
|
"@angular/platform-server": "^14.0.0",
|
package/src/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import 'zone.js/dist/zone.js';
|
|
2
|
-
import type { ɵComponentType } from '@angular/core';
|
|
3
|
-
declare const _default: (element: HTMLElement) => (Component:
|
|
2
|
+
import type { ɵComponentType as ComponentType } from '@angular/core';
|
|
3
|
+
declare const _default: (element: HTMLElement) => (Component: ComponentType<unknown>, props?: Record<string, unknown>, _childHTML?: unknown) => void;
|
|
4
4
|
export default _default;
|
package/src/client.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import 'zone.js/dist/zone.js';
|
|
2
|
-
import { createApplication } from '@angular/platform-browser';
|
|
3
2
|
import { NgZone, createComponent } from '@angular/core';
|
|
3
|
+
import { createApplication } from '@angular/platform-browser';
|
|
4
4
|
export default (element) => {
|
|
5
|
-
return (Component,
|
|
5
|
+
return (Component, props, _childHTML) => {
|
|
6
6
|
createApplication().then((appRef) => {
|
|
7
7
|
const zone = appRef.injector.get(NgZone);
|
|
8
8
|
zone.run(() => {
|
|
@@ -10,6 +10,11 @@ export default (element) => {
|
|
|
10
10
|
environmentInjector: appRef.injector,
|
|
11
11
|
hostElement: element,
|
|
12
12
|
});
|
|
13
|
+
if (props) {
|
|
14
|
+
for (const [key, value] of Object.entries(props)) {
|
|
15
|
+
componentRef.setInput(key, value);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
13
18
|
appRef.attachView(componentRef.hostView);
|
|
14
19
|
});
|
|
15
20
|
});
|
package/src/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../packages/astro-angular/src/client.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../packages/astro-angular/src/client.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAE9B,OAAO,EAAkB,MAAM,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,eAAe,CAAC,OAAoB,EAAE,EAAE;IACtC,OAAO,CACL,SAAiC,EACjC,KAA+B,EAC/B,UAAoB,EACpB,EAAE;QACF,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAC,MAAsB,EAAE,EAAE;YAClD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;gBACZ,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,EAAE;oBAC9C,mBAAmB,EAAE,MAAM,CAAC,QAAQ;oBACpC,WAAW,EAAE,OAAO;iBACrB,CAAC,CAAC;gBAEH,IAAI,KAAK,EAAE;oBACT,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBAChD,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;qBACnC;iBACF;gBAED,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
package/src/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import viteAngular from '@analogjs/vite-plugin-angular';
|
|
2
|
+
import { enableProdMode } from '@angular/core';
|
|
2
3
|
function getRenderer() {
|
|
3
4
|
return {
|
|
4
5
|
name: '@analogjs/astro-angular',
|
|
@@ -24,7 +25,7 @@ function getViteConfiguration() {
|
|
|
24
25
|
* Why I am casting viteAngular as any
|
|
25
26
|
*
|
|
26
27
|
* The vite angular plugins is shipped as commonjs, while this astro
|
|
27
|
-
* integration is shipped using ESM and if you call the
|
|
28
|
+
* integration is shipped using ESM and if you call the default
|
|
28
29
|
* function, you get the following error: viteAngular is not a function.
|
|
29
30
|
* Attempt to use ESM for the angular vite plugin broke something, hence
|
|
30
31
|
* this workaround for now.
|
|
@@ -41,6 +42,9 @@ export default function () {
|
|
|
41
42
|
addRenderer(getRenderer());
|
|
42
43
|
updateConfig({ vite: getViteConfiguration() });
|
|
43
44
|
},
|
|
45
|
+
'astro:build:setup': () => {
|
|
46
|
+
enableProdMode();
|
|
47
|
+
},
|
|
44
48
|
},
|
|
45
49
|
};
|
|
46
50
|
}
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/astro-angular/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/astro-angular/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,SAAS,WAAW;IAClB,OAAO;QACL,IAAI,EAAE,yBAAyB;QAC/B,gBAAgB,EAAE,mCAAmC;QACrD,gBAAgB,EAAE,mCAAmC;KACtD,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB;IAC3B,OAAO;QACL,YAAY,EAAE;YACZ,OAAO,EAAE;gBACP,2BAA2B;gBAC3B,eAAe;gBACf,mCAAmC;aACpC;YACD,OAAO,EAAE;gBACP,0BAA0B;gBAC1B,mCAAmC;aACpC;SACF;QACD;;;;;;;;;;WAUG;QACH,OAAO,EAAE,CAAE,WAAmB,CAAC,OAAO,EAAE,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,OAAO;IACZ,OAAO;QACL,IAAI,EAAE,yBAAyB;QAC/B,KAAK,EAAE;YACL,oBAAoB,EAAE,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,EAAE;gBACtD,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC3B,YAAY,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC;YACjD,CAAC;YACD,mBAAmB,EAAE,GAAG,EAAE;gBACxB,cAAc,EAAE,CAAC;YACnB,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
|
package/src/server.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import 'zone.js/dist/zone.js';
|
|
2
|
-
import type { ɵComponentType } from '@angular/core';
|
|
3
|
-
declare function check(Component:
|
|
4
|
-
declare function renderToStaticMarkup(Component:
|
|
2
|
+
import type { ɵComponentType as ComponentType } from '@angular/core';
|
|
3
|
+
declare function check(Component: ComponentType<unknown>, _props: Record<string, unknown>, _children: unknown): boolean;
|
|
4
|
+
declare function renderToStaticMarkup(Component: ComponentType<unknown>, props: Record<string, unknown>, _children: unknown): Promise<{
|
|
5
5
|
html: string;
|
|
6
6
|
}>;
|
|
7
7
|
declare const _default: {
|
package/src/server.js
CHANGED
|
@@ -1,23 +1,58 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
2
|
import 'zone.js/dist/zone.js';
|
|
3
|
-
import {
|
|
3
|
+
import { ApplicationRef, InjectionToken, reflectComponentType, } from '@angular/core';
|
|
4
|
+
import { BEFORE_APP_SERIALIZED, renderApplication, } from '@angular/platform-server';
|
|
5
|
+
const ANALOG_ASTRO_STATIC_PROPS = new InjectionToken('@analogjs/astro-angular: Static Props w/ Mirror Provider', {
|
|
6
|
+
factory() {
|
|
7
|
+
return { props: {}, mirror: {} };
|
|
8
|
+
},
|
|
9
|
+
});
|
|
4
10
|
function check(Component, _props, _children) {
|
|
5
|
-
return !!Component
|
|
11
|
+
return !!reflectComponentType(Component);
|
|
6
12
|
}
|
|
7
|
-
|
|
13
|
+
// Run beforeAppInitialized hook to set Input on the ComponentRef
|
|
14
|
+
// before the platform renders to string
|
|
15
|
+
const STATIC_PROPS_HOOK_PROVIDER = {
|
|
16
|
+
provide: BEFORE_APP_SERIALIZED,
|
|
17
|
+
useFactory: (appRef, { props, mirror, }) => {
|
|
18
|
+
return () => {
|
|
19
|
+
const compRef = appRef.components[0];
|
|
20
|
+
if (compRef && props && mirror) {
|
|
21
|
+
for (const [key, value] of Object.entries(props)) {
|
|
22
|
+
if (
|
|
23
|
+
// we double-check inputs on ComponentMirror
|
|
24
|
+
// because Astro might add additional props
|
|
25
|
+
// that aren't actually Input defined on the Component
|
|
26
|
+
mirror.inputs.some(({ templateName, propName }) => templateName === key || propName === key)) {
|
|
27
|
+
compRef.setInput(key, value);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
compRef.changeDetectorRef.detectChanges();
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
},
|
|
34
|
+
deps: [ApplicationRef, ANALOG_ASTRO_STATIC_PROPS],
|
|
35
|
+
multi: true,
|
|
36
|
+
};
|
|
37
|
+
function renderToStaticMarkup(Component, props, _children) {
|
|
8
38
|
return __awaiter(this, void 0, void 0, function* () {
|
|
9
|
-
const
|
|
39
|
+
const mirror = reflectComponentType(Component);
|
|
40
|
+
const appId = (mirror === null || mirror === void 0 ? void 0 : mirror.selector) || Component.name.toString().toLowerCase();
|
|
10
41
|
const document = `<${appId}></${appId}>`;
|
|
11
42
|
const html = yield renderApplication(Component, {
|
|
12
43
|
appId,
|
|
13
44
|
document,
|
|
45
|
+
providers: [
|
|
46
|
+
{
|
|
47
|
+
provide: ANALOG_ASTRO_STATIC_PROPS,
|
|
48
|
+
useValue: { props, mirror },
|
|
49
|
+
},
|
|
50
|
+
STATIC_PROPS_HOOK_PROVIDER,
|
|
51
|
+
],
|
|
14
52
|
});
|
|
15
53
|
return { html };
|
|
16
54
|
});
|
|
17
55
|
}
|
|
18
|
-
function getSelector(cmp) {
|
|
19
|
-
return cmp['ɵcmp'].selectors[0][0];
|
|
20
|
-
}
|
|
21
56
|
export default {
|
|
22
57
|
check,
|
|
23
58
|
renderToStaticMarkup,
|
package/src/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../packages/astro-angular/src/server.ts"],"names":[],"mappings":";AAAA,OAAO,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../packages/astro-angular/src/server.ts"],"names":[],"mappings":";AAAA,OAAO,sBAAsB,CAAC;AAM9B,OAAO,EACL,cAAc,EACd,cAAc,EACd,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAElC,MAAM,yBAAyB,GAAG,IAAI,cAAc,CAGjD,0DAA0D,EAAE;IAC7D,OAAO;QACL,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAA8B,EAAE,CAAC;IAC/D,CAAC;CACF,CAAC,CAAC;AAEH,SAAS,KAAK,CACZ,SAAiC,EACjC,MAA+B,EAC/B,SAAkB;IAElB,OAAO,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,iEAAiE;AACjE,wCAAwC;AACxC,MAAM,0BAA0B,GAAa;IAC3C,OAAO,EAAE,qBAAqB;IAC9B,UAAU,EAAE,CACV,MAAsB,EACtB,EACE,KAAK,EACL,MAAM,GAIP,EACD,EAAE;QACF,OAAO,GAAG,EAAE;YACV,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,OAAO,IAAI,KAAK,IAAI,MAAM,EAAE;gBAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBAChD;oBACE,4CAA4C;oBAC5C,2CAA2C;oBAC3C,sDAAsD;oBACtD,MAAM,CAAC,MAAM,CAAC,IAAI,CAChB,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,CAC7B,YAAY,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,CAC3C,EACD;wBACA,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;qBAC9B;iBACF;gBACD,OAAO,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;aAC3C;QACH,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,EAAE,CAAC,cAAc,EAAE,yBAAyB,CAAC;IACjD,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF,SAAe,oBAAoB,CACjC,SAAiC,EACjC,KAA8B,EAC9B,SAAkB;;QAElB,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,KAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;QAC1E,MAAM,QAAQ,GAAG,IAAI,KAAK,MAAM,KAAK,GAAG,CAAC;QAEzC,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,SAAS,EAAE;YAC9C,KAAK;YACL,QAAQ;YACR,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,yBAAyB;oBAClC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;iBAC5B;gBACD,0BAA0B;aAC3B;SACF,CAAC,CAAC;QAEH,OAAO,EAAE,IAAI,EAAE,CAAC;IAClB,CAAC;CAAA;AAED,eAAe;IACb,KAAK;IACL,oBAAoB;CACrB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@analogjs/vite-plugin-angular/setup-vitest';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-setup.js","sourceRoot":"","sources":["../../../../packages/astro-angular/src/test-setup.ts"],"names":[],"mappings":"AAAA,OAAO,4CAA4C,CAAC"}
|
package/vite.config.d.ts
ADDED
package/vite.config.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/// <reference types="vitest" />
|
|
2
|
+
import { defineConfig } from 'vite';
|
|
3
|
+
import { offsetFromRoot } from '@nrwl/devkit';
|
|
4
|
+
// https://vitejs.dev/config/
|
|
5
|
+
export default defineConfig(({ mode }) => {
|
|
6
|
+
return {
|
|
7
|
+
root: 'src',
|
|
8
|
+
server: {
|
|
9
|
+
port: 3000,
|
|
10
|
+
},
|
|
11
|
+
build: {
|
|
12
|
+
outDir: `${offsetFromRoot('packages/astro-angular/src')}/dist/packages/astro-angular`,
|
|
13
|
+
emptyOutDir: true,
|
|
14
|
+
target: 'es2020',
|
|
15
|
+
},
|
|
16
|
+
resolve: {
|
|
17
|
+
mainFields: ['module'],
|
|
18
|
+
},
|
|
19
|
+
plugins: [],
|
|
20
|
+
test: {
|
|
21
|
+
globals: true,
|
|
22
|
+
environment: 'jsdom',
|
|
23
|
+
setupFiles: ['test-setup.ts'],
|
|
24
|
+
include: ['**/*.spec.ts'],
|
|
25
|
+
cache: {
|
|
26
|
+
dir: `${offsetFromRoot('packages/astro-angular/src')}/node_modules/.vitest`,
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
define: {
|
|
30
|
+
'import.meta.vitest': mode !== 'production',
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=vite.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite.config.js","sourceRoot":"","sources":["../../../packages/astro-angular/vite.config.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,6BAA6B;AAC7B,eAAe,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;IACvC,OAAO;QACL,IAAI,EAAE,KAAK;QACX,MAAM,EAAE;YACN,IAAI,EAAE,IAAI;SACX;QACD,KAAK,EAAE;YACL,MAAM,EAAE,GAAG,cAAc,CACvB,4BAA4B,CAC7B,8BAA8B;YAC/B,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,QAAQ;SACjB;QACD,OAAO,EAAE;YACP,UAAU,EAAE,CAAC,QAAQ,CAAC;SACvB;QACD,OAAO,EAAE,EAAE;QACX,IAAI,EAAE;YACJ,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,OAAO;YACpB,UAAU,EAAE,CAAC,eAAe,CAAC;YAC7B,OAAO,EAAE,CAAC,cAAc,CAAC;YACzB,KAAK,EAAE;gBACL,GAAG,EAAE,GAAG,cAAc,CACpB,4BAA4B,CAC7B,uBAAuB;aACzB;SACF;QACD,MAAM,EAAE;YACN,oBAAoB,EAAE,IAAI,KAAK,YAAY;SAC5C;KACF,CAAC;AACJ,CAAC,CAAC,CAAC"}
|