{"version":3,"file":"eui-components-eui-discussion-thread.mjs","sources":["../../eui-discussion-thread/eui-discussion-thread-item.component.ts","../../eui-discussion-thread/eui-discussion-thread-item.component.html","../../eui-discussion-thread/eui-discussion-thread.component.ts","../../eui-discussion-thread/eui-discussion-thread.component.html","../../eui-discussion-thread/index.ts","../../eui-discussion-thread/eui-components-eui-discussion-thread.ts"],"sourcesContent":["import { Component, HostBinding, Input } from '@angular/core';\nimport { coerceBooleanProperty, BooleanInput } from '@angular/cdk/coercion';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EUI_LABEL } from '@eui/components/eui-label';\nimport { EUI_ICON_STATE } from '@eui/components/eui-icon-state';\nimport { DatePipe } from '@angular/common';\n\n/**\n * @description\n * Individual item component for discussion threads, representing a single message or entry in a conversation.\n * Displays author information, timestamp, message content, and optional metadata with support for visual variants.\n * \n * @usageNotes\n * ### Basic Thread Item\n * ```html\n * <eui-discussion-thread-item \n *   [author]=\"'John Doe'\"\n *   [date]=\"'2024-01-15'\"\n *   [body]=\"'This is a comment in the discussion'\">\n * </eui-discussion-thread-item>\n * ```\n * \n * ### With Type Styling\n * ```html\n * <eui-discussion-thread-item \n *   [author]=\"'System'\"\n *   [date]=\"'2024-01-15T10:30:00'\"\n *   [body]=\"'Status updated to In Progress'\"\n *   [typeClass]=\"'info'\">\n * </eui-discussion-thread-item>\n * ```\n * \n * ### With Tooltip\n * ```html\n * <eui-discussion-thread-item \n *   [author]=\"'Jane Smith'\"\n *   [date]=\"'2024-01-15'\"\n *   [body]=\"'Review completed'\"\n *   [tooltip]=\"'Approved by manager'\">\n * </eui-discussion-thread-item>\n * ```\n * \n * ### Accessibility\n * - Uses `role=\"listitem\"` for proper list semantics\n * - Author and date information announced before message content\n * - Tooltip provides additional context for assistive technologies\n * - Ensure date format is screen reader friendly\n * \n * ### Notes\n * - Use within `eui-discussion-thread` component for proper structure\n * - `typeClass` affects icon and styling (info, warning, success, danger)\n * - `isOdd` property used for alternating row styling\n * - Date accepts string format and is displayed with DatePipe\n * - Supports rich content in body via content projection\n */\n@Component({\n    selector: 'eui-discussion-thread-item',\n    templateUrl: './eui-discussion-thread-item.component.html',\n    styleUrl: './eui-discussion-thread-item.scss',\n    imports: [\n        ...EUI_LABEL,\n        ...EUI_ICON,\n        ...EUI_ICON_STATE,\n        DatePipe,\n    ],\n})\nexport class EuiDiscussionThreadItemComponent {\n    /**\n     * Sets CSS classes on the host element based on the typeClass property.\n     * This helps maintain consistent styling with the parent theme variant.\n     * @returns {string} The CSS class to be applied\n     */\n    @HostBinding('class')\n    public get cssClasses(): string {\n        return `eui--${this.typeClass}`; // simulate parent variant for icon auto-contrast color fill\n    }\n\n    /**\n     * ARIA role for the host element to ensure proper accessibility.\n     * @default 'listitem'\n     */\n    @HostBinding('attr.role') role = 'listitem';\n\n    /**\n     * Unique identifier for the discussion thread item.\n     */\n    @Input() id: string;\n\n    /**\n     * Type class defining the visual style of the item (e.g., 'info', 'warning', 'error').\n     * This affects the color scheme applied to the item.\n     */\n    @Input() typeClass: string;\n\n    /**\n     * Date when the thread item was created or modified.\n     */\n    @Input() date: string;\n\n    /**\n     * Name or identifier of the author who created the item.\n     */\n    @Input() author: string;\n\n    /**\n     * Content body of the discussion thread item.\n     */\n    @Input() body: string;\n\n    /**\n     * Tooltip text to display additional information when hovering over the item.\n     */\n    @Input() tooltip: string;\n\n    /**\n     * Indicates if this item is in an odd position in the list.\n     * Used for alternating styling patterns within the thread.\n     */\n    @Input()\n    get isOdd(): boolean {\n        return this._isOdd;\n    }\n    set isOdd(value: BooleanInput) {\n        this._isOdd = coerceBooleanProperty(value);\n    }\n    private _isOdd = false;\n}\n","<li role=\"none\" class=\"eui-discussion-thread__item\" [class.eui-discussion-thread__item--inverted]=\"isOdd\">\n    <div class=\"eui-discussion-thread__item-badge eui-discussion-thread__item-badge--{{ typeClass }}\" title=\"{{ tooltip }}\">\n        <eui-icon-state [euiVariant]=\"typeClass\" size=\"xl\" class=\"eui-alert__icon-type\"/>\n    </div>\n    <div class=\"eui-discussion-thread__item-panel\">\n        <div class=\"eui-discussion-thread__item-panel-header\">\n            <div class=\"eui-discussion-thread__item-panel-heading\">\n                <div class=\"eui-discussion-thread__item-panel-title\">\n                    {{ date | date: 'dd/MM/yyyy' }}\n                </div>\n                <div class=\"eui-discussion-thread__item-panel-time\">\n                    <eui-icon-svg icon=\"eui-clock\" size=\"s\" fillColor=\"secondary\" class=\"eui-discussion-thread__item-panel-time-icon\"/>\n                    <span class=\"eui-u-f-s\">{{ date | date: 'HH:mm' }}</span>\n                </div>\n            </div>\n            <div class=\"eui-discussion-thread__item-panel-subheading\">\n                {{ author }}\n            </div>\n        </div>\n        <div class=\"eui-discussion-thread__item-panel-body\">\n            <p class=\"eui-discussion-thread__item-panel-body-word-break\" [innerHTML]=\"body\"></p>\n        </div>\n    </div>\n</li>\n","import { Component, ContentChildren, HostBinding, Input, QueryList } from '@angular/core';\n\nimport { EUI_LABEL } from '@eui/components/eui-label';\nimport { EUI_ICON } from '@eui/components/eui-icon';\n\nimport { EuiDiscussionThreadItem } from './models/eui-discussion-thread-item.model';\nimport { EuiDiscussionThreadItemComponent } from './eui-discussion-thread-item.component';\n\n/**\n * @description\n * A component for displaying threaded discussions or conversation timelines in a structured format.\n * Renders a list of discussion items with support for titles, subtitles, and tooltips.\n * Ideal for comment threads, activity feeds, chat histories, and collaborative communication interfaces.\n * \n * @usageNotes\n * ### Basic Usage with Items Array\n * ```typescript\n * // Component\n * discussionItems: EuiDiscussionThreadItem[] = [\n *   { \n *     author: 'John Doe', \n *     timestamp: new Date(), \n *     message: 'First comment' \n *   },\n *   { \n *     author: 'Jane Smith', \n *     timestamp: new Date(), \n *     message: 'Reply to comment' \n *   }\n * ];\n * \n * // Template\n * <eui-discussion-thread \n *   [items]=\"discussionItems\"\n *   [titleLabel]=\"'Project Discussion'\"\n *   [subTitleLabel]=\"'Team Collaboration'\">\n * </eui-discussion-thread>\n * ```\n * \n * ### Using Content Projection\n * ```html\n * <eui-discussion-thread \n *   [titleLabel]=\"'Comments'\"\n *   [tooltip]=\"'Discussion thread for this task'\">\n *   <eui-discussion-thread-item \n *     [author]=\"'Alice'\"\n *     [timestamp]=\"date1\"\n *     [message]=\"'Initial comment'\">\n *   </eui-discussion-thread-item>\n *   <eui-discussion-thread-item \n *     [author]=\"'Bob'\"\n *     [timestamp]=\"date2\"\n *     [message]=\"'Follow-up response'\">\n *   </eui-discussion-thread-item>\n * </eui-discussion-thread>\n * ```\n * \n * ### Accessibility\n * - Automatically applies `role=\"list\"` when items are present\n * - Each discussion item should have `role=\"listitem\"` for proper structure\n * - Timestamps should be formatted for screen reader clarity\n * - Author names are announced before message content\n * - Tooltip provides additional context for assistive technologies\n * \n * ### Notes\n * - Supports both data-driven (`items` array) and content projection approaches\n * - Use `titleLabel` and `subTitleLabel` for thread categorization\n * - Items are rendered in the order provided\n * - Component automatically detects and counts projected `eui-discussion-thread-item` children\n * - Styling adapts based on thread depth and nesting level\n */\n@Component({\n    selector: 'eui-discussion-thread',\n    templateUrl: './eui-discussion-thread.component.html',\n    styleUrls: ['./eui-discussion-thread.scss'],\n    imports: [\n        EuiDiscussionThreadItemComponent,\n        ...EUI_ICON,\n        ...EUI_LABEL,\n    ],\n})\nexport class EuiDiscussionThreadComponent {\n    /**\n     * Gets the CSS classes to apply to the host element.\n     *\n     * @returns {string} The CSS classes as a space-separated string.\n     */\n    @HostBinding('class')\n    get cssClasses(): string {\n        return ['eui-discussion-thread'].join(' ').trim();\n    }\n\n    /**\n     * ARIA role for the host element to ensure proper accessibility.\n     * @default 'list'\n     */\n    @HostBinding('attr.role')\n    get checkRole(): string {\n        return this.items && this.items.length > 0 || this.discussionThreadItems.length > 0 ? 'list' : null;\n    }\n\n    /**\n     * Array of discussion thread items to be displayed.\n     * Each item should conform to the EuiDiscussionThreadItem interface.\n     */\n    @Input() items: EuiDiscussionThreadItem[];\n\n    /**\n     * The main title label for the discussion thread.\n     */\n    @Input() titleLabel: string;\n\n    /**\n     * The subtitle label for the discussion thread, typically used to provide\n     * additional context or categorization.\n     */\n    @Input() subTitleLabel: string;\n\n    /**\n     * Tooltip text to display when hovering over the discussion thread.\n     */\n    @Input() tooltip: string;\n\n    @ContentChildren(EuiDiscussionThreadItemComponent, { descendants: true }) private discussionThreadItems: QueryList<EuiDiscussionThreadItemComponent>;\n}\n","<div class=\"eui-discussion-thread-wrapper-header\">\n    <div class=\"eui-discussion-thread-wrapper-header__title\">{{ titleLabel }}</div>\n    <div class=\"eui-discussion-thread-wrapper-header__subtitle\">{{ subTitleLabel }}</div>\n</div>\n<ul role=\"none\" class=\"eui-discussion-thread-content\">\n    @if (items) {\n        @for (item of items; track item.id; let o = $odd; let e = $even;) {\n            <eui-discussion-thread-item\n                [isOdd]=\"o\"\n                id=\"{{ item.id }}\"\n                typeClass=\"{{ item.typeClass }}\"\n                date=\"{{ item.date }}\"\n                author=\"{{ item.author }}\"\n                body=\"{{ item.body }}\"\n                tooltip=\"{{ item.tooltip }}\">\n            </eui-discussion-thread-item>\n        }\n    }\n\n    @if (!items) {\n        <ng-content></ng-content>\n    }\n</ul>\n","import { EuiDiscussionThreadItemComponent } from './eui-discussion-thread-item.component';\nimport { EuiDiscussionThreadComponent } from './eui-discussion-thread.component';\n\nexport * from './eui-discussion-thread.component';\nexport * from './eui-discussion-thread-item.component';\nexport * from './models/eui-discussion-thread-item.model';\n\nexport const EUI_DISCUSSION_THREAD = [\n    EuiDiscussionThreadComponent, \n    EuiDiscussionThreadItemComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}