@radix-ng/primitives 1.0.0-beta.3 → 1.0.0-beta.4

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.
Files changed (97) hide show
  1. package/README.md +1 -1
  2. package/fesm2022/radix-ng-primitives-accordion.mjs +5 -3
  3. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  4. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +3 -2
  5. package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
  6. package/fesm2022/radix-ng-primitives-autocomplete.mjs +617 -659
  7. package/fesm2022/radix-ng-primitives-autocomplete.mjs.map +1 -1
  8. package/fesm2022/radix-ng-primitives-calendar.mjs +5 -3
  9. package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
  10. package/fesm2022/radix-ng-primitives-combobox.mjs +1305 -572
  11. package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -1
  12. package/fesm2022/radix-ng-primitives-config.mjs +13 -4
  13. package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
  14. package/fesm2022/radix-ng-primitives-context-menu.mjs +51 -10
  15. package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
  16. package/fesm2022/radix-ng-primitives-core.mjs +1345 -64
  17. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  18. package/fesm2022/radix-ng-primitives-date-field.mjs +5 -3
  19. package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
  20. package/fesm2022/radix-ng-primitives-dialog.mjs +240 -112
  21. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
  22. package/fesm2022/radix-ng-primitives-direction-provider.mjs +70 -0
  23. package/fesm2022/radix-ng-primitives-direction-provider.mjs.map +1 -0
  24. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +519 -184
  25. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
  26. package/fesm2022/radix-ng-primitives-drawer.mjs +3 -3
  27. package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
  28. package/fesm2022/radix-ng-primitives-field.mjs +3 -2
  29. package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
  30. package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs +517 -0
  31. package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs.map +1 -0
  32. package/fesm2022/radix-ng-primitives-focus-scope.mjs +296 -70
  33. package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
  34. package/fesm2022/radix-ng-primitives-menu.mjs +861 -286
  35. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  36. package/fesm2022/radix-ng-primitives-menubar.mjs +32 -4
  37. package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
  38. package/fesm2022/radix-ng-primitives-navigation-menu.mjs +144 -159
  39. package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
  40. package/fesm2022/radix-ng-primitives-popover.mjs +220 -205
  41. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  42. package/fesm2022/radix-ng-primitives-popper.mjs +94 -51
  43. package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
  44. package/fesm2022/radix-ng-primitives-presence.mjs +1 -1
  45. package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
  46. package/fesm2022/radix-ng-primitives-preview-card.mjs +141 -173
  47. package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
  48. package/fesm2022/radix-ng-primitives-roving-focus.mjs +4 -2
  49. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  50. package/fesm2022/radix-ng-primitives-scroll-area.mjs +5 -4
  51. package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
  52. package/fesm2022/radix-ng-primitives-select.mjs +211 -156
  53. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  54. package/fesm2022/radix-ng-primitives-slider.mjs +5 -3
  55. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  56. package/fesm2022/radix-ng-primitives-stepper.mjs +5 -3
  57. package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
  58. package/fesm2022/radix-ng-primitives-time-field.mjs +5 -3
  59. package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
  60. package/fesm2022/radix-ng-primitives-toast.mjs +15 -36
  61. package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -1
  62. package/fesm2022/radix-ng-primitives-toggle-group.mjs +5 -3
  63. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  64. package/fesm2022/radix-ng-primitives-toolbar.mjs +5 -3
  65. package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
  66. package/fesm2022/radix-ng-primitives-tooltip.mjs +73 -110
  67. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
  68. package/package.json +10 -1
  69. package/types/radix-ng-primitives-accordion.d.ts +4 -3
  70. package/types/radix-ng-primitives-autocomplete.d.ts +217 -152
  71. package/types/radix-ng-primitives-calendar.d.ts +5 -3
  72. package/types/radix-ng-primitives-combobox.d.ts +672 -283
  73. package/types/radix-ng-primitives-config.d.ts +1 -1
  74. package/types/radix-ng-primitives-context-menu.d.ts +15 -5
  75. package/types/radix-ng-primitives-core.d.ts +762 -14
  76. package/types/radix-ng-primitives-date-field.d.ts +3 -2
  77. package/types/radix-ng-primitives-dialog.d.ts +77 -32
  78. package/types/radix-ng-primitives-direction-provider.d.ts +41 -0
  79. package/types/radix-ng-primitives-dismissable-layer.d.ts +147 -99
  80. package/types/radix-ng-primitives-field.d.ts +1 -0
  81. package/types/radix-ng-primitives-floating-focus-manager.d.ts +175 -0
  82. package/types/radix-ng-primitives-focus-scope.d.ts +132 -1
  83. package/types/radix-ng-primitives-menu.d.ts +186 -103
  84. package/types/radix-ng-primitives-navigation-menu.d.ts +37 -75
  85. package/types/radix-ng-primitives-popover.d.ts +59 -92
  86. package/types/radix-ng-primitives-popper.d.ts +39 -9
  87. package/types/radix-ng-primitives-preview-card.d.ts +39 -72
  88. package/types/radix-ng-primitives-roving-focus.d.ts +7 -6
  89. package/types/radix-ng-primitives-scroll-area.d.ts +2 -2
  90. package/types/radix-ng-primitives-select.d.ts +145 -108
  91. package/types/radix-ng-primitives-slider.d.ts +5 -4
  92. package/types/radix-ng-primitives-stepper.d.ts +4 -3
  93. package/types/radix-ng-primitives-time-field.d.ts +3 -2
  94. package/types/radix-ng-primitives-toast.d.ts +7 -7
  95. package/types/radix-ng-primitives-toggle-group.d.ts +5 -4
  96. package/types/radix-ng-primitives-toolbar.d.ts +3 -2
  97. package/types/radix-ng-primitives-tooltip.d.ts +24 -67
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-dialog.mjs","sources":["../../../packages/primitives/dialog/src/dialog-variant.ts","../../../packages/primitives/dialog/src/dialog-root.ts","../../../packages/primitives/dialog/src/dialog-backdrop.ts","../../../packages/primitives/dialog/src/dialog-close.ts","../../../packages/primitives/dialog/src/dialog-description.ts","../../../packages/primitives/dialog/src/dialog-popup.ts","../../../packages/primitives/dialog/src/dialog-portal.ts","../../../packages/primitives/dialog/src/dialog-title.ts","../../../packages/primitives/dialog/src/dialog-trigger.ts","../../../packages/primitives/dialog/src/dialog-viewport.ts","../../../packages/primitives/dialog/src/dialog-handle.ts","../../../packages/primitives/dialog/index.ts","../../../packages/primitives/dialog/radix-ng-primitives-dialog.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\n\nexport type RdxDialogRole = 'dialog' | 'alertdialog';\n\n/**\n * Behavioral profile for a dialog, supplied by a composing root (e.g. alert-dialog, drawer) to\n * specialize the shared Dialog without new public dialog inputs.\n *\n * These are *force-only* overrides: a variant uses them to pin behavior regardless of the public\n * inputs (as alert-dialog does). A variant that wants a configurable default instead simply leaves\n * the flags off and lets the composing root proxy the `modal` / `disablePointerDismissal` inputs —\n * that is how Drawer stays modal-by-default while remaining user-overridable.\n *\n * The three concerns are kept independent on purpose so future variants can mix them freely\n * (e.g. a modal, non-dismissable drawer that is still `role=\"dialog\"`):\n * - `role` — ARIA role rendered on the popup.\n * - `forceModal` — pin modality to `true` regardless of the `modal` input.\n * - `forcePointerDismissalDisabled` — disable outside-press / focus-out dismissal (Escape still closes).\n */\nexport interface RdxDialogVariant {\n role: RdxDialogRole;\n forceModal: boolean;\n forcePointerDismissalDisabled: boolean;\n}\n\nconst DEFAULT_VARIANT: RdxDialogVariant = {\n role: 'dialog',\n forceModal: false,\n forcePointerDismissalDisabled: false\n};\n\nexport const RDX_DIALOG_VARIANT = new InjectionToken<RdxDialogVariant>('RdxDialogVariant', {\n factory: () => DEFAULT_VARIANT\n});\n\nexport function provideRdxDialogVariant(variant: Partial<RdxDialogVariant>): Provider {\n return { provide: RDX_DIALOG_VARIANT, useValue: { ...DEFAULT_VARIANT, ...variant } };\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n inject,\n input,\n model,\n output,\n Signal,\n signal,\n untracked\n} from '@angular/core';\nimport {\n BooleanInput,\n createContext,\n injectId,\n RdxTransitionStatus,\n useTransitionStatus\n} from '@radix-ng/primitives/core';\nimport { RdxDialogHandle } from './dialog-handle';\nimport { RDX_DIALOG_VARIANT, RdxDialogRole } from './dialog-variant';\n\nexport type RdxDialogModal = boolean | 'trap-focus';\n\nexport type RdxDialogOpenChangeReason =\n | 'trigger-press'\n | 'close-press'\n | 'outside-press'\n | 'focus-out'\n | 'escape-key'\n | 'swipe'\n | 'imperative-action'\n | 'none';\n\nexport interface RdxDialogOpenChange {\n open: boolean;\n triggerId: string | null;\n trigger: HTMLElement | undefined;\n reason: RdxDialogOpenChangeReason;\n event: Event;\n}\n\ninterface RdxDialogRegisteredTrigger {\n element: HTMLElement;\n payload: () => unknown;\n}\n\nconst transformModal = (value: BooleanInput | 'trap-focus'): RdxDialogModal =>\n value === 'trap-focus' ? value : booleanAttribute(value);\n\nconst context = () => contextFor(inject(RdxDialogRoot));\n\nexport interface RdxDialogRootContext {\n contentId: string;\n titleId: Signal<string | undefined>;\n descriptionId: Signal<string | undefined>;\n isOpen: Signal<boolean>;\n /** Effective modality (the variant can pin this to `true`). */\n modal: Signal<RdxDialogModal>;\n /** Effective outside-press / focus-out dismissal flag (the variant can force it on). */\n disablePointerDismissal: Signal<boolean>;\n /** ARIA role for the popup; constant, fixed by the variant at construction. */\n role: RdxDialogRole;\n transitionStatus: Signal<RdxTransitionStatus>;\n trigger: Signal<HTMLElement | undefined>;\n triggers: Signal<HTMLElement[]>;\n payload: Signal<unknown>;\n /** Whether this dialog is nested in another; constant, fixed at construction. */\n nested: boolean;\n nestedDialogOpen: Signal<boolean>;\n setTitleId: (id: string | undefined) => void;\n setDescriptionId: (id: string | undefined) => void;\n registerTransitionElement: (element: HTMLElement) => () => void;\n registerTrigger: (id: string, trigger: HTMLElement, payload: () => unknown) => () => void;\n open: (\n trigger?: HTMLElement,\n payload?: unknown,\n triggerId?: string,\n reason?: RdxDialogOpenChangeReason,\n event?: Event\n ) => void;\n close: (reason?: RdxDialogOpenChangeReason, event?: Event) => void;\n toggle: (triggerId: string, trigger: HTMLElement, payload?: unknown, event?: Event) => void;\n}\n\nexport const [injectRdxDialogRootContext, provideRdxDialogRootContext] = createContext<RdxDialogRootContext>(\n 'RdxDialogRootContext',\n 'components/dialog'\n);\n\n/**\n * Groups all parts of the dialog.\n */\n@Directive({\n selector: '[rdxDialogRoot]',\n exportAs: 'rdxDialogRoot',\n providers: [provideRdxDialogRootContext(context)]\n})\nexport class RdxDialogRoot {\n private readonly destroyRef = inject(DestroyRef);\n private readonly parentRoot = inject(RdxDialogRoot, { optional: true, skipSelf: true });\n private readonly variant = inject(RDX_DIALOG_VARIANT);\n private hasAppliedDefaultOpen = false;\n private hasAppliedDefaultTriggerId = false;\n private readonly registeredTriggers = new Map<string, RdxDialogRegisteredTrigger>();\n\n private readonly transition = useTransitionStatus((open) => this.emitOpenChangeComplete(open));\n readonly transitionStatus = this.transition.status;\n readonly registerTransitionElement = this.transition.registerElement;\n\n /**\n * Whether the dialog is currently open.\n */\n readonly open = model(false);\n\n /**\n * Whether the dialog is initially open.\n */\n readonly defaultOpen = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * ID of the trigger associated with a controlled dialog.\n */\n readonly triggerId = model<string | null>(null);\n\n /**\n * ID of the trigger associated with an initially open uncontrolled dialog.\n */\n readonly defaultTriggerId = input<string | null>(null);\n\n /**\n * Determines if the dialog enters a modal state when open.\n * - `true`: focus is trapped, page scroll is locked, outside pointer events are disabled.\n * - `false`: interaction with the rest of the document is allowed.\n * - `'trap-focus'`: focus is trapped, but scroll is not locked and outside pointer events remain enabled.\n */\n readonly modal = input<RdxDialogModal, BooleanInput | 'trap-focus'>(true, { transform: transformModal });\n\n /**\n * Determines whether the dialog should close on outside clicks.\n */\n readonly disablePointerDismissal = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Associates this root with detached trigger elements rendered outside of it.\n */\n readonly handle = input<RdxDialogHandle<any>>();\n\n /**\n * Event handler called when the dialog is opened or closed.\n */\n readonly onOpenChange = output<RdxDialogOpenChange>();\n\n /**\n * Event handler called after any animations complete when the dialog is opened or closed.\n */\n readonly onOpenChangeComplete = output<boolean>();\n\n readonly contentId = injectId('rdx-dialog-content-');\n readonly titleId = signal<string | undefined>(undefined);\n readonly descriptionId = signal<string | undefined>(undefined);\n readonly trigger = signal<HTMLElement | undefined>(undefined);\n readonly triggers = signal<HTMLElement[]>([]);\n readonly payload = signal<unknown>(undefined);\n readonly nestedOpenCount = signal(0);\n\n /** Whether this dialog is rendered inside another dialog. Fixed at construction. */\n readonly nested = !!this.parentRoot;\n readonly nestedDialogOpen = computed(() => this.nestedOpenCount() > 0);\n\n /** ARIA role, fixed at construction by the dialog variant (`alertdialog` for alert dialogs). */\n readonly role = this.variant.role;\n\n /** Effective modality: the variant can pin it to `true` regardless of the `modal` input. */\n readonly effectiveModal = computed<RdxDialogModal>(() => (this.variant.forceModal ? true : this.modal()));\n /** Effective dismissal flag: disabled when the input asks, or when the variant forces it (alerts). */\n readonly effectiveDisablePointerDismissal = computed(\n () => this.disablePointerDismissal() || this.variant.forcePointerDismissalDisabled\n );\n\n constructor() {\n let previousOpen = this.open();\n\n effect(() => {\n const defaultOpen = this.defaultOpen();\n\n if (!this.hasAppliedDefaultOpen && defaultOpen) {\n this.hasAppliedDefaultOpen = true;\n this.open.set(defaultOpen);\n }\n });\n\n effect(() => {\n const defaultTriggerId = this.defaultTriggerId();\n\n if (!this.hasAppliedDefaultTriggerId && defaultTriggerId !== null) {\n this.hasAppliedDefaultTriggerId = true;\n this.triggerId.set(defaultTriggerId);\n }\n });\n\n effect(() => {\n const triggerId = this.triggerId();\n untracked(() => this.syncTriggerId(triggerId));\n });\n\n effect(() => {\n const open = this.open();\n\n if (open !== previousOpen) {\n previousOpen = open;\n untracked(() => this.transition.start(open));\n }\n });\n\n // Report nested open state to the parent dialog so it can apply data-nested-dialog-open.\n effect((onCleanup) => {\n const open = this.open();\n\n if (open && this.parentRoot) {\n onCleanup(untracked(() => this.parentRoot!.openNestedChild()));\n }\n });\n\n effect((onCleanup) => {\n const handle = this.handle();\n\n if (handle) {\n onCleanup(untracked(() => handle.registerRoot(contextFor(this))));\n }\n });\n }\n\n show(\n trigger = this.trigger(),\n payload?: unknown,\n triggerId?: string,\n reason: RdxDialogOpenChangeReason = 'none',\n event = new Event('dialog.open-change')\n ) {\n if (trigger) {\n this.trigger.set(trigger);\n }\n\n if (triggerId !== undefined) {\n this.triggerId.set(triggerId);\n }\n\n // Only adopt the payload when a trigger context is actually provided, so a bare\n // imperative re-show on an already-open dialog doesn't clobber the live payload.\n if (trigger !== undefined || payload !== undefined) {\n this.payload.set(payload);\n }\n\n if (this.open()) {\n return;\n }\n\n this.open.set(true);\n this.emitOpenChange(true, reason, event);\n }\n\n close(reason: RdxDialogOpenChangeReason = 'none', event = new Event('dialog.open-change')) {\n if (!this.open()) {\n return;\n }\n\n this.open.set(false);\n this.emitOpenChange(false, reason, event);\n }\n\n toggle(triggerId: string, trigger: HTMLElement, payload?: unknown, event = new Event('dialog.open-change')) {\n if (this.open() && this.trigger() === trigger) {\n this.close('trigger-press', event);\n return;\n }\n\n this.show(trigger, payload, triggerId, 'trigger-press', event);\n }\n\n registerTrigger(id: string, trigger: HTMLElement, payload: () => unknown) {\n this.registeredTriggers.set(id, { element: trigger, payload });\n this.triggers.update((triggers) => (triggers.includes(trigger) ? triggers : [...triggers, trigger]));\n\n if (this.triggerId() === id || (!this.trigger() && this.triggerId() === null)) {\n this.trigger.set(trigger);\n this.payload.set(payload());\n }\n\n return () => {\n if (this.registeredTriggers.get(id)?.element === trigger) {\n this.registeredTriggers.delete(id);\n }\n\n this.triggers.update((triggers) => triggers.filter((candidate) => candidate !== trigger));\n\n if (!this.destroyRef.destroyed && this.trigger() === trigger) {\n const next = this.registeredTriggers.entries().next().value;\n\n if (this.triggerId() !== null) {\n this.triggerId.set(next?.[0] ?? null);\n }\n\n this.trigger.set(next?.[1].element);\n this.payload.set(next?.[1].payload());\n\n // Intentionally do NOT close when the last trigger unregisters (unlike popover):\n // a controlled / imperatively-opened dialog must survive its trigger unmounting.\n }\n };\n }\n\n /** Increments the nested-open counter and returns a release callback that decrements it. */\n openNestedChild() {\n this.nestedOpenCount.update((count) => count + 1);\n return () => this.nestedOpenCount.update((count) => count - 1);\n }\n\n private syncTriggerId(triggerId: string | null) {\n if (triggerId === null) {\n // Controlled triggerId cleared: drop the active trigger so stale state doesn't linger.\n this.trigger.set(undefined);\n this.payload.set(undefined);\n return;\n }\n\n const trigger = this.registeredTriggers.get(triggerId);\n\n if (trigger && trigger.element !== this.trigger()) {\n this.trigger.set(trigger.element);\n this.payload.set(trigger.payload());\n }\n }\n\n private emitOpenChange(open: boolean, reason: RdxDialogOpenChangeReason, event: Event) {\n this.onOpenChange.emit({\n open,\n triggerId: this.triggerId(),\n trigger: this.trigger(),\n reason,\n event\n });\n }\n\n private emitOpenChangeComplete(open: boolean) {\n if (!this.destroyRef.destroyed) {\n this.onOpenChangeComplete.emit(open);\n }\n }\n}\n\nfunction contextFor(root: RdxDialogRoot): RdxDialogRootContext {\n return {\n contentId: root.contentId,\n titleId: root.titleId.asReadonly(),\n descriptionId: root.descriptionId.asReadonly(),\n isOpen: root.open,\n modal: root.effectiveModal,\n disablePointerDismissal: root.effectiveDisablePointerDismissal,\n role: root.role,\n transitionStatus: root.transitionStatus,\n trigger: root.trigger.asReadonly(),\n triggers: root.triggers.asReadonly(),\n payload: root.payload.asReadonly(),\n nested: root.nested,\n nestedDialogOpen: root.nestedDialogOpen,\n setTitleId: (id: string | undefined) => root.titleId.set(id),\n setDescriptionId: (id: string | undefined) => root.descriptionId.set(id),\n registerTransitionElement: (element) => root.registerTransitionElement(element),\n registerTrigger: (id, trigger, payload) => root.registerTrigger(id, trigger, payload),\n open: (trigger, payload, triggerId, reason, event) => root.show(trigger, payload, triggerId, reason, event),\n close: (reason, event) => root.close(reason, event),\n toggle: (triggerId, trigger, payload, event) => root.toggle(triggerId, trigger, payload, event)\n };\n}\n","import { Directive } from '@angular/core';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * An overlay displayed beneath the dialog popup.\n */\n@Directive({\n selector: '[rdxDialogBackdrop]',\n exportAs: 'rdxDialogBackdrop',\n host: {\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined',\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-nested]': 'rootContext.nested ? \"\" : undefined',\n '[attr.data-nested-dialog-open]': 'rootContext.nestedDialogOpen() ? \"\" : undefined'\n }\n})\nexport class RdxDialogBackdrop {\n protected readonly rootContext = injectRdxDialogRootContext();\n}\n","import { Directive } from '@angular/core';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * A button that closes the dialog.\n */\n@Directive({\n selector: 'button[rdxDialogClose]',\n exportAs: 'rdxDialogClose',\n host: {\n type: 'button',\n '(click)': 'rootContext.close(\"close-press\", $event)'\n }\n})\nexport class RdxDialogClose {\n protected readonly rootContext = injectRdxDialogRootContext();\n}\n","import { DestroyRef, Directive, inject } from '@angular/core';\nimport { injectId } from '@radix-ng/primitives/core';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * An accessible description for the dialog.\n */\n@Directive({\n selector: '[rdxDialogDescription]',\n exportAs: 'rdxDialogDescription',\n host: {\n '[id]': 'id'\n }\n})\nexport class RdxDialogDescription {\n private readonly rootContext = injectRdxDialogRootContext();\n readonly id = injectId('rdx-dialog-description-');\n\n constructor() {\n this.rootContext.setDescriptionId(this.id);\n inject(DestroyRef).onDestroy(() => this.rootContext.setDescriptionId(undefined));\n }\n}\n","import { computed, DestroyRef, Directive, ElementRef, inject } from '@angular/core';\nimport { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';\nimport { useScrollLock } from '@radix-ng/primitives/core';\nimport { provideRdxDismissableLayerConfig, RdxDismissableLayer } from '@radix-ng/primitives/dismissable-layer';\nimport { provideRdxFocusScopeConfig, RdxFocusScope } from '@radix-ng/primitives/focus-scope';\nimport { injectRdxDialogRootContext, RdxDialogOpenChangeReason } from './dialog-root';\n\n/**\n * A container for the dialog contents.\n */\n@Directive({\n selector: '[rdxDialogPopup]',\n exportAs: 'rdxDialogPopup',\n hostDirectives: [RdxDismissableLayer, RdxFocusScope],\n providers: [\n provideRdxDismissableLayerConfig(() => {\n const rootContext = injectRdxDialogRootContext();\n\n return {\n disableOutsidePointerEvents: computed(() => rootContext.modal() === true)\n };\n }),\n provideRdxFocusScopeConfig(() => {\n const rootContext = injectRdxDialogRootContext();\n\n return {\n trapped: computed(() => rootContext.modal() === 'trap-focus' || rootContext.modal() === true)\n };\n })\n ],\n host: {\n '[attr.role]': 'rootContext.role',\n '[attr.aria-modal]': 'rootContext.modal() === true ? \"true\" : undefined',\n '[attr.aria-describedby]': 'rootContext.descriptionId()',\n '[attr.aria-labelledby]': 'rootContext.titleId()',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined',\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-nested]': 'rootContext.nested ? \"\" : undefined',\n '[attr.data-nested-dialog-open]': 'rootContext.nestedDialogOpen() ? \"\" : undefined',\n '[id]': 'rootContext.contentId'\n }\n})\nexport class RdxDialogPopup {\n protected readonly rootContext = injectRdxDialogRootContext();\n private readonly dismissableLayer = inject(RdxDismissableLayer);\n private readonly focusScope = inject(RdxFocusScope);\n private dismissDetails: { reason: RdxDialogOpenChangeReason; event: Event } = {\n reason: 'none',\n event: new Event('dialog.dismiss')\n };\n\n /**\n * Event handler called when the escape key is down. Can be prevented.\n */\n readonly escapeKeyDown = outputFromObservable(outputToObservable(this.dismissableLayer.escapeKeyDown));\n\n /**\n * Event handler called when a pointerdown event happens outside of the popup. Can be prevented.\n */\n readonly pointerDownOutside = outputFromObservable(outputToObservable(this.dismissableLayer.pointerDownOutside));\n\n /**\n * Event handler called when focus moves outside of the popup. Can be prevented.\n */\n readonly focusOutside = outputFromObservable(outputToObservable(this.dismissableLayer.focusOutside));\n\n /**\n * Event handler called when an interaction happens outside of the popup. Can be prevented.\n */\n readonly interactOutside = outputFromObservable(outputToObservable(this.dismissableLayer.interactOutside));\n\n /**\n * Event handler called before focus moves into the popup. Can be prevented.\n */\n readonly openAutoFocus = outputFromObservable(outputToObservable(this.focusScope.mountAutoFocus));\n\n /**\n * Event handler called before focus returns after the popup is removed. Can be prevented.\n */\n readonly closeAutoFocus = outputFromObservable(outputToObservable(this.focusScope.unmountAutoFocus));\n\n constructor() {\n // Lock for the popup's whole mounted lifetime, not just while `isOpen()`. The popup is kept\n // mounted by the portal-presence machine until the exit `@keyframes` finish, then destroyed\n // (firing `useScrollLock`'s `onDestroy` unlock). Gating on `isOpen()` would restore the page\n // scrollbar the instant the dialog starts closing, reflowing the page by the scrollbar width\n // mid-animation — a visible judder. Holding the lock until unmount defers that to after the\n // animation, when the dialog is already gone.\n useScrollLock(computed(() => this.rootContext.modal() === true));\n\n const unregisterTransitionElement = this.rootContext.registerTransitionElement(\n inject<ElementRef<HTMLElement>>(ElementRef).nativeElement\n );\n\n inject(DestroyRef).onDestroy(unregisterTransitionElement);\n\n this.dismissableLayer.pointerDownOutside.subscribe((event) => {\n this.dismissDetails = { reason: 'outside-press', event };\n\n // A pointerdown on the trigger is an \"outside\" press relative to the portaled popup.\n // Let the trigger's own click toggle the dialog instead of dismissing here (which would\n // close and then immediately reopen).\n if (this.isEventOnTrigger(event)) {\n event.preventDefault();\n }\n });\n\n this.dismissableLayer.focusOutside.subscribe((event) => {\n this.dismissDetails = { reason: 'focus-out', event };\n\n if (this.isEventOnTrigger(event)) {\n event.preventDefault();\n }\n });\n\n this.dismissableLayer.escapeKeyDown.subscribe((event) => {\n this.dismissDetails = { reason: 'escape-key', event };\n });\n\n this.dismissableLayer.dismiss.subscribe(() => {\n const { reason, event } = this.dismissDetails;\n this.dismissDetails = { reason: 'none', event: new Event('dialog.dismiss') };\n\n // When pointer dismissal is disabled, keep the dialog open on outside interactions.\n // Escape always closes (standard a11y behavior).\n if ((reason === 'outside-press' || reason === 'focus-out') && this.rootContext.disablePointerDismissal()) {\n return;\n }\n\n this.rootContext.close(reason, event);\n });\n }\n\n private isEventOnTrigger(event: Event): boolean {\n const target = event.target as Node | null;\n return !!target && this.rootContext.triggers().some((trigger) => trigger.contains(target));\n }\n}\n","import { Directive, input, isDevMode } from '@angular/core';\nimport { RdxPortalContainer, RdxPortalPresence } from '@radix-ng/primitives/portal';\nimport { provideRdxPresenceContext } from '@radix-ng/primitives/presence';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * Structural directive that teleports the dialog content (backdrop + popup) into a container (default\n * `document.body`) while the dialog is open, and keeps it mounted until the CSS exit `@keyframes` on\n * every root element finish.\n *\n * Dialog has two root nodes (backdrop + popup), so use the explicit `<ng-template rdxDialogPortal>`\n * form. Pass `[container]` to portal into a different element.\n */\n@Directive({\n selector: 'ng-template[rdxDialogPortal]',\n exportAs: 'rdxDialogPortal',\n hostDirectives: [{ directive: RdxPortalPresence, inputs: ['container'] }],\n providers: [provideRdxPresenceContext(() => ({ present: injectRdxDialogRootContext().isOpen }))]\n})\nexport class RdxDialogPortal {\n /**\n * Optional container to portal the content into. Defaults to `document.body`. Declared here (and\n * forwarded to the composed {@link RdxPortalPresence}) so that the drawer and alert-dialog portals\n * can re-expose it through their own `hostDirectives`.\n */\n readonly container = input<RdxPortalContainer>();\n}\n\n/**\n * Dev-mode guard: `rdxDialogPortal` used to be an attribute directive on a `<div>`. It is now\n * structural, so the old `<div rdxDialogPortal>` markup would silently stop portaling — fail loudly\n * instead.\n */\n@Directive({\n selector: '[rdxDialogPortal]:not(ng-template)'\n})\nexport class RdxDialogPortalMisuseGuard {\n constructor() {\n if (isDevMode()) {\n throw new Error(\n '[rdxDialogPortal] is now a structural directive. ' +\n 'Use `<ng-template rdxDialogPortal>` around the backdrop and popup. ' +\n 'rdxDialogPortalPresence has been removed. See https://radix-ng.com/components/dialog.md'\n );\n }\n }\n}\n","import { DestroyRef, Directive, inject } from '@angular/core';\nimport { injectId } from '@radix-ng/primitives/core';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * An accessible title for the dialog.\n */\n@Directive({\n selector: '[rdxDialogTitle]',\n exportAs: 'rdxDialogTitle',\n host: {\n '[id]': 'id'\n }\n})\nexport class RdxDialogTitle {\n private readonly rootContext = injectRdxDialogRootContext();\n readonly id = injectId('rdx-dialog-title-');\n\n constructor() {\n this.rootContext.setTitleId(this.id);\n inject(DestroyRef).onDestroy(() => this.rootContext.setTitleId(undefined));\n }\n}\n","import { booleanAttribute, computed, Directive, effect, ElementRef, inject, input, untracked } from '@angular/core';\nimport { injectId } from '@radix-ng/primitives/core';\nimport { RdxDialogHandle } from './dialog-handle';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * A button that opens the dialog.\n */\n@Directive({\n selector: 'button[rdxDialogTrigger]',\n exportAs: 'rdxDialogTrigger',\n host: {\n type: 'button',\n '[attr.aria-haspopup]': '\"dialog\"',\n '[attr.aria-controls]': 'rootContext()?.contentId',\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n '[attr.data-popup-open]': 'isOpen() ? \"\" : undefined',\n '[attr.disabled]': 'disabled() ? \"\" : undefined',\n '[id]': 'triggerId()',\n '(click)': 'handleClick($event)'\n }\n})\nexport class RdxDialogTrigger {\n private readonly parentRootContext = injectRdxDialogRootContext(true);\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Associates this trigger with a detached dialog root.\n */\n readonly handle = input<RdxDialogHandle<any>>();\n\n /**\n * Data associated with this trigger while it is active.\n */\n readonly payload = input<unknown>();\n\n /**\n * ID used to identify this trigger when opening a detached or controlled dialog.\n */\n readonly id = input<string>();\n\n /**\n * Whether the trigger should ignore user interaction.\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n private readonly generatedId = injectId('rdx-dialog-trigger-');\n protected readonly triggerId = computed(() => this.id() ?? this.generatedId);\n protected readonly rootContext = computed(() => this.handle()?.context() ?? this.parentRootContext);\n protected readonly isOpen = computed(\n () => this.rootContext()?.isOpen() === true && this.rootContext()?.trigger() === this.elementRef.nativeElement\n );\n\n constructor() {\n effect((onCleanup) => {\n const handle = this.handle();\n\n if (handle) {\n onCleanup(\n untracked(() =>\n handle.registerTrigger(this.triggerId(), this.elementRef.nativeElement, () => this.payload())\n )\n );\n } else if (this.parentRootContext) {\n onCleanup(\n untracked(() =>\n this.parentRootContext!.registerTrigger(this.triggerId(), this.elementRef.nativeElement, () =>\n this.payload()\n )\n )\n );\n }\n });\n }\n\n protected handleClick(event: MouseEvent) {\n if (this.disabled()) {\n return;\n }\n\n if (this.handle()) {\n this.handle()!.toggle(this.triggerId(), event);\n } else {\n this.parentRootContext?.toggle(this.triggerId(), this.elementRef.nativeElement, this.payload(), event);\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * A positioning container for the dialog popup that can be made scrollable.\n *\n * Place it inside the portal, around the popup, to scroll the popup when it is taller than the\n * viewport (outside scroll). Pointer events pass through while the dialog is closed.\n */\n@Directive({\n selector: '[rdxDialogViewport]',\n exportAs: 'rdxDialogViewport',\n host: {\n role: 'presentation',\n '[style.pointer-events]': 'rootContext.isOpen() ? null : \"none\"',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined',\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-nested]': 'rootContext.nested ? \"\" : undefined',\n '[attr.data-nested-dialog-open]': 'rootContext.nestedDialogOpen() ? \"\" : undefined'\n }\n})\nexport class RdxDialogViewport {\n protected readonly rootContext = injectRdxDialogRootContext();\n}\n","import { computed, signal } from '@angular/core';\nimport type { RdxDialogRootContext } from './dialog-root';\n\ninterface RdxDialogHandleTrigger<Payload> {\n element: HTMLElement;\n payload: () => Payload | undefined;\n}\n\n/**\n * Connects a dialog root with trigger elements rendered elsewhere in the DOM, and exposes\n * imperative `open`/`close`/`toggle` methods.\n */\nexport class RdxDialogHandle<Payload = unknown> {\n private readonly rootContext = signal<RdxDialogRootContext | undefined>(undefined);\n private readonly triggers = new Map<string, RdxDialogHandleTrigger<Payload>>();\n private readonly rootTriggerCleanups = new Map<string, () => void>();\n\n readonly isOpen = computed(() => this.rootContext()?.isOpen() ?? false);\n\n open(triggerId: string) {\n const trigger = this.triggers.get(triggerId);\n\n if (!trigger) {\n throw new Error(`No dialog trigger registered with id \"${triggerId}\".`);\n }\n\n this.rootContext()?.open(\n trigger.element,\n trigger.payload(),\n triggerId,\n 'imperative-action',\n new Event('dialog.open')\n );\n }\n\n close() {\n this.rootContext()?.close('imperative-action', new Event('dialog.close'));\n }\n\n toggle(triggerId: string, event = new Event('dialog.toggle')) {\n const trigger = this.triggers.get(triggerId);\n\n if (!trigger) {\n throw new Error(`No dialog trigger registered with id \"${triggerId}\".`);\n }\n\n this.rootContext()?.toggle(triggerId, trigger.element, trigger.payload(), event);\n }\n\n registerRoot(rootContext: RdxDialogRootContext) {\n this.rootContext.set(rootContext);\n this.triggers.forEach((trigger, id) => {\n this.rootTriggerCleanups.set(id, rootContext.registerTrigger(id, trigger.element, trigger.payload));\n });\n\n return () => {\n if (this.rootContext() === rootContext) {\n this.rootTriggerCleanups.forEach((cleanup) => cleanup());\n this.rootTriggerCleanups.clear();\n this.rootContext.set(undefined);\n }\n };\n }\n\n registerTrigger(id: string, trigger: HTMLElement, payload: () => Payload | undefined) {\n this.rootTriggerCleanups.get(id)?.();\n this.triggers.set(id, { element: trigger, payload });\n const unregisterFromRoot = this.rootContext()?.registerTrigger(id, trigger, payload);\n\n if (unregisterFromRoot) {\n this.rootTriggerCleanups.set(id, unregisterFromRoot);\n }\n\n return () => {\n this.rootTriggerCleanups.get(id)?.();\n this.rootTriggerCleanups.delete(id);\n\n if (this.triggers.get(id)?.element === trigger) {\n this.triggers.delete(id);\n }\n };\n }\n\n context() {\n return this.rootContext();\n }\n}\n\nexport function createRdxDialogHandle<Payload = unknown>() {\n return new RdxDialogHandle<Payload>();\n}\n","import { NgModule } from '@angular/core';\nimport { RdxDialogBackdrop } from './src/dialog-backdrop';\nimport { RdxDialogClose } from './src/dialog-close';\nimport { RdxDialogDescription } from './src/dialog-description';\nimport { RdxDialogPopup } from './src/dialog-popup';\nimport { RdxDialogPortal, RdxDialogPortalMisuseGuard } from './src/dialog-portal';\nimport { RdxDialogRoot } from './src/dialog-root';\nimport { RdxDialogTitle } from './src/dialog-title';\nimport { RdxDialogTrigger } from './src/dialog-trigger';\nimport { RdxDialogViewport } from './src/dialog-viewport';\n\nexport * from './src/dialog-backdrop';\nexport * from './src/dialog-close';\nexport * from './src/dialog-description';\nexport * from './src/dialog-handle';\nexport * from './src/dialog-popup';\nexport * from './src/dialog-portal';\nexport * from './src/dialog-root';\nexport * from './src/dialog-title';\nexport * from './src/dialog-trigger';\nexport * from './src/dialog-variant';\nexport * from './src/dialog-viewport';\n\nexport const dialogImports = [\n RdxDialogRoot,\n RdxDialogTrigger,\n RdxDialogPortal,\n RdxDialogPortalMisuseGuard,\n RdxDialogBackdrop,\n RdxDialogViewport,\n RdxDialogPopup,\n RdxDialogTitle,\n RdxDialogDescription,\n RdxDialogClose\n];\n\n@NgModule({\n imports: [...dialogImports],\n exports: [...dialogImports]\n})\nexport class RdxDialogModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"radix-ng-primitives-dialog.mjs","sources":["../../../packages/primitives/dialog/src/dialog-variant.ts","../../../packages/primitives/dialog/src/dialog-root.ts","../../../packages/primitives/dialog/src/dialog-backdrop.ts","../../../packages/primitives/dialog/src/dialog-close.ts","../../../packages/primitives/dialog/src/dialog-description.ts","../../../packages/primitives/dialog/src/dialog-popup.ts","../../../packages/primitives/dialog/src/dialog-portal.ts","../../../packages/primitives/dialog/src/dialog-title.ts","../../../packages/primitives/dialog/src/dialog-trigger.ts","../../../packages/primitives/dialog/src/dialog-viewport.ts","../../../packages/primitives/dialog/src/dialog-handle.ts","../../../packages/primitives/dialog/index.ts","../../../packages/primitives/dialog/radix-ng-primitives-dialog.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\n\nexport type RdxDialogRole = 'dialog' | 'alertdialog';\n\n/**\n * Behavioral profile for a dialog, supplied by a composing root (e.g. alert-dialog, drawer) to\n * specialize the shared Dialog without new public dialog inputs.\n *\n * These are *force-only* overrides: a variant uses them to pin behavior regardless of the public\n * inputs (as alert-dialog does). A variant that wants a configurable default instead simply leaves\n * the flags off and lets the composing root proxy the `modal` / `disablePointerDismissal` inputs —\n * that is how Drawer stays modal-by-default while remaining user-overridable.\n *\n * The three concerns are kept independent on purpose so future variants can mix them freely\n * (e.g. a modal, non-dismissable drawer that is still `role=\"dialog\"`):\n * - `role` — ARIA role rendered on the popup.\n * - `forceModal` — pin modality to `true` regardless of the `modal` input.\n * - `forcePointerDismissalDisabled` — disable outside-press / focus-out dismissal (Escape still closes).\n */\nexport interface RdxDialogVariant {\n role: RdxDialogRole;\n forceModal: boolean;\n forcePointerDismissalDisabled: boolean;\n}\n\nconst DEFAULT_VARIANT: RdxDialogVariant = {\n role: 'dialog',\n forceModal: false,\n forcePointerDismissalDisabled: false\n};\n\nexport const RDX_DIALOG_VARIANT = new InjectionToken<RdxDialogVariant>('RdxDialogVariant', {\n factory: () => DEFAULT_VARIANT\n});\n\nexport function provideRdxDialogVariant(variant: Partial<RdxDialogVariant>): Provider {\n return { provide: RDX_DIALOG_VARIANT, useValue: { ...DEFAULT_VARIANT, ...variant } };\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n Signal,\n signal,\n untracked\n} from '@angular/core';\nimport {\n BooleanInput,\n createCancelableChangeEventDetails,\n createContext,\n createFloatingRootContext,\n injectId,\n provideFloatingRootContext,\n provideFloatingTree,\n RdxCancelableChangeEventDetails,\n RdxFloatingRootContext,\n RdxTransitionStatus,\n useTransitionStatus\n} from '@radix-ng/primitives/core';\nimport { RdxDialogHandle } from './dialog-handle';\nimport { RDX_DIALOG_VARIANT, RdxDialogRole } from './dialog-variant';\n\nexport type RdxDialogModal = boolean | 'trap-focus';\n\nexport type RdxDialogOpenChangeReason =\n | 'trigger-press'\n | 'close-press'\n | 'outside-press'\n | 'focus-out'\n | 'escape-key'\n | 'swipe'\n | 'imperative-action'\n | 'none';\n\nexport type RdxDialogOpenChangeEventDetails = RdxCancelableChangeEventDetails<RdxDialogOpenChangeReason>;\n\nexport interface RdxDialogOpenChange {\n open: boolean;\n triggerId: string | null;\n trigger: HTMLElement | undefined;\n reason: RdxDialogOpenChangeReason;\n event: Event;\n eventDetails: RdxDialogOpenChangeEventDetails;\n}\n\ninterface RdxDialogRegisteredTrigger {\n element: HTMLElement;\n payload: () => unknown;\n}\n\nconst transformModal = (value: BooleanInput | 'trap-focus'): RdxDialogModal =>\n value === 'trap-focus' ? value : booleanAttribute(value);\n\nconst context = () => contextFor(inject(RdxDialogRoot));\n\nexport interface RdxDialogRootContext {\n contentId: string;\n titleId: Signal<string | undefined>;\n descriptionId: Signal<string | undefined>;\n isOpen: Signal<boolean>;\n present: Signal<boolean>;\n /** Effective modality (the variant can pin this to `true`). */\n modal: Signal<RdxDialogModal>;\n /** Effective outside-press / focus-out dismissal flag (the variant can force it on). */\n disablePointerDismissal: Signal<boolean>;\n /** ARIA role for the popup; constant, fixed by the variant at construction. */\n role: RdxDialogRole;\n transitionStatus: Signal<RdxTransitionStatus>;\n trigger: Signal<HTMLElement | undefined>;\n triggers: Signal<HTMLElement[]>;\n payload: Signal<unknown>;\n /** Whether this dialog is nested in another; constant, fixed at construction. */\n nested: boolean;\n nestedDialogOpen: Signal<boolean>;\n setTitleId: (id: string | undefined) => void;\n setDescriptionId: (id: string | undefined) => void;\n registerTransitionElement: (element: HTMLElement) => () => void;\n registerTrigger: (id: string, trigger: HTMLElement, payload: () => unknown) => () => void;\n open: (\n trigger?: HTMLElement,\n payload?: unknown,\n triggerId?: string,\n reason?: RdxDialogOpenChangeReason,\n event?: Event\n ) => void;\n close: (reason?: RdxDialogOpenChangeReason, event?: Event) => void;\n toggle: (triggerId: string, trigger: HTMLElement, payload?: unknown, event?: Event) => void;\n}\n\nexport const [injectRdxDialogRootContext, provideRdxDialogRootContext] = createContext<RdxDialogRootContext>(\n 'RdxDialogRootContext',\n 'components/dialog'\n);\n\n/**\n * Groups all parts of the dialog.\n */\n@Directive({\n selector: '[rdxDialogRoot]',\n exportAs: 'rdxDialogRoot',\n providers: [\n provideRdxDialogRootContext(context),\n // New floating foundation (ADR 0015/0017 migration). Inherit-or-create tree so a nested dialog\n // shares its parent's tree; the per-popup root context bridges open / triggers / reference.\n provideFloatingTree(),\n provideFloatingRootContext(() => inject(RdxDialogRoot).floatingContext)\n ]\n})\nexport class RdxDialogRoot {\n private readonly destroyRef = inject(DestroyRef);\n private readonly parentRoot = inject(RdxDialogRoot, { optional: true, skipSelf: true });\n private readonly variant = inject(RDX_DIALOG_VARIANT);\n private hasAppliedDefaultOpen = false;\n private hasAppliedDefaultTriggerId = false;\n private readonly registeredTriggers = new Map<string, RdxDialogRegisteredTrigger>();\n\n private readonly transition = useTransitionStatus((open) => this.emitOpenChangeComplete(open));\n readonly transitionStatus = this.transition.status;\n readonly registerTransitionElement = this.transition.registerElement;\n\n /**\n * Whether the dialog is currently open.\n */\n readonly open = model(false);\n\n /**\n * Whether the dialog is initially open.\n */\n readonly defaultOpen = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * ID of the trigger associated with a controlled dialog.\n */\n readonly triggerId = model<string | null>(null);\n\n /**\n * ID of the trigger associated with an initially open uncontrolled dialog.\n */\n readonly defaultTriggerId = input<string | null>(null);\n\n /**\n * Determines if the dialog enters a modal state when open.\n * - `true`: focus is trapped, page scroll is locked, outside pointer events are disabled.\n * - `false`: interaction with the rest of the document is allowed.\n * - `'trap-focus'`: focus is trapped, but scroll is not locked and outside pointer events remain enabled.\n */\n readonly modal = input<RdxDialogModal, BooleanInput | 'trap-focus'>(true, { transform: transformModal });\n\n /**\n * Determines whether the dialog should close on outside clicks.\n */\n readonly disablePointerDismissal = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Associates this root with detached trigger elements rendered outside of it.\n */\n readonly handle = input<RdxDialogHandle<any>>();\n\n /**\n * Event handler called when the dialog is opened or closed.\n */\n readonly onOpenChange = output<RdxDialogOpenChange>();\n\n /**\n * Event handler called after any animations complete when the dialog is opened or closed.\n */\n readonly onOpenChangeComplete = output<boolean>();\n\n readonly contentId = injectId('rdx-dialog-content-');\n readonly titleId = signal<string | undefined>(undefined);\n readonly descriptionId = signal<string | undefined>(undefined);\n readonly trigger = signal<HTMLElement | undefined>(undefined);\n readonly triggers = signal<HTMLElement[]>([]);\n readonly payload = signal<unknown>(undefined);\n readonly nestedOpenCount = signal(0);\n private readonly preventUnmountOnClose = signal(false);\n\n readonly present = computed(() => this.open() || this.preventUnmountOnClose());\n\n /** Whether this dialog is rendered inside another dialog. Fixed at construction. */\n readonly nested = !!this.parentRoot;\n readonly nestedDialogOpen = computed(() => this.nestedOpenCount() > 0);\n\n /** ARIA role, fixed at construction by the dialog variant (`alertdialog` for alert dialogs). */\n readonly role = this.variant.role;\n\n /** Effective modality: the variant can pin it to `true` regardless of the `modal` input. */\n readonly effectiveModal = computed<RdxDialogModal>(() => (this.variant.forceModal ? true : this.modal()));\n /** Effective dismissal flag: disabled when the input asks, or when the variant forces it (alerts). */\n readonly effectiveDisablePointerDismissal = computed(\n () => this.disablePointerDismissal() || this.variant.forcePointerDismissalDisabled\n );\n\n /**\n * The shared per-popup floating context (ADR 0015 §1) — `open` mirrors the dialog's open state, the\n * trigger registry is bridged from {@link registerTrigger}, and the reference / floating elements are\n * set by the trigger / popup. The new dismissal + focus engines read this once the popup migrates.\n */\n readonly floatingContext: RdxFloatingRootContext = createFloatingRootContext({\n ownerDocument: inject(ElementRef).nativeElement.ownerDocument,\n open: () => this.open()\n });\n\n constructor() {\n // Keep the floating context's reference element in sync with the active trigger.\n effect(() => this.floatingContext.setReferenceElement(this.trigger() ?? null));\n\n effect(() => {\n if (this.open() && this.preventUnmountOnClose()) {\n this.preventUnmountOnClose.set(false);\n }\n });\n\n let previousOpen = this.open();\n\n effect(() => {\n const defaultOpen = this.defaultOpen();\n\n if (!this.hasAppliedDefaultOpen && defaultOpen) {\n this.hasAppliedDefaultOpen = true;\n this.open.set(defaultOpen);\n }\n });\n\n effect(() => {\n const defaultTriggerId = this.defaultTriggerId();\n\n if (!this.hasAppliedDefaultTriggerId && defaultTriggerId !== null) {\n this.hasAppliedDefaultTriggerId = true;\n this.triggerId.set(defaultTriggerId);\n }\n });\n\n effect(() => {\n const triggerId = this.triggerId();\n untracked(() => this.syncTriggerId(triggerId));\n });\n\n effect(() => {\n const open = this.open();\n\n if (open !== previousOpen) {\n previousOpen = open;\n untracked(() => this.transition.start(open));\n }\n });\n\n // Report nested open state to the parent dialog so it can apply data-nested-dialog-open.\n effect((onCleanup) => {\n const open = this.open();\n\n if (open && this.parentRoot) {\n onCleanup(untracked(() => this.parentRoot!.openNestedChild()));\n }\n });\n\n effect((onCleanup) => {\n const handle = this.handle();\n\n if (handle) {\n onCleanup(untracked(() => handle.registerRoot(contextFor(this))));\n }\n });\n }\n\n show(\n trigger = this.trigger(),\n payload?: unknown,\n triggerId?: string,\n reason: RdxDialogOpenChangeReason = 'none',\n event = new Event('dialog.open-change')\n ) {\n const shouldAdoptPayload = trigger !== undefined || payload !== undefined;\n\n if (this.open()) {\n if (trigger) {\n this.trigger.set(trigger);\n }\n\n if (triggerId !== undefined) {\n this.triggerId.set(triggerId);\n }\n\n // Only adopt the payload when a trigger context is actually provided, so a bare\n // imperative re-show on an already-open dialog doesn't clobber the live payload.\n if (shouldAdoptPayload) {\n this.payload.set(payload);\n }\n\n return;\n }\n\n const change = this.createOpenChangeEvent(true, reason, event, trigger, triggerId ?? this.triggerId());\n this.onOpenChange.emit(change.payload);\n\n if (change.eventDetails.isCanceled()) {\n return;\n }\n\n if (trigger) {\n this.trigger.set(trigger);\n }\n\n if (triggerId !== undefined) {\n this.triggerId.set(triggerId);\n }\n\n if (shouldAdoptPayload) {\n this.payload.set(payload);\n }\n\n this.preventUnmountOnClose.set(false);\n this.open.set(true);\n this.floatingContext.events.emit('openchange', { open: true, reason, event: change.eventDetails.event });\n }\n\n close(reason: RdxDialogOpenChangeReason = 'none', event = new Event('dialog.open-change')) {\n if (!this.open()) {\n return;\n }\n\n const change = this.createOpenChangeEvent(false, reason, event, this.trigger(), this.triggerId());\n this.onOpenChange.emit(change.payload);\n\n if (change.eventDetails.isCanceled()) {\n return;\n }\n\n this.preventUnmountOnClose.set(change.shouldPreventUnmountOnClose());\n this.open.set(false);\n this.floatingContext.events.emit('openchange', { open: false, reason, event: change.eventDetails.event });\n }\n\n toggle(triggerId: string, trigger: HTMLElement, payload?: unknown, event = new Event('dialog.open-change')) {\n if (this.open() && this.trigger() === trigger) {\n this.close('trigger-press', event);\n return;\n }\n\n this.show(trigger, payload, triggerId, 'trigger-press', event);\n }\n\n registerTrigger(id: string, trigger: HTMLElement, payload: () => unknown) {\n this.registeredTriggers.set(id, { element: trigger, payload });\n this.triggers.update((triggers) => (triggers.includes(trigger) ? triggers : [...triggers, trigger]));\n // Bridge into the floating context's trigger registry — the new dismissal/focus engines read it\n // for inside-element checks (a press/focus on the trigger counts as inside, ADR 0015 §2).\n this.floatingContext.triggers.add(trigger);\n\n if (this.triggerId() === id || (!this.trigger() && this.triggerId() === null)) {\n this.trigger.set(trigger);\n this.payload.set(payload());\n }\n\n return () => {\n if (this.registeredTriggers.get(id)?.element === trigger) {\n this.registeredTriggers.delete(id);\n }\n\n this.triggers.update((triggers) => triggers.filter((candidate) => candidate !== trigger));\n this.floatingContext.triggers.delete(trigger);\n\n if (!this.destroyRef.destroyed && this.trigger() === trigger) {\n const next = this.registeredTriggers.entries().next().value;\n\n if (this.triggerId() !== null) {\n this.triggerId.set(next?.[0] ?? null);\n }\n\n this.trigger.set(next?.[1].element);\n this.payload.set(next?.[1].payload());\n\n // Intentionally do NOT close when the last trigger unregisters (unlike popover):\n // a controlled / imperatively-opened dialog must survive its trigger unmounting.\n }\n };\n }\n\n /** Increments the nested-open counter and returns a release callback that decrements it. */\n openNestedChild() {\n this.nestedOpenCount.update((count) => count + 1);\n return () => this.nestedOpenCount.update((count) => count - 1);\n }\n\n private syncTriggerId(triggerId: string | null) {\n if (triggerId === null) {\n // Controlled triggerId cleared: drop the active trigger so stale state doesn't linger.\n this.trigger.set(undefined);\n this.payload.set(undefined);\n return;\n }\n\n const trigger = this.registeredTriggers.get(triggerId);\n\n if (trigger && trigger.element !== this.trigger()) {\n this.trigger.set(trigger.element);\n this.payload.set(trigger.payload());\n }\n }\n\n private createOpenChangeEvent(\n open: boolean,\n reason: RdxDialogOpenChangeReason,\n event: Event,\n trigger: HTMLElement | undefined,\n triggerId: string | null\n ) {\n const change = createCancelableChangeEventDetails(reason, event, trigger);\n\n return {\n eventDetails: change.eventDetails,\n shouldPreventUnmountOnClose: change.shouldPreventUnmountOnClose,\n payload: {\n open,\n triggerId,\n trigger: change.eventDetails.trigger,\n reason: change.eventDetails.reason,\n event: change.eventDetails.event,\n eventDetails: change.eventDetails\n } satisfies RdxDialogOpenChange\n };\n }\n\n private emitOpenChangeComplete(open: boolean) {\n if (!this.destroyRef.destroyed) {\n this.onOpenChangeComplete.emit(open);\n }\n }\n}\n\nfunction contextFor(root: RdxDialogRoot): RdxDialogRootContext {\n return {\n contentId: root.contentId,\n titleId: root.titleId.asReadonly(),\n descriptionId: root.descriptionId.asReadonly(),\n isOpen: root.open,\n present: root.present,\n modal: root.effectiveModal,\n disablePointerDismissal: root.effectiveDisablePointerDismissal,\n role: root.role,\n transitionStatus: root.transitionStatus,\n trigger: root.trigger.asReadonly(),\n triggers: root.triggers.asReadonly(),\n payload: root.payload.asReadonly(),\n nested: root.nested,\n nestedDialogOpen: root.nestedDialogOpen,\n setTitleId: (id: string | undefined) => root.titleId.set(id),\n setDescriptionId: (id: string | undefined) => root.descriptionId.set(id),\n registerTransitionElement: (element) => root.registerTransitionElement(element),\n registerTrigger: (id, trigger, payload) => root.registerTrigger(id, trigger, payload),\n open: (trigger, payload, triggerId, reason, event) => root.show(trigger, payload, triggerId, reason, event),\n close: (reason, event) => root.close(reason, event),\n toggle: (triggerId, trigger, payload, event) => root.toggle(triggerId, trigger, payload, event)\n };\n}\n","import { booleanAttribute, DestroyRef, Directive, ElementRef, inject, input } from '@angular/core';\nimport { BooleanInput, RDX_FLOATING_ROOT_CONTEXT } from '@radix-ng/primitives/core';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * An overlay displayed beneath the dialog popup.\n *\n * Decorative-only, so it carries `role=\"presentation\"` (Base UI `DialogBackdrop`). By default a **nested**\n * dialog renders no backdrop — the parent's already dims the page; stacking a second one double-darkens\n * and intercepts the parent's outside-press. Set `forceRender` to opt back in.\n */\n@Directive({\n selector: '[rdxDialogBackdrop]',\n exportAs: 'rdxDialogBackdrop',\n host: {\n role: 'presentation',\n '[hidden]': 'rootContext.nested && !forceRender()',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined',\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-nested]': 'rootContext.nested ? \"\" : undefined',\n '[attr.data-nested-dialog-open]': 'rootContext.nestedDialogOpen() ? \"\" : undefined'\n }\n})\nexport class RdxDialogBackdrop {\n protected readonly rootContext = injectRdxDialogRootContext();\n\n /** Render the backdrop even for a nested dialog (off by default, matching Base UI). */\n readonly forceRender = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n constructor() {\n // The backdrop is a second portal root (a body sibling of the popup). It is registered as owned DOM\n // footprint for primitive-specific checks, but it is not a marker/aria keep-set member.\n const floatingContext = inject(RDX_FLOATING_ROOT_CONTEXT, { optional: true });\n if (floatingContext) {\n const host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n floatingContext.addFloatingElement(host);\n inject(DestroyRef).onDestroy(() => floatingContext.removeFloatingElement(host));\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * A button that closes the dialog.\n */\n@Directive({\n selector: 'button[rdxDialogClose]',\n exportAs: 'rdxDialogClose',\n host: {\n type: 'button',\n '(click)': 'rootContext.close(\"close-press\", $event)'\n }\n})\nexport class RdxDialogClose {\n protected readonly rootContext = injectRdxDialogRootContext();\n}\n","import { DestroyRef, Directive, inject } from '@angular/core';\nimport { injectId } from '@radix-ng/primitives/core';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * An accessible description for the dialog.\n */\n@Directive({\n selector: '[rdxDialogDescription]',\n exportAs: 'rdxDialogDescription',\n host: {\n '[id]': 'id'\n }\n})\nexport class RdxDialogDescription {\n private readonly rootContext = injectRdxDialogRootContext();\n readonly id = injectId('rdx-dialog-description-');\n\n constructor() {\n this.rootContext.setDescriptionId(this.id);\n inject(DestroyRef).onDestroy(() => this.rootContext.setDescriptionId(undefined));\n }\n}\n","import { afterNextRender, computed, DestroyRef, Directive, ElementRef, inject, Injector, output } from '@angular/core';\nimport { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';\nimport {\n RDX_FLOATING_REGISTRATION,\n RDX_FLOATING_ROOT_CONTEXT,\n RdxFloatingNodeRegistration,\n setupInternalBackdrop,\n useScrollLock\n} from '@radix-ng/primitives/core';\nimport { RdxDismiss, RdxOutsidePressDomEvent } from '@radix-ng/primitives/dismissable-layer';\nimport {\n provideFloatingFocusManagerConfig,\n RdxFloatingFocusManager\n} from '@radix-ng/primitives/floating-focus-manager';\nimport { RdxFocusScope } from '@radix-ng/primitives/focus-scope';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/** Composite navigation keys a Dialog popup keeps to itself, so they never reach an enclosing Menu / Composite. */\nconst COMPOSITE_KEYS = new Set(['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'Home', 'End']);\nconst DIALOG_INTERNAL_BACKDROP_ATTR = 'data-rdx-dialog-internal-backdrop';\n\n/**\n * A container for the dialog contents.\n *\n * **ADR 0015/0017 Phase-4 migration — Dialog is the PILOT cutover onto the new floating dismissal +\n * focus engine. Browser-verified** by `apps/visual-regression/tests/dialog.behavior.spec.ts` (trap,\n * initial / return focus, Escape / outside-press / focus-out dismissal, nested-Escape deepest-first,\n * backdrop-not-marked).\n *\n * **Mapping (legacy → new):**\n * - `RdxDismissableLayer` (legacy) → `RdxFloatingNodeRegistration` (registers the tree node) +\n * `RdxDismiss` (Escape / outside-press; reads the root context + node).\n * - `RdxFocusScope` (direct) → `RdxFloatingFocusManager` (composes the reworked focus scope; trap +\n * markOthers + close-on-focus-out), driven by `provideFloatingFocusManagerConfig`.\n * - `disableOutsidePointerEvents` → the focus manager's `inert` pass marks outside elements\n * non-interactive for a modal (finding #4), scoped to siblings of the popup's ancestor chain instead\n * of a global `body { pointer-events: none }` lock — so the popup needs no `pointer-events: auto`.\n * - focus-out close moved from the dismissal capability (`focusOutside: () => false`) to the manager\n * (`manager.focusOut`), per ADR 0017 §3.\n * - `isEventOnTrigger` preventDefault → removed: the trigger is in `context.triggers`, so the engine\n * treats a press/focus on it as **inside** (no close-then-reopen).\n *\n * **Parity notes:**\n * - **Lifecycle split (resolved 2026-06-16):** `enabled` is `open || transitionStatus === 'ending'`, so\n * the trap / return-focus machinery survives the exit animation, while the manager's marker + isolation\n * passes additionally key off `open` and release at close-start (Base UI `markOthers` gating).\n * - **`trap-focus` split:** the manager traps focus for `modal === true` and `'trap-focus'`, but applies\n * real `inert` isolation only for `modal === true`, matching Base UI's public contract that\n * `modal=\"trap-focus\"` leaves outside pointer interaction enabled.\n * - **`returnFocus` orchestration (resolved 2026-06-16):** the manager now owns the return-focus *target*\n * via the focus scope's `returnFocus` config seam (the scope owns the *timing* — its queued post-unmount\n * frame). Dialog leaves it at the default (`returnFocus: true` → return to the element focused before\n * open), so behavior is unchanged; a consumer can now also pass `false` / an element / a callback.\n */\n@Directive({\n selector: '[rdxDialogPopup]',\n exportAs: 'rdxDialogPopup',\n hostDirectives: [RdxFloatingNodeRegistration, RdxFloatingFocusManager],\n providers: [\n provideFloatingFocusManagerConfig(() => {\n const rootContext = injectRdxDialogRootContext();\n return {\n // Trap for a modal or trap-focus dialog (Base UI `modal={modal !== false}`).\n modal: () => rootContext.modal() === true || rootContext.modal() === 'trap-focus',\n // Full modal blocks outside pointer interaction; `trap-focus` only traps focus.\n inert: () => rootContext.modal() === true,\n // Active for the whole MOUNTED lifetime — including an explicit\n // `preventUnmountOnClose()` cycle after the exit transition — matching Base UI's\n // `FloatingFocusManager disabled={!mounted}` (NOT `open`) for trap/return-focus.\n // Marker + isolation are additionally gated on `open` inside the manager.\n enabled: () => rootContext.present(),\n closeOnFocusOut: () => !rootContext.disablePointerDismissal()\n };\n })\n ],\n host: {\n '[attr.role]': 'rootContext.role',\n '[attr.aria-modal]': 'rootContext.modal() === true ? \"true\" : undefined',\n '[attr.aria-describedby]': 'rootContext.descriptionId()',\n '[attr.aria-labelledby]': 'rootContext.titleId()',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined',\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-nested]': 'rootContext.nested ? \"\" : undefined',\n '[attr.data-nested-dialog-open]': 'rootContext.nestedDialogOpen() ? \"\" : undefined',\n '[id]': 'rootContext.contentId',\n '(keydown)': 'onKeyDown($event)'\n }\n})\nexport class RdxDialogPopup {\n protected readonly rootContext = injectRdxDialogRootContext();\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly floatingContext = inject(RDX_FLOATING_ROOT_CONTEXT);\n private readonly registration = inject(RDX_FLOATING_REGISTRATION, { optional: true });\n private readonly focusManager = inject(RdxFloatingFocusManager);\n private readonly focusScope = inject(RdxFocusScope);\n\n /** Event handler called when the escape key is down. Can be prevented. */\n readonly escapeKeyDown = output<KeyboardEvent>();\n\n /** Event handler called when a pointerdown event happens outside of the popup. Can be prevented. */\n readonly pointerDownOutside = output<RdxOutsidePressDomEvent>();\n\n /** Event handler called when focus moves outside of the popup. Can be prevented. */\n readonly focusOutside = output<FocusEvent>();\n\n /** Event handler called when an interaction (pointer / focus) happens outside of the popup. */\n readonly interactOutside = output<RdxOutsidePressDomEvent | FocusEvent>();\n\n /** Event handler called before focus moves into the popup. Can be prevented. */\n readonly openAutoFocus = outputFromObservable(outputToObservable(this.focusScope.mountAutoFocus));\n\n /** Event handler called before focus returns after the popup is removed. Can be prevented. */\n readonly closeAutoFocus = outputFromObservable(outputToObservable(this.focusScope.unmountAutoFocus));\n\n constructor() {\n // The popup element is this layer's floating element (inside-surface for containment checks).\n this.floatingContext.setFloatingElement(this.host);\n\n // Scroll lock follows Base UI (`open && modal === true`): released at close-start so the page is\n // scrollable again as the exit animation plays. Background pointer/AT isolation is no longer a\n // global body lock — the focus manager applies real `inert` to outside elements (finding #4).\n useScrollLock(\n computed(() => this.rootContext.modal() === true && this.rootContext.isOpen()),\n {\n referenceElement: () => this.host\n }\n );\n\n const unregisterTransitionElement = this.rootContext.registerTransitionElement(this.host);\n inject(DestroyRef).onDestroy(unregisterTransitionElement);\n\n // Base UI always renders an internal backdrop for a fully modal dialog. It is invisible and exists\n // even when consumers also render `rdxDialogBackdrop`: outside pointer events land on this owned\n // target instead of being swallowed by inert page content.\n const injector = inject(Injector);\n afterNextRender(() =>\n setupInternalBackdrop(this.host, injector, {\n marker: DIALOG_INTERNAL_BACKDROP_ATTR,\n isOpen: () => this.rootContext.isOpen(),\n shouldRender: () => this.rootContext.modal() === true,\n cutout: () => this.host.closest('[rdxDialogViewport]'),\n passThrough: () => this.host.closest('[rdxDialogViewport]') !== null\n })\n );\n\n // Dismissal (Base UI Dialog outside-press policy): Escape always closes; an outside press closes\n // only the **topmost** dialog (a parent with an open nested dialog never self-closes) and only when\n // pointer dismissal is enabled. A fully modal dialog uses the internal backdrop and intentional\n // outside-press timing (click, not pointerdown). Focus-out is owned by the focus manager (below).\n new RdxDismiss(this.floatingContext, () => this.registration?.node() ?? null, {\n escapeKey: () => true,\n outsidePress: () => this.isTopmost() && !this.rootContext.disablePointerDismissal(),\n outsidePressEvent: () => (this.rootContext.modal() === true ? 'intentional' : 'sloppy'),\n focusOutside: () => false,\n onEscapeKeyDown: (event) => this.escapeKeyDown.emit(event),\n onPointerDownOutside: (event) => {\n this.pointerDownOutside.emit(event);\n this.interactOutside.emit(event);\n },\n onDismiss: (reason, event) => {\n this.rootContext.close(reason === 'escape-key' ? 'escape-key' : 'outside-press', event);\n }\n });\n\n // Focus-out close (ADR 0017 §3) — the manager emits when focus leaves a non-modal dialog to an\n // unrelated node; re-expose as `focusOutside` (preventable) and close unless vetoed.\n this.focusManager.focusOut.subscribe((event) => {\n this.focusOutside.emit(event);\n this.interactOutside.emit(event);\n if (!event.defaultPrevented) {\n this.rootContext.close('focus-out', event);\n }\n });\n }\n\n /** This dialog is the topmost (deepest open) one — it has no open nested dialog above it. */\n private isTopmost(): boolean {\n return this.rootContext.isOpen() && !this.rootContext.nestedDialogOpen();\n }\n\n /**\n * Composite navigation keys (arrows / Home / End) are kept inside the dialog (Base UI `DialogPopup`):\n * a dialog opened from inside a Menu / Menubar / Composite must not let an arrow press bubble out and\n * move the outer collection's active item.\n */\n protected onKeyDown(event: KeyboardEvent): void {\n if (COMPOSITE_KEYS.has(event.key)) {\n event.stopPropagation();\n }\n }\n}\n","import { Directive, input, isDevMode } from '@angular/core';\nimport { rdxDevError } from '@radix-ng/primitives/core';\nimport { RdxPortalContainer, RdxPortalPresence } from '@radix-ng/primitives/portal';\nimport { provideRdxPresenceContext } from '@radix-ng/primitives/presence';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * Structural directive that teleports the dialog content (backdrop + popup) into a container (default\n * `document.body`) while the dialog is open, and keeps it mounted until the CSS exit `@keyframes` on\n * every root element finish.\n *\n * Dialog has two root nodes (backdrop + popup), so use the explicit `<ng-template rdxDialogPortal>`\n * form. Pass `[container]` to portal into a different element.\n */\n@Directive({\n selector: 'ng-template[rdxDialogPortal]',\n exportAs: 'rdxDialogPortal',\n hostDirectives: [{ directive: RdxPortalPresence, inputs: ['container'] }],\n providers: [provideRdxPresenceContext(() => ({ present: injectRdxDialogRootContext().present }))]\n})\nexport class RdxDialogPortal {\n /**\n * Optional container to portal the content into. Defaults to `document.body`. Declared here (and\n * forwarded to the composed {@link RdxPortalPresence}) so that the drawer and alert-dialog portals\n * can re-expose it through their own `hostDirectives`.\n */\n readonly container = input<RdxPortalContainer>();\n}\n\n/**\n * Dev-mode guard: `rdxDialogPortal` used to be an attribute directive on a `<div>`. It is now\n * structural, so the old `<div rdxDialogPortal>` markup would silently stop portaling — fail loudly\n * instead.\n */\n@Directive({\n selector: '[rdxDialogPortal]:not(ng-template)'\n})\nexport class RdxDialogPortalMisuseGuard {\n constructor() {\n if (isDevMode()) {\n rdxDevError(\n 'dialog/portal-on-element',\n '`rdxDialogPortal` is now a structural directive. ' +\n 'Use `<ng-template rdxDialogPortal>` around the backdrop and popup. ' +\n 'rdxDialogPortalPresence has been removed.',\n 'components/dialog'\n );\n }\n }\n}\n","import { DestroyRef, Directive, inject } from '@angular/core';\nimport { injectId } from '@radix-ng/primitives/core';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * An accessible title for the dialog.\n */\n@Directive({\n selector: '[rdxDialogTitle]',\n exportAs: 'rdxDialogTitle',\n host: {\n '[id]': 'id'\n }\n})\nexport class RdxDialogTitle {\n private readonly rootContext = injectRdxDialogRootContext();\n readonly id = injectId('rdx-dialog-title-');\n\n constructor() {\n this.rootContext.setTitleId(this.id);\n inject(DestroyRef).onDestroy(() => this.rootContext.setTitleId(undefined));\n }\n}\n","import { booleanAttribute, computed, Directive, effect, ElementRef, inject, input, untracked } from '@angular/core';\nimport { injectId } from '@radix-ng/primitives/core';\nimport { RdxDialogHandle } from './dialog-handle';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * A button that opens the dialog.\n */\n@Directive({\n selector: 'button[rdxDialogTrigger]',\n exportAs: 'rdxDialogTrigger',\n host: {\n type: 'button',\n '[attr.aria-haspopup]': '\"dialog\"',\n '[attr.aria-controls]': 'rootContext()?.contentId',\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n '[attr.data-popup-open]': 'isOpen() ? \"\" : undefined',\n '[attr.disabled]': 'disabled() ? \"\" : undefined',\n '[id]': 'triggerId()',\n '(click)': 'handleClick($event)'\n }\n})\nexport class RdxDialogTrigger {\n private readonly parentRootContext = injectRdxDialogRootContext(true);\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Associates this trigger with a detached dialog root.\n */\n readonly handle = input<RdxDialogHandle<any>>();\n\n /**\n * Data associated with this trigger while it is active.\n */\n readonly payload = input<unknown>();\n\n /**\n * ID used to identify this trigger when opening a detached or controlled dialog.\n */\n readonly id = input<string>();\n\n /**\n * Whether the trigger should ignore user interaction.\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n private readonly generatedId = injectId('rdx-dialog-trigger-');\n protected readonly triggerId = computed(() => this.id() ?? this.generatedId);\n protected readonly rootContext = computed(() => this.handle()?.context() ?? this.parentRootContext);\n protected readonly isOpen = computed(\n () => this.rootContext()?.isOpen() === true && this.rootContext()?.trigger() === this.elementRef.nativeElement\n );\n\n constructor() {\n effect((onCleanup) => {\n const handle = this.handle();\n\n if (handle) {\n onCleanup(\n untracked(() =>\n handle.registerTrigger(this.triggerId(), this.elementRef.nativeElement, () => this.payload())\n )\n );\n } else if (this.parentRootContext) {\n onCleanup(\n untracked(() =>\n this.parentRootContext!.registerTrigger(this.triggerId(), this.elementRef.nativeElement, () =>\n this.payload()\n )\n )\n );\n }\n });\n }\n\n protected handleClick(event: MouseEvent) {\n if (this.disabled()) {\n return;\n }\n\n if (this.handle()) {\n this.handle()!.toggle(this.triggerId(), event);\n } else {\n this.parentRootContext?.toggle(this.triggerId(), this.elementRef.nativeElement, this.payload(), event);\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectRdxDialogRootContext } from './dialog-root';\n\n/**\n * A positioning container for the dialog popup that can be made scrollable.\n *\n * Place it inside the portal, around the popup, to scroll the popup when it is taller than the\n * viewport (outside scroll). Pointer events pass through while the dialog is closed.\n */\n@Directive({\n selector: '[rdxDialogViewport]',\n exportAs: 'rdxDialogViewport',\n host: {\n role: 'presentation',\n '[style.pointer-events]': 'rootContext.isOpen() ? null : \"none\"',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-ending-style]': 'rootContext.transitionStatus() === \"ending\" ? \"\" : undefined',\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-starting-style]': 'rootContext.transitionStatus() === \"starting\" ? \"\" : undefined',\n '[attr.data-state]': 'rootContext.isOpen() ? \"open\" : \"closed\"',\n '[attr.data-nested]': 'rootContext.nested ? \"\" : undefined',\n '[attr.data-nested-dialog-open]': 'rootContext.nestedDialogOpen() ? \"\" : undefined'\n }\n})\nexport class RdxDialogViewport {\n protected readonly rootContext = injectRdxDialogRootContext();\n}\n","import { computed, signal } from '@angular/core';\nimport type { RdxDialogRootContext } from './dialog-root';\n\ninterface RdxDialogHandleTrigger<Payload> {\n element: HTMLElement;\n payload: () => Payload | undefined;\n}\n\n/**\n * Connects a dialog root with trigger elements rendered elsewhere in the DOM, and exposes\n * imperative `open`/`close`/`toggle` methods.\n */\nexport class RdxDialogHandle<Payload = unknown> {\n private readonly rootContext = signal<RdxDialogRootContext | undefined>(undefined);\n private readonly triggers = new Map<string, RdxDialogHandleTrigger<Payload>>();\n private readonly rootTriggerCleanups = new Map<string, () => void>();\n\n readonly isOpen = computed(() => this.rootContext()?.isOpen() ?? false);\n\n open(triggerId: string) {\n const trigger = this.triggers.get(triggerId);\n\n if (!trigger) {\n throw new Error(`No dialog trigger registered with id \"${triggerId}\".`);\n }\n\n this.rootContext()?.open(\n trigger.element,\n trigger.payload(),\n triggerId,\n 'imperative-action',\n new Event('dialog.open')\n );\n }\n\n close() {\n this.rootContext()?.close('imperative-action', new Event('dialog.close'));\n }\n\n toggle(triggerId: string, event = new Event('dialog.toggle')) {\n const trigger = this.triggers.get(triggerId);\n\n if (!trigger) {\n throw new Error(`No dialog trigger registered with id \"${triggerId}\".`);\n }\n\n this.rootContext()?.toggle(triggerId, trigger.element, trigger.payload(), event);\n }\n\n registerRoot(rootContext: RdxDialogRootContext) {\n this.rootContext.set(rootContext);\n this.triggers.forEach((trigger, id) => {\n this.rootTriggerCleanups.set(id, rootContext.registerTrigger(id, trigger.element, trigger.payload));\n });\n\n return () => {\n if (this.rootContext() === rootContext) {\n this.rootTriggerCleanups.forEach((cleanup) => cleanup());\n this.rootTriggerCleanups.clear();\n this.rootContext.set(undefined);\n }\n };\n }\n\n registerTrigger(id: string, trigger: HTMLElement, payload: () => Payload | undefined) {\n this.rootTriggerCleanups.get(id)?.();\n this.triggers.set(id, { element: trigger, payload });\n const unregisterFromRoot = this.rootContext()?.registerTrigger(id, trigger, payload);\n\n if (unregisterFromRoot) {\n this.rootTriggerCleanups.set(id, unregisterFromRoot);\n }\n\n return () => {\n this.rootTriggerCleanups.get(id)?.();\n this.rootTriggerCleanups.delete(id);\n\n if (this.triggers.get(id)?.element === trigger) {\n this.triggers.delete(id);\n }\n };\n }\n\n context() {\n return this.rootContext();\n }\n}\n\nexport function createRdxDialogHandle<Payload = unknown>() {\n return new RdxDialogHandle<Payload>();\n}\n","import { NgModule } from '@angular/core';\nimport { RdxDialogBackdrop } from './src/dialog-backdrop';\nimport { RdxDialogClose } from './src/dialog-close';\nimport { RdxDialogDescription } from './src/dialog-description';\nimport { RdxDialogPopup } from './src/dialog-popup';\nimport { RdxDialogPortal, RdxDialogPortalMisuseGuard } from './src/dialog-portal';\nimport { RdxDialogRoot } from './src/dialog-root';\nimport { RdxDialogTitle } from './src/dialog-title';\nimport { RdxDialogTrigger } from './src/dialog-trigger';\nimport { RdxDialogViewport } from './src/dialog-viewport';\n\nexport * from './src/dialog-backdrop';\nexport * from './src/dialog-close';\nexport * from './src/dialog-description';\nexport * from './src/dialog-handle';\nexport * from './src/dialog-popup';\nexport * from './src/dialog-portal';\nexport * from './src/dialog-root';\nexport * from './src/dialog-title';\nexport * from './src/dialog-trigger';\nexport * from './src/dialog-variant';\nexport * from './src/dialog-viewport';\n\nexport const dialogImports = [\n RdxDialogRoot,\n RdxDialogTrigger,\n RdxDialogPortal,\n RdxDialogPortalMisuseGuard,\n RdxDialogBackdrop,\n RdxDialogViewport,\n RdxDialogPopup,\n RdxDialogTitle,\n RdxDialogDescription,\n RdxDialogClose\n];\n\n@NgModule({\n imports: [...dialogImports],\n exports: [...dialogImports]\n})\nexport class RdxDialogModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, computed, inject, input, Directive } from '@angular/core';
3
+
4
+ const RDX_DIRECTION = new InjectionToken('RDX_DIRECTION', {
5
+ providedIn: 'root',
6
+ factory: () => computed(() => 'ltr')
7
+ });
8
+ function resolveDirection(value) {
9
+ return typeof value === 'function' ? value() : value;
10
+ }
11
+ /**
12
+ * Provides a primitive behavior direction through Angular DI.
13
+ */
14
+ function provideDirection(direction) {
15
+ return {
16
+ provide: RDX_DIRECTION,
17
+ useFactory: () => computed(() => resolveDirection(direction))
18
+ };
19
+ }
20
+ function directionProviderSignal() {
21
+ return inject(RdxDirectionProvider).direction;
22
+ }
23
+ /**
24
+ * Provides a reading direction for descendant primitives.
25
+ *
26
+ * This controls primitive behavior only. Set the native `dir` attribute or CSS `direction`
27
+ * separately when the DOM itself should render right-to-left.
28
+ */
29
+ class RdxDirectionProvider {
30
+ constructor() {
31
+ this.parentDirection = inject(RDX_DIRECTION, { skipSelf: true });
32
+ /**
33
+ * The reading direction for descendant primitives.
34
+ *
35
+ * @defaultValue 'ltr'
36
+ */
37
+ this.directionInput = input(undefined, { ...(ngDevMode ? { debugName: "directionInput" } : /* istanbul ignore next */ {}), alias: 'direction' });
38
+ /** Alias for Angular templates that prefer `[dir]`. */
39
+ this.dirInput = input(undefined, { ...(ngDevMode ? { debugName: "dirInput" } : /* istanbul ignore next */ {}), alias: 'dir' });
40
+ this.direction = computed(() => this.directionInput() ?? this.dirInput() ?? this.parentDirection(), ...(ngDevMode ? [{ debugName: "direction" }] : /* istanbul ignore next */ []));
41
+ }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxDirectionProvider, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
43
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: RdxDirectionProvider, isStandalone: true, selector: "[rdxDirectionProvider]", inputs: { directionInput: { classPropertyName: "directionInput", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, dirInput: { classPropertyName: "dirInput", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: RDX_DIRECTION, useFactory: directionProviderSignal }], exportAs: ["rdxDirectionProvider"], ngImport: i0 }); }
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxDirectionProvider, decorators: [{
46
+ type: Directive,
47
+ args: [{
48
+ selector: '[rdxDirectionProvider]',
49
+ exportAs: 'rdxDirectionProvider',
50
+ providers: [{ provide: RDX_DIRECTION, useFactory: directionProviderSignal }]
51
+ }]
52
+ }], propDecorators: { directionInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "direction", required: false }] }], dirInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "dir", required: false }] }] } });
53
+ /**
54
+ * Reads the effective primitive direction.
55
+ *
56
+ * Priority: explicit local input, nearest DI direction provider, global `provideRadixNG({ dir })`.
57
+ */
58
+ function injectDirection(localDirection) {
59
+ const direction = inject(RDX_DIRECTION);
60
+ return computed(() => localDirection?.() ?? direction());
61
+ }
62
+
63
+ const directionProviderImports = [RdxDirectionProvider];
64
+
65
+ /**
66
+ * Generated bundle index. Do not edit.
67
+ */
68
+
69
+ export { RDX_DIRECTION, RdxDirectionProvider, directionProviderImports, injectDirection, provideDirection };
70
+ //# sourceMappingURL=radix-ng-primitives-direction-provider.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radix-ng-primitives-direction-provider.mjs","sources":["../../../packages/primitives/direction-provider/src/direction-provider.ts","../../../packages/primitives/direction-provider/index.ts","../../../packages/primitives/direction-provider/radix-ng-primitives-direction-provider.ts"],"sourcesContent":["import { computed, Directive, inject, InjectionToken, input, Provider, Signal } from '@angular/core';\nimport { Direction } from '@radix-ng/primitives/core';\n\nexport type RdxDirectionValue = Direction | Signal<Direction> | (() => Direction);\n\nexport const RDX_DIRECTION = new InjectionToken<Signal<Direction>>('RDX_DIRECTION', {\n providedIn: 'root',\n factory: () => computed(() => 'ltr')\n});\n\nfunction resolveDirection(value: RdxDirectionValue): Direction {\n return typeof value === 'function' ? value() : value;\n}\n\n/**\n * Provides a primitive behavior direction through Angular DI.\n */\nexport function provideDirection(direction: RdxDirectionValue): Provider {\n return {\n provide: RDX_DIRECTION,\n useFactory: () => computed(() => resolveDirection(direction))\n };\n}\n\nfunction directionProviderSignal(): Signal<Direction> {\n return inject(RdxDirectionProvider).direction;\n}\n\n/**\n * Provides a reading direction for descendant primitives.\n *\n * This controls primitive behavior only. Set the native `dir` attribute or CSS `direction`\n * separately when the DOM itself should render right-to-left.\n */\n@Directive({\n selector: '[rdxDirectionProvider]',\n exportAs: 'rdxDirectionProvider',\n providers: [{ provide: RDX_DIRECTION, useFactory: directionProviderSignal }]\n})\nexport class RdxDirectionProvider {\n private readonly parentDirection = inject(RDX_DIRECTION, { skipSelf: true });\n\n /**\n * The reading direction for descendant primitives.\n *\n * @defaultValue 'ltr'\n */\n readonly directionInput = input<Direction | undefined>(undefined, { alias: 'direction' });\n\n /** Alias for Angular templates that prefer `[dir]`. */\n readonly dirInput = input<Direction | undefined>(undefined, { alias: 'dir' });\n\n readonly direction: Signal<Direction> = computed(\n () => this.directionInput() ?? this.dirInput() ?? this.parentDirection()\n );\n}\n\n/**\n * Reads the effective primitive direction.\n *\n * Priority: explicit local input, nearest DI direction provider, global `provideRadixNG({ dir })`.\n */\nexport function injectDirection(localDirection?: Signal<Direction | undefined>): Signal<Direction> {\n const direction = inject(RDX_DIRECTION);\n\n return computed(() => localDirection?.() ?? direction());\n}\n","import { RdxDirectionProvider } from './src/direction-provider';\n\nexport * from './src/direction-provider';\n\nexport const directionProviderImports = [RdxDirectionProvider];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAKa,aAAa,GAAG,IAAI,cAAc,CAAoB,eAAe,EAAE;AAChF,IAAA,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,MAAM,QAAQ,CAAC,MAAM,KAAK;AACtC,CAAA;AAED,SAAS,gBAAgB,CAAC,KAAwB,EAAA;AAC9C,IAAA,OAAO,OAAO,KAAK,KAAK,UAAU,GAAG,KAAK,EAAE,GAAG,KAAK;AACxD;AAEA;;AAEG;AACG,SAAU,gBAAgB,CAAC,SAA4B,EAAA;IACzD,OAAO;AACH,QAAA,OAAO,EAAE,aAAa;AACtB,QAAA,UAAU,EAAE,MAAM,QAAQ,CAAC,MAAM,gBAAgB,CAAC,SAAS,CAAC;KAC/D;AACL;AAEA,SAAS,uBAAuB,GAAA;AAC5B,IAAA,OAAO,MAAM,CAAC,oBAAoB,CAAC,CAAC,SAAS;AACjD;AAEA;;;;;AAKG;MAMU,oBAAoB,CAAA;AALjC,IAAA,WAAA,GAAA;QAMqB,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE5E;;;;AAIG;QACM,IAAA,CAAA,cAAc,GAAG,KAAK,CAAwB,SAAS,sFAAI,KAAK,EAAE,WAAW,EAAA,CAAG;;QAGhF,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAwB,SAAS,gFAAI,KAAK,EAAE,KAAK,EAAA,CAAG;QAEpE,IAAA,CAAA,SAAS,GAAsB,QAAQ,CAC5C,MAAM,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAC3E;AACJ,IAAA;8GAhBY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAFlB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,uBAAuB,EAAE,CAAC,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEnE,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE,sBAAsB;oBAChC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,uBAAuB,EAAE;AAC9E,iBAAA;;AAmBD;;;;AAIG;AACG,SAAU,eAAe,CAAC,cAA8C,EAAA;AAC1E,IAAA,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC;AAEvC,IAAA,OAAO,QAAQ,CAAC,MAAM,cAAc,IAAI,IAAI,SAAS,EAAE,CAAC;AAC5D;;AC9DO,MAAM,wBAAwB,GAAG,CAAC,oBAAoB;;ACJ7D;;AAEG;;;;"}