@analogjs/astro-angular 3.0.0-beta.1 → 3.0.0-beta.11

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@analogjs/astro-angular",
3
- "version": "3.0.0-beta.1",
3
+ "version": "3.0.0-beta.11",
4
4
  "description": "Use Angular components within Astro",
5
5
  "type": "module",
6
6
  "author": "Brandon Roberts <robertsbt@gmail.com>",
@@ -56,7 +56,7 @@
56
56
  "url": "https://github.com/sponsors/brandonroberts"
57
57
  },
58
58
  "dependencies": {
59
- "@analogjs/vite-plugin-angular": "3.0.0-beta.1",
59
+ "@analogjs/vite-plugin-angular": "3.0.0-beta.11",
60
60
  "rehype": "^13.0.2"
61
61
  },
62
62
  "peerDependencies": {
package/src/client-ngh.js CHANGED
@@ -1,6 +1,6 @@
1
- import { buildProjectableNodes, collectProjectedNodes } from "./projection.js";
2
1
  import { ID_PROP_NAME } from "./id.js";
3
2
  import { createComponentBindings, getComponentElementTag, registerRootComponent } from "./create-component.js";
3
+ import { buildProjectableNodes, collectProjectedNodes } from "./projection.js";
4
4
  import { ensureSsrIntegrityMarker } from "./ssr-integrity.js";
5
5
  import { APP_ID, createComponent, provideZonelessChangeDetection, reflectComponentType } from "@angular/core";
6
6
  import { createApplication, provideClientHydration } from "@angular/platform-browser";
package/src/client.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { EnvironmentProviders, Provider, ɵComponentType as ComponentType } from "@angular/core";
2
+ import { ApplicationRef } from "@angular/core";
2
3
  declare const _default: (element: HTMLElement) => ((Component: ComponentType<unknown> & {
3
4
  clientProviders?: (Provider | EnvironmentProviders)[];
4
- }, props?: Record<string, unknown>, slots?: unknown) => void);
5
+ }, props?: Record<string, unknown>, slots?: unknown) => Promise<ApplicationRef | void> | undefined);
5
6
  export default _default;
package/src/client.js CHANGED
@@ -1,42 +1,25 @@
1
+ import { ID_PROP_NAME } from "./id.js";
2
+ import { createComponentBindings, registerRootComponent } from "./create-component.js";
1
3
  import { buildProjectableNodes } from "./projection.js";
2
4
  import { createComponent, provideZonelessChangeDetection, reflectComponentType } from "@angular/core";
3
5
  import { createApplication } from "@angular/platform-browser";
4
- import { Subject, takeUntil } from "rxjs";
5
6
  //#region packages/astro-angular/src/client.ts
