{"version":3,"file":"angular-architects-module-federation-tools.mjs","sources":["../../../../libs/mf-tools/src/lib/web-components/web-component-wrapper.ts","../../../../libs/mf-tools/src/lib/mf-tools.module.ts","../../../../libs/mf-tools/src/lib/utils/global-state.ts","../../../../libs/mf-tools/src/lib/web-components/router-utils.ts","../../../../libs/mf-tools/src/lib/web-components/bootstrap-utils.ts","../../../../libs/mf-tools/src/angular-architects-module-federation-tools.ts"],"sourcesContent":["import {\n  AfterContentInit,\n  Component,\n  ElementRef,\n  inject,\n  Input,\n  OnChanges,\n  ViewChild,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n  LoadRemoteModuleOptions,\n  loadRemoteModule,\n} from '@angular-architects/module-federation-runtime';\n\nexport type WebComponentWrapperOptions = LoadRemoteModuleOptions & {\n  elementName: string;\n};\n\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: 'mft-wc-wrapper',\n  template: '<div #vc></div>',\n  standalone: false,\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class WebComponentWrapper implements AfterContentInit, OnChanges {\n  @ViewChild('vc', { read: ElementRef, static: true })\n  vc: ElementRef;\n\n  @Input() options: WebComponentWrapperOptions;\n  @Input() props: { [prop: string]: unknown };\n  @Input() events: { [event: string]: (event: Event) => void };\n\n  element: HTMLElement;\n  private route = inject(ActivatedRoute);\n\n  ngOnChanges(): void {\n    if (!this.element) return;\n\n    this.populateProps();\n  }\n\n  private populateProps() {\n    for (const prop in this.props) {\n      this.element[prop] = this.props[prop];\n    }\n  }\n\n  private setupEvents() {\n    for (const event in this.events) {\n      this.element.addEventListener(event, this.events[event]);\n    }\n  }\n\n  async ngAfterContentInit() {\n    const options =\n      this.options ?? (this.route.snapshot.data as WebComponentWrapperOptions);\n\n    try {\n      await loadRemoteModule(options);\n\n      this.element = document.createElement(options.elementName);\n      this.populateProps();\n      this.setupEvents();\n\n      this.vc.nativeElement.appendChild(this.element);\n    } catch (error) {\n      console.error(error);\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WebComponentWrapper } from './web-components/web-component-wrapper';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [WebComponentWrapper],\n  exports: [WebComponentWrapper],\n})\nexport class ModuleFederationToolsModule {}\n","export const packageNamespace = '@angular-architects/module-federation-tools';\n\nfunction getGlobalState<T>(): T {\n  const globalState = window as unknown as { [packageNamespace]: T };\n  globalState[packageNamespace] =\n    globalState[packageNamespace] || ({} as unknown as T);\n  return globalState[packageNamespace];\n}\n\nexport function getGlobalStateSlice<T>(): T;\nexport function getGlobalStateSlice<T, R>(selector: (globalState: T) => R): R;\nexport function getGlobalStateSlice<T, R>(\n  selector?: (globalState: T) => R,\n): R | T {\n  const globalState = getGlobalState<T>();\n  return selector ? selector(globalState) : globalState;\n}\n\nexport function setGlobalStateSlice<T>(slice: T): T {\n  return Object.assign(getGlobalState<T>(), slice);\n}\n","import { Router, UrlMatcher, UrlSegment } from '@angular/router';\n\nexport function startsWith(prefix: string): UrlMatcher {\n  return (url: UrlSegment[]) => {\n    const fullUrl = url.map((u) => u.path).join('/');\n    if (fullUrl.startsWith(prefix)) {\n      return { consumed: url };\n    }\n    return null;\n  };\n}\n\nexport function endsWith(prefix: string): UrlMatcher {\n  return (url: UrlSegment[]) => {\n    const fullUrl = url.map((u) => u.path).join('/');\n    if (fullUrl.endsWith(prefix)) {\n      return { consumed: url };\n    }\n    return null;\n  };\n}\n\nexport function connectRouter(router: Router, useHash = false): void {\n  let url: string;\n  if (!useHash) {\n    url = `${location.pathname.substring(1)}${location.search}`;\n    router.navigateByUrl(url);\n    window.addEventListener('popstate', () => {\n      router.navigateByUrl(url);\n    });\n  } else {\n    url = `${location.hash.substring(1)}${location.search}`;\n    router.navigateByUrl(url);\n    window.addEventListener('hashchange', () => {\n      router.navigateByUrl(url);\n    });\n  }\n}\n","import {\n  CompilerOptions,\n  enableProdMode,\n  Injector,\n  NgModuleRef,\n  NgZone,\n  PlatformRef,\n  Type,\n  Version,\n} from '@angular/core';\nimport { platformBrowser } from '@angular/platform-browser';\nimport { VERSION } from '@angular/core';\nimport {\n  getGlobalStateSlice,\n  setGlobalStateSlice,\n} from '../utils/global-state';\nimport { Router } from '@angular/router';\nimport { connectRouter } from './router-utils';\n\nexport type AppType = 'shell' | 'microfrontend';\n\nexport type Options = {\n  production: boolean;\n  platformFactory?: () => PlatformRef;\n  compilerOptions?: CompilerOptions & BootstrapOptions;\n  version?: () => string | Version;\n  appType?: AppType;\n  /**\n   * Opt-out of ngZone sharing.\n   * Not recommanded.\n   * Default value true.\n   */\n  ngZoneSharing?: boolean;\n  /**\n   * Opt-out of platformSharing sharing.\n   * Possible, if dependencies are not shared or each bootstrapped\n   * remote app uses a different version.\n   * Default value true.\n   */\n  platformSharing?: boolean;\n  /**\n   * Deactivate support for legacy mode.\n   * Only recommanded if all used implementations depend on\n   * @angular-architects/module-federation-tools > 13.0.1.\n   * Default value true.\n   */\n  activeLegacyMode?: boolean;\n};\n\ndeclare interface BootstrapOptions {\n  ngZone?: NgZone | 'zone.js' | 'noop';\n  ngZoneEventCoalescing?: boolean;\n  ngZoneRunCoalescing?: boolean;\n}\n\nlet ngZoneSharing = true;\nlet platformSharing = true;\nlet legacyMode = true;\n\nexport function getMajor(version: string): string {\n  const pre = version.match(/\\d+/)[0];\n  const post = version.match(/-.*/);\n\n  if (!pre) {\n    throw new Error('Cound not identify major version: ' + version);\n  }\n\n  if (post) {\n    return pre + post[0];\n  }\n\n  return pre;\n}\n\n/**\n * LEGACY IMPLEMENTATIONS START\n *\n * Can be deprecated in later major releases.\n *\n * To increase backwards compatibility legacy and current namespaces\n * within the window object are used.\n */\n\nexport type LegacyPlatformCache = {\n  platform: Record<string, PlatformRef>;\n};\n\nfunction getLegacyPlatformCache(): LegacyPlatformCache {\n  const platformCache = window as unknown as LegacyPlatformCache;\n  platformCache.platform = platformCache.platform || {};\n  return platformCache;\n}\n\nfunction getLegacyPlatform(key: string): PlatformRef {\n  const platform = getLegacyPlatformCache().platform[key];\n  /**\n   * If dependencies are not shared, platform with same version is different\n   * and shared platform will not be returned.\n   */\n  return platform instanceof PlatformRef ? platform : null;\n}\n\nfunction setLegacyPlatform(key: string, platform: PlatformRef): void {\n  getLegacyPlatformCache().platform[key] = platform;\n}\n\nfunction getLegacyNgZone(): NgZone {\n  return window['ngZone'];\n}\n\nfunction setLegacyNgZone(zone: NgZone): void {\n  window['ngZone'] = zone;\n}\n\n/**\n * LEGACY IMPLEMENTATIONS END\n */\n\nfunction getPlatformCache(): Map<Version, PlatformRef> {\n  return (\n    getGlobalStateSlice(\n      (state: { platformCache: Map<Version, PlatformRef> }) =>\n        state.platformCache,\n    ) ||\n    setGlobalStateSlice({\n      platformCache: new Map<Version, PlatformRef>(),\n    }).platformCache\n  );\n}\n\nfunction setPlatform(version: Version, platform: PlatformRef): void {\n  if (platformSharing) {\n    if (legacyMode) setLegacyPlatform(version.full, platform);\n    getPlatformCache().set(version, platform);\n  }\n}\n\nfunction getPlatform(options: Options): PlatformRef {\n  if (!platformSharing) {\n    return options.platformFactory();\n  }\n\n  const versionResult = options.version();\n  const version = versionResult === VERSION.full ? VERSION : versionResult;\n  const versionKey = typeof version === 'string' ? version : version.full;\n\n  let platform =\n    getPlatformCache().get(version as Version) ||\n    (legacyMode && getLegacyPlatform(versionKey));\n\n  if (!platform) {\n    platform = options.platformFactory();\n    setPlatform(VERSION, platform);\n    if (options.production) enableProdMode();\n  }\n\n  return platform;\n}\n\nfunction getNgZone(): NgZone {\n  return (\n    getGlobalStateSlice((state: { ngZone: NgZone }) => state.ngZone) ||\n    getLegacyNgZone()\n  );\n}\n\nexport function shareNgZone(zone: NgZone): void {\n  if (ngZoneSharing) {\n    if (legacyMode) setLegacyNgZone(zone);\n    setGlobalStateSlice({ ngZone: zone });\n  }\n}\n\nexport function bootstrap<M>(\n  module: Type<M>,\n  options: Options,\n): Promise<NgModuleRef<M>> {\n  ngZoneSharing = options.ngZoneSharing !== false;\n  platformSharing = options.platformSharing !== false;\n  legacyMode = options.activeLegacyMode !== false;\n  options.platformFactory =\n    options.platformFactory || (() => platformBrowser());\n  options.version = options.version || (() => VERSION);\n\n  if (ngZoneSharing && !options.compilerOptions?.ngZone) {\n    options.compilerOptions = options.compilerOptions || {};\n    options.compilerOptions.ngZone = getNgZone();\n  }\n\n  return getPlatform(options)\n    .bootstrapModule(module, options.compilerOptions)\n    .then((ref) => {\n      if (options.appType === 'shell') {\n        shareShellZone(ref.injector);\n      } else if (options.appType === 'microfrontend') {\n        connectMicroFrontendRouter(ref.injector);\n      }\n\n      return ref;\n    });\n}\n\nfunction shareShellZone(injector: Injector) {\n  const ngZone = injector.get(NgZone, null);\n  if (!ngZone) {\n    console.warn('No NgZone to share found');\n    return;\n  }\n  shareNgZone(ngZone);\n}\n\nfunction connectMicroFrontendRouter(injector: Injector) {\n  const router = injector.get(Router);\n  const useHash = location.href.includes('#');\n\n  if (!router) {\n    console.warn('No router to connect found');\n    return;\n  }\n\n  connectRouter(router, useHash);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}