{"version":3,"file":"bubblydoo-angular-react.mjs","sources":["../../../projects/angular-react/src/lib/angular-react.service.ts","../../../projects/angular-react/src/lib/angular-context/angular-context.tsx","../../../projects/angular-react/src/lib/nest-wrappers/nest-wrappers.tsx","../../../projects/angular-react/src/lib/injectable-react-context/react-context-token.ts","../../../projects/angular-react/src/lib/injectable-react-context/use-injectable-react-context.ts","../../../projects/angular-react/src/lib/use-in-tree-create-root/use-in-tree-create-root.ts","../../../projects/angular-react/src/lib/use-in-tree-create-root/in-tree-create-root-token.ts","../../../projects/angular-react/src/lib/templates/is-top-level-react-token.ts","../../../projects/angular-react/src/lib/angular-wrapper-with-module/angular-wrapper-with-module.tsx","../../../projects/angular-react/src/lib/angular-wrapper/angular-wrapper.tsx","../../../projects/angular-react/src/lib/use-injected/use-injected.ts","../../../projects/angular-react/src/lib/templates/template-outlet.component.ts","../../../projects/angular-react/src/lib/templates/angular-template-outlet.tsx","../../../projects/angular-react/src/lib/react-wrapper/react-wrapper.component.tsx","../../../projects/angular-react/src/lib/templates/react-to-template-ref.component.ts","../../../projects/angular-react/src/lib/angular-react.module.ts","../../../projects/angular-react/src/lib/use-observable/use-observable.ts","../../../projects/angular-react/src/lib/templates/use-to-angular-template-ref.tsx","../../../projects/angular-react/src/public-api.ts","../../../projects/angular-react/src/bubblydoo-angular-react.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Wrapper } from './nest-wrappers/nest-wrappers';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AngularReactService {\n\n  constructor() { }\n\n  /** Wrappers used to encapsulate all components passed to react-wrapper */\n  wrappers: Wrapper[] = [];\n}\n","import { NgModuleRef, Injector } from \"@angular/core\";\nimport { FiberProvider } from \"its-fine\";\nimport React from \"react\";\n\nexport const AngularModuleContext =\n  React.createContext<NgModuleRef<any> | null>(null);\n\nAngularModuleContext.displayName = \"AngularModuleContext\";\n\nexport const AngularInjectorContext =\n  React.createContext<Injector | null>(null);\n\nAngularInjectorContext.displayName = \"AngularInjectorContext\";\n\nexport function RootAngularContextProvider({\n  moduleRef,\n  injector,\n  children,\n}: {\n  moduleRef: NgModuleRef<any>;\n  injector?: Injector;\n  children: React.ReactNode;\n}) {\n  if (!moduleRef)\n    throw new Error(\"No moduleRef passed to RootAngularContextProvider\");\n\n  return (\n    <FiberProvider>\n      <AngularModuleContext.Provider value={moduleRef}>\n        <AngularInjectorContext.Provider value={injector || moduleRef.injector}>\n          {children}\n        </AngularInjectorContext.Provider>\n      </AngularModuleContext.Provider>\n    </FiberProvider>\n  );\n}\n","import React from \"react\";\n\nexport type Wrapper = ({ children }: { children: any }) => any;\n\nexport function nestWrappers(wrappers: Wrapper[], children: any) {\n  for (const Wrapper of wrappers.slice().reverse()) {\n    children = <Wrapper>{children}</Wrapper>\n  }\n\n  return children;\n}\n","import { InjectionToken } from '@angular/core';\nimport { InjectableReactContext } from './use-injectable-react-context';\n\nexport const InjectableReactContextToken = new InjectionToken<InjectableReactContext>('InjectableReactContext');\n","import { useContextMap, ContextMap } from 'its-fine';\nimport { Context, useMemo } from 'react';\nimport { BehaviorSubject, distinctUntilChanged, Observable } from 'rxjs';\nimport { map } from 'rxjs';\n\n/** Read functions for React contexts */\nexport type InjectableReactContext = {\n  read: <T>(context: Context<T>) => Observable<T | undefined>;\n  readCurrent: <T>(context: Context<T>) => T | undefined;\n};\n\n/** Creates a PassedReactContext */\nexport function useInjectableReactContext() {\n  const contextMap = useContextMap();\n  const all$ = useMemo(() => new BehaviorSubject<ContextMap>(contextMap), []);\n\n  all$.next(contextMap);\n\n  const injectableReactContext: InjectableReactContext = useMemo(\n    () => ({\n      read: (x) =>\n        all$.pipe(\n          map((contexts) => contexts.get(x)),\n          distinctUntilChanged()\n        ),\n      readCurrent: (x) => all$.value?.get(x),\n    }),\n    [all$]\n  );\n\n  return injectableReactContext;\n}\n","import { ReactNode, useCallback, useMemo, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { Root, createRoot as origCreateRoot } from \"react-dom/client\";\n\n/**\n * Behaves like `createRoot` but instead of creating a new root,\n * it puts the children in returned `portals`, which binds them to their context.\n *\n * Usage example:\n * ```\n * const { createRoot, portals } = useInTreeCreateRoot();\n *\n * const root = createRoot(document.body);\n * root.render(<SomethingUsingContexts />);\n *\n * return <>{portals}</>\n * ```\n */\nexport function useInTreeCreateRoot() {\n  const [roots, setRoots] = useState<Map<Element | DocumentFragment, ReactNode>>(new Map());\n\n  const createRoot: typeof origCreateRoot = useCallback((container, options) => {\n    const root: Root = {\n      render: (children) => {\n        setRoots(roots => {\n          const newRoots = new Map(roots);\n          newRoots.set(container, children);\n          return newRoots;\n        });\n      },\n      unmount: () => {\n        setRoots(roots => {\n          const newRoots = new Map(roots);\n          newRoots.delete(container);\n          return newRoots;\n        });\n      }\n    }\n    setRoots(roots => {\n      return new Map(roots).set(container, null);\n    });\n    return root;\n  }, []);\n\n  const portals = useMemo(() => {\n    return [...roots.entries()].map(([container, root]) => {\n      return createPortal(root, container);\n    })\n  }, [roots]);\n\n  return { createRoot, portals };\n}\n","import { InjectionToken } from '@angular/core';\nimport { createRoot } from 'react-dom/client';\n\nexport const InTreeCreateRootToken = new InjectionToken<typeof createRoot>('InTreeCreateRoot');\n","import { InjectionToken } from '@angular/core';\n\nexport const IsTopLevelReactToken = new InjectionToken<boolean>('IsTopLevelReact');\n","import * as ng from \"@angular/core\";\nimport React, {\n  ForwardedRef,\n  forwardRef,\n  useCallback,\n  useEffect,\n  useImperativeHandle,\n  useMemo,\n  useState,\n} from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Subscribable, Unsubscribable } from \"rxjs\";\nimport { InjectableReactContextToken } from \"../injectable-react-context/react-context-token\";\nimport { useInjectableReactContext } from \"../injectable-react-context/use-injectable-react-context\";\nimport { useInTreeCreateRoot } from \"../use-in-tree-create-root/use-in-tree-create-root\";\nimport { InTreeCreateRootToken } from \"../use-in-tree-create-root/in-tree-create-root-token\";\nimport { IsTopLevelReactToken } from \"../templates/is-top-level-react-token\";\n\nfunction AngularWrapperWithModule(\n  {\n    name: ngComponentName,\n    component: ngComponent,\n    moduleRef: ngModuleRef,\n    injector: ngInjector,\n    inputs,\n    events,\n    outputs,\n    children,\n    serverFallback,\n  }: {\n    name?: string;\n    component: any;\n    moduleRef: ng.NgModuleRef<any>;\n    injector: ng.Injector;\n    inputs?: Record<string, any>;\n    events?: Record<string, (ev: Event) => any>;\n    outputs?: Record<string, (value: any) => any>;\n    children?: any;\n    serverFallback?: string;\n  },\n  ref: ForwardedRef<ng.ComponentRef<any> | null>\n) {\n  if (!ngComponent)\n    throw new Error(\n      \"AngularWrapperWithModule needs a component but none was provided\"\n    );\n  if (!ngModuleRef)\n    throw new Error(\n      \"AngularWrapperWithModule needs a moduleRef but none was provided\"\n    );\n  if (!ngInjector)\n    throw new Error(\n      \"AngularWrapperWithModule needs an injector but none was provided\"\n    );\n\n  const [componentFactory, setComponentFactory] =\n    useState<ng.ComponentFactory<any> | null>(null);\n  const [renderedComponent, setRenderedComponent] =\n    useState<ng.ComponentRef<any> | null>(null);\n  const [renderedElement, setRenderedElement] =\n    useState<HTMLElement | null>(null);\n\n  useImperativeHandle(ref, () => renderedComponent!, [renderedComponent]);\n\n  // TODO: for more compat see @angular/elements\n  // https://github.com/angular/angular/blob/4332897baa2226ef246ee054fdd5254e3c129109/packages/elements/src/component-factory-strategy.ts#L200\n\n  const hasChildren = !!children;\n  const ngContentContainerEl = useMemo<HTMLDivElement | null>(() => {\n    if (hasChildren) return document.createElement(\"div\");\n    return null;\n  }, [hasChildren]);\n\n  const inTreeCreateRoot = useInTreeCreateRoot();\n\n  const injectedReactContext = useInjectableReactContext();\n\n  /** This effect makes sure event listeners like 'click' are registered when the element is rendered */\n  useEffect(() => {\n    if (!events) return;\n    if (!renderedElement) return;\n    if (!ngInjector) return;\n\n    const ngZone = ngInjector.get(ng.NgZone);\n\n    const localEl = renderedElement;\n\n    // sometimes the event handlers are executed in the Angular zone, sometimes they're not\n    // we make sure they're always in the Angular zone\n    const ngZonedEvents: typeof events = {};\n\n    for (const eventKey in events) {\n      const handler = events[eventKey];\n      ngZonedEvents[eventKey] = (ev) => {\n        ngZone.run(() => handler(ev));\n      };\n    }\n\n    for (const event in ngZonedEvents) {\n      localEl.addEventListener(event, ngZonedEvents[event]);\n    }\n    return () => {\n      for (const event in ngZonedEvents) {\n        localEl.removeEventListener(event, ngZonedEvents[event]);\n      }\n    };\n  }, [renderedElement, events, ngInjector]);\n\n  const elRef = useCallback<(node: HTMLElement) => void>(\n    (node) => {\n      if (node === null) return;\n      setRenderedElement(node);\n      const projectableNodes = ngContentContainerEl\n        ? [[ngContentContainerEl]]\n        : [];\n      const componentFactory =\n        ngModuleRef.componentFactoryResolver.resolveComponentFactory(\n          ngComponent\n        );\n\n      // extend the injector with our passed react context\n      // so the nested react-wrappers can access it\n      const injectorForComponent = ng.Injector.create({\n        providers: [\n          { provide: InjectableReactContextToken, useValue: injectedReactContext },\n          { provide: InTreeCreateRootToken, useValue: inTreeCreateRoot.createRoot },\n          { provide: IsTopLevelReactToken, useValue: false },\n        ],\n        parent: ngInjector,\n      });\n\n      const componentRef = componentFactory.create(\n        injectorForComponent,\n        projectableNodes,\n        node\n      );\n\n      const appRef = ngInjector.get(ng.ApplicationRef);\n      appRef.attachView(componentRef.hostView);\n\n      setComponentFactory(componentFactory);\n      setRenderedComponent(componentRef);\n    },\n    // inputs doesn't need to be a dep, this is already handled in the next useEffect\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [ngComponent, ngModuleRef, ngInjector, injectedReactContext]\n  );\n\n  useEffect(() => {\n    if (!renderedComponent) return;\n    if (!componentFactory) return;\n\n    // TODO: In Angular 14, there's a new `setInput` method on ComponentRef, which should be used\n    for (const [key, value] of Object.entries(inputs || {})) {\n      const inputSettings = componentFactory.inputs.find(\n        ({ templateName }) => templateName === key\n      );\n      if (!inputSettings) throw new Error(`Unknown input: ${key}`);\n      renderedComponent.instance[inputSettings.propName] = value;\n    }\n    // Somehow you can't just call detectChanges on renderedComponent.changeDetectorRef\n    // The change detector is not the same as the one you would inject in the constructor\n    // see https://github.com/angular/angular/issues/36667 and https://github.com/angular/angular/issues/18817\n    // This will also be fixed when using `setInput`\n    renderedComponent.injector.get(ng.ChangeDetectorRef).detectChanges();\n    renderedComponent.changeDetectorRef.detectChanges();\n  }, [renderedComponent, componentFactory, inputs]);\n\n  useEffect(() => {\n    if (!renderedComponent) return;\n    if (!componentFactory) return;\n    if (!outputs) return;\n    if (!ngInjector) return;\n\n    const ngZone = ngInjector.get(ng.NgZone);\n\n    const subscriptions: Unsubscribable[] = [];\n\n    for (const [key, handler] of Object.entries(outputs || {})) {\n      const outputSettings = componentFactory.outputs.find(\n        ({ templateName }) => templateName === key\n      );\n      if (!outputSettings) throw new Error(`Unknown output: ${key}`);\n\n      const outputEmitter: Subscribable<any> =\n        renderedComponent.instance[outputSettings.propName];\n\n      if (!outputEmitter)\n        throw new Error(`Output not found: ${outputSettings.propName}`);\n\n      const subscription = outputEmitter.subscribe({\n        next: (value: any) => {\n          // like the events, we make sure the output handlers are called in the Angular zone\n          ngZone.run(() => handler(value));\n        },\n      });\n      subscriptions.push(subscription);\n    }\n\n    return () => {\n      for (const subscription of subscriptions) {\n        subscription.unsubscribe();\n      }\n    };\n  }, [renderedComponent, componentFactory, outputs, ngInjector]);\n\n  useEffect(() => {\n    if (!renderedComponent) return;\n    return () => {\n      const node = renderedComponent.location.nativeElement;\n      const nextSibling = node.nextSibling;\n      const parentNode = node.parentNode;\n      // destroy will remove node from parentNode,\n      // but we want the host element to be managed by React\n      renderedComponent!.destroy();\n      // so we re-insert the node before the original nextSibling\n      // if there's no parent node, React already removed the element\n      parentNode?.insertBefore(node, nextSibling);\n    };\n  }, [renderedComponent]);\n\n  let componentName = ngComponentName;\n  if (!componentName) {\n    componentName = ngComponent.ɵcmp?.selectors?.[0]?.[0];\n    if (!componentName) {\n      console.error(\n        `Couldn't get component name from component`,\n        ngComponent.ɵcmp\n      );\n      throw new Error(`Couldn't get component name from component`);\n    } else if (!componentName.match(/^[a-z0-9-]+$/)) {\n      console.error(\n        `Couldn't use component selector as component name`,\n        componentName\n      );\n      throw new Error(`Couldn't use component selector as component name`);\n    }\n  }\n\n  return (\n    <>\n      {React.createElement(componentName, { ref: elRef }, serverFallback)}\n      {ngContentContainerEl &&\n        ReactDOM.createPortal(<>{children}</>, ngContentContainerEl)}\n      {inTreeCreateRoot.portals}\n    </>\n  );\n}\n\nconst AngularWrapperWithModuleForwardRef = forwardRef(AngularWrapperWithModule);\n\nexport { AngularWrapperWithModuleForwardRef as AngularWrapperWithModule };\n","import { type ComponentRef } from '@angular/core';\nimport React, { ForwardedRef, forwardRef, useContext } from 'react';\nimport { AngularInjectorContext, AngularModuleContext } from '../angular-context/angular-context';\nimport { AngularWrapperWithModule } from '../angular-wrapper-with-module/angular-wrapper-with-module';\n\nfunction AngularWrapper(\n  props: {\n    name?: string;\n    component: any;\n    inputs?: Record<string, any>;\n    events?: Record<string, (ev: Event) => any>;\n    outputs?: Record<string, (value: any) => any>;\n    children?: any;\n  },\n  forwardedRef: ForwardedRef<ComponentRef<any>>\n) {\n  const moduleRef = useContext(AngularModuleContext)!;\n  const injector = useContext(AngularInjectorContext)!;\n\n  return (\n    <AngularWrapperWithModule\n      name={props.name}\n      component={props.component}\n      moduleRef={moduleRef}\n      injector={injector}\n      inputs={props.inputs}\n      events={props.events}\n      outputs={props.outputs}\n      ref={forwardedRef}\n    >\n      {props.children}\n    </AngularWrapperWithModule>\n  );\n}\n\nconst AngularWrapperForwardRef = forwardRef(AngularWrapper);\n\nexport { AngularWrapperForwardRef as AngularWrapper };\n","import { InjectFlags, ProviderToken } from '@angular/core';\nimport { useContext } from 'react';\nimport { AngularInjectorContext } from '../angular-context/angular-context';\n\ntype PublicInterface<T> = Pick<T, keyof T>;\n\ntype ProviderTokenTypeHelper<T> = T extends ProviderToken<T>\n  ? ProviderToken<T>\n  : PublicInterface<ProviderToken<T>>;\n\nexport function useInjected<T = any>(\n  token: ProviderTokenTypeHelper<T>,\n  notFoundValue?: T,\n  flags?: InjectFlags\n): T {\n  const injector = useContext(AngularInjectorContext);\n  if (!injector)\n    throw new Error('`useInjected` needs to be used inside an Angular context');\n  return injector.get(token as ProviderToken<T>, notFoundValue, flags);\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Inject,\n  Injector,\n  Input,\n  TemplateRef,\n} from '@angular/core';\n\n@Component({\n  selector: 'template-outlet',\n  template: `\n    <ng-container\n      [ngTemplateOutlet]=\"tmpl\"\n      [ngTemplateOutletContext]=\"tmplContext\"\n      [ngTemplateOutletInjector]=\"tmplInjector\"\n    ></ng-container>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TemplateOutletComponent {\n  @Input() public tmpl!: TemplateRef<any>;\n  @Input() public tmplContext!: Record<string, any>;\n\n  constructor(@Inject(Injector) public tmplInjector: Injector) {}\n}\n","import { type NgModuleRef, type TemplateRef } from '@angular/core';\nimport React, { useCallback, useMemo, useContext } from \"react\";\nimport { AngularModuleContext } from \"../angular-context/angular-context\";\nimport { AngularReactService } from \"../angular-react.service\";\nimport { AngularWrapper } from \"../angular-wrapper/angular-wrapper\";\nimport { nestWrappers } from \"../nest-wrappers/nest-wrappers\";\nimport { useInjected } from \"../use-injected/use-injected\";\nimport { TemplateOutletComponent } from \"./template-outlet.component\";\n\ntype Props = {\n  tmpl: TemplateRef<any>;\n  tmplContext?: Record<string, any>;\n};\n\nexport function AngularTemplateOutlet({ tmpl, tmplContext }: Props) {\n  const inputs = useMemo(() => ({ tmpl, tmplContext }), [tmpl, tmplContext]);\n\n  return (\n    <AngularWrapper\n      name=\"template-outlet\"\n      component={TemplateOutletComponent}\n      inputs={inputs}\n    />\n  );\n}\n\nexport const useFromAngularTemplateRefFnWithModule = (\n  moduleRef: NgModuleRef<any>\n) => {\n  const angularReactService = useInjected(AngularReactService);\n  if (!angularReactService)\n    throw new Error(\n      \"AngularReactService is required when using useFromAngularTemplateRefWithModule\"\n    );\n\n  return useCallback(\n    function FromAngularTemplateRef(\n      tmpl: TemplateRef<any>,\n      tmplContext: Record<string, any> = {}\n    ) {\n      return nestWrappers(\n        angularReactService.wrappers,\n        <AngularTemplateOutlet tmpl={tmpl} tmplContext={tmplContext} />\n      );\n    },\n    [moduleRef, angularReactService]\n  );\n};\n\nexport const useFromAngularTemplateRefFn = () => {\n  const moduleRef = useContext(AngularModuleContext);\n  if (!moduleRef) throw new Error(\"No AngularModuleContext\");\n  return useFromAngularTemplateRefFnWithModule(moduleRef);\n};\n\nexport function useFromAngularTemplateRef<C extends Record<string, any>>(\n  templateRef: TemplateRef<C>\n) {\n  const fn = useFromAngularTemplateRefFn();\n  return useMemo(\n    () => (tmplContext: C) => fn(templateRef, tmplContext),\n    [templateRef, fn]\n  );\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Inject,\n  Injector,\n  Input,\n  NgModuleRef,\n  OnChanges,\n  OnDestroy,\n  Optional,\n  TemplateRef,\n  ViewChild,\n} from \"@angular/core\";\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom/client\";\nimport { RootAngularContextProvider } from \"../angular-context/angular-context\";\nimport { AngularReactService } from \"../angular-react.service\";\nimport { nestWrappers } from \"../nest-wrappers/nest-wrappers\";\nimport { AngularTemplateOutlet } from \"../templates/angular-template-outlet\";\nimport { InTreeCreateRootToken } from \"../use-in-tree-create-root/in-tree-create-root-token\";\nimport { IsTopLevelReactToken } from \"../templates/is-top-level-react-token\";\n\n@Component({\n  selector: \"react-wrapper\",\n  template: \"<ng-template #children><ng-content></ng-content></ng-template>\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ReactWrapperComponent\n  implements OnChanges, OnDestroy, AfterViewInit\n{\n  @Input()\n  props: any = {};\n  @Input()\n  component: React.ElementType | null = null;\n\n  @ViewChild(\"children\") childrenTmpl!: TemplateRef<any>;\n\n  private reactDomRoot: ReactDOM.Root | null = null;\n\n  constructor(\n    private ngModuleRef: NgModuleRef<any>,\n    private ngInjector: Injector,\n    private angularReactService: AngularReactService,\n    private elementRef: ElementRef<HTMLElement>,\n    @Optional()\n    @Inject(InTreeCreateRootToken)\n    private inTreeCreateRoot?: typeof ReactDOM.createRoot,\n    @Optional()\n    @Inject(IsTopLevelReactToken)\n    private isTopLevelReact?: boolean\n  ) {\n    this.isTopLevelReact = this.isTopLevelReact !== false;\n    if (!this.isTopLevelReact && !this.inTreeCreateRoot) {\n      console.error(\n        \"Rendering a react-wrapper without an inTreeCreateRoot function.\\n\" +\n          'This is likely caused by <ng-container [ngTemplateOutlet]=\"...\" /> without having a [ngTemplateOutletInjector].\\n' +\n          'Please add [ngTemplateOutletInjector]=\"injector\" to any [ngTemplateOutlet] that takes a template from `useToAngularTemplateRef` ' +\n          \"(alongside `public injector: Injector` in your constructor).\\n\" +\n          \"If that is not possible, use `useToAngularTemplateRefBoundToContextAndPortals` instead of `useToAngularTemplateRef`. \"\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (!this.elementRef) throw new Error(\"No element ref\");\n    const reactCreateRoot = this.inTreeCreateRoot || ReactDOM.createRoot;\n    this.reactDomRoot = reactCreateRoot(this.elementRef.nativeElement);\n    this.render();\n  }\n\n  ngOnChanges() {\n    if (this.elementRef) this.render();\n  }\n\n  ngOnDestroy() {\n    // wait one microtask to make sure that the react component is done rendering (logs errors otherwise)\n    Promise.resolve().then(() => this.reactDomRoot?.unmount());\n  }\n\n  private render() {\n    if (!this.component)\n      throw new Error(\"react-wrapper needs a component but none was passed\");\n\n    if (!this.reactDomRoot) return;\n\n    let wrappers = this.angularReactService.wrappers;\n\n    // unlike in React, where children passed in the body have precedence over props.children,\n    // we can't know if childrenTmpl is empty or not, so props.children takes precedence\n    const children = this.props.children ?? (\n      <AngularTemplateOutlet tmpl={this.childrenTmpl} />\n    );\n\n    const toBeRendered = (\n      <RootAngularContextProvider\n        moduleRef={this.ngModuleRef}\n        injector={this.ngInjector}\n      >\n        {nestWrappers(\n          wrappers,\n          <this.component {...this.props}>{children}</this.component>\n        )}\n      </RootAngularContextProvider>\n    );\n\n    this.reactDomRoot.render(toBeRendered);\n  }\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n  selector: 'react-to-template-ref',\n  template: `\n    <ng-template #tmpl let-props=\"props\">\n      <react-wrapper *ngIf=\"component\" [component]=\"component\" [props]=\"props\"></react-wrapper>\n    </ng-template>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ReactToTemplateRefComponent<C> implements AfterViewInit {\n  @Input() public component!: any;\n  @ViewChild('tmpl') public tmpl!: TemplateRef<{ props: C }> | null;\n  private resolveTemplateRef!: (templateRef: TemplateRef<{ props: C }>) => any;\n  templateRefPromise = new Promise<TemplateRef<{ props: C }>>((resolve) => {\n    this.resolveTemplateRef = resolve;\n  });\n\n  ngAfterViewInit(): void {\n    this.resolveTemplateRef(this.tmpl!);\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactWrapperComponent } from './react-wrapper/react-wrapper.component';\nimport { ReactToTemplateRefComponent } from './templates/react-to-template-ref.component';\nimport { TemplateOutletComponent } from './templates/template-outlet.component';\n\n@NgModule({\n  declarations: [ReactWrapperComponent, ReactToTemplateRefComponent, TemplateOutletComponent],\n  imports: [CommonModule],\n  exports: [ReactWrapperComponent, ReactToTemplateRefComponent, TemplateOutletComponent],\n})\nexport class AngularReactModule {}\n","import { useEffect, useState } from 'react';\nimport { Observable, Subscribable } from 'rxjs';\n\nexport function useObservable<T = any>(\n  observable: Observable<T> | Subscribable<T>,\n  _default: T | null = null\n) {\n  const [next, setNext] = useState<T | null>(_default);\n  const [error, setError] = useState<any>(null);\n  const [complete, setComplete] = useState<boolean>(false);\n  useEffect(() => {\n    const subscription = observable.subscribe({\n      next: (next) => setNext(next),\n      error: (error) => {\n        console.error(\"Error emitted by observable (in useObservable)\", error);\n        setError(error)\n      },\n      complete: () => setComplete(true),\n    });\n    return () => subscription.unsubscribe();\n  }, [observable]);\n  return [next, error, complete] as const;\n}\n","import * as ng from \"@angular/core\";\nimport React from \"react\";\nimport { useContext, useState, useEffect } from \"react\";\nimport { AngularModuleContext } from \"../angular-context/angular-context\";\nimport { ReactToTemplateRefComponent } from \"./react-to-template-ref.component\";\nimport { InjectableReactContextToken } from \"../injectable-react-context/react-context-token\";\nimport { InjectableReactContext, useInjectableReactContext } from \"../injectable-react-context/use-injectable-react-context\";\nimport { IsTopLevelReactToken } from \"./is-top-level-react-token\";\nimport { createRoot } from \"react-dom/client\";\nimport { InTreeCreateRootToken } from \"../use-in-tree-create-root/in-tree-create-root-token\";\nimport { useInTreeCreateRoot } from \"../use-in-tree-create-root/use-in-tree-create-root\";\n\n/**\n * Create a template ref from a React component.\n *\n * This template is meant to be used in a `[ngTemplateOutlet]` where `[ngTemplateOutletInjector]` is defined.\n * If you can't define `[ngTemplateOutletInjector]`, use `useToAngularTemplateRefBoundToContextAndPortals`.\n */\nexport function useToAngularTemplateRef<C>(\n  Component: (props: C) => any\n): ng.TemplateRef<C> | undefined {\n  const moduleRef = useContext(AngularModuleContext);\n  if (!moduleRef)\n    throw new Error(\n      \"useToAngularTemplateRef must be used within an AngularModuleContext\"\n    );\n  return useToAngularTemplateRefWithModule(\n    Component,\n    moduleRef\n  );\n}\n\n/**\n * Create a template ref from a React component.\n * The template ref is bound to the context of where this hook is called.\n * Because of this, you don't need `[ngTemplateOutletInjector]` on the `<ng-container>`.\n * This hook returns `[templateRef, portals]`.\n * Make sure the portals are rendered somewhere in your tree: `<>{portals}</>`.\n */\nexport function useToAngularTemplateRefBoundToContextAndPortals<C>(\n  Component: (props: C) => any,\n) {\n  const moduleRef = useContext(AngularModuleContext);\n  if (!moduleRef)\n    throw new Error(\n      \"useToAngularTemplateRef must be used within an AngularModuleContext\"\n    );\n\n  const injectableReactContext = useInjectableReactContext();\n  const inTreeCreateRoot = useInTreeCreateRoot();\n\n  const templateRef = useToAngularTemplateRefWithModule(\n    Component,\n    moduleRef,\n    injectableReactContext,\n    inTreeCreateRoot.createRoot\n  );\n\n  return [templateRef, inTreeCreateRoot.portals] as const;\n}\n\nexport function useToAngularTemplateRefWithModule<C>(\n  Component: (props: C) => any,\n  ngModuleRef: ng.NgModuleRef<any>,\n  injectableReactContext?: InjectableReactContext,\n  inTreeCreateRoot?: typeof createRoot\n): ng.TemplateRef<C> | undefined {\n  const [templateRef, setTemplateRef] = useState<ng.TemplateRef<C>>();\n  const [updateComponent, setUpdateComponent] =\n    useState<(component: (props: C) => any) => void>();\n\n  useEffect(() => {\n    let ignore = false;\n    const controller = new AbortController();\n\n    createReactWrapperTemplateRef<C>(\n      ngModuleRef,\n      controller.signal,\n      injectableReactContext,\n      inTreeCreateRoot\n    ).then(({ templateRef, updateComponent }) => {\n      if (ignore) return;\n      setTemplateRef(templateRef);\n      setUpdateComponent(() => updateComponent);\n    });\n\n    return () => {\n      ignore = true;\n      controller.abort();\n    };\n  }, [ngModuleRef, injectableReactContext, inTreeCreateRoot]);\n\n  useEffect(() => {\n    if (!Component || !updateComponent) return;\n    updateComponent((props: any) => <Component {...props} />);\n  }, [Component, updateComponent]);\n\n  return templateRef;\n}\n\nexport async function createReactWrapperTemplateRef<C = any>(\n  ngModuleRef: ng.NgModuleRef<any>,\n  abortSignal?: AbortSignal,\n  injectableReactContext?: InjectableReactContext,\n  inTreeCreateRoot?: typeof createRoot\n) {\n  const el = document.createElement(\"div\");\n\n  const componentFactory =\n    ngModuleRef.componentFactoryResolver.resolveComponentFactory<\n      ReactToTemplateRefComponent<C>\n    >(ReactToTemplateRefComponent);\n\n  const providers: ng.StaticProvider[] = [\n    { provide: IsTopLevelReactToken, useValue: false },\n  ];\n\n  if (injectableReactContext) {\n    providers.push({\n      provide: InjectableReactContextToken,\n      useValue: injectableReactContext,\n    });\n  }\n  if (inTreeCreateRoot) {\n    providers.push({\n      provide: InTreeCreateRootToken,\n      useValue: inTreeCreateRoot,\n    });\n  }\n\n  const injectorForComponent = ng.Injector.create({\n    providers,\n    parent: ngModuleRef.injector,\n  });\n  const componentRef = componentFactory.create(injectorForComponent, [], el);\n\n  const appRef = ngModuleRef.injector.get(ng.ApplicationRef);\n  appRef.attachView(componentRef.hostView);\n\n  componentRef.injector.get(ng.ChangeDetectorRef).detectChanges();\n  componentRef.changeDetectorRef.detectChanges();\n\n  const cleanup = () => {\n    componentRef.destroy();\n    el.remove();\n  };\n\n  abortSignal?.addEventListener(\"abort\", cleanup);\n\n  const origTemplateRef = await componentRef.instance.templateRefPromise;\n\n  let viewRefs: ng.EmbeddedViewRef<any>[] = [];\n\n  // we wrap the templateRef for two reasons:\n  // 1. we remap viewProps.context to context.props, so it can be used with `let-props=\"props\"`\n  //    (there is no way to get the whole context on an ng-template, only individiual attributes)\n  // 2. we need to keep track of the viewRefs associated with this templateRef,\n  //    so we can call detectChanges on it when the react component changes\n  //    (kinda hacky, but it works)\n\n  const templateRef: ng.TemplateRef<C> = {\n    get elementRef() {\n      return origTemplateRef.elementRef;\n    },\n    createEmbeddedView(context, injector) {\n      const viewRef = origTemplateRef.createEmbeddedView(\n        { props: context },\n        injector\n      );\n\n      viewRefs.push(viewRef);\n      viewRef.onDestroy(() => {\n        viewRefs = viewRefs.filter((vr) => vr !== viewRef);\n      });\n\n      const origContextDescriptor = Object.getOwnPropertyDescriptor(\n        viewRef.constructor.prototype,\n        \"context\"\n      )!;\n      Object.defineProperty(viewRef, \"context\", {\n        get() {\n          return origContextDescriptor.get!.call(viewRef);\n        },\n        set(context) {\n          origContextDescriptor.set!.call(viewRef, { props: context });\n        },\n        enumerable: origContextDescriptor.enumerable,\n        configurable: origContextDescriptor.configurable,\n      });\n\n      return viewRef as any as ng.EmbeddedViewRef<C>;\n    },\n  };\n\n  const updateComponent = (component: (props: C) => any) => {\n    componentRef.instance.component = component;\n    // we first make sure the input is passed to the ng-template\n    componentRef.injector.get(ng.ChangeDetectorRef).detectChanges();\n    componentRef.changeDetectorRef.detectChanges();\n    // then we make sure all views associated with this ng-template are updated\n    viewRefs.forEach((viewRef) => viewRef.detectChanges());\n  };\n\n  return { templateRef, cleanup, updateComponent };\n}\n","/*\n * Public API Surface of angular-react\n */\n\nexport * from './lib/angular-react.service';\nexport * from './lib/angular-react.module';\nexport * from './lib/react-wrapper/react-wrapper.component';\nexport * from './lib/angular-context/angular-context';\nexport * from './lib/angular-wrapper/angular-wrapper';\nexport * from './lib/angular-wrapper-with-module/angular-wrapper-with-module';\nexport * from './lib/use-injected/use-injected';\nexport * from './lib/use-observable/use-observable';\nexport * from \"./lib/templates/angular-template-outlet\";\nexport * from \"./lib/templates/react-to-template-ref.component\";\nexport * from \"./lib/templates/template-outlet.component\";\nexport * from \"./lib/templates/use-to-angular-template-ref\";\nexport * from \"./lib/injectable-react-context/react-context-token\";\nexport * from \"./lib/injectable-react-context/use-injectable-react-context\";\nexport * from \"./lib/use-in-tree-create-root/in-tree-create-root-token\";\nexport * from \"./lib/use-in-tree-create-root/use-in-tree-create-root\";\nexport * from \"./lib/templates/is-top-level-react-token\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["React","ng","ReactDOM","AngularWrapperWithModule","AngularWrapper","i1.AngularReactService","i2.ReactWrapperComponent"],"mappings":"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"}