@tailng-ui/primitives 0.11.0 → 0.12.0
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.
- package/README.md +97 -11
- package/package.json +1 -1
- package/src/lib/feedback/empty/tng-empty.d.ts.map +1 -1
- package/src/lib/feedback/empty/tng-empty.js +5 -0
- package/src/lib/feedback/empty/tng-empty.js.map +1 -1
- package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts.map +1 -1
- package/src/lib/feedback/progress-bar/tng-progress-bar.js +2 -0
- package/src/lib/feedback/progress-bar/tng-progress-bar.js.map +1 -1
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts.map +1 -1
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.js +1 -0
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.js.map +1 -1
- package/src/lib/feedback/skeleton/tng-skeleton.d.ts.map +1 -1
- package/src/lib/feedback/skeleton/tng-skeleton.js +1 -0
- package/src/lib/feedback/skeleton/tng-skeleton.js.map +1 -1
- package/src/lib/feedback/toast/tng-toast.d.ts.map +1 -1
- package/src/lib/feedback/toast/tng-toast.js +2 -0
- package/src/lib/feedback/toast/tng-toast.js.map +1 -1
- package/src/lib/form/checkbox/tng-checkbox.d.ts.map +1 -1
- package/src/lib/form/checkbox/tng-checkbox.js +1 -0
- package/src/lib/form/checkbox/tng-checkbox.js.map +1 -1
- package/src/lib/form/chips/tng-chips.d.ts.map +1 -1
- package/src/lib/form/chips/tng-chips.js +3 -0
- package/src/lib/form/chips/tng-chips.js.map +1 -1
- package/src/lib/form/combobox/tng-combobox.d.ts.map +1 -1
- package/src/lib/form/combobox/tng-combobox.js +1 -0
- package/src/lib/form/combobox/tng-combobox.js.map +1 -1
- package/src/lib/form/input-otp/tng-input-otp.d.ts.map +1 -1
- package/src/lib/form/input-otp/tng-input-otp.js +1 -0
- package/src/lib/form/input-otp/tng-input-otp.js.map +1 -1
- package/src/lib/form/label/tng-label.d.ts.map +1 -1
- package/src/lib/form/label/tng-label.js +1 -0
- package/src/lib/form/label/tng-label.js.map +1 -1
- package/src/lib/form/multiselect/tng-multiselect.d.ts.map +1 -1
- package/src/lib/form/multiselect/tng-multiselect.js +1 -0
- package/src/lib/form/multiselect/tng-multiselect.js.map +1 -1
- package/src/lib/form/radio/tng-radio.d.ts.map +1 -1
- package/src/lib/form/radio/tng-radio.js +1 -0
- package/src/lib/form/radio/tng-radio.js.map +1 -1
- package/src/lib/form/slider/tng-slider.d.ts.map +1 -1
- package/src/lib/form/slider/tng-slider.js +1 -0
- package/src/lib/form/slider/tng-slider.js.map +1 -1
- package/src/lib/form/switch/tng-switch.d.ts.map +1 -1
- package/src/lib/form/switch/tng-switch.js +1 -0
- package/src/lib/form/switch/tng-switch.js.map +1 -1
- package/src/lib/form/toggle/tng-toggle.d.ts.map +1 -1
- package/src/lib/form/toggle/tng-toggle.js +1 -0
- package/src/lib/form/toggle/tng-toggle.js.map +1 -1
- package/src/lib/form/toggle-group/tng-toggle-group.d.ts.map +1 -1
- package/src/lib/form/toggle-group/tng-toggle-group.js +1 -0
- package/src/lib/form/toggle-group/tng-toggle-group.js.map +1 -1
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts.map +1 -1
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js +1 -0
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js.map +1 -1
- package/src/lib/layout/card/tng-card.d.ts.map +1 -1
- package/src/lib/layout/card/tng-card.js +10 -0
- package/src/lib/layout/card/tng-card.js.map +1 -1
- package/src/lib/layout/collapsible/tng-collapsible.d.ts.map +1 -1
- package/src/lib/layout/collapsible/tng-collapsible.js +3 -0
- package/src/lib/layout/collapsible/tng-collapsible.js.map +1 -1
- package/src/lib/layout/grid/tng-grid.d.ts.map +1 -1
- package/src/lib/layout/grid/tng-grid.js +1 -0
- package/src/lib/layout/grid/tng-grid.js.map +1 -1
- package/src/lib/layout/separator/tng-separator.d.ts.map +1 -1
- package/src/lib/layout/separator/tng-separator.js +1 -0
- package/src/lib/layout/separator/tng-separator.js.map +1 -1
- package/src/lib/layout/stepper/tng-stepper.d.ts.map +1 -1
- package/src/lib/layout/stepper/tng-stepper.js +1 -0
- package/src/lib/layout/stepper/tng-stepper.js.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.js +5 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.js.map +1 -1
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts.map +1 -1
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js +1 -0
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js.map +1 -1
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts.map +1 -1
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.js +1 -0
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.js.map +1 -1
- package/src/lib/navigation/toolbar/tng-toolbar.d.ts.map +1 -1
- package/src/lib/navigation/toolbar/tng-toolbar.js +1 -0
- package/src/lib/navigation/toolbar/tng-toolbar.js.map +1 -1
- package/src/lib/overlay/tooltip/tng-tooltip.d.ts.map +1 -1
- package/src/lib/overlay/tooltip/tng-tooltip.js +3 -0
- package/src/lib/overlay/tooltip/tng-tooltip.js.map +1 -1
- package/src/lib/utility/avatar/tng-avatar.d.ts.map +1 -1
- package/src/lib/utility/avatar/tng-avatar.js +3 -0
- package/src/lib/utility/avatar/tng-avatar.js.map +1 -1
- package/src/lib/utility/badge/tng-badge.d.ts.map +1 -1
- package/src/lib/utility/badge/tng-badge.js +1 -0
- package/src/lib/utility/badge/tng-badge.js.map +1 -1
- package/src/lib/utility/code-block/tng-code-block.d.ts.map +1 -1
- package/src/lib/utility/code-block/tng-code-block.js +5 -0
- package/src/lib/utility/code-block/tng-code-block.js.map +1 -1
- package/src/lib/utility/copy/tng-copy.d.ts.map +1 -1
- package/src/lib/utility/copy/tng-copy.js +1 -0
- package/src/lib/utility/copy/tng-copy.js.map +1 -1
- package/src/lib/utility/press/tng-press.d.ts.map +1 -1
- package/src/lib/utility/press/tng-press.js +1 -0
- package/src/lib/utility/press/tng-press.js.map +1 -1
- package/src/lib/utility/tag/tng-tag.d.ts.map +1 -1
- package/src/lib/utility/tag/tng-tag.js +3 -0
- package/src/lib/utility/tag/tng-tag.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-badge.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/utility/badge/tng-badge.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n booleanAttribute,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n type OnDestroy,\n Renderer2,\n} from '@angular/core';\n\nconst badgePositions = ['bottom-end', 'bottom-start', 'top-end', 'top-start'] as const;\nconst badgeSizes = ['lg', 'md', 'sm'] as const;\nconst badgeTones = ['danger', 'info', 'neutral', 'success', 'warning'] as const;\nconst badgeVariants = ['outline', 'soft', 'solid'] as const;\n\nconst badgePositionSet = new Set<TngBadgePosition>(badgePositions);\nconst badgeSizeSet = new Set<TngBadgeSize>(badgeSizes);\nconst badgeToneSet = new Set<TngBadgeTone>(badgeTones);\nconst badgeVariantSet = new Set<TngBadgeVariant>(badgeVariants);\n\nconst defaultBadgeMax = 99;\nconst defaultBadgePosition: TngBadgePosition = 'top-end';\nconst defaultBadgeSize: TngBadgeSize = 'md';\nconst defaultBadgeTone: TngBadgeTone = 'danger';\nconst defaultBadgeVariant: TngBadgeVariant = 'solid';\n\nexport type TngBadgePosition = (typeof badgePositions)[number];\nexport type TngBadgeSize = (typeof badgeSizes)[number];\nexport type TngBadgeStyleMap = Readonly<Record<string, number | string>>;\nexport type TngBadgeTone = (typeof badgeTones)[number];\nexport type TngBadgeVariant = (typeof badgeVariants)[number];\n\ntype TngBadgeToneColors = Readonly<{\n background: string;\n foreground: string;\n}>;\n\ntype TngResolvedBadgePlacement = Readonly<{\n bottom: string | null;\n left: string | null;\n right: string | null;\n top: string | null;\n transform: string;\n}>;\n\ntype ResizeObserverConstructor = new (callback: ResizeObserverCallback) => ResizeObserver;\n\nfunction isNonEmptyText(value: string): boolean {\n return value.trim().length > 0;\n}\n\nfunction toNumber(value: number | string): number {\n return typeof value === 'number' ? value : Number(value);\n}\n\nfunction toRoundedNonNegative(value: number): number {\n return Math.max(0, Math.round(value));\n}\n\nexport function normalizeTngBadgeMax(value: number): number {\n if (!Number.isFinite(value)) {\n return defaultBadgeMax;\n }\n\n return toRoundedNonNegative(value);\n}\n\nexport function coerceTngBadgeMax(value: number | string): number {\n return normalizeTngBadgeMax(toNumber(value));\n}\n\nexport function coerceTngBadgePosition(value: string): TngBadgePosition {\n if (badgePositionSet.has(value as TngBadgePosition)) {\n return value as TngBadgePosition;\n }\n\n return defaultBadgePosition;\n}\n\nexport function coerceTngBadgeSize(value: string): TngBadgeSize {\n if (badgeSizeSet.has(value as TngBadgeSize)) {\n return value as TngBadgeSize;\n }\n\n return defaultBadgeSize;\n}\n\nexport function coerceTngBadgeTone(value: string): TngBadgeTone {\n if (badgeToneSet.has(value as TngBadgeTone)) {\n return value as TngBadgeTone;\n }\n\n return defaultBadgeTone;\n}\n\nexport function coerceTngBadgeVariant(value: string): TngBadgeVariant {\n if (badgeVariantSet.has(value as TngBadgeVariant)) {\n return value as TngBadgeVariant;\n }\n\n return defaultBadgeVariant;\n}\n\nexport function resolveTngBadgeContent(\n value: number | string | null | undefined,\n max: number,\n dot: boolean,\n): string {\n if (dot || value === null || value === undefined) {\n return '';\n }\n\n if (typeof value === 'number') {\n if (!Number.isFinite(value)) {\n return '';\n }\n\n const normalized = toRoundedNonNegative(value);\n if (normalized > max) {\n return `${max}+`;\n }\n\n return String(normalized);\n }\n\n return isNonEmptyText(value) ? value : '';\n}\n\nexport function resolveTngBadgePlacement(position: TngBadgePosition): TngResolvedBadgePlacement {\n if (position === 'top-start') {\n return { bottom: null, left: '0', right: null, top: '0', transform: 'translate(-50%, -50%)' };\n }\n\n if (position === 'bottom-start') {\n return { bottom: '0', left: '0', right: null, top: null, transform: 'translate(-50%, 50%)' };\n }\n\n if (position === 'bottom-end') {\n return { bottom: '0', left: null, right: '0', top: null, transform: 'translate(50%, 50%)' };\n }\n\n return { bottom: null, left: null, right: '0', top: '0', transform: 'translate(50%, -50%)' };\n}\n\nexport function toTngBadgeCssLength(value: number | string | null | undefined): string | null {\n if (value === null || value === undefined) {\n return null;\n }\n\n if (typeof value === 'number') {\n if (!Number.isFinite(value)) {\n return null;\n }\n\n return `${value}px`;\n }\n\n return isNonEmptyText(value) ? value.trim() : null;\n}\n\nfunction resolveTngBadgeToneColors(tone: TngBadgeTone): TngBadgeToneColors {\n if (tone === 'success') {\n return { background: '#16a34a', foreground: '#f0fdf4' };\n }\n\n if (tone === 'warning') {\n return { background: '#d97706', foreground: '#fffbeb' };\n }\n\n if (tone === 'danger') {\n return { background: '#dc2626', foreground: '#fef2f2' };\n }\n\n if (tone === 'neutral') {\n return { background: '#334155', foreground: '#f8fafc' };\n }\n\n return { background: '#2563eb', foreground: '#eff6ff' };\n}\n\nfunction hasVisibleBadge(hidden: boolean, dot: boolean, content: string): boolean {\n if (hidden) {\n return false;\n }\n\n return dot || content.length > 0;\n}\n\nfunction resolveResizeObserverConstructor(): ResizeObserverConstructor | null {\n const globalObject = globalThis as { ResizeObserver?: ResizeObserverConstructor };\n const resizeObserver = globalObject.ResizeObserver;\n return typeof resizeObserver === 'function' ? resizeObserver : null;\n}\n\nfunction toCssPixelLength(value: number): string {\n if (!Number.isFinite(value)) {\n return '0px';\n }\n\n return `${Math.max(0, value)}px`;\n}\n\n@Directive({\n selector: '[tngBadge]',\n exportAs: 'tngBadge',\n})\nexport class TngBadge implements OnDestroy {\n public readonly tngBadge = input<number | string | null | undefined>(null);\n public readonly tngBadgeClass = input<string | null | undefined>(null);\n public readonly tngBadgeDisabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly tngBadgeStyle = input<TngBadgeStyleMap | null | undefined>(null);\n public readonly tngBadgeDot = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly tngBadgeHidden = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly tngBadgeMax = input<number, number | string>(defaultBadgeMax, {\n transform: coerceTngBadgeMax,\n });\n public readonly tngBadgeOffsetX = input<number | string | null | undefined>(null);\n public readonly tngBadgeOffsetY = input<number | string | null | undefined>(null);\n public readonly tngBadgePosition = input<TngBadgePosition, string>(defaultBadgePosition, {\n transform: coerceTngBadgePosition,\n });\n public readonly tngBadgeSize = input<TngBadgeSize, string>(defaultBadgeSize, {\n transform: coerceTngBadgeSize,\n });\n public readonly tngBadgeTone = input<TngBadgeTone, string>(defaultBadgeTone, {\n transform: coerceTngBadgeTone,\n });\n public readonly tngBadgeVariant = input<TngBadgeVariant, string>(defaultBadgeVariant, {\n transform: coerceTngBadgeVariant,\n });\n\n private readonly hostElement = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly renderer = inject(Renderer2);\n private badgeElement: HTMLElement | null = null;\n private readonly customStyleKeys = new Set<string>();\n private resizeObserver: ResizeObserver | null = null;\n private removeWindowResizeListener: (() => void) | null = null;\n\n public constructor() {\n this.configureHost();\n effect((): void => {\n this.renderBadge();\n });\n }\n\n public ngOnDestroy(): void {\n this.destroyBadge();\n }\n\n private configureHost(): void {\n this.renderer.addClass(this.hostElement, 'tng-badge-host');\n this.renderer.setAttribute(this.hostElement, 'data-tng-badge-host', '');\n\n if (this.hostElement.style.position.length === 0) {\n this.renderer.setStyle(this.hostElement, 'position', 'relative');\n }\n }\n\n private renderBadge(): void {\n const content = resolveTngBadgeContent(this.tngBadge(), this.tngBadgeMax(), this.tngBadgeDot());\n if (!hasVisibleBadge(this.tngBadgeHidden(), this.tngBadgeDot(), content)) {\n this.destroyBadge();\n return;\n }\n\n this.ensureBadgeElement();\n this.beginRuntimePositionTracking();\n this.patchBadgeClasses();\n this.patchBadgeAttributes();\n this.patchBadgePlacement();\n this.patchBadgeVisualStyles();\n this.patchBadgeCustomStyles();\n this.patchBadgeRuntimeMetrics();\n this.patchBadgeContent(content);\n }\n\n private ensureBadgeElement(): HTMLElement {\n if (this.badgeElement !== null) {\n return this.badgeElement;\n }\n\n const badgeElement = this.renderer.createElement('span') as HTMLElement;\n this.renderer.appendChild(this.hostElement, badgeElement);\n this.badgeElement = badgeElement;\n return badgeElement;\n }\n\n private destroyBadge(): void {\n this.endRuntimePositionTracking();\n\n if (this.badgeElement === null) {\n return;\n }\n\n this.renderer.removeChild(this.hostElement, this.badgeElement);\n this.badgeElement = null;\n this.customStyleKeys.clear();\n }\n\n private patchBadgeAttributes(): void {\n if (this.badgeElement === null) {\n return;\n }\n\n const badgeElement = this.badgeElement;\n this.renderer.setAttribute(badgeElement, 'aria-hidden', 'true');\n this.renderer.setAttribute(badgeElement, 'data-placement', this.tngBadgePosition());\n this.renderer.setAttribute(badgeElement, 'data-position', this.tngBadgePosition());\n this.renderer.setAttribute(badgeElement, 'data-size', this.tngBadgeSize());\n this.renderer.setAttribute(badgeElement, 'data-slot', 'badge');\n this.renderer.setAttribute(badgeElement, 'data-tone', this.tngBadgeTone());\n this.renderer.setAttribute(badgeElement, 'data-variant', this.tngBadgeVariant());\n\n if (this.tngBadgeDisabled()) {\n this.renderer.setAttribute(badgeElement, 'data-disabled', '');\n } else {\n this.renderer.removeAttribute(badgeElement, 'data-disabled');\n }\n\n if (this.tngBadgeDot()) {\n this.renderer.setAttribute(badgeElement, 'data-dot', '');\n return;\n }\n\n this.renderer.removeAttribute(badgeElement, 'data-dot');\n }\n\n private patchBadgeClasses(): void {\n if (this.badgeElement === null) {\n return;\n }\n\n const badgeElement = this.badgeElement;\n const className = this.tngBadgeClass() ?? '';\n const normalizedClassName = className.trim();\n const classes =\n normalizedClassName.length > 0 ? `tng-badge ${normalizedClassName}` : 'tng-badge';\n this.renderer.setAttribute(badgeElement, 'class', classes);\n }\n\n private patchBadgeContent(content: string): void {\n if (this.badgeElement === null) {\n return;\n }\n\n this.renderer.setProperty(this.badgeElement, 'textContent', content);\n }\n\n private patchBadgeCustomStyles(): void {\n if (this.badgeElement === null) {\n return;\n }\n\n const badgeElement = this.badgeElement;\n const nextStyleKeys = new Set<string>();\n const styleMap = this.tngBadgeStyle();\n if (styleMap !== null && styleMap !== undefined) {\n for (const [key, value] of Object.entries(styleMap)) {\n this.renderer.setStyle(badgeElement, key, String(value));\n nextStyleKeys.add(key);\n }\n }\n\n for (const key of this.customStyleKeys) {\n if (!nextStyleKeys.has(key)) {\n this.renderer.removeStyle(badgeElement, key);\n }\n }\n\n this.customStyleKeys.clear();\n for (const key of nextStyleKeys) {\n this.customStyleKeys.add(key);\n }\n }\n\n private patchBadgePlacement(): void {\n if (this.badgeElement === null) {\n return;\n }\n\n const placement = resolveTngBadgePlacement(this.tngBadgePosition());\n this.setNullableStyle('bottom', placement.bottom);\n this.setNullableStyle('left', placement.left);\n this.setNullableStyle('right', placement.right);\n this.setNullableStyle('top', placement.top);\n\n const offsetX = toTngBadgeCssLength(this.tngBadgeOffsetX()) ?? '0px';\n const offsetY = toTngBadgeCssLength(this.tngBadgeOffsetY()) ?? '0px';\n const transform = `${placement.transform} translate(${offsetX}, ${offsetY})`;\n this.renderer.setStyle(this.badgeElement, 'transform', transform);\n }\n\n private patchBadgeRuntimeMetrics(): void {\n if (this.badgeElement === null) {\n return;\n }\n\n const hostRect = this.hostElement.getBoundingClientRect();\n const badgeRect = this.badgeElement.getBoundingClientRect();\n this.badgeElement.style.setProperty('--tng-badge-anchor-width', toCssPixelLength(hostRect.width));\n this.badgeElement.style.setProperty('--tng-badge-anchor-height', toCssPixelLength(hostRect.height));\n this.badgeElement.style.setProperty('--tng-badge-self-width', toCssPixelLength(badgeRect.width));\n this.badgeElement.style.setProperty('--tng-badge-self-height', toCssPixelLength(badgeRect.height));\n }\n\n private patchBadgeVisualStyles(): void {\n if (this.badgeElement === null) {\n return;\n }\n\n const badgeElement = this.badgeElement;\n const toneColors = resolveTngBadgeToneColors(this.tngBadgeTone());\n const sharedStyles = this.resolveSharedStyles(toneColors);\n for (const [property, value] of sharedStyles) {\n this.renderer.setStyle(badgeElement, property, value);\n }\n\n if (this.tngBadgeDot()) {\n this.patchDotStyles();\n return;\n }\n\n this.patchContentStyles();\n }\n\n private patchContentStyles(): void {\n if (this.badgeElement === null) {\n return;\n }\n\n this.renderer.setStyle(this.badgeElement, 'height', 'var(--tng-badge-size, 1.125rem)');\n this.renderer.setStyle(this.badgeElement, 'min-width', 'var(--tng-badge-size, 1.125rem)');\n this.renderer.setStyle(\n this.badgeElement,\n 'padding-inline',\n 'var(--tng-badge-padding-x, 0.3rem)',\n );\n }\n\n private patchDotStyles(): void {\n if (this.badgeElement === null) {\n return;\n }\n\n this.renderer.setStyle(this.badgeElement, 'height', 'var(--tng-badge-dot-size, 0.625rem)');\n this.renderer.setStyle(this.badgeElement, 'min-width', 'var(--tng-badge-dot-size, 0.625rem)');\n this.renderer.setStyle(this.badgeElement, 'padding-inline', '0');\n }\n\n private resolveSharedStyles(\n toneColors: TngBadgeToneColors,\n ): readonly Readonly<[string, string]>[] {\n return [\n ['align-items', 'center'],\n ['background', `var(--tng-badge-bg, ${toneColors.background})`],\n ['border-radius', 'var(--tng-badge-radius, 9999px)'],\n ['box-sizing', 'border-box'],\n ['color', `var(--tng-badge-fg, ${toneColors.foreground})`],\n ['display', 'inline-flex'],\n ['font-size', 'var(--tng-badge-font-size, 0.7rem)'],\n ['font-weight', 'var(--tng-badge-font-weight, 700)'],\n ['justify-content', 'center'],\n ['line-height', '1'],\n ['pointer-events', 'none'],\n ['position', 'absolute'],\n ['white-space', 'nowrap'],\n ['z-index', 'var(--tng-badge-z-index, 1)'],\n ];\n }\n\n private setNullableStyle(property: string, value: string | null): void {\n if (this.badgeElement === null) {\n return;\n }\n\n if (value === null) {\n this.renderer.removeStyle(this.badgeElement, property);\n return;\n }\n\n this.renderer.setStyle(this.badgeElement, property, value);\n }\n\n private beginRuntimePositionTracking(): void {\n if (this.badgeElement === null) {\n return;\n }\n\n const resizeObserverConstructor = resolveResizeObserverConstructor();\n if (resizeObserverConstructor !== null) {\n if (this.resizeObserver === null) {\n this.resizeObserver = new resizeObserverConstructor(() => {\n this.syncRuntimePositioning();\n });\n }\n\n this.resizeObserver.observe(this.hostElement);\n this.resizeObserver.observe(this.badgeElement);\n return;\n }\n\n if (this.removeWindowResizeListener === null) {\n this.removeWindowResizeListener = this.renderer.listen('window', 'resize', () => {\n this.syncRuntimePositioning();\n });\n }\n }\n\n private endRuntimePositionTracking(): void {\n if (this.resizeObserver !== null) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n\n if (this.removeWindowResizeListener !== null) {\n this.removeWindowResizeListener();\n this.removeWindowResizeListener = null;\n }\n }\n\n private syncRuntimePositioning(): void {\n if (this.badgeElement === null) {\n return;\n }\n\n this.patchBadgePlacement();\n this.patchBadgeRuntimeMetrics();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tng-badge.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/utility/badge/tng-badge.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,MAAM,EACN,UAAU,EACV,MAAM,EACN,KAAK,EAEL,SAAS,GACV,MAAM,eAAe,CAAC;AAEvB,MAAM,cAAc,GAAG,CAAC,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,CAAU,CAAC;AACvF,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAC/C,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAU,CAAC;AAChF,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAU,CAAC;AAE5D,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAmB,cAAc,CAAC,CAAC;AACnE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAe,UAAU,CAAC,CAAC;AACvD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAe,UAAU,CAAC,CAAC;AACvD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAkB,aAAa,CAAC,CAAC;AAEhE,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,oBAAoB,GAAqB,SAAS,CAAC;AACzD,MAAM,gBAAgB,GAAiB,IAAI,CAAC;AAC5C,MAAM,gBAAgB,GAAiB,QAAQ,CAAC;AAChD,MAAM,mBAAmB,GAAoB,OAAO,CAAC;AAuBrD,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,QAAQ,CAAC,KAAsB;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IACzC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAsB;IACtD,OAAO,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAyB,CAAC,EAAE,CAAC;QACpD,OAAO,KAAyB,CAAC;IACnC,CAAC;IAED,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,IAAI,YAAY,CAAC,GAAG,CAAC,KAAqB,CAAC,EAAE,CAAC;QAC5C,OAAO,KAAqB,CAAC;IAC/B,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,IAAI,YAAY,CAAC,GAAG,CAAC,KAAqB,CAAC,EAAE,CAAC;QAC5C,OAAO,KAAqB,CAAC;IAC/B,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,IAAI,eAAe,CAAC,GAAG,CAAC,KAAwB,CAAC,EAAE,CAAC;QAClD,OAAO,KAAwB,CAAC;IAClC,CAAC;IAED,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAyC,EACzC,GAAW,EACX,GAAY;IAEZ,IAAI,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACjD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;YACrB,OAAO,GAAG,GAAG,GAAG,CAAC;QACnB,CAAC;QAED,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,QAA0B;IACjE,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC;IAChG,CAAC;IAED,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;QAChC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,sBAAsB,EAAE,CAAC;IAC/F,CAAC;IAED,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC9B,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC;IAC9F,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,sBAAsB,EAAE,CAAC;AAC/F,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAyC;IAC3E,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,GAAG,KAAK,IAAI,CAAC;IACtB,CAAC;IAED,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAkB;IACnD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IAC1D,CAAC;IAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IAC1D,CAAC;IAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IAC1D,CAAC;IAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IAC1D,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,eAAe,CAAC,MAAe,EAAE,GAAY,EAAE,OAAe;IACrE,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,gCAAgC;IACvC,MAAM,YAAY,GAAG,UAA4D,CAAC;IAClF,MAAM,cAAc,GAAG,YAAY,CAAC,cAAc,CAAC;IACnD,OAAO,OAAO,cAAc,KAAK,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;AACtE,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC;AACnC,CAAC;AAOM,IAAM,QAAQ,GAAd,MAAM,QAAQ;IACH,QAAQ,GAAG,KAAK,CAAqC,IAAI,CAAC,CAAC;IAC3D,aAAa,GAAG,KAAK,CAA4B,IAAI,CAAC,CAAC;IACvD,gBAAgB,GAAG,KAAK,CAA4B,KAAK,EAAE;QACzE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,aAAa,GAAG,KAAK,CAAsC,IAAI,CAAC,CAAC;IACjE,WAAW,GAAG,KAAK,CAA4B,KAAK,EAAE;QACpE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,cAAc,GAAG,KAAK,CAA4B,KAAK,EAAE;QACvE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,WAAW,GAAG,KAAK,CAA0B,eAAe,EAAE;QAC5E,SAAS,EAAE,iBAAiB;KAC7B,CAAC,CAAC;IACa,eAAe,GAAG,KAAK,CAAqC,IAAI,CAAC,CAAC;IAClE,eAAe,GAAG,KAAK,CAAqC,IAAI,CAAC,CAAC;IAClE,gBAAgB,GAAG,KAAK,CAA2B,oBAAoB,EAAE;QACvF,SAAS,EAAE,sBAAsB;KAClC,CAAC,CAAC;IACa,YAAY,GAAG,KAAK,CAAuB,gBAAgB,EAAE;QAC3E,SAAS,EAAE,kBAAkB;KAC9B,CAAC,CAAC;IACa,YAAY,GAAG,KAAK,CAAuB,gBAAgB,EAAE;QAC3E,SAAS,EAAE,kBAAkB;KAC9B,CAAC,CAAC;IACa,eAAe,GAAG,KAAK,CAA0B,mBAAmB,EAAE;QACpF,SAAS,EAAE,qBAAqB;KACjC,CAAC,CAAC;IAEc,WAAW,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC,aAAa,CAAC;IACxE,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IACtC,YAAY,GAAuB,IAAI,CAAC;IAC/B,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7C,cAAc,GAA0B,IAAI,CAAC;IAC7C,0BAA0B,GAAwB,IAAI,CAAC;IAE/D;QACE,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,MAAM,CAAC,GAAS,EAAE;YAChB,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC;QAExE,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAEO,WAAW;QACjB,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAChG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;YACzE,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAEO,kBAAkB;QACxB,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAgB,CAAC;QACxE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC1D,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAElC,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;IAEO,oBAAoB;QAC1B,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACpF,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,eAAe,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,cAAc,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAEjF,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;IAEO,iBAAiB;QACvB,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;QAC7C,MAAM,mBAAmB,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,OAAO,GACX,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,mBAAmB,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;QACpF,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAEO,iBAAiB,CAAC,OAAe;QACvC,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAEO,sBAAsB;QAC5B,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACtC,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACzD,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACvC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAEO,mBAAmB;QACzB,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,wBAAwB,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;QAE5C,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,KAAK,CAAC;QACrE,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,KAAK,CAAC;QACrE,MAAM,SAAS,GAAG,GAAG,SAAS,CAAC,SAAS,cAAc,OAAO,KAAK,OAAO,GAAG,CAAC;QAC7E,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACpE,CAAC;IAEO,wBAAwB;QAC9B,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,CAAC;QAC5D,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAClG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,2BAA2B,EAAE,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACpG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,wBAAwB,EAAE,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,yBAAyB,EAAE,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACrG,CAAC;IAEO,sBAAsB;QAC5B,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,MAAM,UAAU,GAAG,yBAAyB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAClE,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC1D,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,YAAY,EAAE,CAAC;YAC7C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAEO,kBAAkB;QACxB,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,iCAAiC,CAAC,CAAC;QACvF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,iCAAiC,CAAC,CAAC;QAC1F,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,CAAC,YAAY,EACjB,gBAAgB,EAChB,oCAAoC,CACrC,CAAC;IACJ,CAAC;IAEO,cAAc;QACpB,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,qCAAqC,CAAC,CAAC;QAC3F,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,qCAAqC,CAAC,CAAC;QAC9F,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC;IACnE,CAAC;IAEO,mBAAmB,CACzB,UAA8B;QAE9B,OAAO;YACL,CAAC,aAAa,EAAE,QAAQ,CAAC;YACzB,CAAC,YAAY,EAAE,uBAAuB,UAAU,CAAC,UAAU,GAAG,CAAC;YAC/D,CAAC,eAAe,EAAE,iCAAiC,CAAC;YACpD,CAAC,YAAY,EAAE,YAAY,CAAC;YAC5B,CAAC,OAAO,EAAE,uBAAuB,UAAU,CAAC,UAAU,GAAG,CAAC;YAC1D,CAAC,SAAS,EAAE,aAAa,CAAC;YAC1B,CAAC,WAAW,EAAE,oCAAoC,CAAC;YACnD,CAAC,aAAa,EAAE,mCAAmC,CAAC;YACpD,CAAC,iBAAiB,EAAE,QAAQ,CAAC;YAC7B,CAAC,aAAa,EAAE,GAAG,CAAC;YACpB,CAAC,gBAAgB,EAAE,MAAM,CAAC;YAC1B,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,aAAa,EAAE,QAAQ,CAAC;YACzB,CAAC,SAAS,EAAE,6BAA6B,CAAC;SAC3C,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,QAAgB,EAAE,KAAoB;QAC7D,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;IAEO,4BAA4B;QAClC,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,MAAM,yBAAyB,GAAG,gCAAgC,EAAE,CAAC;QACrE,IAAI,yBAAyB,KAAK,IAAI,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;gBACjC,IAAI,CAAC,cAAc,GAAG,IAAI,yBAAyB,CAAC,GAAG,EAAE;oBACvD,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAChC,CAAC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC9C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,0BAA0B,KAAK,IAAI,EAAE,CAAC;YAC7C,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE;gBAC9E,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAChC,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,0BAA0B;QAChC,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;YACjC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QAED,IAAI,IAAI,CAAC,0BAA0B,KAAK,IAAI,EAAE,CAAC;YAC7C,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAClC,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;QACzC,CAAC;IACH,CAAC;IAEO,sBAAsB;QAC5B,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,wBAAwB,EAAE,CAAC;IAClC,CAAC;CACF,CAAA;AAxUY,QAAQ;IALpB,SAAS,CAAC;QACT,QAAQ,EAAE,YAAY;QACtB,QAAQ,EAAE,UAAU;QACpB,UAAU,EAAE,IAAI;KACjB,CAAC;GACW,QAAQ,CAwUpB","sourcesContent":["import {\n booleanAttribute,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n type OnDestroy,\n Renderer2,\n} from '@angular/core';\n\nconst badgePositions = ['bottom-end', 'bottom-start', 'top-end', 'top-start'] as const;\nconst badgeSizes = ['lg', 'md', 'sm'] as const;\nconst badgeTones = ['danger', 'info', 'neutral', 'success', 'warning'] as const;\nconst badgeVariants = ['outline', 'soft', 'solid'] as const;\n\nconst badgePositionSet = new Set<TngBadgePosition>(badgePositions);\nconst badgeSizeSet = new Set<TngBadgeSize>(badgeSizes);\nconst badgeToneSet = new Set<TngBadgeTone>(badgeTones);\nconst badgeVariantSet = new Set<TngBadgeVariant>(badgeVariants);\n\nconst defaultBadgeMax = 99;\nconst defaultBadgePosition: TngBadgePosition = 'top-end';\nconst defaultBadgeSize: TngBadgeSize = 'md';\nconst defaultBadgeTone: TngBadgeTone = 'danger';\nconst defaultBadgeVariant: TngBadgeVariant = 'solid';\n\nexport type TngBadgePosition = (typeof badgePositions)[number];\nexport type TngBadgeSize = (typeof badgeSizes)[number];\nexport type TngBadgeStyleMap = Readonly<Record<string, number | string>>;\nexport type TngBadgeTone = (typeof badgeTones)[number];\nexport type TngBadgeVariant = (typeof badgeVariants)[number];\n\ntype TngBadgeToneColors = Readonly<{\n background: string;\n foreground: string;\n}>;\n\ntype TngResolvedBadgePlacement = Readonly<{\n bottom: string | null;\n left: string | null;\n right: string | null;\n top: string | null;\n transform: string;\n}>;\n\ntype ResizeObserverConstructor = new (callback: ResizeObserverCallback) => ResizeObserver;\n\nfunction isNonEmptyText(value: string): boolean {\n return value.trim().length > 0;\n}\n\nfunction toNumber(value: number | string): number {\n return typeof value === 'number' ? value : Number(value);\n}\n\nfunction toRoundedNonNegative(value: number): number {\n return Math.max(0, Math.round(value));\n}\n\nexport function normalizeTngBadgeMax(value: number): number {\n if (!Number.isFinite(value)) {\n return defaultBadgeMax;\n }\n\n return toRoundedNonNegative(value);\n}\n\nexport function coerceTngBadgeMax(value: number | string): number {\n return normalizeTngBadgeMax(toNumber(value));\n}\n\nexport function coerceTngBadgePosition(value: string): TngBadgePosition {\n if (badgePositionSet.has(value as TngBadgePosition)) {\n return value as TngBadgePosition;\n }\n\n return defaultBadgePosition;\n}\n\nexport function coerceTngBadgeSize(value: string): TngBadgeSize {\n if (badgeSizeSet.has(value as TngBadgeSize)) {\n return value as TngBadgeSize;\n }\n\n return defaultBadgeSize;\n}\n\nexport function coerceTngBadgeTone(value: string): TngBadgeTone {\n if (badgeToneSet.has(value as TngBadgeTone)) {\n return value as TngBadgeTone;\n }\n\n return defaultBadgeTone;\n}\n\nexport function coerceTngBadgeVariant(value: string): TngBadgeVariant {\n if (badgeVariantSet.has(value as TngBadgeVariant)) {\n return value as TngBadgeVariant;\n }\n\n return defaultBadgeVariant;\n}\n\nexport function resolveTngBadgeContent(\n value: number | string | null | undefined,\n max: number,\n dot: boolean,\n): string {\n if (dot || value === null || value === undefined) {\n return '';\n }\n\n if (typeof value === 'number') {\n if (!Number.isFinite(value)) {\n return '';\n }\n\n const normalized = toRoundedNonNegative(value);\n if (normalized > max) {\n return `${max}+`;\n }\n\n return String(normalized);\n }\n\n return isNonEmptyText(value) ? value : '';\n}\n\nexport function resolveTngBadgePlacement(position: TngBadgePosition): TngResolvedBadgePlacement {\n if (position === 'top-start') {\n return { bottom: null, left: '0', right: null, top: '0', transform: 'translate(-50%, -50%)' };\n }\n\n if (position === 'bottom-start') {\n return { bottom: '0', left: '0', right: null, top: null, transform: 'translate(-50%, 50%)' };\n }\n\n if (position === 'bottom-end') {\n return { bottom: '0', left: null, right: '0', top: null, transform: 'translate(50%, 50%)' };\n }\n\n return { bottom: null, left: null, right: '0', top: '0', transform: 'translate(50%, -50%)' };\n}\n\nexport function toTngBadgeCssLength(value: number | string | null | undefined): string | null {\n if (value === null || value === undefined) {\n return null;\n }\n\n if (typeof value === 'number') {\n if (!Number.isFinite(value)) {\n return null;\n }\n\n return `${value}px`;\n }\n\n return isNonEmptyText(value) ? value.trim() : null;\n}\n\nfunction resolveTngBadgeToneColors(tone: TngBadgeTone): TngBadgeToneColors {\n if (tone === 'success') {\n return { background: '#16a34a', foreground: '#f0fdf4' };\n }\n\n if (tone === 'warning') {\n return { background: '#d97706', foreground: '#fffbeb' };\n }\n\n if (tone === 'danger') {\n return { background: '#dc2626', foreground: '#fef2f2' };\n }\n\n if (tone === 'neutral') {\n return { background: '#334155', foreground: '#f8fafc' };\n }\n\n return { background: '#2563eb', foreground: '#eff6ff' };\n}\n\nfunction hasVisibleBadge(hidden: boolean, dot: boolean, content: string): boolean {\n if (hidden) {\n return false;\n }\n\n return dot || content.length > 0;\n}\n\nfunction resolveResizeObserverConstructor(): ResizeObserverConstructor | null {\n const globalObject = globalThis as { ResizeObserver?: ResizeObserverConstructor };\n const resizeObserver = globalObject.ResizeObserver;\n return typeof resizeObserver === 'function' ? resizeObserver : null;\n}\n\nfunction toCssPixelLength(value: number): string {\n if (!Number.isFinite(value)) {\n return '0px';\n }\n\n return `${Math.max(0, value)}px`;\n}\n\n@Directive({\n selector: '[tngBadge]',\n exportAs: 'tngBadge',\n standalone: true,\n})\nexport class TngBadge implements OnDestroy {\n public readonly tngBadge = input<number | string | null | undefined>(null);\n public readonly tngBadgeClass = input<string | null | undefined>(null);\n public readonly tngBadgeDisabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly tngBadgeStyle = input<TngBadgeStyleMap | null | undefined>(null);\n public readonly tngBadgeDot = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly tngBadgeHidden = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly tngBadgeMax = input<number, number | string>(defaultBadgeMax, {\n transform: coerceTngBadgeMax,\n });\n public readonly tngBadgeOffsetX = input<number | string | null | undefined>(null);\n public readonly tngBadgeOffsetY = input<number | string | null | undefined>(null);\n public readonly tngBadgePosition = input<TngBadgePosition, string>(defaultBadgePosition, {\n transform: coerceTngBadgePosition,\n });\n public readonly tngBadgeSize = input<TngBadgeSize, string>(defaultBadgeSize, {\n transform: coerceTngBadgeSize,\n });\n public readonly tngBadgeTone = input<TngBadgeTone, string>(defaultBadgeTone, {\n transform: coerceTngBadgeTone,\n });\n public readonly tngBadgeVariant = input<TngBadgeVariant, string>(defaultBadgeVariant, {\n transform: coerceTngBadgeVariant,\n });\n\n private readonly hostElement = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly renderer = inject(Renderer2);\n private badgeElement: HTMLElement | null = null;\n private readonly customStyleKeys = new Set<string>();\n private resizeObserver: ResizeObserver | null = null;\n private removeWindowResizeListener: (() => void) | null = null;\n\n public constructor() {\n this.configureHost();\n effect((): void => {\n this.renderBadge();\n });\n }\n\n public ngOnDestroy(): void {\n this.destroyBadge();\n }\n\n private configureHost(): void {\n this.renderer.addClass(this.hostElement, 'tng-badge-host');\n this.renderer.setAttribute(this.hostElement, 'data-tng-badge-host', '');\n\n if (this.hostElement.style.position.length === 0) {\n this.renderer.setStyle(this.hostElement, 'position', 'relative');\n }\n }\n\n private renderBadge(): void {\n const content = resolveTngBadgeContent(this.tngBadge(), this.tngBadgeMax(), this.tngBadgeDot());\n if (!hasVisibleBadge(this.tngBadgeHidden(), this.tngBadgeDot(), content)) {\n this.destroyBadge();\n return;\n }\n\n this.ensureBadgeElement();\n this.beginRuntimePositionTracking();\n this.patchBadgeClasses();\n this.patchBadgeAttributes();\n this.patchBadgePlacement();\n this.patchBadgeVisualStyles();\n this.patchBadgeCustomStyles();\n this.patchBadgeRuntimeMetrics();\n this.patchBadgeContent(content);\n }\n\n private ensureBadgeElement(): HTMLElement {\n if (this.badgeElement !== null) {\n return this.badgeElement;\n }\n\n const badgeElement = this.renderer.createElement('span') as HTMLElement;\n this.renderer.appendChild(this.hostElement, badgeElement);\n this.badgeElement = badgeElement;\n return badgeElement;\n }\n\n private destroyBadge(): void {\n this.endRuntimePositionTracking();\n\n if (this.badgeElement === null) {\n return;\n }\n\n this.renderer.removeChild(this.hostElement, this.badgeElement);\n this.badgeElement = null;\n this.customStyleKeys.clear();\n }\n\n private patchBadgeAttributes(): void {\n if (this.badgeElement === null) {\n return;\n }\n\n const badgeElement = this.badgeElement;\n this.renderer.setAttribute(badgeElement, 'aria-hidden', 'true');\n this.renderer.setAttribute(badgeElement, 'data-placement', this.tngBadgePosition());\n this.renderer.setAttribute(badgeElement, 'data-position', this.tngBadgePosition());\n this.renderer.setAttribute(badgeElement, 'data-size', this.tngBadgeSize());\n this.renderer.setAttribute(badgeElement, 'data-slot', 'badge');\n this.renderer.setAttribute(badgeElement, 'data-tone', this.tngBadgeTone());\n this.renderer.setAttribute(badgeElement, 'data-variant', this.tngBadgeVariant());\n\n if (this.tngBadgeDisabled()) {\n this.renderer.setAttribute(badgeElement, 'data-disabled', '');\n } else {\n this.renderer.removeAttribute(badgeElement, 'data-disabled');\n }\n\n if (this.tngBadgeDot()) {\n this.renderer.setAttribute(badgeElement, 'data-dot', '');\n return;\n }\n\n this.renderer.removeAttribute(badgeElement, 'data-dot');\n }\n\n private patchBadgeClasses(): void {\n if (this.badgeElement === null) {\n return;\n }\n\n const badgeElement = this.badgeElement;\n const className = this.tngBadgeClass() ?? '';\n const normalizedClassName = className.trim();\n const classes =\n normalizedClassName.length > 0 ? `tng-badge ${normalizedClassName}` : 'tng-badge';\n this.renderer.setAttribute(badgeElement, 'class', classes);\n }\n\n private patchBadgeContent(content: string): void {\n if (this.badgeElement === null) {\n return;\n }\n\n this.renderer.setProperty(this.badgeElement, 'textContent', content);\n }\n\n private patchBadgeCustomStyles(): void {\n if (this.badgeElement === null) {\n return;\n }\n\n const badgeElement = this.badgeElement;\n const nextStyleKeys = new Set<string>();\n const styleMap = this.tngBadgeStyle();\n if (styleMap !== null && styleMap !== undefined) {\n for (const [key, value] of Object.entries(styleMap)) {\n this.renderer.setStyle(badgeElement, key, String(value));\n nextStyleKeys.add(key);\n }\n }\n\n for (const key of this.customStyleKeys) {\n if (!nextStyleKeys.has(key)) {\n this.renderer.removeStyle(badgeElement, key);\n }\n }\n\n this.customStyleKeys.clear();\n for (const key of nextStyleKeys) {\n this.customStyleKeys.add(key);\n }\n }\n\n private patchBadgePlacement(): void {\n if (this.badgeElement === null) {\n return;\n }\n\n const placement = resolveTngBadgePlacement(this.tngBadgePosition());\n this.setNullableStyle('bottom', placement.bottom);\n this.setNullableStyle('left', placement.left);\n this.setNullableStyle('right', placement.right);\n this.setNullableStyle('top', placement.top);\n\n const offsetX = toTngBadgeCssLength(this.tngBadgeOffsetX()) ?? '0px';\n const offsetY = toTngBadgeCssLength(this.tngBadgeOffsetY()) ?? '0px';\n const transform = `${placement.transform} translate(${offsetX}, ${offsetY})`;\n this.renderer.setStyle(this.badgeElement, 'transform', transform);\n }\n\n private patchBadgeRuntimeMetrics(): void {\n if (this.badgeElement === null) {\n return;\n }\n\n const hostRect = this.hostElement.getBoundingClientRect();\n const badgeRect = this.badgeElement.getBoundingClientRect();\n this.badgeElement.style.setProperty('--tng-badge-anchor-width', toCssPixelLength(hostRect.width));\n this.badgeElement.style.setProperty('--tng-badge-anchor-height', toCssPixelLength(hostRect.height));\n this.badgeElement.style.setProperty('--tng-badge-self-width', toCssPixelLength(badgeRect.width));\n this.badgeElement.style.setProperty('--tng-badge-self-height', toCssPixelLength(badgeRect.height));\n }\n\n private patchBadgeVisualStyles(): void {\n if (this.badgeElement === null) {\n return;\n }\n\n const badgeElement = this.badgeElement;\n const toneColors = resolveTngBadgeToneColors(this.tngBadgeTone());\n const sharedStyles = this.resolveSharedStyles(toneColors);\n for (const [property, value] of sharedStyles) {\n this.renderer.setStyle(badgeElement, property, value);\n }\n\n if (this.tngBadgeDot()) {\n this.patchDotStyles();\n return;\n }\n\n this.patchContentStyles();\n }\n\n private patchContentStyles(): void {\n if (this.badgeElement === null) {\n return;\n }\n\n this.renderer.setStyle(this.badgeElement, 'height', 'var(--tng-badge-size, 1.125rem)');\n this.renderer.setStyle(this.badgeElement, 'min-width', 'var(--tng-badge-size, 1.125rem)');\n this.renderer.setStyle(\n this.badgeElement,\n 'padding-inline',\n 'var(--tng-badge-padding-x, 0.3rem)',\n );\n }\n\n private patchDotStyles(): void {\n if (this.badgeElement === null) {\n return;\n }\n\n this.renderer.setStyle(this.badgeElement, 'height', 'var(--tng-badge-dot-size, 0.625rem)');\n this.renderer.setStyle(this.badgeElement, 'min-width', 'var(--tng-badge-dot-size, 0.625rem)');\n this.renderer.setStyle(this.badgeElement, 'padding-inline', '0');\n }\n\n private resolveSharedStyles(\n toneColors: TngBadgeToneColors,\n ): readonly Readonly<[string, string]>[] {\n return [\n ['align-items', 'center'],\n ['background', `var(--tng-badge-bg, ${toneColors.background})`],\n ['border-radius', 'var(--tng-badge-radius, 9999px)'],\n ['box-sizing', 'border-box'],\n ['color', `var(--tng-badge-fg, ${toneColors.foreground})`],\n ['display', 'inline-flex'],\n ['font-size', 'var(--tng-badge-font-size, 0.7rem)'],\n ['font-weight', 'var(--tng-badge-font-weight, 700)'],\n ['justify-content', 'center'],\n ['line-height', '1'],\n ['pointer-events', 'none'],\n ['position', 'absolute'],\n ['white-space', 'nowrap'],\n ['z-index', 'var(--tng-badge-z-index, 1)'],\n ];\n }\n\n private setNullableStyle(property: string, value: string | null): void {\n if (this.badgeElement === null) {\n return;\n }\n\n if (value === null) {\n this.renderer.removeStyle(this.badgeElement, property);\n return;\n }\n\n this.renderer.setStyle(this.badgeElement, property, value);\n }\n\n private beginRuntimePositionTracking(): void {\n if (this.badgeElement === null) {\n return;\n }\n\n const resizeObserverConstructor = resolveResizeObserverConstructor();\n if (resizeObserverConstructor !== null) {\n if (this.resizeObserver === null) {\n this.resizeObserver = new resizeObserverConstructor(() => {\n this.syncRuntimePositioning();\n });\n }\n\n this.resizeObserver.observe(this.hostElement);\n this.resizeObserver.observe(this.badgeElement);\n return;\n }\n\n if (this.removeWindowResizeListener === null) {\n this.removeWindowResizeListener = this.renderer.listen('window', 'resize', () => {\n this.syncRuntimePositioning();\n });\n }\n }\n\n private endRuntimePositionTracking(): void {\n if (this.resizeObserver !== null) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n\n if (this.removeWindowResizeListener !== null) {\n this.removeWindowResizeListener();\n this.removeWindowResizeListener = null;\n }\n }\n\n private syncRuntimePositioning(): void {\n if (this.badgeElement === null) {\n return;\n }\n\n this.patchBadgePlacement();\n this.patchBadgeRuntimeMetrics();\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-code-block.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/utility/code-block/tng-code-block.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"tng-code-block.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/utility/code-block/tng-code-block.ts"],"names":[],"mappings":"AAEA,qBAKa,YAAY;IAEvB,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,YAAY,CAAU;CACrD;AAED,qBAKa,kBAAkB;IAE7B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,mBAAmB,CAAU;CAC5D;AAED,qBAKa,gBAAgB;IAE3B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,iBAAiB,CAAU;CAC1D;AAED,qBAKa,kBAAkB;IAE7B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,mBAAmB,CAAU;CAC5D;AAED,qBAKa,gBAAgB;IAE3B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,iBAAiB,CAAU;CAC1D"}
|
|
@@ -10,6 +10,7 @@ TngCodeBlock = __decorate([
|
|
|
10
10
|
Directive({
|
|
11
11
|
selector: '[tngCodeBlock]',
|
|
12
12
|
exportAs: 'tngCodeBlock',
|
|
13
|
+
standalone: true,
|
|
13
14
|
})
|
|
14
15
|
], TngCodeBlock);
|
|
15
16
|
export { TngCodeBlock };
|
|
@@ -23,6 +24,7 @@ TngCodeBlockHeader = __decorate([
|
|
|
23
24
|
Directive({
|
|
24
25
|
selector: '[tngCodeBlockHeader]',
|
|
25
26
|
exportAs: 'tngCodeBlockHeader',
|
|
27
|
+
standalone: true,
|
|
26
28
|
})
|
|
27
29
|
], TngCodeBlockHeader);
|
|
28
30
|
export { TngCodeBlockHeader };
|
|
@@ -36,6 +38,7 @@ TngCodeBlockBody = __decorate([
|
|
|
36
38
|
Directive({
|
|
37
39
|
selector: '[tngCodeBlockBody]',
|
|
38
40
|
exportAs: 'tngCodeBlockBody',
|
|
41
|
+
standalone: true,
|
|
39
42
|
})
|
|
40
43
|
], TngCodeBlockBody);
|
|
41
44
|
export { TngCodeBlockBody };
|
|
@@ -49,6 +52,7 @@ TngCodeBlockGutter = __decorate([
|
|
|
49
52
|
Directive({
|
|
50
53
|
selector: '[tngCodeBlockGutter]',
|
|
51
54
|
exportAs: 'tngCodeBlockGutter',
|
|
55
|
+
standalone: true,
|
|
52
56
|
})
|
|
53
57
|
], TngCodeBlockGutter);
|
|
54
58
|
export { TngCodeBlockGutter };
|
|
@@ -62,6 +66,7 @@ TngCodeBlockCode = __decorate([
|
|
|
62
66
|
Directive({
|
|
63
67
|
selector: '[tngCodeBlockCode]',
|
|
64
68
|
exportAs: 'tngCodeBlockCode',
|
|
69
|
+
standalone: true,
|
|
65
70
|
})
|
|
66
71
|
], TngCodeBlockCode);
|
|
67
72
|
export { TngCodeBlockCode };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-code-block.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/utility/code-block/tng-code-block.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"tng-code-block.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/utility/code-block/tng-code-block.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAOhD,IAAM,YAAY,GAAlB,MAAM,YAAY;IAEJ,QAAQ,GAAG,YAAqB,CAAC;CACrD,CAAA;AADoB;IADlB,WAAW,CAAC,gBAAgB,CAAC;8CACsB;AAFzC,YAAY;IALxB,SAAS,CAAC;QACT,QAAQ,EAAE,gBAAgB;QAC1B,QAAQ,EAAE,cAAc;QACxB,UAAU,EAAE,IAAI;KACjB,CAAC;GACW,YAAY,CAGxB;;AAOM,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAEV,QAAQ,GAAG,mBAA4B,CAAC;CAC5D,CAAA;AADoB;IADlB,WAAW,CAAC,gBAAgB,CAAC;oDAC6B;AAFhD,kBAAkB;IAL9B,SAAS,CAAC;QACT,QAAQ,EAAE,sBAAsB;QAChC,QAAQ,EAAE,oBAAoB;QAC9B,UAAU,EAAE,IAAI;KACjB,CAAC;GACW,kBAAkB,CAG9B;;AAOM,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAER,QAAQ,GAAG,iBAA0B,CAAC;CAC1D,CAAA;AADoB;IADlB,WAAW,CAAC,gBAAgB,CAAC;kDAC2B;AAF9C,gBAAgB;IAL5B,SAAS,CAAC;QACT,QAAQ,EAAE,oBAAoB;QAC9B,QAAQ,EAAE,kBAAkB;QAC5B,UAAU,EAAE,IAAI;KACjB,CAAC;GACW,gBAAgB,CAG5B;;AAOM,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAEV,QAAQ,GAAG,mBAA4B,CAAC;CAC5D,CAAA;AADoB;IADlB,WAAW,CAAC,gBAAgB,CAAC;oDAC6B;AAFhD,kBAAkB;IAL9B,SAAS,CAAC;QACT,QAAQ,EAAE,sBAAsB;QAChC,QAAQ,EAAE,oBAAoB;QAC9B,UAAU,EAAE,IAAI;KACjB,CAAC;GACW,kBAAkB,CAG9B;;AAOM,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAER,QAAQ,GAAG,iBAA0B,CAAC;CAC1D,CAAA;AADoB;IADlB,WAAW,CAAC,gBAAgB,CAAC;kDAC2B;AAF9C,gBAAgB;IAL5B,SAAS,CAAC;QACT,QAAQ,EAAE,oBAAoB;QAC9B,QAAQ,EAAE,kBAAkB;QAC5B,UAAU,EAAE,IAAI;KACjB,CAAC;GACW,gBAAgB,CAG5B","sourcesContent":["import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[tngCodeBlock]',\n exportAs: 'tngCodeBlock',\n standalone: true,\n})\nexport class TngCodeBlock {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'code-block' as const;\n}\n\n@Directive({\n selector: '[tngCodeBlockHeader]',\n exportAs: 'tngCodeBlockHeader',\n standalone: true,\n})\nexport class TngCodeBlockHeader {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'code-block-header' as const;\n}\n\n@Directive({\n selector: '[tngCodeBlockBody]',\n exportAs: 'tngCodeBlockBody',\n standalone: true,\n})\nexport class TngCodeBlockBody {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'code-block-body' as const;\n}\n\n@Directive({\n selector: '[tngCodeBlockGutter]',\n exportAs: 'tngCodeBlockGutter',\n standalone: true,\n})\nexport class TngCodeBlockGutter {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'code-block-gutter' as const;\n}\n\n@Directive({\n selector: '[tngCodeBlockCode]',\n exportAs: 'tngCodeBlockCode',\n standalone: true,\n})\nexport class TngCodeBlockCode {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'code-block-code' as const;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-copy.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/utility/copy/tng-copy.ts"],"names":[],"mappings":"AAAA,OAAO,EAYL,KAAK,MAAM,EACZ,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,eAAe,CAAC;AAEhE,KAAK,iBAAiB,GAAG,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;AAC7D,KAAK,oBAAoB,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;AAElD,MAAM,MAAM,iBAAiB,GACzB,iBAAiB,GACjB,oBAAoB,GACpB,MAAM,GACN,IAAI,GACJ,SAAS,CAAC;AACd,MAAM,MAAM,2BAA2B,GAAG,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AACxF,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;AACjG,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,SAAS,GAAG,cAAc,CAAC;AAC3E,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAC3E,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,YAAY,CAAC;AAEvD;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAC3D,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,aAAa,CAAC;AACxD,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,CAAC;AAE/C,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAEvE,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,oBAAoB,CAAC;CAC/B,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,OAAO,CAAC;CAChB,CAAA;AAED,eAAO,MAAM,6BAA6B,EAAE,SAAS,MAAM,EAKzD,CAAC;AACH,eAAO,MAAM,+BAA+B,OAAO,CAAC;AACpD,eAAO,MAAM,iCAAiC,wBAAwB,CAAC;AACvE,eAAO,MAAM,+BAA+B,gBAAgB,CAAC;AAsR7D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAchF;AAWD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,oBAAoB,GAAG,eAAe,CAQlF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,CAG5E;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,2BAA2B,GACjC,SAAS,MAAM,EAAE,CAUnB;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACrC,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,MAAM,GAAG,IAAI,CAUf;AA8CD,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,OAAO,EACtB,MAAM,GAAE,aAA4B,GACnC,OAAO,CAAC,aAAa,CAAC,CAuBxB;AAED,
|
|
1
|
+
{"version":3,"file":"tng-copy.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/utility/copy/tng-copy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-copy.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/utility/copy/tng-copy.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DestroyRef,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n booleanAttribute,\n effect,\n inject,\n input,\n output,\n signal,\n type Signal,\n} from '@angular/core';\nimport type { ElementRef as NgElementRef } from '@angular/core';\n\ntype TngCopyElementRef = Readonly<NgElementRef<HTMLElement>>;\ntype TngCopySourceElement = Readonly<HTMLElement>;\n\nexport type TngCopyFromTarget =\n | TngCopyElementRef\n | TngCopySourceElement\n | string\n | null\n | undefined;\nexport type TngCopyIgnoreSelectorsInput = readonly string[] | string | null | undefined;\nexport type TngCopyButtonTextInput = string | (() => string) | Signal<string> | null | undefined;\nexport type TngCopyButtonTrigger = 'keyboard' | 'pointer' | 'programmatic';\nexport type TngCopyButtonStatus = 'copying' | 'error' | 'idle' | 'success';\nexport type TngCopyFormat = 'text/html' | 'text/plain';\n\n/**\n * Accept string because template/attribute bindings commonly arrive as strings.\n * Keeping this broad also avoids `no-redundant-type-constituents` (string + literals).\n */\nexport type TngCopyFormatInput = string | null | undefined;\nexport type TngCopyMethod = 'clipboard' | 'execCommand';\nexport type TngCopyAnnounce = 'auto' | boolean;\n\nexport type TngCopyAnnounceInput = string | boolean | null | undefined;\n\nexport type TngCopyEvent = {\n text: string;\n trigger: TngCopyButtonTrigger;\n}\n\nexport type TngCopySuccessEvent = {\n method: TngCopyMethod;\n text: string;\n}\n\nexport type TngCopyErrorEvent = {\n error: unknown;\n}\n\nexport const defaultTngCopyIgnoreSelectors: readonly string[] = Object.freeze([\n '[data-copy-ignore]',\n '.line-no',\n '.line-number',\n '.line-numbers',\n]);\nexport const defaultTngCopySuccessDurationMs = 1500;\nexport const defaultTngCopySuccessAnnouncement = 'Copied to clipboard';\nexport const defaultTngCopyErrorAnnouncement = 'Copy failed';\n\nfunction hasNonEmptyText(value: string): boolean {\n return value.trim().length > 0;\n}\n\nfunction dedupeSelectors(selectors: readonly string[]): readonly string[] {\n return [...new Set(selectors)];\n}\n\nfunction normalizeSelectorFromArray(value: readonly string[]): readonly string[] {\n return dedupeSelectors(\n value.map((selector) => selector.trim()).filter((selector) => selector.length > 0),\n );\n}\n\nfunction normalizeSelectorFromString(value: string): readonly string[] {\n return dedupeSelectors(\n value\n .split(',')\n .map((selector) => selector.trim())\n .filter((selector) => selector.length > 0),\n );\n}\n\nfunction toCopyError(error: unknown): Error {\n if (error instanceof Error) {\n return error;\n }\n\n if (typeof error === 'string') {\n return new Error(error);\n }\n\n return new Error('Copy failed.');\n}\n\nfunction isHtmlElement(value: unknown): value is HTMLElement {\n return typeof HTMLElement !== 'undefined' && value instanceof HTMLElement;\n}\n\nfunction isDocument(value: unknown): value is Document {\n return typeof Document !== 'undefined' && value instanceof Document;\n}\n\nfunction isElementRefTarget(value: unknown): value is TngCopyElementRef {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n\n if (!('nativeElement' in value)) {\n return false;\n }\n\n const candidate = value as { nativeElement: unknown };\n return isHtmlElement(candidate.nativeElement);\n}\n\nfunction resolveSourceElement(source: unknown, ownerDocument: unknown): HTMLElement | null {\n if (!isDocument(ownerDocument)) {\n return null;\n }\n\n if (source === null || source === undefined) {\n return null;\n }\n\n if (typeof source === 'string') {\n const normalizedSelector = source.trim();\n if (normalizedSelector.length === 0) {\n return null;\n }\n\n return ownerDocument.querySelector<HTMLElement>(normalizedSelector);\n }\n\n if (isHtmlElement(source)) {\n return source;\n }\n\n if (isElementRefTarget(source)) {\n return source.nativeElement;\n }\n\n return null;\n}\n\nfunction removeIgnoredNodes(root: unknown, ignoreSelectors: readonly string[]): void {\n if (!isHtmlElement(root)) {\n return;\n }\n\n for (const selector of ignoreSelectors) {\n try {\n const ignoredNodes: readonly Element[] = Array.from(root.querySelectorAll(selector));\n for (const node of ignoredNodes) {\n node.remove();\n }\n } catch {\n continue;\n }\n }\n}\n\nfunction isTextInputElement(\n sourceElement: unknown,\n): sourceElement is HTMLInputElement | HTMLTextAreaElement {\n const isInputElement =\n typeof HTMLInputElement !== 'undefined' && sourceElement instanceof HTMLInputElement;\n if (isInputElement) {\n return true;\n }\n\n return typeof HTMLTextAreaElement !== 'undefined' && sourceElement instanceof HTMLTextAreaElement;\n}\n\nfunction extractTextFromSourceElement(\n sourceElement: unknown,\n ignoreSelectors: readonly string[],\n): string {\n if (!isHtmlElement(sourceElement)) {\n return '';\n }\n\n if (isTextInputElement(sourceElement)) {\n return sourceElement.value;\n }\n\n if (ignoreSelectors.length === 0) {\n return sourceElement.textContent ?? '';\n }\n\n const clone = sourceElement.cloneNode(true) as HTMLElement;\n removeIgnoredNodes(clone, ignoreSelectors);\n return clone.textContent ?? '';\n}\n\nfunction copyWithExecCommand(text: string, ownerDocument: unknown): boolean {\n if (!isDocument(ownerDocument)) {\n return false;\n }\n\n if (typeof ownerDocument.execCommand !== 'function') {\n return false;\n }\n\n const body = ownerDocument.body;\n if (body === null) {\n return false;\n }\n\n const textarea = ownerDocument.createElement('textarea');\n textarea.value = text;\n textarea.setAttribute('readonly', '');\n textarea.style.inset = '0';\n textarea.style.opacity = '0';\n textarea.style.pointerEvents = 'none';\n textarea.style.position = 'fixed';\n const activeElement = ownerDocument.activeElement;\n const restoreTarget = isHtmlElement(activeElement) ? activeElement : null;\n\n body.appendChild(textarea);\n textarea.focus();\n textarea.select();\n\n try {\n return ownerDocument.execCommand('copy');\n } finally {\n body.removeChild(textarea);\n if (restoreTarget !== null && ownerDocument.contains(restoreTarget)) {\n restoreTarget.focus();\n }\n }\n}\n\nfunction toRoundedPositiveNumber(value: number): number {\n return Math.max(0, Math.round(value));\n}\n\nfunction toPlainTextFromHtml(html: string, ownerDocument: unknown): string {\n if (!isDocument(ownerDocument)) {\n return html.replace(/<[^>]*>/g, '');\n }\n\n const template = ownerDocument.createElement('template');\n template.innerHTML = html;\n return template.content.textContent ?? '';\n}\n\nfunction normalizeHotkey(value: string | null | undefined): string | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n const normalized = value.trim().toLowerCase();\n return normalized.length > 0 ? normalized : null;\n}\n\nfunction normalizeKey(value: string): string {\n if (value === ' ') {\n return 'space';\n }\n\n const normalized = value.trim().toLowerCase();\n if (normalized === 'spacebar') {\n return 'space';\n }\n\n return normalized;\n}\n\nfunction isActivationKey(key: string): boolean {\n return key === 'Enter' || key === ' ';\n}\n\nfunction isNativeButton(value: unknown): value is HTMLButtonElement {\n return typeof HTMLButtonElement !== 'undefined' && value instanceof HTMLButtonElement;\n}\n\nfunction isElement(value: unknown): value is Element {\n return typeof Element !== 'undefined' && value instanceof Element;\n}\n\nfunction resolveExplicitText(\n value: TngCopyButtonTextInput,\n): { error: Error | null; value: string | null | undefined } {\n if (value === undefined || value === null) {\n return { error: null, value };\n }\n\n if (typeof value === 'string') {\n return { error: null, value };\n }\n\n try {\n const result = value();\n if (result === null || result === undefined) {\n return { error: null, value: null };\n }\n\n return { error: null, value: typeof result === 'string' ? result : String(result) };\n } catch (error) {\n return { error: toCopyError(error), value: null };\n }\n}\n\ntype TngHotkeyModifiers = Readonly<{\n ctrl: boolean;\n meta: boolean;\n alt: boolean;\n shift: boolean;\n key: string;\n}>;\n\nfunction parseHotkey(hotkey: string): TngHotkeyModifiers | null {\n const tokens = hotkey\n .split('+')\n .map((t) => t.trim().toLowerCase())\n .filter(Boolean);\n\n if (tokens.length === 0) return null;\n\n const key = tokens[tokens.length - 1];\n const mods = new Set(tokens.slice(0, -1));\n\n const isMac = /mac|iphone|ipad|ipod/i.test(globalThis.navigator?.platform ?? '');\n const modCtrl = mods.has('ctrl') || (mods.has('mod') && !isMac);\n const modMeta = mods.has('meta') || (mods.has('mod') && isMac);\n\n return {\n ctrl: modCtrl,\n meta: modMeta,\n alt: mods.has('alt'),\n shift: mods.has('shift'),\n key,\n };\n}\n\nexport function eventMatchesHotkey(event: KeyboardEvent, hotkey: string): boolean {\n const parsed = parseHotkey(hotkey);\n if (!parsed) return false;\n\n const checks: readonly (readonly [boolean, boolean])[] = [\n [event.ctrlKey, parsed.ctrl],\n [event.metaKey, parsed.meta],\n [event.altKey, parsed.alt],\n [event.shiftKey, parsed.shift],\n ];\n\n if (checks.some(([actual, expected]) => actual !== expected)) return false;\n\n return normalizeKey(event.key) === normalizeKey(parsed.key);\n}\n\nfunction coerceTngCopySuccessDuration(value: number | string): number {\n const numericValue = typeof value === 'number' ? value : Number(value);\n if (!Number.isFinite(numericValue)) {\n return defaultTngCopySuccessDurationMs;\n }\n\n return toRoundedPositiveNumber(numericValue);\n}\n\nexport function coerceTngCopyAnnounce(value: TngCopyAnnounceInput): TngCopyAnnounce {\n if (value === true || value === false) return value;\n if (value === null || value === undefined) return 'auto';\n\n const v = String(value).trim().toLowerCase();\n if (v === '' || v === 'true') return true;\n if (v === 'false') return false;\n return 'auto';\n}\n\nexport function coerceTngCopyFormat(value: TngCopyFormatInput): TngCopyFormat {\n const v = value === null || value === undefined ? '' : String(value).trim().toLowerCase();\n return v === 'text/html' ? 'text/html' : 'text/plain';\n}\n\nexport function normalizeTngCopyIgnoreSelectors(\n value: TngCopyIgnoreSelectorsInput,\n): readonly string[] {\n if (value === undefined || value === null) {\n return defaultTngCopyIgnoreSelectors;\n }\n\n if (typeof value === 'string') {\n return normalizeSelectorFromString(value);\n }\n\n return normalizeSelectorFromArray(value);\n}\n\nexport function resolveTngCopyPayload(\n directText: string | null | undefined,\n sourceText: string | null,\n): string | null {\n if (directText !== null && directText !== undefined) {\n return hasNonEmptyText(directText) ? directText : null;\n }\n\n if (sourceText !== null && hasNonEmptyText(sourceText)) {\n return sourceText;\n }\n\n return null;\n}\n\ntype TngClipboardLike = Readonly<{\n write?: (items: readonly unknown[]) => Promise<void>;\n writeText?: (text: string) => Promise<void>;\n}>;\n\nfunction canWriteHtml(\n clipboardApi: TngClipboardLike,\n): clipboardApi is Readonly<{ write: (items: readonly unknown[]) => Promise<void> }> {\n return (\n typeof clipboardApi.write === 'function' &&\n typeof ClipboardItem !== 'undefined' &&\n typeof Blob !== 'undefined'\n );\n}\n\nasync function tryWriteTngClipboard(params: Readonly<{\n format: TngCopyFormat;\n text: string;\n plainText: string;\n}>): Promise<TngCopyMethod | null> {\n const { format, text, plainText } = params;\n\n const clipboardApi = globalThis.navigator?.clipboard as unknown as TngClipboardLike | undefined;\n if (clipboardApi === undefined) {\n return null;\n }\n\n if (format === 'text/html' && canWriteHtml(clipboardApi)) {\n const clipboardItem = new ClipboardItem({\n 'text/html': new Blob([text], { type: 'text/html' }),\n 'text/plain': new Blob([plainText], { type: 'text/plain' }),\n });\n await clipboardApi.write([clipboardItem]);\n return 'clipboard';\n }\n\n if (typeof clipboardApi.writeText === 'function') {\n await clipboardApi.writeText(plainText);\n return 'clipboard';\n }\n\n return null;\n}\n\nexport async function writeTngClipboardText(\n text: string,\n ownerDocument: unknown,\n format: TngCopyFormat = 'text/plain',\n): Promise<TngCopyMethod> {\n const plainText = format === 'text/html' ? toPlainTextFromHtml(text, ownerDocument) : text;\n\n let clipboardError: unknown = null;\n\n try {\n const result = await tryWriteTngClipboard({ format, text, plainText });\n if (result !== null) {\n return result;\n }\n } catch (error) {\n clipboardError = error;\n }\n\n if (copyWithExecCommand(plainText, ownerDocument)) {\n return 'execCommand';\n }\n\n if (clipboardError !== null) {\n throw toCopyError(clipboardError);\n }\n\n throw new Error('Clipboard API is not available in this environment.');\n}\n\n@Directive({\n selector: '[tngCopy], [tngCopyButton]',\n exportAs: 'tngCopy',\n})\nexport class TngCopy {\n public readonly tngCopy = output<TngCopyEvent>();\n public readonly tngCopyButtonText = input<TngCopyButtonTextInput>(undefined);\n public readonly tngCopyButtonTarget = input<TngCopyFromTarget>(null);\n public readonly tngCopyButtonFormat = input<TngCopyFormat, TngCopyFormatInput>('text/plain', {\n transform: coerceTngCopyFormat,\n });\n public readonly tngCopyButtonSuccessDurationMs = input<number, number | string>(\n defaultTngCopySuccessDurationMs,\n { transform: coerceTngCopySuccessDuration },\n );\n public readonly tngCopyButtonDisabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly tngCopyButtonHotkey = input<string | null>(null);\n public readonly tngCopyButtonAnnounce = input<TngCopyAnnounce, TngCopyAnnounceInput>('auto', {\n transform: coerceTngCopyAnnounce,\n });\n public readonly tngCopyButtonSuccessMessage = input<string>(defaultTngCopySuccessAnnouncement);\n public readonly tngCopyButtonErrorMessage = input<string>(defaultTngCopyErrorAnnouncement);\n public readonly tngCopyDisabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly tngCopied = output<string>();\n public readonly tngCopySuccess = output<TngCopySuccessEvent>();\n public readonly tngCopyError = output<TngCopyErrorEvent>();\n public readonly tngCopyFrom = input<TngCopyFromTarget>(null);\n public readonly tngCopyIgnoreSelectors = input<readonly string[], TngCopyIgnoreSelectorsInput>(\n defaultTngCopyIgnoreSelectors,\n {\n transform: normalizeTngCopyIgnoreSelectors,\n },\n );\n public readonly tngCopyText = input<string | null | undefined>(undefined);\n public readonly tngCopyAnnounced = output<string>();\n public readonly status = signal<TngCopyButtonStatus>('idle');\n public readonly lastCopiedText = signal<string | null>(null);\n public readonly error = signal<Error | null>(null);\n\n private readonly hostElement = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly destroyRef = inject(DestroyRef);\n private successResetTimer: ReturnType<typeof setTimeout> | null = null;\n private copying = false;\n\n @HostBinding('attr.data-copy-disabled')\n protected get dataCopyDisabledAttr(): '' | null {\n return this.isDisabled() ? '' : null;\n }\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabledAttr(): 'true' | null {\n if (isNativeButton(this.hostElement)) {\n return null;\n }\n\n return this.isDisabled() ? 'true' : null;\n }\n\n @HostBinding('attr.disabled')\n protected get disabledAttr(): '' | null {\n if (!isNativeButton(this.hostElement)) {\n return null;\n }\n\n return this.isDisabled() ? '' : null;\n }\n\n public constructor() {\n effect((onCleanup): void => {\n const hotkey = normalizeHotkey(this.tngCopyButtonHotkey());\n if (hotkey === null) {\n return;\n }\n\n const ownerDocument = this.hostElement.ownerDocument;\n const listener = (event: KeyboardEvent): void => {\n if (!this.isHostOrChildFocused()) {\n return;\n }\n\n if (!eventMatchesHotkey(event, hotkey)) {\n return;\n }\n\n event.preventDefault();\n void this.tryCopy('keyboard');\n };\n\n ownerDocument.addEventListener('keydown', listener);\n onCleanup(() => ownerDocument.removeEventListener('keydown', listener));\n });\n\n this.destroyRef.onDestroy((): void => {\n this.clearSuccessResetTimer();\n });\n }\n\n @HostListener('click', ['$event'])\n protected onHostClick(...args: readonly unknown[]): void {\n const [event] = args;\n if (!(event instanceof Event)) {\n return;\n }\n\n if (this.isDisabled() && !isNativeButton(this.hostElement)) {\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n\n void this.tryCopy('pointer');\n }\n\n @HostListener('keydown', ['$event'])\n protected onHostKeyDown(...args: readonly unknown[]): void {\n if (isNativeButton(this.hostElement)) {\n return;\n }\n\n const [event] = args;\n if (!(event instanceof KeyboardEvent)) {\n return;\n }\n\n if (!isActivationKey(event.key)) {\n return;\n }\n\n event.preventDefault();\n if (this.isDisabled()) {\n return;\n }\n\n void this.tryCopy('keyboard');\n }\n\n public async copy(): Promise<boolean> {\n return this.tryCopy('programmatic');\n }\n\n private shouldAnnounce(trigger: TngCopyButtonTrigger): boolean {\n const announce = this.tngCopyButtonAnnounce();\n if (announce === false) {\n return false;\n }\n\n if (announce === true) {\n return true;\n }\n\n return trigger === 'keyboard';\n }\n\n private isDisabled(): boolean {\n return this.tngCopyDisabled() || this.tngCopyButtonDisabled();\n }\n\n private isHostOrChildFocused(): boolean {\n const activeElement = this.hostElement.ownerDocument.activeElement;\n if (!isElement(activeElement)) {\n return false;\n }\n\n return activeElement === this.hostElement || this.hostElement.contains(activeElement);\n }\n\n private clearSuccessResetTimer(): void {\n if (this.successResetTimer === null) {\n return;\n }\n\n clearTimeout(this.successResetTimer);\n this.successResetTimer = null;\n }\n\n private scheduleSuccessReset(): void {\n this.clearSuccessResetTimer();\n this.successResetTimer = setTimeout((): void => {\n this.status.set('idle');\n this.successResetTimer = null;\n }, this.tngCopyButtonSuccessDurationMs());\n }\n\n private announce(message: string, trigger: TngCopyButtonTrigger): void {\n if (!this.shouldAnnounce(trigger)) {\n return;\n }\n\n const normalizedMessage = message.trim();\n if (normalizedMessage.length === 0) {\n return;\n }\n\n this.tngCopyAnnounced.emit(normalizedMessage);\n }\n\n private emitError(error: Error, trigger: TngCopyButtonTrigger): void {\n this.status.set('error');\n this.error.set(error);\n this.tngCopyError.emit({ error });\n this.announce(this.tngCopyButtonErrorMessage(), trigger);\n }\n\n private async doCopy(text: string, trigger: TngCopyButtonTrigger): Promise<boolean> {\n try {\n const method = await writeTngClipboardText(\n text,\n this.hostElement.ownerDocument,\n this.tngCopyButtonFormat(),\n );\n this.status.set('success');\n this.lastCopiedText.set(text);\n this.tngCopied.emit(text);\n this.tngCopySuccess.emit({ text, method });\n this.announce(this.tngCopyButtonSuccessMessage(), trigger);\n this.scheduleSuccessReset();\n return true;\n } catch (error) {\n this.emitError(toCopyError(error), trigger);\n return false;\n } finally {\n this.copying = false;\n }\n }\n\n private async tryCopy(trigger: TngCopyButtonTrigger): Promise<boolean> {\n if (this.copying) {\n return false;\n }\n\n if (this.isDisabled()) {\n return false;\n }\n\n this.clearSuccessResetTimer();\n this.status.set('copying');\n this.error.set(null);\n this.copying = true;\n\n const resolvedPayload = this.resolvePayload();\n if (resolvedPayload.error !== null) {\n this.emitError(resolvedPayload.error, trigger);\n this.copying = false;\n return false;\n }\n\n if (resolvedPayload.text === null) {\n this.emitError(\n new Error('No copy payload found. Provide tngCopyButtonText/tngCopyText or target inputs.'),\n trigger,\n );\n this.copying = false;\n return false;\n }\n\n this.tngCopy.emit({ text: resolvedPayload.text, trigger });\n const result = await this.doCopy(resolvedPayload.text, trigger);\n return result;\n\n \n }\n\n private findSourceText(): string | null {\n const configuredTarget = this.tngCopyButtonTarget() ?? this.tngCopyFrom();\n const hasConfiguredTarget =\n configuredTarget !== undefined &&\n configuredTarget !== null &&\n !(typeof configuredTarget === 'string' && configuredTarget.trim().length === 0);\n\n const sourceElement = resolveSourceElement(configuredTarget, this.hostElement.ownerDocument);\n if (hasConfiguredTarget && sourceElement === null) {\n throw new Error('Copy target was not found.');\n }\n const sourceText =\n sourceElement === null\n ? null\n : extractTextFromSourceElement(sourceElement, this.tngCopyIgnoreSelectors());\n return sourceText;\n }\n\n private resolvePayload(): { error: Error | null; text: string | null } {\n const explicitTextResult = resolveExplicitText(this.tngCopyButtonText());\n if (explicitTextResult.error !== null) {\n return { error: explicitTextResult.error, text: null };\n }\n\n const fallbackText = this.tngCopyText();\n const directText =\n explicitTextResult.value !== undefined ? explicitTextResult.value : fallbackText;\n\n try {\n const sourceText = this.findSourceText();\n return { error: null, text: resolveTngCopyPayload(directText, sourceText) };\n } catch (error) {\n return { error: toCopyError(error), text: null };\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tng-copy.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/utility/copy/tng-copy.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,MAAM,EACN,MAAM,EACN,KAAK,EACL,MAAM,EACN,MAAM,GAEP,MAAM,eAAe,CAAC;AA0CvB,MAAM,CAAC,MAAM,6BAA6B,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC5E,oBAAoB;IACpB,UAAU;IACV,cAAc;IACd,eAAe;CAChB,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,CAAC;AACpD,MAAM,CAAC,MAAM,iCAAiC,GAAG,qBAAqB,CAAC;AACvE,MAAM,CAAC,MAAM,+BAA+B,GAAG,aAAa,CAAC;AAE7D,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,eAAe,CAAC,SAA4B;IACnD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAwB;IAC1D,OAAO,eAAe,CACpB,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CACnF,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAa;IAChD,OAAO,eAAe,CACpB,KAAK;SACF,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SAClC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAC7C,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,WAAW,KAAK,WAAW,IAAI,KAAK,YAAY,WAAW,CAAC;AAC5E,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,OAAO,QAAQ,KAAK,WAAW,IAAI,KAAK,YAAY,QAAQ,CAAC;AACtE,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,CAAC,eAAe,IAAI,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,KAAmC,CAAC;IACtD,OAAO,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAe,EAAE,aAAsB;IACnE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QACzC,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,aAAa,CAAC,aAAa,CAAc,kBAAkB,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAa,EAAE,eAAkC;IAC3E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,YAAY,GAAuB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrF,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBAChC,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CACzB,aAAsB;IAEtB,MAAM,cAAc,GAClB,OAAO,gBAAgB,KAAK,WAAW,IAAI,aAAa,YAAY,gBAAgB,CAAC;IACvF,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,OAAO,mBAAmB,KAAK,WAAW,IAAI,aAAa,YAAY,mBAAmB,CAAC;AACpG,CAAC;AAED,SAAS,4BAA4B,CACnC,aAAsB,EACtB,eAAkC;IAElC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,kBAAkB,CAAC,aAAa,CAAC,EAAE,CAAC;QACtC,OAAO,aAAa,CAAC,KAAK,CAAC;IAC7B,CAAC;IAED,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,aAAa,CAAC,WAAW,IAAI,EAAE,CAAC;IACzC,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;IAC3D,kBAAkB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,aAAsB;IAC/D,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,aAAa,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;IAChC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACzD,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACtC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;IACtC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;IAClC,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC;IAClD,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;IAE1E,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,MAAM,EAAE,CAAC;IAElB,IAAI,CAAC;QACH,OAAO,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;YAAS,CAAC;QACT,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC3B,IAAI,aAAa,KAAK,IAAI,IAAI,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACpE,aAAa,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAa;IAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,aAAsB;IAC/D,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACzD,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,OAAO,QAAQ,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,eAAe,CAAC,KAAgC;IACvD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,OAAO,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,GAAG,CAAC;AACxC,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,OAAO,iBAAiB,KAAK,WAAW,IAAI,KAAK,YAAY,iBAAiB,CAAC;AACxF,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,OAAO,OAAO,KAAK,WAAW,IAAI,KAAK,YAAY,OAAO,CAAC;AACpE,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAA6B;IAE7B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;QACvB,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC5C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACtC,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IACtF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACpD,CAAC;AACH,CAAC;AAUD,SAAS,WAAW,CAAC,MAAc;IACjC,MAAM,MAAM,GAAG,MAAM;SAClB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SAClC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAErC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1C,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC;IAE/D,OAAO;QACL,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACpB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;QACxB,GAAG;KACJ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAoB,EAAE,MAAc;IACrE,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE1B,MAAM,MAAM,GAA6C;QACvD,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC;QAC5B,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC;QAC5B,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC;QAC1B,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC;KAC/B,CAAC;IAEF,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,KAAK,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAE3E,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,4BAA4B,CAAC,KAAsB;IAC1D,MAAM,YAAY,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACnC,OAAO,+BAA+B,CAAC;IACzC,CAAC;IAED,OAAO,uBAAuB,CAAC,YAAY,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAA2B;IAC/D,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACpD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAEzD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7C,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,CAAC,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAChC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAyB;IAC3D,MAAM,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1F,OAAO,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,KAAkC;IAElC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,6BAA6B,CAAC;IACvC,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,2BAA2B,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,0BAA0B,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,UAAqC,EACrC,UAAyB;IAEzB,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACpD,OAAO,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,CAAC;IAED,IAAI,UAAU,KAAK,IAAI,IAAI,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;QACvD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAOD,SAAS,YAAY,CACnB,YAA8B;IAE9B,OAAO,CACL,OAAO,YAAY,CAAC,KAAK,KAAK,UAAU;QACxC,OAAO,aAAa,KAAK,WAAW;QACpC,OAAO,IAAI,KAAK,WAAW,CAC5B,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,MAIlC;IACA,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAE3C,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,EAAE,SAAoD,CAAC;IAChG,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,KAAK,WAAW,IAAI,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;QACzD,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC;YACtC,WAAW,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;YACpD,YAAY,EAAE,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;SAC5D,CAAC,CAAC;QACH,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QAC1C,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,OAAO,YAAY,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;QACjD,MAAM,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACxC,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAY,EACZ,aAAsB,EACtB,SAAwB,YAAY;IAEpC,MAAM,SAAS,GAAG,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE3F,IAAI,cAAc,GAAY,IAAI,CAAC;IAEnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACvE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,IAAI,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,CAAC;QAClD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QAC5B,MAAM,WAAW,CAAC,cAAc,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;AACzE,CAAC;AAOM,IAAM,OAAO,GAAb,MAAM,OAAO;IACF,OAAO,GAAG,MAAM,EAAgB,CAAC;IACjC,iBAAiB,GAAG,KAAK,CAAyB,SAAS,CAAC,CAAC;IAC7D,mBAAmB,GAAG,KAAK,CAAoB,IAAI,CAAC,CAAC;IACrD,mBAAmB,GAAG,KAAK,CAAoC,YAAY,EAAE;QAC3F,SAAS,EAAE,mBAAmB;KAC/B,CAAC,CAAC;IACa,8BAA8B,GAAG,KAAK,CACpD,+BAA+B,EAC/B,EAAE,SAAS,EAAE,4BAA4B,EAAE,CAC5C,CAAC;IACc,qBAAqB,GAAG,KAAK,CAA4B,KAAK,EAAE;QAC9E,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,mBAAmB,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IACjD,qBAAqB,GAAG,KAAK,CAAwC,MAAM,EAAE;QAC3F,SAAS,EAAE,qBAAqB;KACjC,CAAC,CAAC;IACa,2BAA2B,GAAG,KAAK,CAAS,iCAAiC,CAAC,CAAC;IAC/E,yBAAyB,GAAG,KAAK,CAAS,+BAA+B,CAAC,CAAC;IAC3E,eAAe,GAAG,KAAK,CAA4B,KAAK,EAAE;QACxE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,SAAS,GAAG,MAAM,EAAU,CAAC;IAC7B,cAAc,GAAG,MAAM,EAAuB,CAAC;IAC/C,YAAY,GAAG,MAAM,EAAqB,CAAC;IAC3C,WAAW,GAAG,KAAK,CAAoB,IAAI,CAAC,CAAC;IAC7C,sBAAsB,GAAG,KAAK,CAC5C,6BAA6B,EAC7B;QACE,SAAS,EAAE,+BAA+B;KAC3C,CACF,CAAC;IACc,WAAW,GAAG,KAAK,CAA4B,SAAS,CAAC,CAAC;IAC1D,gBAAgB,GAAG,MAAM,EAAU,CAAC;IACpC,MAAM,GAAG,MAAM,CAAsB,MAAM,CAAC,CAAC;IAC7C,cAAc,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IAC7C,KAAK,GAAG,MAAM,CAAe,IAAI,CAAC,CAAC;IAElC,WAAW,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC,aAAa,CAAC;IACxE,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACzC,iBAAiB,GAAyC,IAAI,CAAC;IAC/D,OAAO,GAAG,KAAK,CAAC;IAGxB,IAAc,oBAAoB;QAChC,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACvC,CAAC;IAGD,IAAc,gBAAgB;QAC5B,IAAI,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;IAGD,IAAc,YAAY;QACxB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACvC,CAAC;IAED;QACE,MAAM,CAAC,CAAC,SAAS,EAAQ,EAAE;YACzB,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;YAC3D,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO;YACT,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;YACrD,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAQ,EAAE;gBAC9C,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;oBACjC,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;oBACvC,OAAO;gBACT,CAAC;gBAED,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAChC,CAAC,CAAC;YAEF,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACpD,SAAS,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAS,EAAE;YACnC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAGS,WAAW,CAAC,GAAG,IAAwB;QAC/C,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3D,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,wBAAwB,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QAED,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAGS,aAAa,CAAC,GAAG,IAAwB;QACjD,IAAI,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,OAAO;QACT,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,CAAC,KAAK,YAAY,aAAa,CAAC,EAAE,CAAC;YACtC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACtC,CAAC;IAEO,cAAc,CAAC,OAA6B;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC9C,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,OAAO,KAAK,UAAU,CAAC;IAChC,CAAC;IAEO,UAAU;QAChB,OAAO,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAChE,CAAC;IAEO,oBAAoB;QAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC;QACnE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,aAAa,KAAK,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACxF,CAAC;IAEO,sBAAsB;QAC5B,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,EAAE,CAAC;YACpC,OAAO;QACT,CAAC;QAED,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACrC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAChC,CAAC;IAEO,oBAAoB;QAC1B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,GAAS,EAAE;YAC7C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,CAAC,EAAE,IAAI,CAAC,8BAA8B,EAAE,CAAC,CAAC;IAC5C,CAAC;IAEO,QAAQ,CAAC,OAAe,EAAE,OAA6B;QAC7D,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QACzC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAEO,SAAS,CAAC,KAAY,EAAE,OAA6B;QAC3D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,OAA6B;QAC9D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,qBAAqB,CACxC,IAAI,EACJ,IAAI,CAAC,WAAW,CAAC,aAAa,EAC9B,IAAI,CAAC,mBAAmB,EAAE,CAC3B,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC3B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,OAAO,CAAC,CAAC;YAC3D,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;YAC5C,OAAO,KAAK,CAAC;QACf,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,OAA6B;QACjD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC9C,IAAI,eAAe,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,eAAe,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS,CACZ,IAAI,KAAK,CAAC,gFAAgF,CAAC,EAC3F,OAAO,CACR,CAAC;YACF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAChE,OAAO,MAAM,CAAC;IAGhB,CAAC;IAEO,cAAc;QACpB,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1E,MAAM,mBAAmB,GACvB,gBAAgB,KAAK,SAAS;YAC9B,gBAAgB,KAAK,IAAI;YACzB,CAAC,CAAC,OAAO,gBAAgB,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;QAElF,MAAM,aAAa,GAAG,oBAAoB,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAC7F,IAAI,mBAAmB,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,UAAU,GACd,aAAa,KAAK,IAAI;YACpB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,4BAA4B,CAAC,aAAa,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QACjF,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,cAAc;QACpB,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACzE,IAAI,kBAAkB,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACtC,OAAO,EAAE,KAAK,EAAE,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACzD,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,UAAU,GACd,kBAAkB,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;QAEnF,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACzC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACnD,CAAC;IACH,CAAC;CACF,CAAA;AA5PC;IADC,WAAW,CAAC,yBAAyB,CAAC;mDAGtC;AAGD;IADC,WAAW,CAAC,oBAAoB,CAAC;+CAOjC;AAGD;IADC,WAAW,CAAC,eAAe,CAAC;2CAO5B;AAiCS;IADT,YAAY,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;0CAcjC;AAGS;IADT,YAAY,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC;4CAqBnC;AAtIU,OAAO;IALnB,SAAS,CAAC;QACT,QAAQ,EAAE,4BAA4B;QACtC,QAAQ,EAAE,SAAS;QACnB,UAAU,EAAE,IAAI;KACjB,CAAC;GACW,OAAO,CAySnB","sourcesContent":["import {\n DestroyRef,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n booleanAttribute,\n effect,\n inject,\n input,\n output,\n signal,\n type Signal,\n} from '@angular/core';\nimport type { ElementRef as NgElementRef } from '@angular/core';\n\ntype TngCopyElementRef = Readonly<NgElementRef<HTMLElement>>;\ntype TngCopySourceElement = Readonly<HTMLElement>;\n\nexport type TngCopyFromTarget =\n | TngCopyElementRef\n | TngCopySourceElement\n | string\n | null\n | undefined;\nexport type TngCopyIgnoreSelectorsInput = readonly string[] | string | null | undefined;\nexport type TngCopyButtonTextInput = string | (() => string) | Signal<string> | null | undefined;\nexport type TngCopyButtonTrigger = 'keyboard' | 'pointer' | 'programmatic';\nexport type TngCopyButtonStatus = 'copying' | 'error' | 'idle' | 'success';\nexport type TngCopyFormat = 'text/html' | 'text/plain';\n\n/**\n * Accept string because template/attribute bindings commonly arrive as strings.\n * Keeping this broad also avoids `no-redundant-type-constituents` (string + literals).\n */\nexport type TngCopyFormatInput = string | null | undefined;\nexport type TngCopyMethod = 'clipboard' | 'execCommand';\nexport type TngCopyAnnounce = 'auto' | boolean;\n\nexport type TngCopyAnnounceInput = string | boolean | null | undefined;\n\nexport type TngCopyEvent = {\n text: string;\n trigger: TngCopyButtonTrigger;\n}\n\nexport type TngCopySuccessEvent = {\n method: TngCopyMethod;\n text: string;\n}\n\nexport type TngCopyErrorEvent = {\n error: unknown;\n}\n\nexport const defaultTngCopyIgnoreSelectors: readonly string[] = Object.freeze([\n '[data-copy-ignore]',\n '.line-no',\n '.line-number',\n '.line-numbers',\n]);\nexport const defaultTngCopySuccessDurationMs = 1500;\nexport const defaultTngCopySuccessAnnouncement = 'Copied to clipboard';\nexport const defaultTngCopyErrorAnnouncement = 'Copy failed';\n\nfunction hasNonEmptyText(value: string): boolean {\n return value.trim().length > 0;\n}\n\nfunction dedupeSelectors(selectors: readonly string[]): readonly string[] {\n return [...new Set(selectors)];\n}\n\nfunction normalizeSelectorFromArray(value: readonly string[]): readonly string[] {\n return dedupeSelectors(\n value.map((selector) => selector.trim()).filter((selector) => selector.length > 0),\n );\n}\n\nfunction normalizeSelectorFromString(value: string): readonly string[] {\n return dedupeSelectors(\n value\n .split(',')\n .map((selector) => selector.trim())\n .filter((selector) => selector.length > 0),\n );\n}\n\nfunction toCopyError(error: unknown): Error {\n if (error instanceof Error) {\n return error;\n }\n\n if (typeof error === 'string') {\n return new Error(error);\n }\n\n return new Error('Copy failed.');\n}\n\nfunction isHtmlElement(value: unknown): value is HTMLElement {\n return typeof HTMLElement !== 'undefined' && value instanceof HTMLElement;\n}\n\nfunction isDocument(value: unknown): value is Document {\n return typeof Document !== 'undefined' && value instanceof Document;\n}\n\nfunction isElementRefTarget(value: unknown): value is TngCopyElementRef {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n\n if (!('nativeElement' in value)) {\n return false;\n }\n\n const candidate = value as { nativeElement: unknown };\n return isHtmlElement(candidate.nativeElement);\n}\n\nfunction resolveSourceElement(source: unknown, ownerDocument: unknown): HTMLElement | null {\n if (!isDocument(ownerDocument)) {\n return null;\n }\n\n if (source === null || source === undefined) {\n return null;\n }\n\n if (typeof source === 'string') {\n const normalizedSelector = source.trim();\n if (normalizedSelector.length === 0) {\n return null;\n }\n\n return ownerDocument.querySelector<HTMLElement>(normalizedSelector);\n }\n\n if (isHtmlElement(source)) {\n return source;\n }\n\n if (isElementRefTarget(source)) {\n return source.nativeElement;\n }\n\n return null;\n}\n\nfunction removeIgnoredNodes(root: unknown, ignoreSelectors: readonly string[]): void {\n if (!isHtmlElement(root)) {\n return;\n }\n\n for (const selector of ignoreSelectors) {\n try {\n const ignoredNodes: readonly Element[] = Array.from(root.querySelectorAll(selector));\n for (const node of ignoredNodes) {\n node.remove();\n }\n } catch {\n continue;\n }\n }\n}\n\nfunction isTextInputElement(\n sourceElement: unknown,\n): sourceElement is HTMLInputElement | HTMLTextAreaElement {\n const isInputElement =\n typeof HTMLInputElement !== 'undefined' && sourceElement instanceof HTMLInputElement;\n if (isInputElement) {\n return true;\n }\n\n return typeof HTMLTextAreaElement !== 'undefined' && sourceElement instanceof HTMLTextAreaElement;\n}\n\nfunction extractTextFromSourceElement(\n sourceElement: unknown,\n ignoreSelectors: readonly string[],\n): string {\n if (!isHtmlElement(sourceElement)) {\n return '';\n }\n\n if (isTextInputElement(sourceElement)) {\n return sourceElement.value;\n }\n\n if (ignoreSelectors.length === 0) {\n return sourceElement.textContent ?? '';\n }\n\n const clone = sourceElement.cloneNode(true) as HTMLElement;\n removeIgnoredNodes(clone, ignoreSelectors);\n return clone.textContent ?? '';\n}\n\nfunction copyWithExecCommand(text: string, ownerDocument: unknown): boolean {\n if (!isDocument(ownerDocument)) {\n return false;\n }\n\n if (typeof ownerDocument.execCommand !== 'function') {\n return false;\n }\n\n const body = ownerDocument.body;\n if (body === null) {\n return false;\n }\n\n const textarea = ownerDocument.createElement('textarea');\n textarea.value = text;\n textarea.setAttribute('readonly', '');\n textarea.style.inset = '0';\n textarea.style.opacity = '0';\n textarea.style.pointerEvents = 'none';\n textarea.style.position = 'fixed';\n const activeElement = ownerDocument.activeElement;\n const restoreTarget = isHtmlElement(activeElement) ? activeElement : null;\n\n body.appendChild(textarea);\n textarea.focus();\n textarea.select();\n\n try {\n return ownerDocument.execCommand('copy');\n } finally {\n body.removeChild(textarea);\n if (restoreTarget !== null && ownerDocument.contains(restoreTarget)) {\n restoreTarget.focus();\n }\n }\n}\n\nfunction toRoundedPositiveNumber(value: number): number {\n return Math.max(0, Math.round(value));\n}\n\nfunction toPlainTextFromHtml(html: string, ownerDocument: unknown): string {\n if (!isDocument(ownerDocument)) {\n return html.replace(/<[^>]*>/g, '');\n }\n\n const template = ownerDocument.createElement('template');\n template.innerHTML = html;\n return template.content.textContent ?? '';\n}\n\nfunction normalizeHotkey(value: string | null | undefined): string | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n const normalized = value.trim().toLowerCase();\n return normalized.length > 0 ? normalized : null;\n}\n\nfunction normalizeKey(value: string): string {\n if (value === ' ') {\n return 'space';\n }\n\n const normalized = value.trim().toLowerCase();\n if (normalized === 'spacebar') {\n return 'space';\n }\n\n return normalized;\n}\n\nfunction isActivationKey(key: string): boolean {\n return key === 'Enter' || key === ' ';\n}\n\nfunction isNativeButton(value: unknown): value is HTMLButtonElement {\n return typeof HTMLButtonElement !== 'undefined' && value instanceof HTMLButtonElement;\n}\n\nfunction isElement(value: unknown): value is Element {\n return typeof Element !== 'undefined' && value instanceof Element;\n}\n\nfunction resolveExplicitText(\n value: TngCopyButtonTextInput,\n): { error: Error | null; value: string | null | undefined } {\n if (value === undefined || value === null) {\n return { error: null, value };\n }\n\n if (typeof value === 'string') {\n return { error: null, value };\n }\n\n try {\n const result = value();\n if (result === null || result === undefined) {\n return { error: null, value: null };\n }\n\n return { error: null, value: typeof result === 'string' ? result : String(result) };\n } catch (error) {\n return { error: toCopyError(error), value: null };\n }\n}\n\ntype TngHotkeyModifiers = Readonly<{\n ctrl: boolean;\n meta: boolean;\n alt: boolean;\n shift: boolean;\n key: string;\n}>;\n\nfunction parseHotkey(hotkey: string): TngHotkeyModifiers | null {\n const tokens = hotkey\n .split('+')\n .map((t) => t.trim().toLowerCase())\n .filter(Boolean);\n\n if (tokens.length === 0) return null;\n\n const key = tokens[tokens.length - 1];\n const mods = new Set(tokens.slice(0, -1));\n\n const isMac = /mac|iphone|ipad|ipod/i.test(globalThis.navigator?.platform ?? '');\n const modCtrl = mods.has('ctrl') || (mods.has('mod') && !isMac);\n const modMeta = mods.has('meta') || (mods.has('mod') && isMac);\n\n return {\n ctrl: modCtrl,\n meta: modMeta,\n alt: mods.has('alt'),\n shift: mods.has('shift'),\n key,\n };\n}\n\nexport function eventMatchesHotkey(event: KeyboardEvent, hotkey: string): boolean {\n const parsed = parseHotkey(hotkey);\n if (!parsed) return false;\n\n const checks: readonly (readonly [boolean, boolean])[] = [\n [event.ctrlKey, parsed.ctrl],\n [event.metaKey, parsed.meta],\n [event.altKey, parsed.alt],\n [event.shiftKey, parsed.shift],\n ];\n\n if (checks.some(([actual, expected]) => actual !== expected)) return false;\n\n return normalizeKey(event.key) === normalizeKey(parsed.key);\n}\n\nfunction coerceTngCopySuccessDuration(value: number | string): number {\n const numericValue = typeof value === 'number' ? value : Number(value);\n if (!Number.isFinite(numericValue)) {\n return defaultTngCopySuccessDurationMs;\n }\n\n return toRoundedPositiveNumber(numericValue);\n}\n\nexport function coerceTngCopyAnnounce(value: TngCopyAnnounceInput): TngCopyAnnounce {\n if (value === true || value === false) return value;\n if (value === null || value === undefined) return 'auto';\n\n const v = String(value).trim().toLowerCase();\n if (v === '' || v === 'true') return true;\n if (v === 'false') return false;\n return 'auto';\n}\n\nexport function coerceTngCopyFormat(value: TngCopyFormatInput): TngCopyFormat {\n const v = value === null || value === undefined ? '' : String(value).trim().toLowerCase();\n return v === 'text/html' ? 'text/html' : 'text/plain';\n}\n\nexport function normalizeTngCopyIgnoreSelectors(\n value: TngCopyIgnoreSelectorsInput,\n): readonly string[] {\n if (value === undefined || value === null) {\n return defaultTngCopyIgnoreSelectors;\n }\n\n if (typeof value === 'string') {\n return normalizeSelectorFromString(value);\n }\n\n return normalizeSelectorFromArray(value);\n}\n\nexport function resolveTngCopyPayload(\n directText: string | null | undefined,\n sourceText: string | null,\n): string | null {\n if (directText !== null && directText !== undefined) {\n return hasNonEmptyText(directText) ? directText : null;\n }\n\n if (sourceText !== null && hasNonEmptyText(sourceText)) {\n return sourceText;\n }\n\n return null;\n}\n\ntype TngClipboardLike = Readonly<{\n write?: (items: readonly unknown[]) => Promise<void>;\n writeText?: (text: string) => Promise<void>;\n}>;\n\nfunction canWriteHtml(\n clipboardApi: TngClipboardLike,\n): clipboardApi is Readonly<{ write: (items: readonly unknown[]) => Promise<void> }> {\n return (\n typeof clipboardApi.write === 'function' &&\n typeof ClipboardItem !== 'undefined' &&\n typeof Blob !== 'undefined'\n );\n}\n\nasync function tryWriteTngClipboard(params: Readonly<{\n format: TngCopyFormat;\n text: string;\n plainText: string;\n}>): Promise<TngCopyMethod | null> {\n const { format, text, plainText } = params;\n\n const clipboardApi = globalThis.navigator?.clipboard as unknown as TngClipboardLike | undefined;\n if (clipboardApi === undefined) {\n return null;\n }\n\n if (format === 'text/html' && canWriteHtml(clipboardApi)) {\n const clipboardItem = new ClipboardItem({\n 'text/html': new Blob([text], { type: 'text/html' }),\n 'text/plain': new Blob([plainText], { type: 'text/plain' }),\n });\n await clipboardApi.write([clipboardItem]);\n return 'clipboard';\n }\n\n if (typeof clipboardApi.writeText === 'function') {\n await clipboardApi.writeText(plainText);\n return 'clipboard';\n }\n\n return null;\n}\n\nexport async function writeTngClipboardText(\n text: string,\n ownerDocument: unknown,\n format: TngCopyFormat = 'text/plain',\n): Promise<TngCopyMethod> {\n const plainText = format === 'text/html' ? toPlainTextFromHtml(text, ownerDocument) : text;\n\n let clipboardError: unknown = null;\n\n try {\n const result = await tryWriteTngClipboard({ format, text, plainText });\n if (result !== null) {\n return result;\n }\n } catch (error) {\n clipboardError = error;\n }\n\n if (copyWithExecCommand(plainText, ownerDocument)) {\n return 'execCommand';\n }\n\n if (clipboardError !== null) {\n throw toCopyError(clipboardError);\n }\n\n throw new Error('Clipboard API is not available in this environment.');\n}\n\n@Directive({\n selector: '[tngCopy], [tngCopyButton]',\n exportAs: 'tngCopy',\n standalone: true,\n})\nexport class TngCopy {\n public readonly tngCopy = output<TngCopyEvent>();\n public readonly tngCopyButtonText = input<TngCopyButtonTextInput>(undefined);\n public readonly tngCopyButtonTarget = input<TngCopyFromTarget>(null);\n public readonly tngCopyButtonFormat = input<TngCopyFormat, TngCopyFormatInput>('text/plain', {\n transform: coerceTngCopyFormat,\n });\n public readonly tngCopyButtonSuccessDurationMs = input<number, number | string>(\n defaultTngCopySuccessDurationMs,\n { transform: coerceTngCopySuccessDuration },\n );\n public readonly tngCopyButtonDisabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly tngCopyButtonHotkey = input<string | null>(null);\n public readonly tngCopyButtonAnnounce = input<TngCopyAnnounce, TngCopyAnnounceInput>('auto', {\n transform: coerceTngCopyAnnounce,\n });\n public readonly tngCopyButtonSuccessMessage = input<string>(defaultTngCopySuccessAnnouncement);\n public readonly tngCopyButtonErrorMessage = input<string>(defaultTngCopyErrorAnnouncement);\n public readonly tngCopyDisabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly tngCopied = output<string>();\n public readonly tngCopySuccess = output<TngCopySuccessEvent>();\n public readonly tngCopyError = output<TngCopyErrorEvent>();\n public readonly tngCopyFrom = input<TngCopyFromTarget>(null);\n public readonly tngCopyIgnoreSelectors = input<readonly string[], TngCopyIgnoreSelectorsInput>(\n defaultTngCopyIgnoreSelectors,\n {\n transform: normalizeTngCopyIgnoreSelectors,\n },\n );\n public readonly tngCopyText = input<string | null | undefined>(undefined);\n public readonly tngCopyAnnounced = output<string>();\n public readonly status = signal<TngCopyButtonStatus>('idle');\n public readonly lastCopiedText = signal<string | null>(null);\n public readonly error = signal<Error | null>(null);\n\n private readonly hostElement = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly destroyRef = inject(DestroyRef);\n private successResetTimer: ReturnType<typeof setTimeout> | null = null;\n private copying = false;\n\n @HostBinding('attr.data-copy-disabled')\n protected get dataCopyDisabledAttr(): '' | null {\n return this.isDisabled() ? '' : null;\n }\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabledAttr(): 'true' | null {\n if (isNativeButton(this.hostElement)) {\n return null;\n }\n\n return this.isDisabled() ? 'true' : null;\n }\n\n @HostBinding('attr.disabled')\n protected get disabledAttr(): '' | null {\n if (!isNativeButton(this.hostElement)) {\n return null;\n }\n\n return this.isDisabled() ? '' : null;\n }\n\n public constructor() {\n effect((onCleanup): void => {\n const hotkey = normalizeHotkey(this.tngCopyButtonHotkey());\n if (hotkey === null) {\n return;\n }\n\n const ownerDocument = this.hostElement.ownerDocument;\n const listener = (event: KeyboardEvent): void => {\n if (!this.isHostOrChildFocused()) {\n return;\n }\n\n if (!eventMatchesHotkey(event, hotkey)) {\n return;\n }\n\n event.preventDefault();\n void this.tryCopy('keyboard');\n };\n\n ownerDocument.addEventListener('keydown', listener);\n onCleanup(() => ownerDocument.removeEventListener('keydown', listener));\n });\n\n this.destroyRef.onDestroy((): void => {\n this.clearSuccessResetTimer();\n });\n }\n\n @HostListener('click', ['$event'])\n protected onHostClick(...args: readonly unknown[]): void {\n const [event] = args;\n if (!(event instanceof Event)) {\n return;\n }\n\n if (this.isDisabled() && !isNativeButton(this.hostElement)) {\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n\n void this.tryCopy('pointer');\n }\n\n @HostListener('keydown', ['$event'])\n protected onHostKeyDown(...args: readonly unknown[]): void {\n if (isNativeButton(this.hostElement)) {\n return;\n }\n\n const [event] = args;\n if (!(event instanceof KeyboardEvent)) {\n return;\n }\n\n if (!isActivationKey(event.key)) {\n return;\n }\n\n event.preventDefault();\n if (this.isDisabled()) {\n return;\n }\n\n void this.tryCopy('keyboard');\n }\n\n public async copy(): Promise<boolean> {\n return this.tryCopy('programmatic');\n }\n\n private shouldAnnounce(trigger: TngCopyButtonTrigger): boolean {\n const announce = this.tngCopyButtonAnnounce();\n if (announce === false) {\n return false;\n }\n\n if (announce === true) {\n return true;\n }\n\n return trigger === 'keyboard';\n }\n\n private isDisabled(): boolean {\n return this.tngCopyDisabled() || this.tngCopyButtonDisabled();\n }\n\n private isHostOrChildFocused(): boolean {\n const activeElement = this.hostElement.ownerDocument.activeElement;\n if (!isElement(activeElement)) {\n return false;\n }\n\n return activeElement === this.hostElement || this.hostElement.contains(activeElement);\n }\n\n private clearSuccessResetTimer(): void {\n if (this.successResetTimer === null) {\n return;\n }\n\n clearTimeout(this.successResetTimer);\n this.successResetTimer = null;\n }\n\n private scheduleSuccessReset(): void {\n this.clearSuccessResetTimer();\n this.successResetTimer = setTimeout((): void => {\n this.status.set('idle');\n this.successResetTimer = null;\n }, this.tngCopyButtonSuccessDurationMs());\n }\n\n private announce(message: string, trigger: TngCopyButtonTrigger): void {\n if (!this.shouldAnnounce(trigger)) {\n return;\n }\n\n const normalizedMessage = message.trim();\n if (normalizedMessage.length === 0) {\n return;\n }\n\n this.tngCopyAnnounced.emit(normalizedMessage);\n }\n\n private emitError(error: Error, trigger: TngCopyButtonTrigger): void {\n this.status.set('error');\n this.error.set(error);\n this.tngCopyError.emit({ error });\n this.announce(this.tngCopyButtonErrorMessage(), trigger);\n }\n\n private async doCopy(text: string, trigger: TngCopyButtonTrigger): Promise<boolean> {\n try {\n const method = await writeTngClipboardText(\n text,\n this.hostElement.ownerDocument,\n this.tngCopyButtonFormat(),\n );\n this.status.set('success');\n this.lastCopiedText.set(text);\n this.tngCopied.emit(text);\n this.tngCopySuccess.emit({ text, method });\n this.announce(this.tngCopyButtonSuccessMessage(), trigger);\n this.scheduleSuccessReset();\n return true;\n } catch (error) {\n this.emitError(toCopyError(error), trigger);\n return false;\n } finally {\n this.copying = false;\n }\n }\n\n private async tryCopy(trigger: TngCopyButtonTrigger): Promise<boolean> {\n if (this.copying) {\n return false;\n }\n\n if (this.isDisabled()) {\n return false;\n }\n\n this.clearSuccessResetTimer();\n this.status.set('copying');\n this.error.set(null);\n this.copying = true;\n\n const resolvedPayload = this.resolvePayload();\n if (resolvedPayload.error !== null) {\n this.emitError(resolvedPayload.error, trigger);\n this.copying = false;\n return false;\n }\n\n if (resolvedPayload.text === null) {\n this.emitError(\n new Error('No copy payload found. Provide tngCopyButtonText/tngCopyText or target inputs.'),\n trigger,\n );\n this.copying = false;\n return false;\n }\n\n this.tngCopy.emit({ text: resolvedPayload.text, trigger });\n const result = await this.doCopy(resolvedPayload.text, trigger);\n return result;\n\n \n }\n\n private findSourceText(): string | null {\n const configuredTarget = this.tngCopyButtonTarget() ?? this.tngCopyFrom();\n const hasConfiguredTarget =\n configuredTarget !== undefined &&\n configuredTarget !== null &&\n !(typeof configuredTarget === 'string' && configuredTarget.trim().length === 0);\n\n const sourceElement = resolveSourceElement(configuredTarget, this.hostElement.ownerDocument);\n if (hasConfiguredTarget && sourceElement === null) {\n throw new Error('Copy target was not found.');\n }\n const sourceText =\n sourceElement === null\n ? null\n : extractTextFromSourceElement(sourceElement, this.tngCopyIgnoreSelectors());\n return sourceText;\n }\n\n private resolvePayload(): { error: Error | null; text: string | null } {\n const explicitTextResult = resolveExplicitText(this.tngCopyButtonText());\n if (explicitTextResult.error !== null) {\n return { error: explicitTextResult.error, text: null };\n }\n\n const fallbackText = this.tngCopyText();\n const directText =\n explicitTextResult.value !== undefined ? explicitTextResult.value : fallbackText;\n\n try {\n const sourceText = this.findSourceText();\n return { error: null, text: resolveTngCopyPayload(directText, sourceText) };\n } catch (error) {\n return { error: toCopyError(error), text: null };\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-press.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/utility/press/tng-press.ts"],"names":[],"mappings":"AAWA,KAAK,oBAAoB,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;AAChE,MAAM,MAAM,oBAAoB,GAC5B,QAAQ,GACR,OAAO,GACP,MAAM,GACN,SAAS,GACT,MAAM,GACN,MAAM,GACN,MAAM,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAYzD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,GAAG,IAAI,CAczF;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,GACzC,oBAAoB,GAAG,IAAI,CAmB7B;AA2BD,
|
|
1
|
+
{"version":3,"file":"tng-press.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/utility/press/tng-press.ts"],"names":[],"mappings":"AAWA,KAAK,oBAAoB,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;AAChE,MAAM,MAAM,oBAAoB,GAC5B,QAAQ,GACR,OAAO,GACP,MAAM,GACN,SAAS,GACT,MAAM,GACN,MAAM,GACN,MAAM,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAYzD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,GAAG,IAAI,CAczF;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,GACzC,oBAAoB,GAAG,IAAI,CAmB7B;AA2BD,qBAKa,QAAQ;IACnB,SAAgB,YAAY,qDAA8B;IAC1D,SAAgB,YAAY,yFAEzB;IACH,SAAgB,YAAY,qHAKzB;IACH,SAAgB,WAAW,yFAExB;IACH,SAAgB,QAAQ,8EAErB;IACH,SAAgB,IAAI,oDAAiC;IAErD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqD;IAG7E,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAE9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,OAAO,GAAG,MAAM,GAAG,IAAI,CAExD;IAGD,SAAS,KAAK,gBAAgB,IAAI,oBAAoB,GAAG,IAAI,CAE5D;IAGD,SAAS,KAAK,eAAe,IAAI,OAAO,GAAG,MAAM,GAAG,IAAI,CAEvD;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,IAAI,CAMtC;IAGD,SAAS,KAAK,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAExC;IAGD,SAAS,KAAK,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAU1C;IAGD,SAAS,KAAK,QAAQ,IAAI,YAAY,GAAG,IAAI,CAE5C;IAGD,SAAS,CAAC,WAAW,CAAC,GAAG,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI;IAexD,SAAS,CAAC,aAAa,CAAC,GAAG,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI;IAsB1D,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,cAAc;CAGvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-press.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/utility/press/tng-press.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n booleanAttribute,\n inject,\n input,\n} from '@angular/core';\n\ntype ButtonHostElement = HTMLAnchorElement | HTMLButtonElement;\ntype NullableBooleanInput = boolean | null | string | undefined;\nexport type TngPressAriaHasPopup =\n | 'dialog'\n | 'false'\n | 'grid'\n | 'listbox'\n | 'menu'\n | 'tree'\n | 'true';\nexport type TngPressType = 'button' | 'reset' | 'submit';\n\nconst validAriaHasPopupValues: readonly TngPressAriaHasPopup[] = [\n 'dialog',\n 'false',\n 'grid',\n 'listbox',\n 'menu',\n 'tree',\n 'true',\n];\n\nexport function coerceTngPressNullableBoolean(value: NullableBooleanInput): boolean | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n if (value === '' || value === true || value === 'true') {\n return true;\n }\n\n if (value === false || value === 'false') {\n return false;\n }\n\n return null;\n}\n\nexport function coerceTngPressAriaHasPopup(\n value: boolean | null | string | undefined,\n): TngPressAriaHasPopup | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n if (value === true) {\n return 'true';\n }\n\n if (value === false) {\n return 'false';\n }\n\n const normalized = value.trim().toLowerCase();\n if (!isTngPressAriaHasPopup(normalized)) {\n return null;\n }\n\n return normalized;\n}\n\nfunction isActivationKey(key: string): boolean {\n return key === ' ' || key === 'Enter';\n}\n\nfunction isTngPressAriaHasPopup(value: string): value is TngPressAriaHasPopup {\n return validAriaHasPopupValues.includes(value as TngPressAriaHasPopup);\n}\n\nfunction normalizeStringValue(value: string | null | undefined): string | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : null;\n}\n\nfunction toAriaBoolean(value: boolean | null): 'false' | 'true' | null {\n if (value === null) {\n return null;\n }\n\n return value ? 'true' : 'false';\n}\n\n@Directive({\n selector: 'a[tngPress], button[tngPress]',\n exportAs: 'tngPress',\n})\nexport class TngPress {\n public readonly ariaControls = input<string | null>(null);\n public readonly ariaExpanded = input<boolean | null, NullableBooleanInput>(null, {\n transform: coerceTngPressNullableBoolean,\n });\n public readonly ariaHasPopup = input<\n TngPressAriaHasPopup | null,\n boolean | null | string | undefined\n >(null, {\n transform: coerceTngPressAriaHasPopup,\n });\n public readonly ariaPressed = input<boolean | null, NullableBooleanInput>(null, {\n transform: coerceTngPressNullableBoolean,\n });\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly type = input<TngPressType>('button');\n\n private readonly hostRef = inject<ElementRef<ButtonHostElement>>(ElementRef);\n\n @HostBinding('attr.aria-controls')\n protected get ariaControlsAttr(): string | null {\n return normalizeStringValue(this.ariaControls());\n }\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabledAttr(): 'true' | null {\n if (this.isNativeButton()) {\n return null;\n }\n\n return this.disabled() ? 'true' : null;\n }\n\n @HostBinding('attr.aria-expanded')\n protected get ariaExpandedAttr(): 'false' | 'true' | null {\n return toAriaBoolean(this.ariaExpanded());\n }\n\n @HostBinding('attr.aria-haspopup')\n protected get ariaHasPopupAttr(): TngPressAriaHasPopup | null {\n return this.ariaHasPopup();\n }\n\n @HostBinding('attr.aria-pressed')\n protected get ariaPressedAttr(): 'false' | 'true' | null {\n return toAriaBoolean(this.ariaPressed());\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.disabled')\n protected get disabledAttr(): '' | null {\n if (!this.isNativeButton()) {\n return null;\n }\n\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.role')\n protected get roleAttr(): 'button' | null {\n return this.isAnchorWithoutHref() ? 'button' : null;\n }\n\n @HostBinding('attr.tabindex')\n protected get tabIndexAttr(): -1 | 0 | null {\n if (!this.isAnchorHost()) {\n return null;\n }\n\n if (this.disabled()) {\n return -1;\n }\n\n return this.hasHref() ? null : 0;\n }\n\n @HostBinding('attr.type')\n protected get typeAttr(): TngPressType | null {\n return this.isNativeButton() ? this.type() : null;\n }\n\n @HostListener('click', ['$event'])\n protected onHostClick(...args: readonly unknown[]): void {\n if (!this.disabled()) {\n return;\n }\n\n const [event] = args;\n if (!(event instanceof Event)) {\n return;\n }\n\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n\n @HostListener('keydown', ['$event'])\n protected onHostKeyDown(...args: readonly unknown[]): void {\n if (!this.isAnchorWithoutHref()) {\n return;\n }\n\n const [event] = args;\n if (!(event instanceof KeyboardEvent)) {\n return;\n }\n\n if (!isActivationKey(event.key)) {\n return;\n }\n\n event.preventDefault();\n if (this.disabled()) {\n return;\n }\n\n this.hostElement.click();\n }\n\n private get hostElement(): ButtonHostElement {\n return this.hostRef.nativeElement;\n }\n\n private hasHref(): boolean {\n return this.hostElement.hasAttribute('href');\n }\n\n private isAnchorHost(): boolean {\n return this.hostElement.tagName === 'A';\n }\n\n private isAnchorWithoutHref(): boolean {\n if (!this.isAnchorHost()) {\n return false;\n }\n\n return !this.hasHref();\n }\n\n private isNativeButton(): boolean {\n return this.hostElement.tagName === 'BUTTON';\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tng-press.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/utility/press/tng-press.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n booleanAttribute,\n inject,\n input,\n} from '@angular/core';\n\ntype ButtonHostElement = HTMLAnchorElement | HTMLButtonElement;\ntype NullableBooleanInput = boolean | null | string | undefined;\nexport type TngPressAriaHasPopup =\n | 'dialog'\n | 'false'\n | 'grid'\n | 'listbox'\n | 'menu'\n | 'tree'\n | 'true';\nexport type TngPressType = 'button' | 'reset' | 'submit';\n\nconst validAriaHasPopupValues: readonly TngPressAriaHasPopup[] = [\n 'dialog',\n 'false',\n 'grid',\n 'listbox',\n 'menu',\n 'tree',\n 'true',\n];\n\nexport function coerceTngPressNullableBoolean(value: NullableBooleanInput): boolean | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n if (value === '' || value === true || value === 'true') {\n return true;\n }\n\n if (value === false || value === 'false') {\n return false;\n }\n\n return null;\n}\n\nexport function coerceTngPressAriaHasPopup(\n value: boolean | null | string | undefined,\n): TngPressAriaHasPopup | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n if (value === true) {\n return 'true';\n }\n\n if (value === false) {\n return 'false';\n }\n\n const normalized = value.trim().toLowerCase();\n if (!isTngPressAriaHasPopup(normalized)) {\n return null;\n }\n\n return normalized;\n}\n\nfunction isActivationKey(key: string): boolean {\n return key === ' ' || key === 'Enter';\n}\n\nfunction isTngPressAriaHasPopup(value: string): value is TngPressAriaHasPopup {\n return validAriaHasPopupValues.includes(value as TngPressAriaHasPopup);\n}\n\nfunction normalizeStringValue(value: string | null | undefined): string | null {\n if (value === undefined || value === null) {\n return null;\n }\n\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : null;\n}\n\nfunction toAriaBoolean(value: boolean | null): 'false' | 'true' | null {\n if (value === null) {\n return null;\n }\n\n return value ? 'true' : 'false';\n}\n\n@Directive({\n selector: 'a[tngPress], button[tngPress]',\n exportAs: 'tngPress',\n standalone: true,\n})\nexport class TngPress {\n public readonly ariaControls = input<string | null>(null);\n public readonly ariaExpanded = input<boolean | null, NullableBooleanInput>(null, {\n transform: coerceTngPressNullableBoolean,\n });\n public readonly ariaHasPopup = input<\n TngPressAriaHasPopup | null,\n boolean | null | string | undefined\n >(null, {\n transform: coerceTngPressAriaHasPopup,\n });\n public readonly ariaPressed = input<boolean | null, NullableBooleanInput>(null, {\n transform: coerceTngPressNullableBoolean,\n });\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly type = input<TngPressType>('button');\n\n private readonly hostRef = inject<ElementRef<ButtonHostElement>>(ElementRef);\n\n @HostBinding('attr.aria-controls')\n protected get ariaControlsAttr(): string | null {\n return normalizeStringValue(this.ariaControls());\n }\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabledAttr(): 'true' | null {\n if (this.isNativeButton()) {\n return null;\n }\n\n return this.disabled() ? 'true' : null;\n }\n\n @HostBinding('attr.aria-expanded')\n protected get ariaExpandedAttr(): 'false' | 'true' | null {\n return toAriaBoolean(this.ariaExpanded());\n }\n\n @HostBinding('attr.aria-haspopup')\n protected get ariaHasPopupAttr(): TngPressAriaHasPopup | null {\n return this.ariaHasPopup();\n }\n\n @HostBinding('attr.aria-pressed')\n protected get ariaPressedAttr(): 'false' | 'true' | null {\n return toAriaBoolean(this.ariaPressed());\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.disabled')\n protected get disabledAttr(): '' | null {\n if (!this.isNativeButton()) {\n return null;\n }\n\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.role')\n protected get roleAttr(): 'button' | null {\n return this.isAnchorWithoutHref() ? 'button' : null;\n }\n\n @HostBinding('attr.tabindex')\n protected get tabIndexAttr(): -1 | 0 | null {\n if (!this.isAnchorHost()) {\n return null;\n }\n\n if (this.disabled()) {\n return -1;\n }\n\n return this.hasHref() ? null : 0;\n }\n\n @HostBinding('attr.type')\n protected get typeAttr(): TngPressType | null {\n return this.isNativeButton() ? this.type() : null;\n }\n\n @HostListener('click', ['$event'])\n protected onHostClick(...args: readonly unknown[]): void {\n if (!this.disabled()) {\n return;\n }\n\n const [event] = args;\n if (!(event instanceof Event)) {\n return;\n }\n\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n\n @HostListener('keydown', ['$event'])\n protected onHostKeyDown(...args: readonly unknown[]): void {\n if (!this.isAnchorWithoutHref()) {\n return;\n }\n\n const [event] = args;\n if (!(event instanceof KeyboardEvent)) {\n return;\n }\n\n if (!isActivationKey(event.key)) {\n return;\n }\n\n event.preventDefault();\n if (this.disabled()) {\n return;\n }\n\n this.hostElement.click();\n }\n\n private get hostElement(): ButtonHostElement {\n return this.hostRef.nativeElement;\n }\n\n private hasHref(): boolean {\n return this.hostElement.hasAttribute('href');\n }\n\n private isAnchorHost(): boolean {\n return this.hostElement.tagName === 'A';\n }\n\n private isAnchorWithoutHref(): boolean {\n if (!this.isAnchorHost()) {\n return false;\n }\n\n return !this.hasHref();\n }\n\n private isNativeButton(): boolean {\n return this.hostElement.tagName === 'BUTTON';\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-tag.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/utility/tag/tng-tag.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAWtE,
|
|
1
|
+
{"version":3,"file":"tng-tag.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/utility/tag/tng-tag.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAWtE,qBAKa,MAAM;IACjB,SAAgB,QAAQ,8EAGrB;IAEH,SAAgB,SAAS,8EAGtB;IAEH,SAAgB,KAAK,qDAElB;IAEH,SAAgB,aAAa,iDAAkB;IAExC,UAAU,IAAI,OAAO;IAIrB,WAAW,IAAI,OAAO;IAItB,aAAa,IAAI,MAAM;IAIvB,aAAa,IAAI,OAAO;IAU/B,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAE9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,iBAAiB,IAAI,EAAE,GAAG,IAAI,CAE3C;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,KAAK,CAAU;CAC9C;AAED,qBAKa,UAAU;IAErB,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,UAAU,CAAU;CACnD;AAED,qBAKa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+C;IAC1E,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAsC;IAE1D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,iBAAiB,CAAS;IAElC,SAAgB,SAAS,qDAEtB;IAGH,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAe7C,SAAS,CAAC,SAAS,IAAI,IAAI;IAK3B,SAAS,CAAC,UAAU,IAAI,IAAI;IAK5B,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAgBlD,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,UAAU;IAKlB,SAAS,KAAK,aAAa,IAAI,MAAM,CAapC;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,eAAe,IAAI,EAAE,GAAG,IAAI,CAEzC;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,WAAW,CAAU;IAGnD,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,IAAI,CAMtC;IAGD,SAAS,KAAK,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAExC;IAGD,SAAS,KAAK,YAAY,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAExC;CACF"}
|
|
@@ -63,6 +63,7 @@ TngTag = __decorate([
|
|
|
63
63
|
Directive({
|
|
64
64
|
selector: '[tngTag]',
|
|
65
65
|
exportAs: 'tngTag',
|
|
66
|
+
standalone: true,
|
|
66
67
|
})
|
|
67
68
|
], TngTag);
|
|
68
69
|
export { TngTag };
|
|
@@ -76,6 +77,7 @@ TngTagIcon = __decorate([
|
|
|
76
77
|
Directive({
|
|
77
78
|
selector: '[tngTagIcon]',
|
|
78
79
|
exportAs: 'tngTagIcon',
|
|
80
|
+
standalone: true,
|
|
79
81
|
})
|
|
80
82
|
], TngTagIcon);
|
|
81
83
|
export { TngTagIcon };
|
|
@@ -204,6 +206,7 @@ TngTagClose = __decorate([
|
|
|
204
206
|
Directive({
|
|
205
207
|
selector: '[tngTagClose]',
|
|
206
208
|
exportAs: 'tngTagClose',
|
|
209
|
+
standalone: true,
|
|
207
210
|
})
|
|
208
211
|
], TngTagClose);
|
|
209
212
|
export { TngTagClose };
|