{"version":3,"file":"ssgoi-angular.mjs","sources":["../../src/lib/context.ts","../../src/lib/ssgoi.directive.ts","../../src/lib/ssgoi-transition.directive.ts","../../src/lib/transition.directive.ts","../../src/public-api.ts","../../src/ssgoi-angular.ts"],"sourcesContent":["import { InjectionToken, inject } from \"@angular/core\";\nimport type { SsgoiContext } from \"@ssgoi/core\";\n\nexport const SSGOI_CONTEXT = new InjectionToken<SsgoiContext | undefined>(\n  \"ssgoi-context\",\n);\n\nexport function injectSsgoi(): SsgoiContext {\n  const context = inject(SSGOI_CONTEXT, { optional: true });\n\n  if (!context) {\n    // During SSR or when not wrapped in <ssgoi>, return a no-op context\n    // This prevents errors during server-side rendering\n    return () => ({\n      key: \"\",\n      in: async () => ({}),\n      out: async () => ({}),\n    });\n  }\n\n  return context;\n}\n","import {\n  Directive,\n  input,\n  forwardRef,\n  PLATFORM_ID,\n  inject,\n} from \"@angular/core\";\nimport { isPlatformBrowser } from \"@angular/common\";\nimport { createSggoiTransitionContext } from \"@ssgoi/core\";\nimport type { SsgoiConfig, SsgoiContext } from \"@ssgoi/core\";\nimport { SSGOI_CONTEXT } from \"./context\";\n\nfunction createSsgoiContext(component: Ssgoi): SsgoiContext | undefined {\n  const platformId = inject(PLATFORM_ID);\n\n  // Only create context in browser environment\n  if (!isPlatformBrowser(platformId)) {\n    // Return a no-op context for SSR\n    return undefined;\n  }\n  return createSggoiTransitionContext(component.config());\n}\n\n@Directive({\n  selector: \"[ssgoi]\",\n  standalone: true,\n  providers: [\n    {\n      provide: SSGOI_CONTEXT,\n      useFactory: createSsgoiContext,\n      deps: [forwardRef(() => Ssgoi)],\n    },\n  ],\n})\nexport class Ssgoi {\n  readonly config = input<SsgoiConfig>({});\n}\n","import {\n  Directive,\n  input,\n  OnInit,\n  OnDestroy,\n  AfterViewInit,\n  ElementRef,\n  inject,\n  PLATFORM_ID,\n} from \"@angular/core\";\nimport { isPlatformBrowser } from \"@angular/common\";\nimport { transition } from \"@ssgoi/core\";\nimport { injectSsgoi } from \"./context\";\n\n@Directive({\n  selector: \"[ssgoiTransition]\",\n  standalone: true,\n})\nexport class SsgoiTransition implements OnInit, OnDestroy, AfterViewInit {\n  // The directive attribute value becomes the transition ID\n  readonly ssgoiTransition = input.required<string>();\n\n  private readonly getTransition = injectSsgoi();\n  private readonly el = inject(ElementRef<HTMLElement>);\n  private readonly platformId = inject(PLATFORM_ID);\n  private cleanup?: () => void;\n\n  ngOnInit(): void {\n    if (!isPlatformBrowser(this.platformId)) {\n      return;\n    }\n\n    // Set data attribute on host element\n    this.el.nativeElement.setAttribute(\n      \"data-ssgoi-transition\",\n      this.ssgoiTransition(),\n    );\n  }\n\n  ngAfterViewInit(): void {\n    if (!isPlatformBrowser(this.platformId)) {\n      return;\n    }\n\n    // Use the host element itself as the transition target\n    const targetElement = this.el.nativeElement;\n\n    const transitionConfig = this.getTransition(this.ssgoiTransition());\n    const cleanupResult = transition(transitionConfig)(targetElement);\n\n    if (cleanupResult) {\n      this.cleanup = cleanupResult;\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.cleanup?.();\n  }\n}\n","import {\n  Directive,\n  ElementRef,\n  input,\n  OnInit,\n  OnDestroy,\n  inject,\n  PLATFORM_ID,\n} from \"@angular/core\";\nimport { isPlatformBrowser } from \"@angular/common\";\nimport { transition as coreTransition } from \"@ssgoi/core\";\nimport type {\n  Transition as CoreTransitionConfig,\n  TransitionKey as CoreTransitionKey,\n} from \"@ssgoi/core\";\n\nexport type TransitionDirectiveConfig = CoreTransitionConfig & {\n  key?: CoreTransitionKey;\n};\n\n@Directive({\n  selector: \"[transition]\",\n})\nexport class TransitionDirective implements OnInit, OnDestroy {\n  transition = input.required<TransitionDirectiveConfig>();\n\n  private readonly el = inject(ElementRef<HTMLElement>);\n  private readonly platformId = inject(PLATFORM_ID);\n  private cleanup?: () => void;\n\n  ngOnInit(): void {\n    if (!isPlatformBrowser(this.platformId)) {\n      return;\n    }\n\n    const config = this.transition();\n    const cleanupResult = coreTransition({\n      key: config.key,\n      in: config.in,\n      out: config.out,\n      ref: this.el.nativeElement,\n    })(this.el.nativeElement);\n\n    if (cleanupResult) {\n      this.cleanup = cleanupResult;\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.cleanup?.();\n  }\n}\n","/*\n * Public API Surface of @ssgoi/angular\n */\n\nexport * from \"./lib/index\";\nexport * from \"./lib/types\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["coreTransition"],"mappings":"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"}