{"version":3,"file":"ng-forge-dynamic-forms-primeng-lazy-addon-button.mjs","mappings":";;;;;;;;;;IA4DqB;;;;;AAIA;AACjB;;;;AAGiB;;;;;;AAZR;;;;;;;;;;;;;;;;;;;;;;;;;;AAlBV;;;;AA7BS","names":[],"ignoreList":[],"sources":["../../../../packages/dynamic-forms-primeng/src/lib/addons/prime-button-addon.component.ts"],"sourcesContent":["import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { DynamicTextPipe } from '@ng-forge/dynamic-forms/integration';\nimport { injectNgForgeAddonAction, NgForgeAddonAction } from '@ng-forge/dynamic-forms/integration';\nimport { ButtonModule } from 'primeng/button';\nimport type { PrimeButtonAddon } from '@ng-forge/dynamic-forms-primeng/shared';\n\n/** Renderer for the `prime-button` addon type. */\n@Component({\n  selector: 'df-prime-button-addon',\n  imports: [ButtonModule, DynamicTextPipe, AsyncPipe],\n  hostDirectives: [NgForgeAddonAction],\n  template: `\n    @if (isIconOnly()) {\n      <p-button\n        [icon]=\"iconClass()\"\n        [severity]=\"addon().severity ?? 'secondary'\"\n        [loading]=\"action.loading()\"\n        [disabled]=\"action.disabled() || action.loading()\"\n        [attr.aria-label]=\"(ariaLabel() | dynamicText | async) ?? null\"\n        [attr.aria-busy]=\"action.loading() || null\"\n        (onClick)=\"action.dispatch()\"\n      />\n    } @else {\n      <p-button\n        [icon]=\"iconClass()\"\n        [label]=\"(label() | dynamicText | async) ?? ''\"\n        [severity]=\"addon().severity ?? 'secondary'\"\n        [loading]=\"action.loading()\"\n        [disabled]=\"action.disabled() || action.loading()\"\n        [attr.aria-label]=\"(ariaLabel() | dynamicText | async) ?? null\"\n        [attr.aria-busy]=\"action.loading() || null\"\n        (onClick)=\"action.dispatch()\"\n      />\n    }\n    @if (action.loading()) {\n      <span class=\"df-prime-sr-only\" role=\"status\">Loading…</span>\n    }\n  `,\n  styles: [\n    `\n      .df-prime-sr-only {\n        position: absolute;\n        width: 1px;\n        height: 1px;\n        padding: 0;\n        margin: -1px;\n        overflow: hidden;\n        clip: rect(0, 0, 0, 0);\n        white-space: nowrap;\n        border: 0;\n      }\n    `,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PrimeButtonAddonComponent {\n  protected readonly action = injectNgForgeAddonAction<PrimeButtonAddon>();\n\n  /** Re-exposed for template binding — same signal stored on the directive. */\n  protected readonly addon = this.action.addon;\n\n  protected readonly label = computed(() => this.addon().label);\n  protected readonly ariaLabel = computed(() => this.addon().ariaLabel);\n  protected readonly isIconOnly = computed(() => {\n    const a = this.addon();\n    return !!a.icon && !a.label;\n  });\n  protected readonly iconClass = computed(() => {\n    const icon = this.addon().icon;\n    return icon ? `pi pi-${icon}` : '';\n  });\n}\n"]}