{"version":3,"file":"edsis-component-composer.mjs","sources":["../../../library/component/composer/composer.component.ts","../../../library/component/composer/edsis-component-composer.ts"],"sourcesContent":["import {\n  AfterViewInit,\n  Component,\n  forwardRef,\n  ElementRef,\n  booleanAttribute,\n  computed,\n  inject,\n  input,\n  numberAttribute,\n  output,\n  signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { cn } from '@edsis/component/class';\n\nexport type ComposerVariant = 'default' | 'input';\nexport type ComposerSubmitBehavior = 'cmd-enter' | 'enter';\n\nconst COMPOSER_BASE = 'block w-full min-w-0 text-sm text-foreground';\n\nconst COMPOSER_SHELL_BASE = [\n  'relative min-w-0 border border-input bg-background shadow-sm',\n  'transition-[border-color,box-shadow] focus-within:border-ring focus-within:ring-1 focus-within:ring-ring',\n  'aria-[invalid=true]:border-destructive aria-[invalid=true]:focus-within:ring-destructive',\n  'data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-50',\n  '[&>[data-slot=composer-input]]:min-w-0 [&>[data-slot=composer-input]]:flex-1',\n].join(' ');\n\nconst composerShellVariantClasses: Record<ComposerVariant, string> = {\n  default: 'rounded-xl',\n  input: 'rounded-md',\n};\n\nconst COMPOSER_BODY_BASE =\n  '[&>[data-slot=composer-input]]:min-w-0 [&>[data-slot=composer-input]]:flex-1';\n\nconst nullableNumberAttribute = (value: unknown): number | null => {\n  if (value === null || value === undefined || value === '') {\n    return null;\n  }\n\n  return numberAttribute(value);\n};\n\n@Component({\n  selector: 'Composer',\n  host: {\n    '[class]': 'classes()',\n    '[attr.data-slot]': '\"composer\"',\n    '[attr.data-variant]': 'variant()',\n    '[attr.data-inline]': 'inline() ? \"true\" : null',\n    '[attr.data-disabled]': 'disabled() ? \"true\" : null',\n    '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n    '[attr.aria-invalid]': 'invalid() ? \"true\" : null',\n    '[attr.inert]': 'disabled() ? \"\" : null',\n  },\n  template: `\n    <div\n      data-slot=\"composer-shell\"\n      [class]=\"shellClasses()\"\n      [attr.data-disabled]=\"disabled() ? 'true' : null\"\n      [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n    >\n      <ng-content select=\"ComposerHeader\" />\n      <div data-slot=\"composer-body\" [class]=\"bodyClasses()\">\n        <ng-content select=\"ComposerActionsLeading\" />\n        <ng-content select=\"textarea[ComposerInput], ComposerInput\" />\n        <ng-content select=\"ComposerActionsTrailing\" />\n      </div>\n      <ng-content select=\"ComposerFooter\" />\n    </div>\n  `,\n})\nexport class ComposerComponent {\n  readonly variant = input<ComposerVariant>('default');\n  readonly inline = input(false, { transform: booleanAttribute });\n  readonly disabled = input(false, { transform: booleanAttribute });\n  readonly invalid = input(false, { transform: booleanAttribute });\n  readonly submit = input<ComposerSubmitBehavior>('cmd-enter');\n  readonly submitForm = input(true, { transform: booleanAttribute });\n  readonly class = input<string>('');\n\n  readonly submitRequested = output<KeyboardEvent>();\n\n  protected readonly classes = computed(() => cn(COMPOSER_BASE, this.class()));\n  protected readonly shellClasses = computed(() =>\n    cn(COMPOSER_SHELL_BASE, composerShellVariantClasses[this.variant()]),\n  );\n  protected readonly bodyClasses = computed(() =>\n    cn(\n      COMPOSER_BODY_BASE,\n      this.inline()\n        ? [\n            'flex items-end gap-1 px-1 py-1',\n            '[&>[data-slot=composer-actions-leading]]:order-10',\n            '[&>[data-slot=composer-input]]:order-20',\n            '[&>[data-slot=composer-actions-trailing]]:order-30',\n          ].join(' ')\n        : [\n            'flex flex-wrap items-end gap-1.5 px-2 py-1.5',\n            '[&>[data-slot=composer-input]]:order-10 [&>[data-slot=composer-input]]:basis-full',\n            '[&>[data-slot=composer-actions-leading]]:order-20',\n            '[&>[data-slot=composer-actions-trailing]]:order-30 [&>[data-slot=composer-actions-trailing]]:ml-auto',\n          ].join(' '),\n    ),\n  );\n\n  handleInputKeydown(event: KeyboardEvent): void {\n    if (this.disabled() || event.key !== 'Enter' || event.defaultPrevented) {\n      return;\n    }\n\n    const shouldSubmit =\n      this.submit() === 'enter'\n        ? !event.shiftKey && !event.isComposing\n        : event.metaKey || event.ctrlKey;\n\n    if (!shouldSubmit) {\n      return;\n    }\n\n    event.preventDefault();\n    this.submitRequested.emit(event);\n\n    if (this.submitForm()) {\n      this.requestNearestFormSubmit(event.target);\n    }\n  }\n\n  private requestNearestFormSubmit(target: EventTarget | null): void {\n    if (!(target instanceof Element)) {\n      return;\n    }\n\n    const form = target.closest('form');\n    if (form && typeof form.requestSubmit === 'function') {\n      form.requestSubmit();\n    }\n  }\n}\n\n@Component({\n  selector: 'ComposerHeader',\n  host: {\n    '[class]': 'classes()',\n    '[attr.data-slot]': '\"composer-header\"',\n  },\n  template: `<ng-content />`,\n})\nexport class ComposerHeaderComponent {\n  readonly class = input<string>('');\n\n  protected readonly classes = computed(() =>\n    cn(\n      'flex min-w-0 flex-wrap gap-2 border-b border-[hsl(var(--border)/var(--opacity-70))] px-2.5 py-2',\n      this.class(),\n    ),\n  );\n}\n\n@Component({\n  selector: 'ComposerFooter',\n  host: {\n    '[class]': 'classes()',\n    '[attr.data-slot]': '\"composer-footer\"',\n  },\n  template: `<ng-content />`,\n})\nexport class ComposerFooterComponent {\n  readonly class = input<string>('');\n\n  protected readonly classes = computed(() =>\n    cn(\n      'border-t border-[hsl(var(--border)/var(--opacity-70))] px-2.5 py-1.5 text-xs leading-5 text-muted-foreground',\n      this.class(),\n    ),\n  );\n}\n\n@Component({\n  selector: 'ComposerActionsLeading',\n  host: {\n    '[class]': 'classes()',\n    '[attr.data-slot]': '\"composer-actions-leading\"',\n  },\n  template: `<ng-content />`,\n})\nexport class ComposerActionsLeadingComponent {\n  readonly class = input<string>('');\n\n  protected readonly classes = computed(() =>\n    cn('flex min-h-8 shrink-0 items-center gap-1', this.class()),\n  );\n}\n\n@Component({\n  selector: 'ComposerActionsTrailing',\n  host: {\n    '[class]': 'classes()',\n    '[attr.data-slot]': '\"composer-actions-trailing\"',\n  },\n  template: `<ng-content />`,\n})\nexport class ComposerActionsTrailingComponent {\n  readonly class = input<string>('');\n\n  protected readonly classes = computed(() =>\n    cn('flex min-h-8 shrink-0 items-center justify-end gap-1', this.class()),\n  );\n}\n\n@Component({\n  selector: 'ComposerInput',\n  host: {\n    '[class]': 'classes()',\n    '[attr.data-slot]': '\"composer-input\"',\n    '[attr.data-disabled]': 'disabled() ? \"true\" : null',\n    '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n    '[attr.aria-invalid]': 'invalid() ? \"true\" : null',\n    '(keydown)': 'handleKeydown($event)',\n  },\n  template: `<ng-content />`,\n})\nexport class ComposerInputComponent {\n  private readonly composer = inject(ComposerComponent, { optional: true });\n\n  readonly disabledInput = input(false, { alias: 'disabled', transform: booleanAttribute });\n  readonly invalidInput = input(false, { alias: 'aria-invalid', transform: booleanAttribute });\n  readonly class = input<string>('');\n\n  protected readonly disabled = computed(\n    () => this.disabledInput() || this.composer?.disabled() === true,\n  );\n  protected readonly invalid = computed(\n    () => this.invalidInput() || this.composer?.invalid() === true,\n  );\n  protected readonly classes = computed(() =>\n    cn(\n      'min-h-10 w-full rounded-sm bg-transparent px-2 py-2 text-sm leading-6 outline-none',\n      'data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50',\n      this.class(),\n    ),\n  );\n\n  protected handleKeydown(event: KeyboardEvent): void {\n    this.composer?.handleInputKeydown(event);\n  }\n}\n\n@Component({\n  selector: 'textarea[ComposerInput]',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => ComposerTextareaComponent),\n      multi: true,\n    },\n  ],\n  host: {\n    '[class]': 'classes()',\n    '[attr.data-slot]': '\"composer-input\"',\n    '[attr.rows]': 'rows()',\n    '[attr.disabled]': 'disabled() ? \"\" : null',\n    '[attr.aria-invalid]': 'invalid() ? \"true\" : null',\n    '(input)': 'handleInput()',\n    '(blur)': 'handleBlur()',\n    '(keydown)': 'handleKeydown($event)',\n  },\n  template: '',\n})\nexport class ComposerTextareaComponent implements AfterViewInit, ControlValueAccessor {\n  private readonly el = inject<ElementRef<HTMLTextAreaElement>>(ElementRef);\n  private readonly composer = inject(ComposerComponent, { optional: true });\n\n  readonly rows = input(2, { transform: numberAttribute });\n  readonly maxRows = input<number | null>(null, { transform: nullableNumberAttribute });\n  readonly disabledInput = input(false, { alias: 'disabled', transform: booleanAttribute });\n  readonly invalidInput = input(false, { alias: 'aria-invalid', transform: booleanAttribute });\n  readonly class = input<string>('');\n\n  private readonly disabledState = signal(false);\n  protected readonly disabled = computed(\n    () => this.disabledInput() || this.disabledState() || this.composer?.disabled() === true,\n  );\n  protected readonly invalid = computed(\n    () => this.invalidInput() || this.composer?.invalid() === true,\n  );\n  protected readonly classes = computed(() =>\n    cn(\n      [\n        'max-h-none min-h-10 w-full resize-none bg-transparent px-2 py-2 text-sm leading-6 text-foreground shadow-none outline-none',\n        'placeholder:text-muted-foreground',\n        'disabled:cursor-not-allowed disabled:opacity-50',\n      ].join(' '),\n      this.class(),\n    ),\n  );\n\n  private onChange: (value: string) => void = () => {};\n  private onTouched: () => void = () => {};\n\n  ngAfterViewInit(): void {\n    queueMicrotask(() => this.resizeToContent());\n  }\n\n  writeValue(value: string | null): void {\n    this.el.nativeElement.value = value ?? '';\n    queueMicrotask(() => this.resizeToContent());\n  }\n\n  registerOnChange(fn: (value: string) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabledState.set(isDisabled);\n  }\n\n  resizeToContent(): void {\n    const textarea = this.el.nativeElement;\n    textarea.style.height = 'auto';\n\n    const maxRows = this.maxRows();\n    if (!maxRows) {\n      textarea.style.height = `${textarea.scrollHeight}px`;\n      textarea.style.overflowY = 'hidden';\n      return;\n    }\n\n    const lineHeight = this.getLineHeight(textarea);\n    const maxHeight = lineHeight * Math.max(maxRows, this.rows());\n    const nextHeight = Math.min(textarea.scrollHeight, maxHeight);\n\n    textarea.style.height = `${nextHeight}px`;\n    textarea.style.overflowY = textarea.scrollHeight > maxHeight ? 'auto' : 'hidden';\n  }\n\n  focus(): void {\n    this.el.nativeElement.focus();\n  }\n\n  protected handleInput(): void {\n    this.resizeToContent();\n    this.onChange(this.el.nativeElement.value);\n  }\n\n  protected handleBlur(): void {\n    this.onTouched();\n  }\n\n  protected handleKeydown(event: KeyboardEvent): void {\n    this.composer?.handleInputKeydown(event);\n  }\n\n  private getLineHeight(textarea: HTMLTextAreaElement): number {\n    const lineHeight = Number.parseFloat(getComputedStyle(textarea).lineHeight);\n    return Number.isFinite(lineHeight) ? lineHeight : 24;\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}