{"version":3,"file":"eui-components-eui-comment-thread.mjs","sources":["../../eui-comment-thread/comment-textarea/eui-comment-textarea.component.ts","../../eui-comment-thread/comment-textarea/eui-comment-textarea.component.html","../../eui-comment-thread/comment-item/eui-comment-item.component.ts","../../eui-comment-thread/comment-item/eui-comment-item.component.html","../../eui-comment-thread/eui-comment-thread.component.ts","../../eui-comment-thread/eui-comment-thread.component.html","../../eui-comment-thread/comment-item-right-actions/eui-comment-item-right-actions.component.ts","../../eui-comment-thread/comment-item-right-actions/eui-comment-item-right-actions.component.html","../../eui-comment-thread/index.ts","../../eui-comment-thread/eui-components-eui-comment-thread.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, HostBinding, Input, Output, EventEmitter } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { A11yModule } from '@angular/cdk/a11y';\n\nimport { EUI_AVATAR } from '@eui/components/eui-avatar';\nimport { EUI_BUTTON } from '@eui/components/eui-button';\nimport { EUI_TEXTAREA } from '@eui/components/eui-textarea';\n\n/**\n * @description\n * `eui-comment-textarea` component providing an input area for composing and submitting comments.\n * Displays user avatar alongside textarea with send and cancel action buttons.\n * Implements reactive forms for comment input with automatic reset after submission or cancellation.\n * Includes accessibility features through Angular CDK A11y module with focus trapping.\n * Used within eui-comment-thread for adding new comments or replies.\n *\n * @usageNotes\n * ```html\n * <eui-comment-textarea\n *   [currentAuthorAvatarUrl]=\"currentUser.avatar\"\n *   [placeholder]=\"'Add your comment...'\"\n *   (commentSend)=\"onSubmit($event)\"\n *   (commentCancel)=\"onCancel()\">\n * </eui-comment-textarea>\n * ```\n *\n * ### Accessibility\n * - Focus is automatically trapped within the textarea using `cdkTrapFocus`\n * - Focus is captured on component initialization with `cdkTrapFocusAutoCapture`\n * - Send and Cancel buttons are keyboard accessible\n * - Placeholder text supports translation for internationalization\n *\n * ### Notes\n * - Form automatically resets after sending or canceling a comment\n * - Textarea auto-resizes based on content using `autoResize` directive\n * - Uses reactive forms for robust form state management\n * - Avatar is optional and can be omitted by not providing `currentAuthorAvatarUrl`\n */\n@Component({\n    selector: 'eui-comment-textarea',\n    templateUrl: './eui-comment-textarea.component.html',\n    styleUrls: ['../styles/_index.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        TranslateModule,\n        ReactiveFormsModule,\n        A11yModule,\n        ...EUI_TEXTAREA,\n        ...EUI_AVATAR,\n        ...EUI_BUTTON,\n    ],\n})\nexport class EuiCommentTextareaComponent {\n    @HostBinding('class')\n    get cssClasses(): string {\n        return [\n            'eui-comment-textarea',\n        ].join(' ').trim();\n    }\n\n    /**\n     * URL path to the current user's avatar image.\n     * Displayed alongside the textarea to identify the commenter.\n     * Optional.\n     */\n    @Input() currentAuthorAvatarUrl: string = null;\n\n    /**\n     * Placeholder text displayed in the textarea when empty.\n     * Supports translation keys for internationalization.\n     * @default 'eui.ANSWER'\n     */\n    @Input() placeholder = 'eui.ANSWER';\n\n    /**\n     * Emitted when the user cancels comment input.\n     * Payload: void\n     * Triggered when user clicks cancel button. Automatically resets the form.\n     */\n    @Output() commentCancel = new EventEmitter();\n\n    /**\n     * Emitted when the user submits a comment.\n     * Payload: string - the comment text entered by the user\n     * Triggered when user clicks send button. Automatically resets the form after emission.\n     */\n    @Output() commentSend = new EventEmitter<string>();\n\n    public form: FormGroup = new FormGroup({\n        comment: new FormControl<string>(null),\n    });\n\n    public onCommentCancel(): void {\n        this.form.reset();\n        this.commentCancel.emit();\n    }\n\n    public onCommentSend(): void {\n        this.commentSend.emit(this.form.get('comment').value);\n        this.form.reset();\n    }\n    \n}\n","<div class=\"eui-u-flex\">\n    <eui-avatar euiSizeXS>\n        <eui-avatar-image [imageUrl]=\"currentAuthorAvatarUrl\"></eui-avatar-image>\n    </eui-avatar>\n    <form class=\"comment-form\" [formGroup]=\"form\">\n        <textarea class=\"eui-u-ml-xs\" euiTextArea formControlName=\"comment\" [placeholder]=\"placeholder | translate\" autoResize></textarea>\n    </form>\n</div>\n<div class=\"eui-u-flex eui-u-flex-justify-content-end eui-u-pt-2xs\">\n    <button class=\"eui-u-mr-2xs\" euiButton euiBasicButton euiSizeS (buttonClick)=\"onCommentCancel()\">\n        {{ 'eui.CANCEL' | translate }}\n    </button>\n    <button euiButton euiPrimary euiSizeS (buttonClick)=\"onCommentSend()\">\n        {{ 'eui.SEND' | translate }}\n    </button>\n</div>\n","import {\n    booleanAttribute, ChangeDetectionStrategy, Component, ContentChildren, ElementRef, HostBinding, Input, numberAttribute, QueryList,\n    ViewChild, AfterContentInit, Output, EventEmitter,\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { EUI_AVATAR } from '@eui/components/eui-avatar';\nimport { EUI_BUTTON } from '@eui/components/eui-button';\nimport { EUI_ICON } from '@eui/components/eui-icon';\n\nimport { EuiCommentTextareaComponent } from '../comment-textarea/eui-comment-textarea.component';\n\n/**\n * @description\n * Individual comment item component displaying a single comment with author information, timestamp, and nested replies.\n * Provides automatic text truncation with expand/collapse functionality for long comments.\n * Supports nested comment threads with collapsible child comments and integrated reply textarea.\n * Displays author avatar, name, creation timestamp, and optional action buttons.\n * Automatically counts and manages child comment items through content projection.\n *\n * @usageNotes\n * ```html\n * <eui-comment-item\n *   [authorName]=\"'Jane Smith'\"\n *   [authorAvatarUrl]=\"'path/to/avatar.jpg'\"\n *   [createdAt]=\"'1 day ago'\"\n *   [currentAuthorAvatarUrl]=\"currentUser.avatar\"\n *   [commentCharLimit]=\"300\"\n *   (commentSend)=\"onReply($event)\">\n *   This is the comment text that will be automatically truncated if it exceeds the character limit.\n *   <eui-comment-item-right-actions>\n *     <button euiIconButton euiBasicButton icon=\"eui-edit\"></button>\n *   </eui-comment-item-right-actions>\n * </eui-comment-item>\n * ```\n *\n * ### Accessibility\n * - \"Read more\" and \"Read less\" links are keyboard accessible with proper focus management\n * - Reply link is accessible via keyboard navigation\n * - Nested comment structure uses semantic `<ul>` and `<li>` elements\n * - Avatar component includes proper alt text support\n *\n * ### Notes\n * - Comment text is automatically truncated based on `commentCharLimit` (default: 500 characters)\n * - Nested `eui-comment-item` elements are automatically counted and displayed\n * - Reply textarea appears inline when user clicks \"Answer\" link\n * - Use `eui-comment-item-right-actions` for action buttons like edit or delete\n */\n@Component({\n    selector: 'eui-comment-item',\n    templateUrl: './eui-comment-item.component.html',\n    styleUrls: ['../styles/_index.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        TranslateModule,\n        ...EUI_AVATAR,\n        ...EUI_BUTTON,\n        ...EUI_ICON,\n        EuiCommentTextareaComponent,\n    ],\n})\nexport class EuiCommentItemComponent implements AfterContentInit {\n    /** @internal */\n    @HostBinding('class')\n    get cssClasses(): string {\n        return ['eui-comment-item'].join(' ').trim();\n    }\n\n    @HostBinding('attr.role') role = 'listitem';\n\n    /**\n     * URL path to the comment author's avatar image.\n     * Displayed alongside the comment to identify the author.\n     * Optional.\n     */\n    @Input() authorAvatarUrl: string = null;\n\n    /**\n     * Name of the comment author.\n     * Displayed as the comment header to identify who wrote the comment.\n     * Optional.\n     */\n    @Input() authorName: string = null;\n\n    /**\n     * Timestamp or date string indicating when the comment was created.\n     * Displayed in the comment header for temporal context.\n     * Optional.\n     */\n    @Input() createdAt: string = null;\n\n    /**\n     * URL path to the current user's avatar image.\n     * Used for the reply textarea to identify the replying user.\n     * Optional.\n     */\n    @Input() currentAuthorAvatarUrl: string = null;\n\n    /**\n     * Indicates whether this comment has nested child comments.\n     * When true, displays collapse/expand controls for child comments.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) hasChildren = false;\n\n    /**\n     * Controls the expanded/collapsed state of nested child comments.\n     * When true, child comments are visible; when false, they are hidden.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isOpen = false;\n\n    /**\n     * Maximum character length before comment text is truncated.\n     * Comments exceeding this limit show \"Read more\" link to expand full text.\n     * @default 500\n     */\n    @Input({ transform: numberAttribute }) commentCharLimit = 500;\n\n    /**\n     * Emitted when the user cancels reply input.\n     * Payload: void\n     * Triggered when user clicks cancel button in the reply textarea.\n     */\n    @Output() commentCancel = new EventEmitter();\n\n    /**\n     * Emitted when the user submits a reply comment.\n     * Payload: string - the reply comment text entered by the user\n     * Triggered when user clicks send button in the reply textarea.\n     */\n    @Output() commentSend = new EventEmitter<string>();\n\n    @ContentChildren(EuiCommentItemComponent) subCommentItems: QueryList<EuiCommentItemComponent>;\n    @ViewChild('comment', { static: true }) comment: ElementRef<HTMLElement>;\n\n    public isVisibleReplyInput = false;\n    public fullText = '';\n    public truncatedText = '';\n    public isTruncated = false;\n    public isExpanded = false;\n\n    get nbSubCommentItems(): number {\n        return this.subCommentItems.length;\n    }\n\n    ngAfterContentInit(): void {\n        const source = this.comment.nativeElement.textContent?.trim() ?? '';\n        this.fullText = source;\n\n        if (source.length > this.commentCharLimit) {\n            this.truncatedText = source.slice(0, this.commentCharLimit);\n            this.isTruncated = true;\n        } else {\n            this.truncatedText = source;\n        }\n    }\n\n    toggleExpanded(e: MouseEvent): void {\n        this.isExpanded = !this.isExpanded;\n\n        e.preventDefault();\n    }\n\n    public onToggleReplyInput(e: MouseEvent): void {\n        this.isVisibleReplyInput = !this.isVisibleReplyInput;\n\n        e.preventDefault();\n    }\n\n    public onToggleOpen(): void {\n        this.isOpen = !this.isOpen;\n    }\n\n    public onCommentCancel(): void {\n        this.commentCancel.emit();\n    }\n\n    public onCommentSend(comment: string): void {\n        this.commentSend.emit(comment);\n    }\n}\n","<div class=\"comment-item__row\">\n        <div class=\"comment-item__content-container\">\n            <div class=\"avatar eui-u-flex eui-u-flex-justify-content-between\">\n                <eui-avatar euiSizeXS>\n                    <eui-avatar-image [imageUrl]=\"authorAvatarUrl\"></eui-avatar-image>\n                    <eui-avatar-content>\n                        <eui-avatar-content-label>\n                            {{ authorName }} <span class=\"eui-u-c-neutral-110 eui-u-f-m eui-u-text-smaller\">{{ createdAt }}</span>\n                        </eui-avatar-content-label>\n                    </eui-avatar-content>\n                </eui-avatar>\n\n                <ng-content select=\"eui-comment-item-right-actions\" />\n            </div>\n\n            <div class=\"comment\">\n                <div class=\"comment-source\" #comment>\n                    <ng-content></ng-content>\n                </div>\n\n                <div class=\"ellipsis-wrapper\">\n                    {{ isExpanded ? fullText : truncatedText }} @if (!isExpanded && isTruncated) { <span>…</span> } \n                    @if (isTruncated) {\n                        <a href=\"#\" (click)=\"toggleExpanded($event)\" class=\"eui-u-text-link\">{{ isExpanded ? ('eui.READ-LESS' | translate) : ('eui.READ-MORE' | translate) }}</a>\n                    }\n                </div>\n\n                <ul class=\"comment-actions eui-u-flex\">\n                    <li><a href=\"#\" class=\"eui-u-text-link\" (click)=\"onToggleReplyInput($event)\">{{ 'eui.ANSWER' | translate }}</a></li>\n                </ul>\n            </div>\n\n            <div class=\"comment-item__footer-container\">\n                @if (isVisibleReplyInput) {\n                    <div class=\"eui-u-pt-s\">\n                        <eui-comment-textarea\n                            [currentAuthorAvatarUrl]=\"currentAuthorAvatarUrl\"\n                            [placeholder]=\"'eui.TO-ANSWER'\"\n                            (commentCancel)=\"onCommentCancel()\"\n                            (commentSend)=\"onCommentSend($event)\" />\n                    </div>\n                }\n            </div>\n        </div>\n    </div>\n\n    @if (nbSubCommentItems > 0) {\n        <div class=\"expander-container\">\n            @if (isOpen) {\n                <button euiButton euiBasicButton euiPrimary euiSizeS (buttonClick)=\"onToggleOpen()\">\n                    <eui-icon-svg icon=\"eui-chevron-up\" />\n                    {{ nbSubCommentItems }} {{ (nbSubCommentItems > 1 ? 'eui.ANSWERS' : 'eui.ANSWER') | translate }}\n                </button>\n                <ul class=\"comment-item__sub-comment-list\">\n                    <ng-content select=\"eui-comment-item\"></ng-content>\n                </ul>\n            } @else {\n                <button euiButton euiBasicButton euiPrimary euiSizeS (buttonClick)=\"onToggleOpen()\">\n                    <eui-icon-svg icon=\"eui-chevron-down\" />\n                    >{{ nbSubCommentItems }} {{ (nbSubCommentItems > 1 ? 'eui.ANSWERS' : 'eui.ANSWER') | translate }}\n                </button>\n            }\n        </div>\n    }\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, Output, EventEmitter, booleanAttribute, ContentChildren, QueryList } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { EUI_BUTTON } from '@eui/components/eui-button';\nimport { EUI_ICON } from '@eui/components/eui-icon';\n\nimport { EuiCommentTextareaComponent } from './comment-textarea/eui-comment-textarea.component';\nimport { EuiCommentItemComponent } from './comment-item/eui-comment-item.component';\n\n/**\n * @description\n * `eui-comment-thread` component for displaying nested conversations with reply functionality.\n * Provides a collapsible container for comment items with integrated textarea for adding new comments.\n * Supports flexible textarea positioning (top or bottom) and optional collapse/expand behavior.\n * Automatically counts and manages child comment items through content projection.\n * Typically used for discussion threads, feedback sections, or collaborative commenting features.\n *\n * @usageNotes\n * ```html\n * <eui-comment-thread\n *   [currentAuthorAvatarUrl]=\"currentUser.avatar\"\n *   [isOpen]=\"true\"\n *   (commentSend)=\"onAddComment($event)\">\n *   <eui-comment-item\n *     [authorName]=\"'John Doe'\"\n *     [authorAvatarUrl]=\"'path/to/avatar.jpg'\"\n *     [createdAt]=\"'2 hours ago'\">\n *     This is a comment text.\n *   </eui-comment-item>\n * </eui-comment-thread>\n * ```\n *\n * ### Accessibility\n * - Collapse/expand buttons include proper ARIA labels through translation keys\n * - Comment count is announced to screen readers (singular/plural forms)\n * - Nested comment structure maintains semantic HTML with proper list elements\n *\n * ### Notes\n * - Use `textareaPosition` to control whether new comments appear above or below existing ones\n * - Set `isCollapsable` to false for always-visible comment threads\n * - The component automatically counts child `eui-comment-item` elements\n */\n@Component({\n    selector: 'eui-comment-thread',\n    templateUrl: './eui-comment-thread.component.html',\n    styleUrls: ['./styles/_index.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        TranslateModule,\n        NgTemplateOutlet,\n        ...EUI_BUTTON,\n        ...EUI_ICON,\n        EuiCommentTextareaComponent,\n    ],\n})\nexport class EuiCommentThreadComponent {\n    @HostBinding('class')\n    get cssClasses(): string {\n        return [\n            'eui-comment-thread',\n        ]\n            .join(' ')\n            .trim();\n    }\n\n    /**\n     * Placeholder text displayed in the comment textarea when empty.\n     * Supports translation keys for internationalization.\n     * @default 'eui.ADD-A-COMMENT'\n     */\n    @Input() placeholder = 'eui.ADD-A-COMMENT';\n\n    /**\n     * Position of the comment textarea relative to the comment items.\n     * When 'top', textarea appears above comments; when 'bottom', below comments.\n     * @default 'top'\n     */\n    @Input() textareaPosition: ('top' | 'bottom') = 'top';\n\n    /**\n     * Controls visibility of the comment textarea.\n     * When false, hides the textarea preventing new comment input.\n     * @default true\n     */\n    @Input({ transform: booleanAttribute }) hasTextarea = true;\n\n    /**\n     * URL path to the current user's avatar image.\n     * Displayed alongside the comment textarea to identify the commenter.\n     * Optional.\n     */\n    @Input() currentAuthorAvatarUrl: string = null;\n\n    /**\n     * Controls the expanded/collapsed state of the comment thread.\n     * When true, thread is expanded showing all comments; when false, thread is collapsed.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isOpen = false;\n\n    /**\n     * Enables collapse/expand functionality for the comment thread.\n     * When true, displays toggle control; when false, thread remains static.\n     * @default true\n     */\n    @Input({ transform: booleanAttribute }) isCollapsable = true;\n\n    /**\n     * Emitted when the user cancels comment input.\n     * Payload: void\n     * Triggered when user clicks cancel button in the comment textarea.\n     */\n    @Output() commentCancel = new EventEmitter();\n\n    /**\n     * Emitted when the user submits a new comment.\n     * Payload: string - the comment text entered by the user\n     * Triggered when user clicks send button in the comment textarea.\n     */\n    @Output() commentSend = new EventEmitter<string>();\n\n    @ContentChildren(EuiCommentItemComponent) subCommentItems: QueryList<EuiCommentItemComponent>;\n\n    get nbSubCommentItems(): number {\n        return this.subCommentItems.length;\n    }\n\n    public onCommentCancel(): void {\n        this.commentCancel.emit();\n    }\n\n    public onCommentSend(comment: string): void {\n        this.commentSend.emit(comment);\n    }\n\n    public onToggleOpen(): void {\n        this.isOpen = !this.isOpen;\n    }\n}\n","@if (textareaPosition === 'top' && hasTextarea) {\n    <ng-container *ngTemplateOutlet=\"control\"></ng-container>\n}\n\n@if (nbSubCommentItems > 0) {\n    <div class=\"expander-container\">\n        @if (isOpen) {\n            @if (isCollapsable) {\n                <button euiButton euiBasicButton euiPrimary euiSizeS (buttonClick)=\"onToggleOpen()\">\n                    <eui-icon-svg icon=\"eui-chevron-up\" />\n                    {{ nbSubCommentItems }} {{ (nbSubCommentItems > 1 ? 'eui.ANSWERS' : 'eui.ANSWER') | translate }}\n                </button>\n            }\n            <ul>\n                <ng-content></ng-content>\n            </ul>\n        } @else {\n            <button euiButton euiBasicButton euiPrimary euiSizeS (buttonClick)=\"onToggleOpen()\">\n                <eui-icon-svg icon=\"eui-chevron-down\" />\n                {{ nbSubCommentItems }} {{ (nbSubCommentItems > 1 ? 'eui.ANSWERS' : 'eui.ANSWER') | translate }}\n            </button>\n        }\n    </div>\n}\n\n@if (textareaPosition === 'bottom' && hasTextarea) {\n    <ng-container *ngTemplateOutlet=\"control\"></ng-container>\n}\n\n<ng-template #control>\n    <eui-comment-textarea\n        [currentAuthorAvatarUrl]=\"currentAuthorAvatarUrl\"\n        [placeholder]=\"placeholder | translate\"\n        (commentCancel)=\"onCommentCancel()\"\n        (commentSend)=\"onCommentSend($event)\" />\n</ng-template>\n","import { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';\n\n/**\n * @description\n * Container component for right-aligned action buttons within a comment item.\n * Provides a designated area for actions like edit, delete, reply, or other comment-specific operations.\n * Content is projected via ng-content allowing flexible composition of action buttons.\n * Automatically applies appropriate positioning and spacing for right-aligned actions.\n * Used within eui-comment-item to organize action controls.\n *\n * @usageNotes\n * ```html\n * <eui-comment-item [authorName]=\"'John Doe'\">\n *   Comment text here\n *   <eui-comment-item-right-actions>\n *     <button euiIconButton euiBasicButton icon=\"eui-edit\"></button>\n *     <button euiIconButton euiBasicButton icon=\"eui-delete\"></button>\n *   </eui-comment-item-right-actions>\n * </eui-comment-item>\n * ```\n *\n * ### Accessibility\n * - Ensure projected buttons have proper ARIA labels or accessible text\n * - Icon buttons should include `aria-label` attributes for screen readers\n * - Maintain logical tab order for keyboard navigation\n *\n * ### Notes\n * - Must be used as a child of `eui-comment-item` component\n * - Accepts any content via content projection (buttons, dropdowns, etc.)\n * - Automatically positioned in the top-right corner of the comment header\n * - Commonly used for edit, delete, flag, or more actions menu\n */\n@Component({\n    selector: 'eui-comment-item-right-actions',\n    templateUrl: './eui-comment-item-right-actions.component.html',\n    styleUrls: ['../styles/_index.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiCommentItemRightActionsComponent {\n    @HostBinding('class')\n    get cssClasses(): string {\n        return ['eui-comment-item-right-actions'].join(' ').trim();\n    }\n}\n","<ng-content />\n","import { EuiCommentThreadComponent } from './eui-comment-thread.component';\nimport { EuiCommentItemComponent } from './comment-item/eui-comment-item.component';\nimport { EuiCommentTextareaComponent } from './comment-textarea/eui-comment-textarea.component';\nimport { EuiCommentItemRightActionsComponent } from './comment-item-right-actions/eui-comment-item-right-actions.component';\n\nexport * from './eui-comment-thread.component';\nexport * from './comment-item/eui-comment-item.component';\nexport * from './comment-textarea/eui-comment-textarea.component';\nexport * from './comment-item-right-actions/eui-comment-item-right-actions.component';\n\nexport const EUI_COMMENT_THREAD = [\n    EuiCommentThreadComponent,\n    EuiCommentItemComponent,\n    EuiCommentTextareaComponent,\n    EuiCommentItemRightActionsComponent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i4"],"mappings":"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"}