6
7
  var client_default = (element) => {
7
8
  return (Component, props, slots) => {
8
9
  const mirror = reflectComponentType(Component);
9
10
  if (!mirror) return;
10
- createApplication({ providers: [provideZonelessChangeDetection(), ...Component.clientProviders || []] }).then((appRef) => {
11
+ if (mirror.outputs.length && props?.["data-analog-id"]) element.setAttribute(ID_PROP_NAME, props[ID_PROP_NAME]);
12
+ return createApplication({ providers: [provideZonelessChangeDetection(), ...Component.clientProviders || []] }).then((appRef) => {
11
13
  const componentRef = createComponent(Component, {
12
14
  environmentInjector: appRef.injector,
13
15
  hostElement: element,
14
- projectableNodes: buildProjectableNodes(mirror, slots, document)
16
+ projectableNodes: buildProjectableNodes(mirror, slots, document),
17
+ bindings: createComponentBindings(mirror, props, element)
15
18
  });
16
- if (props) {
17
- for (const [key, value] of Object.entries(props)) if (mirror.inputs.some(({ templateName, propName }) => templateName === key || propName === key)) componentRef.setInput(key, value);
18
- }
19
- if (mirror.outputs.length && props?.["data-analog-id"]) {
20
- const destroySubject = new Subject();
21
- element.setAttribute("data-analog-id", props["data-analog-id"]);
22
- mirror.outputs.forEach(({ templateName, propName }) => {
23
- const outputName = templateName || propName;
24
- componentRef.instance[outputName].pipe(takeUntil(destroySubject)).subscribe((detail) => {
25
- const event = new CustomEvent(outputName, {
26
- bubbles: true,
27
- cancelable: true,
28
- composed: true,
29
- detail
30
- });
31
- element.dispatchEvent(event);
32
- });
33
- });
34
- appRef.onDestroy(() => {
35
- destroySubject.next();
36
- destroySubject.complete();
37
- });
38
- }
39
- appRef.attachView(componentRef.hostView);
19
+ registerRootComponent(appRef, componentRef);
20
+ return appRef;
21
+ }).catch((error) => {
22
+ console.error("Failed to bootstrap Angular component:", error);
40
23
  });
41
24
  };
42
25
  };
package/src/client.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","names":[],"sources":["../../src/client.ts"],"sourcesContent":["import {\n EnvironmentProviders,\n Provider,\n reflectComponentType,\n ɵComponentType as ComponentType,\n provideZonelessChangeDetection,\n} from '@angular/core';\nimport { ApplicationRef, createComponent } from '@angular/core';\nimport { createApplication } from '@angular/platform-browser';\nimport { Observable, Subject, takeUntil } from 'rxjs';\nimport { buildProjectableNodes } from './projection.ts';\n\nexport default (\n element: HTMLElement,\n): ((\n Component: ComponentType<unknown> & {\n clientProviders?: (Provider | EnvironmentProviders)[];\n },\n props?: Record<string, unknown>,\n slots?: unknown,\n) => void) => {\n return (\n Component: ComponentType<unknown> & {\n clientProviders?: (Provider | EnvironmentProviders)[];\n },\n props?: Record<string, unknown>,\n slots?: unknown,\n ): void => {\n const mirror = reflectComponentType(Component);\n\n if (!mirror) {\n // Not an Angular component\n return;\n }\n\n createApplication({\n providers: [\n provideZonelessChangeDetection(),\n ...(Component.clientProviders || []),\n ],\n }).then((appRef: ApplicationRef) => {\n const componentRef = createComponent(Component, {\n environmentInjector: appRef.injector,\n hostElement: element,\n projectableNodes: buildProjectableNodes(mirror, slots, document),\n });\n\n if (props) {\n for (const [key, value] of Object.entries(props)) {\n if (\n mirror.inputs.some(\n ({ templateName, propName }) =>\n templateName === key || propName === key,\n )\n ) {\n componentRef.setInput(key, value);\n }\n }\n }\n\n if (mirror.outputs.length && props?.['data-analog-id']) {\n const destroySubject = new Subject<void>();\n element.setAttribute(\n 'data-analog-id',\n props['data-analog-id'] as string,\n );\n\n mirror.outputs.forEach(({ templateName, propName }) => {\n const outputName = templateName || propName;\n const component = componentRef.instance as Record<\n string,\n Observable<unknown>\n >;\n component[outputName]\n .pipe(takeUntil(destroySubject))\n .subscribe((detail) => {\n const event = new CustomEvent(outputName, {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail,\n });\n element.dispatchEvent(event);\n });\n });\n\n appRef.onDestroy(() => {\n destroySubject.next();\n destroySubject.complete();\n });\n }\n\n appRef.attachView(componentRef.hostView);\n });\n };\n};\n"],"mappings":";;;;;AAYA,IAAA,kBACE,YAOY;CACZ,QACE,WAGA,OACA,UACS;EACT,MAAM,SAAS,qBAAqB,SAAS;EAE7C,IAAI,CAAC,QAEH;EAGF,kBAAkB,EAChB,WAAW,CACT,+BAA+B,GAC/B,GAAI,UAAU,mBAAmB,CAAC,CACpC,EACF,CAAC,CAAC,CAAC,MAAM,WAA2B;GAClC,MAAM,eAAe,gBAAgB,WAAW;IAC9C,qBAAqB,OAAO;IAC5B,aAAa;IACb,kBAAkB,sBAAsB,QAAQ,OAAO,QAAQ;GACjE,CAAC;GAED,IAAI,OACG;SAAA,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,GAC7C,IACE,OAAO,OAAO,MACX,EAAE,cAAc,eACf,iBAAiB,OAAO,aAAa,GACzC,GAEA,aAAa,SAAS,KAAK,KAAK;GAAA;GAKtC,IAAI,OAAO,QAAQ,UAAU,QAAQ,mBAAmB;IACtD,MAAM,iBAAiB,IAAI,QAAc;IACzC,QAAQ,aACN,kBACA,MAAM,iBACR;IAEA,OAAO,QAAQ,SAAS,EAAE,cAAc,eAAe;KACrD,MAAM,aAAa,gBAAgB;KAKnC,aAJ+B,SAIrB,WAAW,CAClB,KAAK,UAAU,cAAc,CAAC,CAAC,CAC/B,WAAW,WAAW;MACrB,MAAM,QAAQ,IAAI,YAAY,YAAY;OACxC,SAAS;OACT,YAAY;OACZ,UAAU;OACV;MACF,CAAC;MACD,QAAQ,cAAc,KAAK;KAC7B,CAAC;IACL,CAAC;IAED,OAAO,gBAAgB;KACrB,eAAe,KAAK;KACpB,eAAe,SAAS;IAC1B,CAAC;GACH;GAEA,OAAO,WAAW,aAAa,QAAQ;EACzC,CAAC;CACH;AACF"}
1
+ {"version":3,"file":"client.js","names":[],"sources":["../../src/client.ts"],"sourcesContent":["import {\n EnvironmentProviders,\n Provider,\n reflectComponentType,\n ɵComponentType as ComponentType,\n provideZonelessChangeDetection,\n} from '@angular/core';\nimport { ApplicationRef, createComponent } from '@angular/core';\nimport { createApplication } from '@angular/platform-browser';\nimport {\n createComponentBindings,\n registerRootComponent,\n} from './create-component.ts';\nimport { ID_PROP_NAME } from './id.ts';\nimport { buildProjectableNodes } from './projection.ts';\n\nexport default (\n element: HTMLElement,\n): ((\n Component: ComponentType<unknown> & {\n clientProviders?: (Provider | EnvironmentProviders)[];\n },\n props?: Record<string, unknown>,\n slots?: unknown,\n) => Promise<ApplicationRef | void> | undefined) => {\n return (\n Component: ComponentType<unknown> & {\n clientProviders?: (Provider | EnvironmentProviders)[];\n },\n props?: Record<string, unknown>,\n slots?: unknown,\n ): Promise<ApplicationRef | void> | undefined => {\n const mirror = reflectComponentType(Component);\n\n if (!mirror) {\n // Not an Angular component\n return;\n }\n\n if (mirror.outputs.length && props?.[ID_PROP_NAME]) {\n // `addOutputListener` waits for this attribute to attach its listener.\n element.setAttribute(ID_PROP_NAME, props[ID_PROP_NAME] as string);\n }\n\n return createApplication({\n providers: [\n provideZonelessChangeDetection(),\n ...(Component.clientProviders || []),\n ],\n })\n .then((appRef: ApplicationRef) => {\n // Bindings go through `inputBinding`/`outputBinding`, which handle\n // aliases as well as signal `input()` and `output()`.\n const componentRef = createComponent(Component, {\n environmentInjector: appRef.injector,\n hostElement: element,\n projectableNodes: buildProjectableNodes(mirror, slots, document),\n bindings: createComponentBindings(mirror, props, element),\n });\n\n registerRootComponent(appRef, componentRef);\n\n return appRef;\n })\n .catch((error) => {\n console.error('Failed to bootstrap Angular component:', error);\n });\n };\n};\n"],"mappings":";;;;;;AAgBA,IAAA,kBACE,YAOkD;CAClD,QACE,WAGA,OACA,UAC+C;EAC/C,MAAM,SAAS,qBAAqB,SAAS;EAE7C,IAAI,CAAC,QAEH;EAGF,IAAI,OAAO,QAAQ,UAAU,QAAA,mBAE3B,QAAQ,aAAa,cAAc,MAAM,aAAuB;EAGlE,OAAO,kBAAkB,EACvB,WAAW,CACT,+BAA+B,GAC/B,GAAI,UAAU,mBAAmB,CAAC,CACpC,EACF,CAAC,CAAC,CACC,MAAM,WAA2B;GAGhC,MAAM,eAAe,gBAAgB,WAAW;IAC9C,qBAAqB,OAAO;IAC5B,aAAa;IACb,kBAAkB,sBAAsB,QAAQ,OAAO,QAAQ;IAC/D,UAAU,wBAAwB,QAAQ,OAAO,OAAO;GAC1D,CAAC;GAED,sBAAsB,QAAQ,YAAY;GAE1C,OAAO;EACT,CAAC,CAAC,CACD,OAAO,UAAU;GAChB,QAAQ,MAAM,0CAA0C,KAAK;EAC/D,CAAC;CACL;AACF"}
package/src/server-ngh.js CHANGED
@@ -1,6 +1,6 @@
1
- import { buildProjectableNodes, markProjectableNodes } from "./projection.js";
2
1
  import { ID_PROP_NAME } from "./id.js";
3
2
  import { createInputBindings, getComponentElementTag, registerRootComponent } from "./create-component.js";
3
+ import { buildProjectableNodes, markProjectableNodes } from "./projection.js";
4
4
  import { getContext, incrementId } from "./context.js";
5
5
  import { APP_ID, DOCUMENT, createComponent, provideZonelessChangeDetection, reflectComponentType } from "@angular/core";
6
6
  import { createApplication, provideClientHydration } from "@angular/platform-browser";
package/src/server.js CHANGED
@@ -1,5 +1,5 @@
1
- import { buildProjectableNodes } from "./projection.js";
2
1
  import { createInputBindings, getComponentElementTag, registerRootComponent } from "./create-component.js";
2
+ import { buildProjectableNodes } from "./projection.js";
3
3
  import { DOCUMENT, createComponent, provideZonelessChangeDetection, reflectComponentType } from "@angular/core";
4
4
  import { createApplication } from "@angular/platform-browser";
5
5
  import { platformServer, provideServerRendering, renderApplication, ɵSERVER_CONTEXT } from "@angular/platform-server";