{"version":3,"file":"angularity-elements.mjs","sources":["../../../packages/elements/src/element-registry.ts","../../../packages/elements/src/provide.ts","../../../packages/elements/src/angularity-elements.ts"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport { inject, InjectionToken, PLATFORM_ID } from '@angular/core';\n\n/**\n * Injection Token for the ECMA `CustomElementRegistry` instance, or\n * `null` if the current platform is not browser.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry\n */\nexport const ELEMENT_REGISTRY =\n  new InjectionToken<CustomElementRegistry | null>('ELEMENT_REGISTRY', {\n    factory: () => {\n      const platform = inject(PLATFORM_ID);\n      if (!isPlatformBrowser(platform)) return null;\n      return window.customElements;\n    },\n  });\n","import {\n  EnvironmentProviders,\n  inject,\n  Injector,\n  provideEnvironmentInitializer,\n} from '@angular/core';\nimport { createCustomElement } from '@angular/elements';\n\nimport { ELEMENT_REGISTRY } from './element-registry';\nimport { Elements } from './elements';\n\n/**\n * A declarative approach to register Angular Elements.\n *\n * The elements can be either provided synchronously or asynchronously\n * via a promise.\n *\n * @remarks Noop if the current platform is not browser.\n *\n * @example\n *  ```ts\n *  export const appElements: Elements = {\n *    'my-button': ButtonComponent,\n *    'my-icon': IconComponent,\n *    'my-icon-button': IconButtonComponent,\n *  };\n *  ```\n *  ```ts\n *  providers: [\n *    provideElements(appElements),\n *  ]\n *  ```\n *  ```ts\n *  providers: [\n *    provideElements(import('./app-elements').then(m => m.appElements)),\n *  ]\n *  ```\n */\nexport function provideElements(\n  elements: Elements | Promise<Elements>,\n): EnvironmentProviders {\n  return provideEnvironmentInitializer(async () => {\n    const registry = inject(ELEMENT_REGISTRY);\n    if (!registry) return;\n    const injector = inject(Injector);\n    for (const [name, type] of Object.entries(await elements)) {\n      const element = createCustomElement(type, { injector });\n      registry.define(name, element);\n    }\n  });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAGA;;;;AAIG;MACU,gBAAgB,GAC3B,IAAI,cAAc,CAA+B,kBAAkB,EAAE;IACnE,OAAO,EAAE,MAAK;AACZ,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;AACpC,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;AAAE,YAAA,OAAO,IAAI;QAC7C,OAAO,MAAM,CAAC,cAAc;IAC9B,CAAC;AACF,CAAA;;ACJH;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;AACG,SAAU,eAAe,CAC7B,QAAsC,EAAA;AAEtC,IAAA,OAAO,6BAA6B,CAAC,YAAW;AAC9C,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACzC,QAAA,IAAI,CAAC,QAAQ;YAAE;AACf,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,QAAA,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,QAAQ,CAAC,EAAE;YACzD,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC;AACvD,YAAA,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;QAChC;AACF,IAAA,CAAC,CAAC;AACJ;;AClDA;;AAEG;;;;"}