@real-router/angular 0.1.0 → 0.1.1

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.
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { signal, inject, DestroyRef, InjectionToken, makeEnvironmentProviders, input, TemplateRef, Directive, contentChildren, computed, Component, output, effect, ElementRef } from '@angular/core';
3
3
  import { getNavigator, UNKNOWN_ROUTE } from '@real-router/core';
4
- import { createRouteSource, createRouteNodeSource, createTransitionSource, createActiveRouteSource, createErrorSource } from '@real-router/sources';
4
+ import { createRouteSource, createRouteNodeSource, getTransitionSource, createActiveRouteSource, createDismissableError } from '@real-router/sources';
5
5
  import { getPluginApi } from '@real-router/core/api';
6
6
  import { getRouteUtils, startsWithSegment } from '@real-router/route-utils';
7
7
  import { NgTemplateOutlet } from '@angular/common';
@@ -73,7 +73,7 @@ function injectRouteUtils() {
73
73
 
74
74
  function injectRouterTransition() {
75
75
  const router = injectRouter();
76
- const source = createTransitionSource(router);
76
+ const source = getTransitionSource(router);
77
77
  return sourceToSignal(source);
78
78
  }
79
79
 
@@ -183,23 +183,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
183
183
  class RouterErrorBoundary {
184
184
  errorTemplate = input(...(ngDevMode ? [undefined, { debugName: "errorTemplate" }] : /* istanbul ignore next */ []));
185
185
  onError = output();
186
- visibleError = computed(() => {
187
- const snap = this.snapshot();
188
- return snap.version > this.dismissedVersion() ? snap.error : null;
189
- }, ...(ngDevMode ? [{ debugName: "visibleError" }] : /* istanbul ignore next */ []));
190
186
  errorContext = computed(() => {
191
- const error = this.visibleError();
192
- if (!error) {
187
+ const snap = this.snapshot();
188
+ if (!snap.error) {
193
189
  return null;
194
190
  }
195
191
  return {
196
- $implicit: error,
197
- resetError: this.resetError,
192
+ $implicit: snap.error,
193
+ resetError: snap.resetError,
198
194
  };
199
195
  }, ...(ngDevMode ? [{ debugName: "errorContext" }] : /* istanbul ignore next */ []));
200
196
  router = injectRouter();
201
- snapshot = sourceToSignal(createErrorSource(this.router));
202
- dismissedVersion = signal(-1, ...(ngDevMode ? [{ debugName: "dismissedVersion" }] : /* istanbul ignore next */ []));
197
+ snapshot = sourceToSignal(createDismissableError(this.router));
203
198
  constructor() {
204
199
  effect(() => {
205
200
  const snap = this.snapshot();
@@ -212,9 +207,6 @@ class RouterErrorBoundary {
212
207
  }
213
208
  });
214
209
  }
215
- resetError = () => {
216
- this.dismissedVersion.set(this.snapshot().version);
217
- };
218
210
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: RouterErrorBoundary, deps: [], target: i0.ɵɵFactoryTarget.Component });
219
211
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: RouterErrorBoundary, isStandalone: true, selector: "router-error-boundary", inputs: { errorTemplate: { classPropertyName: "errorTemplate", publicName: "errorTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onError: "onError" }, ngImport: i0, template: `
220
212
  <ng-content />
@@ -1 +1 @@
1
- {"version":3,"file":"real-router-angular.mjs","sources":["../../src/sourceToSignal.ts","../../src/providers.ts","../../src/functions/injectOrThrow.ts","../../src/functions/injectRouter.ts","../../src/functions/injectNavigator.ts","../../src/functions/injectRoute.ts","../../src/functions/injectRouteNode.ts","../../src/functions/injectRouteUtils.ts","../../src/functions/injectRouterTransition.ts","../../src/functions/injectIsActiveRoute.ts","../../src/directives/RouteMatch.ts","../../src/directives/RouteNotFound.ts","../../src/components/RouteView.ts","../../src/components/RouterErrorBoundary.ts","../../src/dom-utils/route-announcer.ts","../../src/dom-utils/link-utils.ts","../../src/components/NavigationAnnouncer.ts","../../src/directives/RealLink.ts","../../src/directives/RealLinkActive.ts","../../src/real-router-angular.ts"],"sourcesContent":["import { signal, type Signal, inject, DestroyRef } from \"@angular/core\";\n\nimport type { RouterSource } from \"@real-router/sources\";\n\n/** Must be called within an injection context (constructor, field initializer, runInInjectionContext). */\nexport function sourceToSignal<T>(source: RouterSource<T>): Signal<T> {\n const sig = signal<T>(source.getSnapshot());\n const destroyRef = inject(DestroyRef);\n\n const unsubscribe = source.subscribe(() => {\n sig.set(source.getSnapshot());\n });\n\n destroyRef.onDestroy(() => {\n unsubscribe();\n source.destroy();\n });\n\n return sig.asReadonly();\n}\n","import {\n InjectionToken,\n makeEnvironmentProviders,\n type EnvironmentProviders,\n} from \"@angular/core\";\nimport { getNavigator, type Router, type Navigator } from \"@real-router/core\";\nimport { createRouteSource } from \"@real-router/sources\";\n\nimport { sourceToSignal } from \"./sourceToSignal\";\n\nimport type { RouteSignals } from \"./types\";\n\nexport const ROUTER = new InjectionToken<Router>(\"ROUTER\");\n\nexport const NAVIGATOR = new InjectionToken<Navigator>(\"NAVIGATOR\");\n\nexport const ROUTE = new InjectionToken<RouteSignals>(\"ROUTE\");\n\nexport function provideRealRouter(router: Router): EnvironmentProviders {\n const navigator = getNavigator(router);\n\n return makeEnvironmentProviders([\n { provide: ROUTER, useValue: router },\n { provide: NAVIGATOR, useValue: navigator },\n {\n provide: ROUTE,\n useFactory: (): RouteSignals => ({\n routeState: sourceToSignal(createRouteSource(router)),\n navigator,\n }),\n },\n ]);\n}\n","import { inject } from \"@angular/core\";\n\nimport type { InjectionToken } from \"@angular/core\";\n\nexport function injectOrThrow<T>(token: InjectionToken<T>, fnName: string): T {\n const value = inject(token, { optional: true });\n\n if (!value) {\n throw new Error(\n `${fnName} must be used within a provideRealRouter context`,\n );\n }\n\n return value;\n}\n","import { injectOrThrow } from \"./injectOrThrow\";\nimport { ROUTER } from \"../providers\";\n\nimport type { Router } from \"@real-router/core\";\n\nexport function injectRouter(): Router {\n return injectOrThrow(ROUTER, \"injectRouter\");\n}\n","import { injectOrThrow } from \"./injectOrThrow\";\nimport { NAVIGATOR } from \"../providers\";\n\nimport type { Navigator } from \"@real-router/core\";\n\nexport function injectNavigator(): Navigator {\n return injectOrThrow(NAVIGATOR, \"injectNavigator\");\n}\n","import { injectOrThrow } from \"./injectOrThrow\";\nimport { ROUTE } from \"../providers\";\n\nimport type { RouteSignals } from \"../types\";\n\nexport function injectRoute(): RouteSignals {\n return injectOrThrow(ROUTE, \"injectRoute\");\n}\n","import { getNavigator } from \"@real-router/core\";\nimport { createRouteNodeSource } from \"@real-router/sources\";\n\nimport { sourceToSignal } from \"../sourceToSignal\";\nimport { injectRouter } from \"./injectRouter\";\n\nimport type { RouteSignals } from \"../types\";\n\nexport function injectRouteNode(nodeName: string): RouteSignals {\n const router = injectRouter();\n const navigator = getNavigator(router);\n const source = createRouteNodeSource(router, nodeName);\n const routeState = sourceToSignal(source);\n\n return { routeState, navigator };\n}\n","import { getPluginApi } from \"@real-router/core/api\";\nimport { getRouteUtils } from \"@real-router/route-utils\";\n\nimport { injectRouter } from \"./injectRouter\";\n\nimport type { RouteUtils } from \"@real-router/route-utils\";\n\nexport function injectRouteUtils(): RouteUtils {\n const router = injectRouter();\n\n return getRouteUtils(getPluginApi(router).getTree());\n}\n","import { createTransitionSource } from \"@real-router/sources\";\n\nimport { sourceToSignal } from \"../sourceToSignal\";\nimport { injectRouter } from \"./injectRouter\";\n\nimport type { Signal } from \"@angular/core\";\nimport type { RouterTransitionSnapshot } from \"@real-router/sources\";\n\nexport function injectRouterTransition(): Signal<RouterTransitionSnapshot> {\n const router = injectRouter();\n const source = createTransitionSource(router);\n\n return sourceToSignal(source);\n}\n","import { createActiveRouteSource } from \"@real-router/sources\";\n\nimport { sourceToSignal } from \"../sourceToSignal\";\nimport { injectRouter } from \"./injectRouter\";\n\nimport type { Signal } from \"@angular/core\";\nimport type { Params } from \"@real-router/core\";\n\nexport function injectIsActiveRoute(\n routeName: string,\n params?: Params,\n options?: { strict?: boolean; ignoreQueryParams?: boolean },\n): Signal<boolean> {\n const router = injectRouter();\n const source = createActiveRouteSource(router, routeName, params, {\n strict: options?.strict ?? false,\n ignoreQueryParams: options?.ignoreQueryParams ?? true,\n });\n\n return sourceToSignal(source);\n}\n","import { Directive, TemplateRef, inject, input } from \"@angular/core\";\n\n@Directive({ selector: \"ng-template[routeMatch]\" })\nexport class RouteMatch {\n readonly routeMatch = input.required<string>();\n readonly templateRef = inject(TemplateRef);\n}\n","import { Directive, TemplateRef, inject } from \"@angular/core\";\n\n@Directive({ selector: \"ng-template[routeNotFound]\" })\nexport class RouteNotFound {\n readonly templateRef = inject(TemplateRef);\n}\n","import { NgTemplateOutlet } from \"@angular/common\";\nimport {\n Component,\n computed,\n contentChildren,\n inject,\n input,\n signal,\n DestroyRef,\n type OnInit,\n type TemplateRef,\n} from \"@angular/core\";\nimport { UNKNOWN_ROUTE } from \"@real-router/core\";\nimport { startsWithSegment } from \"@real-router/route-utils\";\nimport { createRouteNodeSource } from \"@real-router/sources\";\n\nimport { RouteMatch } from \"../directives/RouteMatch\";\nimport { RouteNotFound } from \"../directives/RouteNotFound\";\nimport { injectRouter } from \"../functions/injectRouter\";\n\nimport type { RouteSnapshot } from \"@real-router/sources\";\n\nconst EMPTY_SNAPSHOT: RouteSnapshot = Object.freeze({\n route: undefined,\n previousRoute: undefined,\n});\n\n@Component({\n selector: \"route-view\",\n template: `\n @if (activeTemplate()) {\n <ng-container [ngTemplateOutlet]=\"activeTemplate()!\" />\n }\n `,\n imports: [NgTemplateOutlet],\n})\nexport class RouteView implements OnInit {\n readonly nodeName = input<string>(\"\", { alias: \"routeNode\" });\n\n readonly matches = contentChildren(RouteMatch, { descendants: true });\n readonly notFounds = contentChildren(RouteNotFound, { descendants: true });\n\n readonly activeTemplate = computed<TemplateRef<unknown> | null>(() => {\n const snapshot = this.routeState();\n const route = snapshot.route;\n\n if (!route) {\n return null;\n }\n\n const routeName = route.name;\n const entries = this.matchEntries();\n\n for (const { match, fullSegmentName } of entries) {\n if (startsWithSegment(routeName, fullSegmentName)) {\n return match.templateRef;\n }\n }\n\n if (routeName === UNKNOWN_ROUTE) {\n const last = this.notFounds().at(-1);\n\n if (last) {\n return last.templateRef;\n }\n }\n\n return null;\n });\n\n private readonly matchEntries = computed(() => {\n const nodeName = this.nodeName();\n\n return this.matches().map((match) => {\n const segment = match.routeMatch();\n\n return {\n match,\n fullSegmentName: nodeName ? `${nodeName}.${segment}` : segment,\n };\n });\n });\n\n private readonly router = injectRouter();\n private readonly destroyRef = inject(DestroyRef);\n private readonly routeState = signal<RouteSnapshot>(EMPTY_SNAPSHOT);\n\n ngOnInit(): void {\n const source = createRouteNodeSource(this.router, this.nodeName());\n\n this.routeState.set(source.getSnapshot());\n\n const unsub = source.subscribe(() => {\n this.routeState.set(source.getSnapshot());\n });\n\n this.destroyRef.onDestroy(() => {\n unsub();\n source.destroy();\n });\n }\n}\n","import { NgTemplateOutlet } from \"@angular/common\";\nimport {\n Component,\n computed,\n effect,\n input,\n output,\n signal,\n} from \"@angular/core\";\nimport { createErrorSource } from \"@real-router/sources\";\n\nimport { injectRouter } from \"../functions/injectRouter\";\nimport { sourceToSignal } from \"../sourceToSignal\";\n\nimport type { TemplateRef } from \"@angular/core\";\nimport type { RouterError, State } from \"@real-router/core\";\nimport type { RouterErrorSnapshot } from \"@real-router/sources\";\n\nexport interface ErrorContext {\n $implicit: RouterError;\n resetError: () => void;\n}\n\n@Component({\n selector: \"router-error-boundary\",\n template: `\n <ng-content />\n @if (errorContext() && errorTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"errorTemplate()!\"\n [ngTemplateOutletContext]=\"errorContext()!\"\n />\n }\n `,\n imports: [NgTemplateOutlet],\n})\nexport class RouterErrorBoundary {\n readonly errorTemplate = input<TemplateRef<ErrorContext>>();\n\n readonly onError = output<{\n error: RouterError;\n toRoute: State | null;\n fromRoute: State | null;\n }>();\n\n readonly visibleError = computed(() => {\n const snap = this.snapshot();\n\n return snap.version > this.dismissedVersion() ? snap.error : null;\n });\n\n readonly errorContext = computed<ErrorContext | null>(() => {\n const error = this.visibleError();\n\n if (!error) {\n return null;\n }\n\n return {\n $implicit: error,\n resetError: this.resetError,\n };\n });\n\n private readonly router = injectRouter();\n private readonly snapshot = sourceToSignal<RouterErrorSnapshot>(\n createErrorSource(this.router),\n );\n private readonly dismissedVersion = signal(-1);\n\n constructor() {\n effect(() => {\n const snap = this.snapshot();\n\n if (snap.error) {\n this.onError.emit({\n error: snap.error,\n toRoute: snap.toRoute,\n fromRoute: snap.fromRoute,\n });\n }\n });\n }\n\n private readonly resetError = (): void => {\n this.dismissedVersion.set(this.snapshot().version);\n };\n}\n","import type { Router, State } from \"@real-router/core\";\n\nconst CLEAR_DELAY = 7000;\nconst SAFARI_READY_DELAY = 100;\nconst ANNOUNCER_ATTR = \"data-real-router-announcer\";\nconst INTERNAL_ROUTE_PREFIX = \"@@\";\nconst VISUALLY_HIDDEN =\n \"position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0\";\n\nexport interface RouteAnnouncerOptions {\n prefix?: string;\n getAnnouncementText?: (route: State) => string;\n}\n\nexport function createRouteAnnouncer(\n router: Router,\n options?: RouteAnnouncerOptions,\n): { destroy: () => void } {\n const prefix = options?.prefix ?? \"Navigated to \";\n const getCustomText = options?.getAnnouncementText;\n\n let isInitialNavigation = true;\n let isReady = false;\n let isDestroyed = false;\n let lastAnnouncedText = \"\";\n let pendingText: string | null = null;\n let clearTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n const announcer = getOrCreateAnnouncer();\n\n const doAnnounce = (text: string, h1: HTMLElement | null): void => {\n lastAnnouncedText = text;\n clearTimeout(clearTimeoutId);\n announcer.textContent = text;\n clearTimeoutId = setTimeout(() => {\n announcer.textContent = \"\";\n lastAnnouncedText = \"\";\n }, CLEAR_DELAY);\n\n manageFocus(h1);\n };\n\n // Safari-ready delay: announcing before VoiceOver wires up the aria-live region\n // causes the first announcement to be silently dropped. Wait SAFARI_READY_DELAY ms\n // before marking the announcer \"ready\" — any navigation during that window is\n // buffered in pendingText and flushed once the delay expires.\n const safariTimeoutId = setTimeout(() => {\n isReady = true;\n\n if (pendingText !== null && !isDestroyed) {\n const text = pendingText;\n\n pendingText = null;\n doAnnounce(text, document.querySelector<HTMLElement>(\"h1\"));\n }\n }, SAFARI_READY_DELAY);\n\n const unsubscribe = router.subscribe(({ route }) => {\n if (isInitialNavigation) {\n isInitialNavigation = false;\n\n return;\n }\n\n // Double rAF: waits for two paint frames so the incoming route's DOM\n // (including the new <h1>) is fully rendered before resolveText reads it.\n // Single rAF fires before the new route's template has been attached,\n // which would cause resolveText to pick up the OLD h1 or fall back to\n // document.title / route.name prematurely.\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (isDestroyed) {\n return;\n }\n\n const h1 = document.querySelector<HTMLElement>(\"h1\");\n const text = resolveText(route, prefix, getCustomText, h1);\n\n if (!text || text === lastAnnouncedText) {\n return;\n }\n\n if (!isReady) {\n // Defer announcement until Safari-ready window elapses (see safariTimeoutId).\n pendingText = text;\n\n return;\n }\n\n doAnnounce(text, h1);\n });\n });\n });\n\n return {\n destroy() {\n isDestroyed = true;\n unsubscribe();\n clearTimeout(clearTimeoutId);\n clearTimeout(safariTimeoutId);\n removeAnnouncer();\n },\n };\n}\n\nfunction getOrCreateAnnouncer(): HTMLElement {\n const existing = document.querySelector<HTMLElement>(`[${ANNOUNCER_ATTR}]`);\n\n if (existing) {\n return existing;\n }\n\n const element = document.createElement(\"div\");\n\n element.setAttribute(\"style\", VISUALLY_HIDDEN);\n element.setAttribute(\"aria-live\", \"assertive\");\n element.setAttribute(\"aria-atomic\", \"true\");\n element.setAttribute(ANNOUNCER_ATTR, \"\");\n\n document.body.prepend(element);\n\n return element;\n}\n\nfunction removeAnnouncer(): void {\n document.querySelector(`[${ANNOUNCER_ATTR}]`)?.remove();\n}\n\nfunction resolveText(\n route: State,\n prefix: string,\n getCustomText: ((route: State) => string) | undefined,\n h1: HTMLElement | null,\n): string {\n if (getCustomText) {\n return getCustomText(route);\n }\n\n const h1Text = h1?.textContent.trim() ?? \"\";\n const routeName = route.name.startsWith(INTERNAL_ROUTE_PREFIX)\n ? \"\"\n : route.name;\n const rawText =\n h1Text || document.title || routeName || globalThis.location.pathname;\n\n return `${prefix}${rawText}`;\n}\n\nfunction manageFocus(h1: HTMLElement | null): void {\n if (!h1) {\n return;\n }\n\n if (!h1.hasAttribute(\"tabindex\")) {\n h1.setAttribute(\"tabindex\", \"-1\");\n }\n\n h1.focus({ preventScroll: true });\n}\n","import type { Router, Params } from \"@real-router/core\";\n\nexport function shouldNavigate(evt: MouseEvent): boolean {\n return (\n evt.button === 0 &&\n !evt.metaKey &&\n !evt.altKey &&\n !evt.ctrlKey &&\n !evt.shiftKey\n );\n}\n\ntype BuildUrlFn = (name: string, params: Params) => string | undefined;\n\nexport function buildHref(\n router: Router,\n routeName: string,\n routeParams: Params,\n): string | undefined {\n try {\n const buildUrl = router.buildUrl as BuildUrlFn | undefined;\n\n if (buildUrl) {\n const url = buildUrl(routeName, routeParams);\n\n if (url !== undefined) {\n return url;\n }\n }\n\n return router.buildPath(routeName, routeParams);\n } catch {\n console.error(\n `[real-router] Route \"${routeName}\" is not defined. The element will render without an href attribute.`,\n );\n\n return undefined;\n }\n}\n\nfunction parseTokens(value: string | undefined): string[] {\n return value ? (value.match(/\\S+/g) ?? []) : [];\n}\n\nexport function buildActiveClassName(\n isActive: boolean,\n activeClassName: string | undefined,\n baseClassName: string | undefined,\n): string | undefined {\n if (isActive && activeClassName) {\n const activeTokens = parseTokens(activeClassName);\n\n if (activeTokens.length === 0) {\n return baseClassName ?? undefined;\n }\n if (!baseClassName) {\n return activeTokens.join(\" \");\n }\n\n const baseTokens = parseTokens(baseClassName);\n const seen = new Set(baseTokens);\n\n for (const token of activeTokens) {\n if (!seen.has(token)) {\n seen.add(token);\n baseTokens.push(token);\n }\n }\n\n return baseTokens.join(\" \");\n }\n\n return baseClassName ?? undefined;\n}\n\nexport function shallowEqual(\n prev: object | undefined,\n next: object | undefined,\n): boolean {\n if (Object.is(prev, next)) {\n return true;\n }\n if (!prev || !next) {\n return false;\n }\n\n const prevKeys = Object.keys(prev);\n\n if (prevKeys.length !== Object.keys(next).length) {\n return false;\n }\n\n const prevRecord = prev as Record<string, unknown>;\n const nextRecord = next as Record<string, unknown>;\n\n for (const key of prevKeys) {\n if (!Object.is(prevRecord[key], nextRecord[key])) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function applyLinkA11y(element: HTMLElement | null | undefined): void {\n if (!element) {\n return;\n }\n if (\n element instanceof HTMLAnchorElement ||\n element instanceof HTMLButtonElement\n ) {\n return;\n }\n if (!element.hasAttribute(\"role\")) {\n element.setAttribute(\"role\", \"link\");\n }\n if (!element.hasAttribute(\"tabindex\")) {\n element.setAttribute(\"tabindex\", \"0\");\n }\n}\n","import { Component, inject, DestroyRef } from \"@angular/core\";\n\nimport { createRouteAnnouncer } from \"../dom-utils\";\nimport { injectRouter } from \"../functions/injectRouter\";\n\n@Component({\n selector: \"navigation-announcer\",\n template: \"\",\n})\nexport class NavigationAnnouncer {\n private readonly announcer = createRouteAnnouncer(injectRouter());\n\n constructor() {\n inject(DestroyRef).onDestroy(() => {\n this.announcer.destroy();\n });\n }\n}\n","import {\n Directive,\n ElementRef,\n computed,\n inject,\n input,\n signal,\n DestroyRef,\n type OnInit,\n} from \"@angular/core\";\nimport { createActiveRouteSource } from \"@real-router/sources\";\n\nimport { buildHref, shouldNavigate } from \"../dom-utils\";\nimport { injectRouter } from \"../functions/injectRouter\";\n\nimport type { Params, NavigationOptions } from \"@real-router/core\";\n\n@Directive({\n selector: \"a[realLink]\",\n host: {\n \"(click)\": \"onClick($event)\",\n },\n})\nexport class RealLink implements OnInit {\n readonly routeName = input<string>(\"\");\n readonly routeParams = input<Params>({});\n readonly routeOptions = input<NavigationOptions>({});\n readonly activeClassName = input<string>(\"active\");\n readonly activeStrict = input(false);\n readonly ignoreQueryParams = input(true);\n\n private readonly router = injectRouter();\n private readonly destroyRef = inject(DestroyRef);\n private readonly anchor = inject(ElementRef)\n .nativeElement as HTMLAnchorElement;\n private readonly isActive = signal(false);\n private readonly href = computed(() =>\n buildHref(this.router, this.routeName(), this.routeParams()),\n );\n private prevActiveClass = \"\";\n\n ngOnInit(): void {\n const source = createActiveRouteSource(\n this.router,\n this.routeName(),\n this.routeParams(),\n {\n strict: this.activeStrict(),\n ignoreQueryParams: this.ignoreQueryParams(),\n },\n );\n\n this.isActive.set(source.getSnapshot());\n this.updateDom();\n\n const unsub = source.subscribe(() => {\n this.isActive.set(source.getSnapshot());\n this.updateDom();\n });\n\n this.destroyRef.onDestroy(() => {\n unsub();\n source.destroy();\n });\n }\n\n onClick(event: MouseEvent): void {\n if (!shouldNavigate(event) || this.anchor.target === \"_blank\") {\n return;\n }\n\n event.preventDefault();\n this.router\n .navigate(this.routeName(), this.routeParams(), this.routeOptions())\n .catch(() => {});\n }\n\n private updateDom(): void {\n const href = this.href();\n\n if (href !== undefined) {\n this.anchor.setAttribute(\"href\", href);\n }\n\n const activeClass = this.activeClassName();\n\n if (this.prevActiveClass && this.prevActiveClass !== activeClass) {\n this.anchor.classList.remove(this.prevActiveClass);\n }\n\n if (activeClass) {\n this.anchor.classList.toggle(activeClass, this.isActive());\n }\n\n this.prevActiveClass = activeClass;\n }\n}\n","import {\n Directive,\n ElementRef,\n inject,\n input,\n signal,\n DestroyRef,\n type OnInit,\n} from \"@angular/core\";\nimport { createActiveRouteSource } from \"@real-router/sources\";\n\nimport { applyLinkA11y } from \"../dom-utils\";\nimport { injectRouter } from \"../functions/injectRouter\";\n\nimport type { Params } from \"@real-router/core\";\n\n@Directive({ selector: \"[realLinkActive]\" })\nexport class RealLinkActive implements OnInit {\n readonly realLinkActive = input<string>(\"\");\n readonly routeName = input<string>(\"\");\n readonly routeParams = input<Params>({});\n readonly activeStrict = input(false);\n readonly ignoreQueryParams = input(true);\n\n private readonly router = injectRouter();\n private readonly destroyRef = inject(DestroyRef);\n private readonly element = inject(ElementRef).nativeElement as HTMLElement;\n private readonly isActive = signal(false);\n\n constructor() {\n applyLinkA11y(this.element);\n }\n\n ngOnInit(): void {\n const source = createActiveRouteSource(\n this.router,\n this.routeName(),\n this.routeParams(),\n {\n strict: this.activeStrict(),\n ignoreQueryParams: this.ignoreQueryParams(),\n },\n );\n\n this.isActive.set(source.getSnapshot());\n this.updateClass();\n\n const unsub = source.subscribe(() => {\n this.isActive.set(source.getSnapshot());\n this.updateClass();\n });\n\n this.destroyRef.onDestroy(() => {\n unsub();\n source.destroy();\n });\n }\n\n private updateClass(): void {\n const className = this.realLinkActive();\n\n if (!className) {\n return;\n }\n\n this.element.classList.toggle(className, this.isActive());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"real-router-angular.mjs","sources":["../../src/sourceToSignal.ts","../../src/providers.ts","../../src/functions/injectOrThrow.ts","../../src/functions/injectRouter.ts","../../src/functions/injectNavigator.ts","../../src/functions/injectRoute.ts","../../src/functions/injectRouteNode.ts","../../src/functions/injectRouteUtils.ts","../../src/functions/injectRouterTransition.ts","../../src/functions/injectIsActiveRoute.ts","../../src/directives/RouteMatch.ts","../../src/directives/RouteNotFound.ts","../../src/components/RouteView.ts","../../src/components/RouterErrorBoundary.ts","../../src/dom-utils/route-announcer.ts","../../src/dom-utils/link-utils.ts","../../src/components/NavigationAnnouncer.ts","../../src/directives/RealLink.ts","../../src/directives/RealLinkActive.ts","../../src/real-router-angular.ts"],"sourcesContent":["import { signal, type Signal, inject, DestroyRef } from \"@angular/core\";\n\nimport type { RouterSource } from \"@real-router/sources\";\n\n/** Must be called within an injection context (constructor, field initializer, runInInjectionContext). */\nexport function sourceToSignal<T>(source: RouterSource<T>): Signal<T> {\n const sig = signal<T>(source.getSnapshot());\n const destroyRef = inject(DestroyRef);\n\n const unsubscribe = source.subscribe(() => {\n sig.set(source.getSnapshot());\n });\n\n destroyRef.onDestroy(() => {\n unsubscribe();\n source.destroy();\n });\n\n return sig.asReadonly();\n}\n","import {\n InjectionToken,\n makeEnvironmentProviders,\n type EnvironmentProviders,\n} from \"@angular/core\";\nimport { getNavigator, type Router, type Navigator } from \"@real-router/core\";\nimport { createRouteSource } from \"@real-router/sources\";\n\nimport { sourceToSignal } from \"./sourceToSignal\";\n\nimport type { RouteSignals } from \"./types\";\n\nexport const ROUTER = new InjectionToken<Router>(\"ROUTER\");\n\nexport const NAVIGATOR = new InjectionToken<Navigator>(\"NAVIGATOR\");\n\nexport const ROUTE = new InjectionToken<RouteSignals>(\"ROUTE\");\n\nexport function provideRealRouter(router: Router): EnvironmentProviders {\n const navigator = getNavigator(router);\n\n return makeEnvironmentProviders([\n { provide: ROUTER, useValue: router },\n { provide: NAVIGATOR, useValue: navigator },\n {\n provide: ROUTE,\n useFactory: (): RouteSignals => ({\n routeState: sourceToSignal(createRouteSource(router)),\n navigator,\n }),\n },\n ]);\n}\n","import { inject } from \"@angular/core\";\n\nimport type { InjectionToken } from \"@angular/core\";\n\nexport function injectOrThrow<T>(token: InjectionToken<T>, fnName: string): T {\n const value = inject(token, { optional: true });\n\n if (!value) {\n throw new Error(\n `${fnName} must be used within a provideRealRouter context`,\n );\n }\n\n return value;\n}\n","import { injectOrThrow } from \"./injectOrThrow\";\nimport { ROUTER } from \"../providers\";\n\nimport type { Router } from \"@real-router/core\";\n\nexport function injectRouter(): Router {\n return injectOrThrow(ROUTER, \"injectRouter\");\n}\n","import { injectOrThrow } from \"./injectOrThrow\";\nimport { NAVIGATOR } from \"../providers\";\n\nimport type { Navigator } from \"@real-router/core\";\n\nexport function injectNavigator(): Navigator {\n return injectOrThrow(NAVIGATOR, \"injectNavigator\");\n}\n","import { injectOrThrow } from \"./injectOrThrow\";\nimport { ROUTE } from \"../providers\";\n\nimport type { RouteSignals } from \"../types\";\n\nexport function injectRoute(): RouteSignals {\n return injectOrThrow(ROUTE, \"injectRoute\");\n}\n","import { getNavigator } from \"@real-router/core\";\nimport { createRouteNodeSource } from \"@real-router/sources\";\n\nimport { sourceToSignal } from \"../sourceToSignal\";\nimport { injectRouter } from \"./injectRouter\";\n\nimport type { RouteSignals } from \"../types\";\n\nexport function injectRouteNode(nodeName: string): RouteSignals {\n const router = injectRouter();\n const navigator = getNavigator(router);\n const source = createRouteNodeSource(router, nodeName);\n const routeState = sourceToSignal(source);\n\n return { routeState, navigator };\n}\n","import { getPluginApi } from \"@real-router/core/api\";\nimport { getRouteUtils } from \"@real-router/route-utils\";\n\nimport { injectRouter } from \"./injectRouter\";\n\nimport type { RouteUtils } from \"@real-router/route-utils\";\n\nexport function injectRouteUtils(): RouteUtils {\n const router = injectRouter();\n\n return getRouteUtils(getPluginApi(router).getTree());\n}\n","import { getTransitionSource } from \"@real-router/sources\";\n\nimport { sourceToSignal } from \"../sourceToSignal\";\nimport { injectRouter } from \"./injectRouter\";\n\nimport type { Signal } from \"@angular/core\";\nimport type { RouterTransitionSnapshot } from \"@real-router/sources\";\n\nexport function injectRouterTransition(): Signal<RouterTransitionSnapshot> {\n const router = injectRouter();\n const source = getTransitionSource(router);\n\n return sourceToSignal(source);\n}\n","import { createActiveRouteSource } from \"@real-router/sources\";\n\nimport { sourceToSignal } from \"../sourceToSignal\";\nimport { injectRouter } from \"./injectRouter\";\n\nimport type { Signal } from \"@angular/core\";\nimport type { Params } from \"@real-router/core\";\n\nexport function injectIsActiveRoute(\n routeName: string,\n params?: Params,\n options?: { strict?: boolean; ignoreQueryParams?: boolean },\n): Signal<boolean> {\n const router = injectRouter();\n const source = createActiveRouteSource(router, routeName, params, {\n strict: options?.strict ?? false,\n ignoreQueryParams: options?.ignoreQueryParams ?? true,\n });\n\n return sourceToSignal(source);\n}\n","import { Directive, TemplateRef, inject, input } from \"@angular/core\";\n\n@Directive({ selector: \"ng-template[routeMatch]\" })\nexport class RouteMatch {\n readonly routeMatch = input.required<string>();\n readonly templateRef = inject(TemplateRef);\n}\n","import { Directive, TemplateRef, inject } from \"@angular/core\";\n\n@Directive({ selector: \"ng-template[routeNotFound]\" })\nexport class RouteNotFound {\n readonly templateRef = inject(TemplateRef);\n}\n","import { NgTemplateOutlet } from \"@angular/common\";\nimport {\n Component,\n computed,\n contentChildren,\n inject,\n input,\n signal,\n DestroyRef,\n type OnInit,\n type TemplateRef,\n} from \"@angular/core\";\nimport { UNKNOWN_ROUTE } from \"@real-router/core\";\nimport { startsWithSegment } from \"@real-router/route-utils\";\nimport { createRouteNodeSource } from \"@real-router/sources\";\n\nimport { RouteMatch } from \"../directives/RouteMatch\";\nimport { RouteNotFound } from \"../directives/RouteNotFound\";\nimport { injectRouter } from \"../functions/injectRouter\";\n\nimport type { RouteSnapshot } from \"@real-router/sources\";\n\nconst EMPTY_SNAPSHOT: RouteSnapshot = Object.freeze({\n route: undefined,\n previousRoute: undefined,\n});\n\n@Component({\n selector: \"route-view\",\n template: `\n @if (activeTemplate()) {\n <ng-container [ngTemplateOutlet]=\"activeTemplate()!\" />\n }\n `,\n imports: [NgTemplateOutlet],\n})\nexport class RouteView implements OnInit {\n readonly nodeName = input<string>(\"\", { alias: \"routeNode\" });\n\n readonly matches = contentChildren(RouteMatch, { descendants: true });\n readonly notFounds = contentChildren(RouteNotFound, { descendants: true });\n\n readonly activeTemplate = computed<TemplateRef<unknown> | null>(() => {\n const snapshot = this.routeState();\n const route = snapshot.route;\n\n if (!route) {\n return null;\n }\n\n const routeName = route.name;\n const entries = this.matchEntries();\n\n for (const { match, fullSegmentName } of entries) {\n if (startsWithSegment(routeName, fullSegmentName)) {\n return match.templateRef;\n }\n }\n\n if (routeName === UNKNOWN_ROUTE) {\n const last = this.notFounds().at(-1);\n\n if (last) {\n return last.templateRef;\n }\n }\n\n return null;\n });\n\n private readonly matchEntries = computed(() => {\n const nodeName = this.nodeName();\n\n return this.matches().map((match) => {\n const segment = match.routeMatch();\n\n return {\n match,\n fullSegmentName: nodeName ? `${nodeName}.${segment}` : segment,\n };\n });\n });\n\n private readonly router = injectRouter();\n private readonly destroyRef = inject(DestroyRef);\n private readonly routeState = signal<RouteSnapshot>(EMPTY_SNAPSHOT);\n\n ngOnInit(): void {\n const source = createRouteNodeSource(this.router, this.nodeName());\n\n this.routeState.set(source.getSnapshot());\n\n const unsub = source.subscribe(() => {\n this.routeState.set(source.getSnapshot());\n });\n\n this.destroyRef.onDestroy(() => {\n unsub();\n source.destroy();\n });\n }\n}\n","import { NgTemplateOutlet } from \"@angular/common\";\nimport { Component, computed, effect, input, output } from \"@angular/core\";\nimport { createDismissableError } from \"@real-router/sources\";\n\nimport { injectRouter } from \"../functions/injectRouter\";\nimport { sourceToSignal } from \"../sourceToSignal\";\n\nimport type { TemplateRef } from \"@angular/core\";\nimport type { RouterError, State } from \"@real-router/core\";\nimport type { DismissableErrorSnapshot } from \"@real-router/sources\";\n\nexport interface ErrorContext {\n $implicit: RouterError;\n resetError: () => void;\n}\n\n@Component({\n selector: \"router-error-boundary\",\n template: `\n <ng-content />\n @if (errorContext() && errorTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"errorTemplate()!\"\n [ngTemplateOutletContext]=\"errorContext()!\"\n />\n }\n `,\n imports: [NgTemplateOutlet],\n})\nexport class RouterErrorBoundary {\n readonly errorTemplate = input<TemplateRef<ErrorContext>>();\n\n readonly onError = output<{\n error: RouterError;\n toRoute: State | null;\n fromRoute: State | null;\n }>();\n\n readonly errorContext = computed<ErrorContext | null>(() => {\n const snap = this.snapshot();\n\n if (!snap.error) {\n return null;\n }\n\n return {\n $implicit: snap.error,\n resetError: snap.resetError,\n };\n });\n\n private readonly router = injectRouter();\n private readonly snapshot = sourceToSignal<DismissableErrorSnapshot>(\n createDismissableError(this.router),\n );\n\n constructor() {\n effect(() => {\n const snap = this.snapshot();\n\n if (snap.error) {\n this.onError.emit({\n error: snap.error,\n toRoute: snap.toRoute,\n fromRoute: snap.fromRoute,\n });\n }\n });\n }\n}\n","import type { Router, State } from \"@real-router/core\";\n\nconst CLEAR_DELAY = 7000;\nconst SAFARI_READY_DELAY = 100;\nconst ANNOUNCER_ATTR = \"data-real-router-announcer\";\nconst INTERNAL_ROUTE_PREFIX = \"@@\";\nconst VISUALLY_HIDDEN =\n \"position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0\";\n\nexport interface RouteAnnouncerOptions {\n prefix?: string;\n getAnnouncementText?: (route: State) => string;\n}\n\nexport function createRouteAnnouncer(\n router: Router,\n options?: RouteAnnouncerOptions,\n): { destroy: () => void } {\n const prefix = options?.prefix ?? \"Navigated to \";\n const getCustomText = options?.getAnnouncementText;\n\n let isInitialNavigation = true;\n let isReady = false;\n let isDestroyed = false;\n let lastAnnouncedText = \"\";\n let pendingText: string | null = null;\n let clearTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n const announcer = getOrCreateAnnouncer();\n\n const doAnnounce = (text: string, h1: HTMLElement | null): void => {\n lastAnnouncedText = text;\n clearTimeout(clearTimeoutId);\n announcer.textContent = text;\n clearTimeoutId = setTimeout(() => {\n announcer.textContent = \"\";\n lastAnnouncedText = \"\";\n }, CLEAR_DELAY);\n\n manageFocus(h1);\n };\n\n // Safari-ready delay: announcing before VoiceOver wires up the aria-live region\n // causes the first announcement to be silently dropped. Wait SAFARI_READY_DELAY ms\n // before marking the announcer \"ready\" — any navigation during that window is\n // buffered in pendingText and flushed once the delay expires.\n const safariTimeoutId = setTimeout(() => {\n isReady = true;\n\n if (pendingText !== null && !isDestroyed) {\n const text = pendingText;\n\n pendingText = null;\n doAnnounce(text, document.querySelector<HTMLElement>(\"h1\"));\n }\n }, SAFARI_READY_DELAY);\n\n const unsubscribe = router.subscribe(({ route }) => {\n if (isInitialNavigation) {\n isInitialNavigation = false;\n\n return;\n }\n\n // Double rAF: waits for two paint frames so the incoming route's DOM\n // (including the new <h1>) is fully rendered before resolveText reads it.\n // Single rAF fires before the new route's template has been attached,\n // which would cause resolveText to pick up the OLD h1 or fall back to\n // document.title / route.name prematurely.\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (isDestroyed) {\n return;\n }\n\n const h1 = document.querySelector<HTMLElement>(\"h1\");\n const text = resolveText(route, prefix, getCustomText, h1);\n\n if (!text || text === lastAnnouncedText) {\n return;\n }\n\n if (!isReady) {\n // Defer announcement until Safari-ready window elapses (see safariTimeoutId).\n pendingText = text;\n\n return;\n }\n\n doAnnounce(text, h1);\n });\n });\n });\n\n return {\n destroy() {\n isDestroyed = true;\n unsubscribe();\n clearTimeout(clearTimeoutId);\n clearTimeout(safariTimeoutId);\n removeAnnouncer();\n },\n };\n}\n\nfunction getOrCreateAnnouncer(): HTMLElement {\n const existing = document.querySelector<HTMLElement>(`[${ANNOUNCER_ATTR}]`);\n\n if (existing) {\n return existing;\n }\n\n const element = document.createElement(\"div\");\n\n element.setAttribute(\"style\", VISUALLY_HIDDEN);\n element.setAttribute(\"aria-live\", \"assertive\");\n element.setAttribute(\"aria-atomic\", \"true\");\n element.setAttribute(ANNOUNCER_ATTR, \"\");\n\n document.body.prepend(element);\n\n return element;\n}\n\nfunction removeAnnouncer(): void {\n document.querySelector(`[${ANNOUNCER_ATTR}]`)?.remove();\n}\n\nfunction resolveText(\n route: State,\n prefix: string,\n getCustomText: ((route: State) => string) | undefined,\n h1: HTMLElement | null,\n): string {\n if (getCustomText) {\n return getCustomText(route);\n }\n\n const h1Text = h1?.textContent.trim() ?? \"\";\n const routeName = route.name.startsWith(INTERNAL_ROUTE_PREFIX)\n ? \"\"\n : route.name;\n const rawText =\n h1Text || document.title || routeName || globalThis.location.pathname;\n\n return `${prefix}${rawText}`;\n}\n\nfunction manageFocus(h1: HTMLElement | null): void {\n if (!h1) {\n return;\n }\n\n if (!h1.hasAttribute(\"tabindex\")) {\n h1.setAttribute(\"tabindex\", \"-1\");\n }\n\n h1.focus({ preventScroll: true });\n}\n","import type { Router, Params } from \"@real-router/core\";\n\nexport function shouldNavigate(evt: MouseEvent): boolean {\n return (\n evt.button === 0 &&\n !evt.metaKey &&\n !evt.altKey &&\n !evt.ctrlKey &&\n !evt.shiftKey\n );\n}\n\ntype BuildUrlFn = (name: string, params: Params) => string | undefined;\n\nexport function buildHref(\n router: Router,\n routeName: string,\n routeParams: Params,\n): string | undefined {\n try {\n const buildUrl = router.buildUrl as BuildUrlFn | undefined;\n\n if (buildUrl) {\n const url = buildUrl(routeName, routeParams);\n\n if (url !== undefined) {\n return url;\n }\n }\n\n return router.buildPath(routeName, routeParams);\n } catch {\n console.error(\n `[real-router] Route \"${routeName}\" is not defined. The element will render without an href attribute.`,\n );\n\n return undefined;\n }\n}\n\nfunction parseTokens(value: string | undefined): string[] {\n return value ? (value.match(/\\S+/g) ?? []) : [];\n}\n\nexport function buildActiveClassName(\n isActive: boolean,\n activeClassName: string | undefined,\n baseClassName: string | undefined,\n): string | undefined {\n if (isActive && activeClassName) {\n const activeTokens = parseTokens(activeClassName);\n\n if (activeTokens.length === 0) {\n return baseClassName ?? undefined;\n }\n if (!baseClassName) {\n return activeTokens.join(\" \");\n }\n\n const baseTokens = parseTokens(baseClassName);\n const seen = new Set(baseTokens);\n\n for (const token of activeTokens) {\n if (!seen.has(token)) {\n seen.add(token);\n baseTokens.push(token);\n }\n }\n\n return baseTokens.join(\" \");\n }\n\n return baseClassName ?? undefined;\n}\n\nexport function shallowEqual(\n prev: object | undefined,\n next: object | undefined,\n): boolean {\n if (Object.is(prev, next)) {\n return true;\n }\n if (!prev || !next) {\n return false;\n }\n\n const prevKeys = Object.keys(prev);\n\n if (prevKeys.length !== Object.keys(next).length) {\n return false;\n }\n\n const prevRecord = prev as Record<string, unknown>;\n const nextRecord = next as Record<string, unknown>;\n\n for (const key of prevKeys) {\n if (!Object.is(prevRecord[key], nextRecord[key])) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function applyLinkA11y(element: HTMLElement | null | undefined): void {\n if (!element) {\n return;\n }\n if (\n element instanceof HTMLAnchorElement ||\n element instanceof HTMLButtonElement\n ) {\n return;\n }\n if (!element.hasAttribute(\"role\")) {\n element.setAttribute(\"role\", \"link\");\n }\n if (!element.hasAttribute(\"tabindex\")) {\n element.setAttribute(\"tabindex\", \"0\");\n }\n}\n","import { Component, inject, DestroyRef } from \"@angular/core\";\n\nimport { createRouteAnnouncer } from \"../dom-utils\";\nimport { injectRouter } from \"../functions/injectRouter\";\n\n@Component({\n selector: \"navigation-announcer\",\n template: \"\",\n})\nexport class NavigationAnnouncer {\n private readonly announcer = createRouteAnnouncer(injectRouter());\n\n constructor() {\n inject(DestroyRef).onDestroy(() => {\n this.announcer.destroy();\n });\n }\n}\n","import {\n Directive,\n ElementRef,\n computed,\n inject,\n input,\n signal,\n DestroyRef,\n type OnInit,\n} from \"@angular/core\";\nimport { createActiveRouteSource } from \"@real-router/sources\";\n\nimport { buildHref, shouldNavigate } from \"../dom-utils\";\nimport { injectRouter } from \"../functions/injectRouter\";\n\nimport type { Params, NavigationOptions } from \"@real-router/core\";\n\n@Directive({\n selector: \"a[realLink]\",\n host: {\n \"(click)\": \"onClick($event)\",\n },\n})\nexport class RealLink implements OnInit {\n readonly routeName = input<string>(\"\");\n readonly routeParams = input<Params>({});\n readonly routeOptions = input<NavigationOptions>({});\n readonly activeClassName = input<string>(\"active\");\n readonly activeStrict = input(false);\n readonly ignoreQueryParams = input(true);\n\n private readonly router = injectRouter();\n private readonly destroyRef = inject(DestroyRef);\n private readonly anchor = inject(ElementRef)\n .nativeElement as HTMLAnchorElement;\n private readonly isActive = signal(false);\n private readonly href = computed(() =>\n buildHref(this.router, this.routeName(), this.routeParams()),\n );\n private prevActiveClass = \"\";\n\n ngOnInit(): void {\n const source = createActiveRouteSource(\n this.router,\n this.routeName(),\n this.routeParams(),\n {\n strict: this.activeStrict(),\n ignoreQueryParams: this.ignoreQueryParams(),\n },\n );\n\n this.isActive.set(source.getSnapshot());\n this.updateDom();\n\n const unsub = source.subscribe(() => {\n this.isActive.set(source.getSnapshot());\n this.updateDom();\n });\n\n this.destroyRef.onDestroy(() => {\n unsub();\n source.destroy();\n });\n }\n\n onClick(event: MouseEvent): void {\n if (!shouldNavigate(event) || this.anchor.target === \"_blank\") {\n return;\n }\n\n event.preventDefault();\n this.router\n .navigate(this.routeName(), this.routeParams(), this.routeOptions())\n .catch(() => {});\n }\n\n private updateDom(): void {\n const href = this.href();\n\n if (href !== undefined) {\n this.anchor.setAttribute(\"href\", href);\n }\n\n const activeClass = this.activeClassName();\n\n if (this.prevActiveClass && this.prevActiveClass !== activeClass) {\n this.anchor.classList.remove(this.prevActiveClass);\n }\n\n if (activeClass) {\n this.anchor.classList.toggle(activeClass, this.isActive());\n }\n\n this.prevActiveClass = activeClass;\n }\n}\n","import {\n Directive,\n ElementRef,\n inject,\n input,\n signal,\n DestroyRef,\n type OnInit,\n} from \"@angular/core\";\nimport { createActiveRouteSource } from \"@real-router/sources\";\n\nimport { applyLinkA11y } from \"../dom-utils\";\nimport { injectRouter } from \"../functions/injectRouter\";\n\nimport type { Params } from \"@real-router/core\";\n\n@Directive({ selector: \"[realLinkActive]\" })\nexport class RealLinkActive implements OnInit {\n readonly realLinkActive = input<string>(\"\");\n readonly routeName = input<string>(\"\");\n readonly routeParams = input<Params>({});\n readonly activeStrict = input(false);\n readonly ignoreQueryParams = input(true);\n\n private readonly router = injectRouter();\n private readonly destroyRef = inject(DestroyRef);\n private readonly element = inject(ElementRef).nativeElement as HTMLElement;\n private readonly isActive = signal(false);\n\n constructor() {\n applyLinkA11y(this.element);\n }\n\n ngOnInit(): void {\n const source = createActiveRouteSource(\n this.router,\n this.routeName(),\n this.routeParams(),\n {\n strict: this.activeStrict(),\n ignoreQueryParams: this.ignoreQueryParams(),\n },\n );\n\n this.isActive.set(source.getSnapshot());\n this.updateClass();\n\n const unsub = source.subscribe(() => {\n this.isActive.set(source.getSnapshot());\n this.updateClass();\n });\n\n this.destroyRef.onDestroy(() => {\n unsub();\n source.destroy();\n });\n }\n\n private updateClass(): void {\n const className = this.realLinkActive();\n\n if (!className) {\n return;\n }\n\n this.element.classList.toggle(className, this.isActive());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -74,13 +74,10 @@ declare class RouterErrorBoundary {
74
74
  toRoute: State | null;
75
75
  fromRoute: State | null;
76
76
  }>;
77
- readonly visibleError: _angular_core.Signal<RouterError | null>;
78
77
  readonly errorContext: _angular_core.Signal<ErrorContext | null>;
79
78
  private readonly router;
80
79
  private readonly snapshot;
81
- private readonly dismissedVersion;
82
80
  constructor();
83
- private readonly resetError;
84
81
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RouterErrorBoundary, never>;
85
82
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<RouterErrorBoundary, "router-error-boundary", never, { "errorTemplate": { "alias": "errorTemplate"; "required": false; "isSignal": true; }; }, { "onError": "onError"; }, never, ["*"], true, never>;
86
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"real-router-angular.d.ts","sources":["../../src/types.ts","../../src/providers.ts","../../src/sourceToSignal.ts","../../src/functions/injectRouter.ts","../../src/functions/injectNavigator.ts","../../src/functions/injectRoute.ts","../../src/functions/injectRouteNode.ts","../../src/functions/injectRouteUtils.ts","../../src/functions/injectRouterTransition.ts","../../src/functions/injectIsActiveRoute.ts","../../src/directives/RouteMatch.ts","../../src/directives/RouteNotFound.ts","../../src/components/RouteView.ts","../../src/components/RouterErrorBoundary.ts","../../src/components/NavigationAnnouncer.ts","../../src/directives/RealLink.ts","../../src/directives/RealLinkActive.ts"],"mappings":";;;;;;;;UAIiB,YAAY;AAC3B,yBAAqB,MAAM,CAAC,aAAa;AACzC,wBAAoB,SAAS;AAC9B;;ACKD,cAAa,MAAM,EAAA,cAAA,CAAA,MAAA;AAEnB,cAAa,SAAS,EAAA,cAAA,CAAA,SAAA;AAEtB,cAAa,KAAK,EAAA,cAAA,CAAA,YAAA;AAElB,iBAAgB,iBAAiB,SAAS,MAAM,GAAG,oBAAoB;;ACdvE;AACA,iBAAgB,cAAc,YAAY,YAAY,MAAM,MAAM;;ACAlE,iBAAgB,YAAY,IAAI,MAAM;;ACAtC,iBAAgB,eAAe,IAAI,SAAS;;ACA5C,iBAAgB,WAAW,IAAI,YAAY;;ACG3C,iBAAgB,eAAe,oBAAoB,YAAY;;ACD/D,iBAAgB,gBAAgB,IAAI,UAAU;;ACC9C,iBAAgB,sBAAsB,IAAI,MAAM,CAAC,wBAAwB;;ACAzE,iBAAgB,mBAAmB,6BAExB,MAAM;;;AAC4C,IAC1D,MAAM;;ACVT,cACa,UAAU;yBACF,aAAA,CAAA,WAAA;0BACC,WAAA;oDAFT,UAAU;sDAAV,UAAU;AAGtB;;ACJD,cACa,aAAa;0BACJ,WAAA;oDADT,aAAa;sDAAb,aAAa;AAEzB;;ACsBD,cASa,SAAU,YAAW,MAAM;uBACrB,aAAA,CAAA,WAAA;sBAED,aAAA,CAAA,MAAA,UAAA,UAAA;wBACE,aAAA,CAAA,MAAA,UAAA,aAAA;6BAEK,aAAA,CAAA,MAAA,CAAA,WAAA;AA4BvB;AAaA;AACA;AACA;AAEA;oDAnDW,SAAS;sDAAT,SAAS;AAiErB;;UCnFgB,YAAY;eAChB,WAAW;;AAEvB;AAED,cAaa,mBAAmB;4BACR,aAAA,CAAA,WAAA,CAAA,WAAA,CAAA,YAAA;AAEtB,sBAAgB,aAAA,CAAA,gBAAA;eACP,WAAW;AACT,iBAAA,KAAK;AACH,mBAAA,KAAK;AACb;2BAEgB,aAAA,CAAA,MAAA,CAAA,WAAA;2BAMA,aAAA,CAAA,MAAA,CAAA,YAAA;AAarB;AACA;AAGA;;AAgBA;oDAhDW,mBAAmB;sDAAnB,mBAAmB;AAmD/B;;AClFD,cAIa,mBAAmB;AAC9B;;oDADW,mBAAmB;sDAAnB,mBAAmB;AAQ/B;;ACAD,cAMa,QAAS,YAAW,MAAM;wBACnB,aAAA,CAAA,WAAA;0BACE,aAAA,CAAA,WAAA,CAAA,MAAA;2BACC,aAAA,CAAA,WAAA,CAAA,iBAAA;8BACG,aAAA,CAAA,WAAA;2BACH,aAAA,CAAA,WAAA;gCACK,aAAA,CAAA,WAAA;AAE1B;AACA;AACA;AAEA;AACA;;AAKA;AAyBA,mBAAe,UAAU;AAWzB;oDAtDW,QAAQ;sDAAR,QAAQ;AAyEpB;;AChFD,cACa,cAAe,YAAW,MAAM;6BACpB,aAAA,CAAA,WAAA;wBACL,aAAA,CAAA,WAAA;0BACE,aAAA,CAAA,WAAA,CAAA,MAAA;2BACC,aAAA,CAAA,WAAA;gCACK,aAAA,CAAA,WAAA;AAE1B;AACA;AACA;AACA;;AAMA;AAyBA;oDAzCW,cAAc;sDAAd,cAAc;AAkD1B;;;;","names":[]}
1
+ {"version":3,"file":"real-router-angular.d.ts","sources":["../../src/types.ts","../../src/providers.ts","../../src/sourceToSignal.ts","../../src/functions/injectRouter.ts","../../src/functions/injectNavigator.ts","../../src/functions/injectRoute.ts","../../src/functions/injectRouteNode.ts","../../src/functions/injectRouteUtils.ts","../../src/functions/injectRouterTransition.ts","../../src/functions/injectIsActiveRoute.ts","../../src/directives/RouteMatch.ts","../../src/directives/RouteNotFound.ts","../../src/components/RouteView.ts","../../src/components/RouterErrorBoundary.ts","../../src/components/NavigationAnnouncer.ts","../../src/directives/RealLink.ts","../../src/directives/RealLinkActive.ts"],"mappings":";;;;;;;;UAIiB,YAAY;AAC3B,yBAAqB,MAAM,CAAC,aAAa;AACzC,wBAAoB,SAAS;AAC9B;;ACKD,cAAa,MAAM,EAAA,cAAA,CAAA,MAAA;AAEnB,cAAa,SAAS,EAAA,cAAA,CAAA,SAAA;AAEtB,cAAa,KAAK,EAAA,cAAA,CAAA,YAAA;AAElB,iBAAgB,iBAAiB,SAAS,MAAM,GAAG,oBAAoB;;ACdvE;AACA,iBAAgB,cAAc,YAAY,YAAY,MAAM,MAAM;;ACAlE,iBAAgB,YAAY,IAAI,MAAM;;ACAtC,iBAAgB,eAAe,IAAI,SAAS;;ACA5C,iBAAgB,WAAW,IAAI,YAAY;;ACG3C,iBAAgB,eAAe,oBAAoB,YAAY;;ACD/D,iBAAgB,gBAAgB,IAAI,UAAU;;ACC9C,iBAAgB,sBAAsB,IAAI,MAAM,CAAC,wBAAwB;;ACAzE,iBAAgB,mBAAmB,6BAExB,MAAM;;;AAC4C,IAC1D,MAAM;;ACVT,cACa,UAAU;yBACF,aAAA,CAAA,WAAA;0BACC,WAAA;oDAFT,UAAU;sDAAV,UAAU;AAGtB;;ACJD,cACa,aAAa;0BACJ,WAAA;oDADT,aAAa;sDAAb,aAAa;AAEzB;;ACsBD,cASa,SAAU,YAAW,MAAM;uBACrB,aAAA,CAAA,WAAA;sBAED,aAAA,CAAA,MAAA,UAAA,UAAA;wBACE,aAAA,CAAA,MAAA,UAAA,aAAA;6BAEK,aAAA,CAAA,MAAA,CAAA,WAAA;AA4BvB;AAaA;AACA;AACA;AAEA;oDAnDW,SAAS;sDAAT,SAAS;AAiErB;;UC1FgB,YAAY;eAChB,WAAW;;AAEvB;AAED,cAaa,mBAAmB;4BACR,aAAA,CAAA,WAAA,CAAA,WAAA,CAAA,YAAA;AAEtB,sBAAgB,aAAA,CAAA,gBAAA;eACP,WAAW;AACT,iBAAA,KAAK;AACH,mBAAA,KAAK;AACb;2BAEgB,aAAA,CAAA,MAAA,CAAA,YAAA;AAarB;AACA;;oDAvBW,mBAAmB;sDAAnB,mBAAmB;AAwC/B;;AChED,cAIa,mBAAmB;AAC9B;;oDADW,mBAAmB;sDAAnB,mBAAmB;AAQ/B;;ACAD,cAMa,QAAS,YAAW,MAAM;wBACnB,aAAA,CAAA,WAAA;0BACE,aAAA,CAAA,WAAA,CAAA,MAAA;2BACC,aAAA,CAAA,WAAA,CAAA,iBAAA;8BACG,aAAA,CAAA,WAAA;2BACH,aAAA,CAAA,WAAA;gCACK,aAAA,CAAA,WAAA;AAE1B;AACA;AACA;AAEA;AACA;;AAKA;AAyBA,mBAAe,UAAU;AAWzB;oDAtDW,QAAQ;sDAAR,QAAQ;AAyEpB;;AChFD,cACa,cAAe,YAAW,MAAM;6BACpB,aAAA,CAAA,WAAA;wBACL,aAAA,CAAA,WAAA;0BACE,aAAA,CAAA,WAAA,CAAA,MAAA;2BACC,aAAA,CAAA,WAAA;gCACK,aAAA,CAAA,WAAA;AAE1B;AACA;AACA;AACA;;AAMA;AAyBA;oDAzCW,cAAc;sDAAd,cAAc;AAkD1B;;;;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@real-router/angular",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "type": "commonjs",
5
5
  "description": "Angular 21 integration for Real-Router",
6
6
  "exports": {
@@ -37,7 +37,7 @@
37
37
  "dependencies": {
38
38
  "@real-router/core": "^0.48.0",
39
39
  "@real-router/route-utils": "^0.2.1",
40
- "@real-router/sources": "^0.5.1"
40
+ "@real-router/sources": "^0.6.0"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@analogjs/vitest-angular": "2.4.7",
@@ -1,20 +1,13 @@
1
1
  import { NgTemplateOutlet } from "@angular/common";
2
- import {
3
- Component,
4
- computed,
5
- effect,
6
- input,
7
- output,
8
- signal,
9
- } from "@angular/core";
10
- import { createErrorSource } from "@real-router/sources";
2
+ import { Component, computed, effect, input, output } from "@angular/core";
3
+ import { createDismissableError } from "@real-router/sources";
11
4
 
12
5
  import { injectRouter } from "../functions/injectRouter";
13
6
  import { sourceToSignal } from "../sourceToSignal";
14
7
 
15
8
  import type { TemplateRef } from "@angular/core";
16
9
  import type { RouterError, State } from "@real-router/core";
17
- import type { RouterErrorSnapshot } from "@real-router/sources";
10
+ import type { DismissableErrorSnapshot } from "@real-router/sources";
18
11
 
19
12
  export interface ErrorContext {
20
13
  $implicit: RouterError;
@@ -43,30 +36,23 @@ export class RouterErrorBoundary {
43
36
  fromRoute: State | null;
44
37
  }>();
45
38
 
46
- readonly visibleError = computed(() => {
47
- const snap = this.snapshot();
48
-
49
- return snap.version > this.dismissedVersion() ? snap.error : null;
50
- });
51
-
52
39
  readonly errorContext = computed<ErrorContext | null>(() => {
53
- const error = this.visibleError();
40
+ const snap = this.snapshot();
54
41
 
55
- if (!error) {
42
+ if (!snap.error) {
56
43
  return null;
57
44
  }
58
45
 
59
46
  return {
60
- $implicit: error,
61
- resetError: this.resetError,
47
+ $implicit: snap.error,
48
+ resetError: snap.resetError,
62
49
  };
63
50
  });
64
51
 
65
52
  private readonly router = injectRouter();
66
- private readonly snapshot = sourceToSignal<RouterErrorSnapshot>(
67
- createErrorSource(this.router),
53
+ private readonly snapshot = sourceToSignal<DismissableErrorSnapshot>(
54
+ createDismissableError(this.router),
68
55
  );
69
- private readonly dismissedVersion = signal(-1);
70
56
 
71
57
  constructor() {
72
58
  effect(() => {
@@ -81,8 +67,4 @@ export class RouterErrorBoundary {
81
67
  }
82
68
  });
83
69
  }
84
-
85
- private readonly resetError = (): void => {
86
- this.dismissedVersion.set(this.snapshot().version);
87
- };
88
70
  }
@@ -1,4 +1,4 @@
1
- import { createTransitionSource } from "@real-router/sources";
1
+ import { getTransitionSource } from "@real-router/sources";
2
2
 
3
3
  import { sourceToSignal } from "../sourceToSignal";
4
4
  import { injectRouter } from "./injectRouter";
@@ -8,7 +8,7 @@ import type { RouterTransitionSnapshot } from "@real-router/sources";
8
8
 
9
9
  export function injectRouterTransition(): Signal<RouterTransitionSnapshot> {
10
10
  const router = injectRouter();
11
- const source = createTransitionSource(router);
11
+ const source = getTransitionSource(router);
12
12
 
13
13
  return sourceToSignal(source);
14
14
  }