{"version":3,"file":"smart-webcomponents-angular-ganttchart.mjs","sources":["../../ganttchart/src/smart.element.ts","../../ganttchart/src/smart.ganttchart.ts","../../ganttchart/src/smart.ganttchart.module.ts","../../ganttchart/src/smart-webcomponents-angular-ganttchart.ts"],"sourcesContent":["\ndeclare global {\n    interface Window {\n        Smart: any;\n}\n}\n\n\nimport { Directive, ElementRef, Input, Output, EventEmitter } from '@angular/core';\nimport { ElementRenderMode } from './../index';\n\n@Directive()\nexport class BaseElement {\n    constructor(ref: ElementRef) {\n        const that = this;\n        this.nativeElement = ref.nativeElement as any;\n\n        that.nativeElement.onAttached = () => {\n            that.onAttach.emit(that.nativeElement);\n        }\n\n        that.nativeElement.onDetached = () => {\n            that.onDetach.emit(that.nativeElement);\n        }\n    }\n\n    @Output() onCreate: EventEmitter<any> = new EventEmitter();\n    @Output() onReady: EventEmitter<any> = new EventEmitter();\n    @Output() onAttach: EventEmitter<any> = new EventEmitter();\n    @Output() onDetach: EventEmitter<any> = new EventEmitter();\n\n    public nativeElement: any;\n\n    public addEventListener(type: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions = false): void {\n        this.nativeElement.addEventListener(type, listener, options);\n\t}\n\n\tpublic removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions = false): void {\n\t\tthis.nativeElement.removeEventListener(type, listener, options);\n\t}\n\n\tpublic dispatchEvent(event: Event): boolean {\n\t\treturn this.nativeElement.dispatchEvent(event);\n\t}\n\n\tpublic blur(): void {\n\t\tthis.nativeElement.blur();\n\t}\n\n\tpublic click(): void {\n\t\tthis.nativeElement.click();\n\t}\n\n\tpublic focus(options?: FocusOptions): void {\n\t\tthis.nativeElement.focus(options);\n\t}\n\n/** @description Sets or gets the license.  */\n\t@Input()\n\tget license(): string {\n\t\treturn this.nativeElement ? this.nativeElement.license : undefined;\n\t}\n\tset license(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.license = value : undefined;\n\t}\n\t\n/** @description Sets or gets the language. Used in conjunction with the property messages.  */\n\t@Input()\n\tget locale(): string {\n\t\treturn this.nativeElement ? this.nativeElement.locale : undefined;\n\t}\n\tset locale(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.locale = value : undefined;\n\t}\n\n\t/** @description Callback used to customize the format of the messages that are returned from the Localization Module. */\n\t@Input()\n\tget localizeFormatFunction(): any {\n\t\treturn this.nativeElement ? this.nativeElement.localizeFormatFunction : undefined;\n\t}\n\tset localizeFormatFunction(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.localizeFormatFunction = value : undefined;\n\t}\n\n\t/** @description Sets or gets an object specifying strings used in the widget that can be localized. Used in conjunction with the property locale.  */\n\t@Input()\n\tget messages(): any {\n\t\treturn this.nativeElement ? this.nativeElement.messages : undefined;\n\t}\n\tset messages(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.messages = value : undefined;\n\t}\n\n\t/** @description Sets or gets the value indicating whether the element is aligned to support locales using right-to-left fonts. */\n\t@Input()\n\tget rightToLeft(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.rightToLeft : undefined;\n\t}\n\tset rightToLeft(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.rightToLeft = value : undefined;\n\t}\n\n\t/** @description Determines the theme. Theme defines the look of the element */\n\t@Input()\n\tget theme(): string {\n\t\treturn this.nativeElement ? this.nativeElement.theme : undefined;\n\t}\n\tset theme(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.theme = value : undefined;\n\t}\n}\n\nlet Smart: any;\nif (typeof window !== \"undefined\") {\n\tSmart = window.Smart;\n}\nexport { Smart };\n\n","import { GanttChart } from './../index';\nimport { GanttChartDataExportItemType, GanttDayFormat, Duration, HorizontalScrollBarVisibility, HourFormat, MonthFormat, MonthScale, QuarterFormat, GanttChartResourceTimelineMode, GanttChartResourceTimelineView, GanttChartSelectionMode, GanttChartSortMode, GanttChartTaskType, VerticalScrollBarVisibility, GanttChartView, YearFormat, WeekFormat, GanttChartDataExport, GanttChartDateMarker, GanttChartResource, GanttChartResourceColumn, GanttChartTask, GanttChartTaskIndicator, GanttChartTaskPlanned, GanttChartTaskSegment, GanttChartTaskColumn, GanttChartTooltip, ElementRenderMode} from './../index';\nimport { Component, Directive, AfterViewInit, ElementRef, Input, OnInit, OnChanges, OnDestroy, SimpleChanges, Output, EventEmitter } from '@angular/core';\nimport { BaseElement, Smart } from './smart.element';\nexport { GanttChartDataExportItemType, GanttDayFormat, Duration, HorizontalScrollBarVisibility, HourFormat, MonthFormat, MonthScale, QuarterFormat, GanttChartResourceTimelineMode, GanttChartResourceTimelineView, GanttChartSelectionMode, GanttChartSortMode, GanttChartTaskType, VerticalScrollBarVisibility, GanttChartView, YearFormat, WeekFormat, GanttChartDataExport, GanttChartDateMarker, GanttChartResource, GanttChartResourceColumn, GanttChartTask, GanttChartTaskIndicator, GanttChartTaskPlanned, GanttChartTaskSegment, GanttChartTaskColumn, GanttChartTooltip, ElementRenderMode} from './../index';\nexport { Smart } from './smart.element';\nexport { GanttChart } from './../index';\n\n\n@Directive({\n\texportAs: 'smart-gantt-chart',\tselector: 'smart-gantt-chart, [smart-gantt-chart]'\n})\n\nexport class GanttChartComponent extends BaseElement implements OnInit, AfterViewInit, OnDestroy, OnChanges {\n\tconstructor(ref: ElementRef<GanttChart>) {\n\t\tsuper(ref);\n\t\tthis.nativeElement = ref.nativeElement as GanttChart;\n\t}\n\n\tprivate eventHandlers: any[] = [];\n\n\tpublic declare nativeElement: GanttChart;\n\t/** @description Creates the component on demand.\n\t * @param properties An optional object of properties, which will be added to the template binded ones.\n\t */\n\tpublic createComponent(properties = {}): any {\n    \tthis.nativeElement = <GanttChart>document.createElement('smart-gantt-chart');\n\t\tfor (let propertyName in properties) { \n \t\t\tthis.nativeElement[propertyName] = properties[propertyName];\n\t\t}\n\t\treturn this.nativeElement;\n\t}\n\t/** @description Specifies whether nonworkingDays and nonworkingHours should be considered when calculating the dateEnd of tasks. When enabled, dateEnd is determined based only on actual working time, excluding periods defined as nonworking. If disabled (the default behavior), dateEnd is calculated using continuous calendar time, without regard for nonworking periods. */\n\t@Input()\n\tget adjustToNonworkingTime(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.adjustToNonworkingTime : undefined;\n\t}\n\tset adjustToNonworkingTime(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.adjustToNonworkingTime = value : undefined;\n\t}\n\n\t/** @description Automatically recalculates and updates the scheduling of tasks based on their defined connections and dependencies. When tasks are linked (for example, via finish-to-start or start-to-start relationships), this process adjusts their start and end dates to maintain the intended order and constraints. If a task has no connections to other tasks, autoScheduling will not alter its dates until a new connection is established. The type of connection between tasks dictates how their possible start and end dates are constrained relative to each other. */\n\t@Input()\n\tget autoSchedule(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.autoSchedule : undefined;\n\t}\n\tset autoSchedule(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.autoSchedule = value : undefined;\n\t}\n\n\t/** @description This setting only impacts tasks when autoSchedule is enabled. When set to true, tasks are automatically and strictly scheduled based on their defined dependencies (connections), and users will not be able to manually drag tasks to reschedule them.Additionally, users can specify a lag value for individual task connections. The lag attribute represents the delay or overlap (specified in milliseconds) between the start or end times of two connected tasks. By configuring the lag property within each task connection in the dataSource, you can control the timing interval between dependent tasks. */\n\t@Input()\n\tget autoScheduleStrictMode(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.autoScheduleStrictMode : undefined;\n\t}\n\tset autoScheduleStrictMode(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.autoScheduleStrictMode = value : undefined;\n\t}\n\n\t/** @description Specifies the speed at which the content scrolls when dragging an item and the autoScroll property is enabled. Increasing this value results in faster scrolling while dragging near the container's edge. */\n\t@Input()\n\tget autoScrollStep(): number {\n\t\treturn this.nativeElement ? this.nativeElement.autoScrollStep : undefined;\n\t}\n\tset autoScrollStep(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.autoScrollStep = value : undefined;\n\t}\n\n\t/** @description Controls whether the column header menu is enabled or disabled. When enabled, hovering over a column header displays a dropdown button that opens a menu with quick actions such as sorting, filtering, and other column-specific operations. The available actions in this menu are context-sensitive and depend on which Gantt features are enabled; for example, the filtering option will be shown only if filtering is enabled for the corresponding column. */\n\t@Input()\n\tget columnMenu(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.columnMenu : undefined;\n\t}\n\tset columnMenu(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.columnMenu = value : undefined;\n\t}\n\n\t/** @description Specifies whether the Table columns can be resized by the user. When enabled, users can adjust the width of each column directly from the table’s header cells in both the Task and Resource timelines. This allows for greater flexibility in customizing the Table’s appearance to better fit the displayed data. */\n\t@Input()\n\tget columnResize(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.columnResize : undefined;\n\t}\n\tset columnResize(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.columnResize = value : undefined;\n\t}\n\n\t/** @description Controls whether visual resize feedback is displayed while adjusting column width. This property is effective only when the columnResize feature is enabled. If set to true, users will see a preview of the new column size as they drag to resize; if set to false, no visual feedback will be shown during the resizing action. */\n\t@Input()\n\tget columnResizeFeedback(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.columnResizeFeedback : undefined;\n\t}\n\tset columnResizeFeedback(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.columnResizeFeedback = value : undefined;\n\t}\n\n\t/** @description Enables or disables the visualization of the project’s Critical Path. When set to true, the Gantt chart highlights tasks that directly affect the project's total duration. The Critical Path represents the sequence of dependent tasks that cannot be delayed without delaying the overall project completion. */\n\t@Input()\n\tget criticalPath(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.criticalPath : undefined;\n\t}\n\tset criticalPath(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.criticalPath = value : undefined;\n\t}\n\n\t/** @description Represents the current time indicator on the Gantt chart. By default, this value is set to today’s date, highlighting the present day on the timeline. */\n\t@Input()\n\tget currentTime(): string | Date {\n\t\treturn this.nativeElement ? this.nativeElement.currentTime : undefined;\n\t}\n\tset currentTime(value: string | Date) {\n\t\tthis.nativeElement ? this.nativeElement.currentTime = value : undefined;\n\t}\n\n\t/** @description Controls the visibility of the current time indicator within the scheduling view. When enabled, a highlighted marker or line is displayed across the relevant time slots or cells to indicate the current system time, helping users easily identify the present moment within the schedule or calendar interface. Disabling this option hides the indicator from view. */\n\t@Input()\n\tget currentTimeIndicator(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.currentTimeIndicator : undefined;\n\t}\n\tset currentTimeIndicator(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.currentTimeIndicator = value : undefined;\n\t}\n\n\t/** @description Specifies how often, in seconds, the currentTimeIndicator is refreshed or updated. A lower value results in more frequent updates, while a higher value reduces the update rate, potentially improving performance. */\n\t@Input()\n\tget currentTimeIndicatorInterval(): number {\n\t\treturn this.nativeElement ? this.nativeElement.currentTimeIndicatorInterval : undefined;\n\t}\n\tset currentTimeIndicatorInterval(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.currentTimeIndicatorInterval = value : undefined;\n\t}\n\n\t/** @description Configures the data export settings for the GanttChart, allowing customization of how chart data is exported (e.g., format, included fields, file name, and export behavior). */\n\t@Input()\n\tget dataExport(): GanttChartDataExport {\n\t\treturn this.nativeElement ? this.nativeElement.dataExport : undefined;\n\t}\n\tset dataExport(value: GanttChartDataExport) {\n\t\tthis.nativeElement ? this.nativeElement.dataExport = value : undefined;\n\t}\n\n\t/** @description Determines the set of tasks to be displayed within the Timeline. The value must be an array of objects, where each object represents a single task and includes both required and optional properties that define its behavior and appearance. Required Task Properties:      label – A string value representing the name or description of the task.        dateStart – The task’s start date as a string in a valid date format (e.g., 'YYYY-MM-DD').        dateEnd – The task’s end date as a string in a valid date format.        type – Specifies the type of the task. Accepts one of: task (standard activity), project (parent grouping of subtasks), or milestone (key event). Each type may have type-specific behaviors and allowed attributes.  Optional Task Properties:      connections – An array of objects defining dependencies between tasks. Each connection object requires:                  target – An integer specifying the zero-based index of the target task in the main tasks array.                    type – An integer (0–3) indicating the type of dependency:                  0 – Start-to-Start          1 – End-to-Start          2 – End-to-End          3 – Start-to-End                            lag – A number denoting delay (positive) or overlap (negative) between auto-scheduled tasks, in applicable time units. Used in conjunction with autoSchedule.                  duration – Describes how long the task lasts (e.g., \"3d\", \"4h\", \"15m\"). Useful when dateEnd is unknown or not specified. Duration always represents total calendar time.        minDuration / maxDuration – Set minimum or maximum allowed duration for the task.        minDateStart / maxDateStart – Define earliest/latest allowed start dates, as strings in valid date formats.        minDateEnd / maxDateEnd – Define earliest/latest allowed end dates, as strings in valid date formats.        progress – A number from 0 to 100 indicating the percentage of work completed.        overdue – A boolean that is true if the task’s dateEnd has passed its deadline.        disableDrag – Boolean. If true, users cannot drag (move) the task on the timeline.        disableResize – Boolean. If true, users cannot resize the duration of the task on the timeline.        dragProject – Boolean. If true, allows the entire project (including all subtasks) to be dragged when the project parent task is dragged. Applicable only to project tasks.        segments – An array of objects allowing a task to be split into multiple segments with different properties (such as distinct start dates, labels, or durations).        synchronized – Boolean. If true, a project’s start and end dates are calculated automatically based on its child tasks, and cannot be moved independently. Applicable only to project tasks.        expanded – Boolean. Determines if a project’s subtasks are visible (expanded). If false, only the project summary bar is displayed. By default, projects are collapsed. Applicable only to project tasks.  The GanttChart component can also accept a DataAdapter instance as its data source for flexible data integration. For more details, see the DataAdapter documentation: https://www.htmlelements.com/docs/data-adapter/. */\n\t@Input()\n\tget dataSource(): any {\n\t\treturn this.nativeElement ? this.nativeElement.dataSource : undefined;\n\t}\n\tset dataSource(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.dataSource = value : undefined;\n\t}\n\n\t/** @description Specifies the display format for dates in the timeline header when the timeline is showing individual days. This setting controls how each day's date is presented (e.g., \"MM/DD/YYYY\", \"Monday, Jan 1\", etc.), ensuring that day labels in the header are clear and consistent with your application's requirements. */\n\t@Input()\n\tget dayFormat(): GanttDayFormat | string {\n\t\treturn this.nativeElement ? this.nativeElement.dayFormat : undefined;\n\t}\n\tset dayFormat(value: GanttDayFormat | string) {\n\t\tthis.nativeElement ? this.nativeElement.dayFormat = value : undefined;\n\t}\n\n\t/** @description Specifies a custom end date for the Timeline. This is useful when the user wants to define a specific end point for the Timeline, overriding the automatic calculation based on task completion dates. If no end date is provided, the Timeline will automatically use the latest end date from the existing tasks. */\n\t@Input()\n\tget dateEnd(): string | Date {\n\t\treturn this.nativeElement ? this.nativeElement.dateEnd : undefined;\n\t}\n\tset dateEnd(value: string | Date) {\n\t\tthis.nativeElement ? this.nativeElement.dateEnd = value : undefined;\n\t}\n\n\t/** @description Specifies a custom starting date for the Timeline. This option is useful when you want the Timeline to begin on a specific date, rather than relying on the earliest start date of the tasks. If a starting date is not provided, the Timeline will automatically use the start date from the first scheduled task. */\n\t@Input()\n\tget dateStart(): string | Date {\n\t\treturn this.nativeElement ? this.nativeElement.dateStart : undefined;\n\t}\n\tset dateStart(value: string | Date) {\n\t\tthis.nativeElement ? this.nativeElement.dateStart = value : undefined;\n\t}\n\n\t/** @description Specifies the date markers to be shown within the timeline of the GanttChart component. Date markers highlight and optionally label particular dates and times directly on the Gantt chart, providing visual cues or annotations for significant milestones, deadlines, or events within the project's schedule. */\n\t@Input()\n\tget dateMarkers(): GanttChartDateMarker[] {\n\t\treturn this.nativeElement ? this.nativeElement.dateMarkers : undefined;\n\t}\n\tset dateMarkers(value: GanttChartDateMarker[]) {\n\t\tthis.nativeElement ? this.nativeElement.dateMarkers = value : undefined;\n\t}\n\n\t/** @description Specifies whether the element is interactive and can be used by the user. When enabled, the element responds to user input; when disabled, the element appears inactive and does not accept user interactions. */\n\t@Input()\n\tget disabled(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.disabled : undefined;\n\t}\n\tset disabled(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.disabled = value : undefined;\n\t}\n\n\t/** @description Prevents the timeline from automatically scrolling when a task bar is being dragged or resized. This means the viewport will remain stationary during these actions, requiring the user to manually scroll if they wish to view other parts of the timeline. */\n\t@Input()\n\tget disableAutoScroll(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.disableAutoScroll : undefined;\n\t}\n\tset disableAutoScroll(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.disableAutoScroll = value : undefined;\n\t}\n\n\t/** @description Prevents users from clicking and dragging tasks to reschedule or move them within the Timeline view. Tasks remain fixed in their current positions and cannot be repositioned through drag-and-drop actions. */\n\t@Input()\n\tget disableTaskDrag(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.disableTaskDrag : undefined;\n\t}\n\tset disableTaskDrag(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.disableTaskDrag = value : undefined;\n\t}\n\n\t/** @description Prevents users from modifying or updating task progress values within the Timeline view. Task progress indicators will be displayed as read-only and cannot be adjusted through the Timeline interface. */\n\t@Input()\n\tget disableTaskProgressChange(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.disableTaskProgressChange : undefined;\n\t}\n\tset disableTaskProgressChange(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.disableTaskProgressChange = value : undefined;\n\t}\n\n\t/** @description Prevents users from adjusting the start or end dates of tasks directly within the Timeline by disabling the resize handles on tasks. */\n\t@Input()\n\tget disableTaskResize(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.disableTaskResize : undefined;\n\t}\n\tset disableTaskResize(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.disableTaskResize = value : undefined;\n\t}\n\n\t/** @description Prevents users from selecting tasks, milestones, or any other elements within the GanttChart, effectively disabling all selection interactions and highlighting within the chart area. */\n\t@Input()\n\tget disableSelection(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.disableSelection : undefined;\n\t}\n\tset disableSelection(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.disableSelection = value : undefined;\n\t}\n\n\t/** @description Prevents users from dragging and repositioning individual task segments within the interface. When this option is enabled, task segments remain fixed in place and cannot be moved through drag-and-drop actions. */\n\t@Input()\n\tget disableSegmentDrag(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.disableSegmentDrag : undefined;\n\t}\n\tset disableSegmentDrag(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.disableSegmentDrag = value : undefined;\n\t}\n\n\t/** @description Prevents users from changing the size of the task segment. When this option is enabled, the task segment cannot be resized or adjusted, ensuring its dimensions remain fixed. */\n\t@Input()\n\tget disableSegmentResize(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.disableSegmentResize : undefined;\n\t}\n\tset disableSegmentResize(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.disableSegmentResize = value : undefined;\n\t}\n\n\t/** @description Prevents the window editor from opening or being used within the GanttChart component, thereby disabling any ability for users to add, edit, or configure tasks through the graphical window interface. This setting ensures that all task modifications must be handled through alternative methods, such as programmatic updates or external forms. */\n\t@Input()\n\tget disableWindowEditor(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.disableWindowEditor : undefined;\n\t}\n\tset disableWindowEditor(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.disableWindowEditor = value : undefined;\n\t}\n\n\t/** @description Specifies the unit of measurement (such as seconds, minutes, hours, or days) used for the task's duration property. This defines how the duration value should be interpreted and ensures consistent handling of time-related data across the application. */\n\t@Input()\n\tget durationUnit(): Duration | string {\n\t\treturn this.nativeElement ? this.nativeElement.durationUnit : undefined;\n\t}\n\tset durationUnit(value: Duration | string) {\n\t\tthis.nativeElement ? this.nativeElement.durationUnit = value : undefined;\n\t}\n\n\t/** @description Specifies whether a dedicated filter row should be displayed within the table for filtering purposes, replacing the default inline filter input. When enabled, each column in the table will provide its own filter input within a separate filter row. This property is only applicable if the filtering option is enabled; otherwise, it will have no effect. */\n\t@Input()\n\tget filterRow(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.filterRow : undefined;\n\t}\n\tset filterRow(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.filterRow = value : undefined;\n\t}\n\n\t/** @description Specifies which day of the week the calendar view should start on. The value is a number from 0 to 6, where 0 represents Sunday, 1 represents Monday, and 6 represents Saturday. The default value is 0 (Sunday). Adjusting this setting allows you to control the first day displayed in the weekly or monthly calendar view. */\n\t@Input()\n\tget firstDayOfWeek(): number {\n\t\treturn this.nativeElement ? this.nativeElement.firstDayOfWeek : undefined;\n\t}\n\tset firstDayOfWeek(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.firstDayOfWeek = value : undefined;\n\t}\n\n\t/** @description Organizes tasks within the Task timeline by grouping them based on their assigned resources. Each resource receives its own group containing all tasks allocated to it. Tasks that have not been assigned to any resource are automatically placed in a separate group labeled \"Unassigned\" for easy identification. */\n\t@Input()\n\tget groupByResources(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.groupByResources : undefined;\n\t}\n\tset groupByResources(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.groupByResources = value : undefined;\n\t}\n\n\t/** @description Enables you to define custom header content for the Task Panel. The attribute accepts either an HTMLTemplate element, the id of an existing HTMLTemplate, or a function that returns the desired content. This provides flexibility to use static templates or generate dynamic header content programmatically. */\n\t@Input()\n\tget headerTemplate(): any {\n\t\treturn this.nativeElement ? this.nativeElement.headerTemplate : undefined;\n\t}\n\tset headerTemplate(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.headerTemplate = value : undefined;\n\t}\n\n\t/** @description Specifies whether the dateMarkers are displayed on the interface. When set to true, the date markers will be visible; when set to false, they will be hidden. */\n\t@Input()\n\tget hideDateMarkers(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.hideDateMarkers : undefined;\n\t}\n\tset hideDateMarkers(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.hideDateMarkers = value : undefined;\n\t}\n\n\t/** @description By default, the Timeline component displays a three-level header structure: the top section shows primary timeline details, the middle section displays secondary details, and the bottom section contains the main timeline header. This property allows you to hide the header container, which refers specifically to the bottom section of the header. */\n\t@Input()\n\tget hideTimelineHeader(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.hideTimelineHeader : undefined;\n\t}\n\tset hideTimelineHeader(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.hideTimelineHeader = value : undefined;\n\t}\n\n\t/** @description By default, the Timeline component displays a three-level header structure: the main timeline details (topmost header), secondary timeline details (middle header), and the primary timeline header (bottom header). This property allows you to hide the topmost container, which holds the main timeline details, effectively removing the first (outermost) header section from the Timeline display. */\n\t@Input()\n\tget hideTimelineHeaderDetails(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.hideTimelineHeaderDetails : undefined;\n\t}\n\tset hideTimelineHeaderDetails(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.hideTimelineHeaderDetails = value : undefined;\n\t}\n\n\t/** @description By default, the Timeline component displays a three-level header structure: the main timeline header, a secondary header with additional details, and a primary details section. This property specifically controls the visibility of the second (middle) header, which contains supplementary timeline details. When enabled, the secondary details container will be hidden, resulting in a simplified two-level header layout. */\n\t@Input()\n\tget hideTimelineSecondHeaderDetails(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.hideTimelineSecondHeaderDetails : undefined;\n\t}\n\tset hideTimelineSecondHeaderDetails(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.hideTimelineSecondHeaderDetails = value : undefined;\n\t}\n\n\t/** @description Controls the visibility of the Resource panel in the GanttChart component. By default, the Resource panel is displayed automatically when resources are added to the GanttChart. Enabling this property will permanently hide the Resource panel, regardless of whether resources are present or not. This allows developers to prevent the Resource panel from appearing under any circumstances. */\n\t@Input()\n\tget hideResourcePanel(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.hideResourcePanel : undefined;\n\t}\n\tset hideResourcePanel(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.hideResourcePanel = value : undefined;\n\t}\n\n\t/** @description Specifies whether the horizontal scrollbar is visible, allowing users to scroll content horizontally when it exceeds the container’s width. */\n\t@Input()\n\tget horizontalScrollBarVisibility(): HorizontalScrollBarVisibility | string {\n\t\treturn this.nativeElement ? this.nativeElement.horizontalScrollBarVisibility : undefined;\n\t}\n\tset horizontalScrollBarVisibility(value: HorizontalScrollBarVisibility | string) {\n\t\tthis.nativeElement ? this.nativeElement.horizontalScrollBarVisibility = value : undefined;\n\t}\n\n\t/** @description Specifies the display format for dates shown as hours within the timeline header, controlling how hour values (e.g., \"14:00\", \"2 PM\", \"14h\") are presented to users. This setting ensures that the hour labels in the timeline header are formatted consistently according to your application's requirements. */\n\t@Input()\n\tget hourFormat(): HourFormat | string {\n\t\treturn this.nativeElement ? this.nativeElement.hourFormat : undefined;\n\t}\n\tset hourFormat(value: HourFormat | string) {\n\t\tthis.nativeElement ? this.nativeElement.hourFormat = value : undefined;\n\t}\n\n\t/** @description When this option is enabled, reaching the end of the horizontal timeline through scrolling will dynamically generate additional timeline cells, effectively extending the visible time range. The exact number of new cells added each time the scrollbar reaches the end is specified by the infiniteTimelineStep setting. This allows for an \"infinite scrolling\" experience, where more timeline segments are loaded as the user scrolls horizontally. */\n\t@Input()\n\tget infiniteTimeline(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.infiniteTimeline : undefined;\n\t}\n\tset infiniteTimeline(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.infiniteTimeline = value : undefined;\n\t}\n\n\t/** @description Specifies how many new cells should be dynamically loaded and added to the Timeline when the user scrolls horizontally to the end, provided that infiniteTimeline is enabled. This controls the batch size of additional timeline cells appended each time the end of the scrollable area is reached. */\n\t@Input()\n\tget infiniteTimelineStep(): number {\n\t\treturn this.nativeElement ? this.nativeElement.infiniteTimelineStep : undefined;\n\t}\n\tset infiniteTimelineStep(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.infiniteTimelineStep = value : undefined;\n\t}\n\n\t/** @description When enabled, this setting displays the Timeline component on the left side of the interface and the Task Tree on the right side. By default, the layout is reversed: the Task Tree appears on the left and the Timeline on the right. */\n\t@Input()\n\tget inverted(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.inverted : undefined;\n\t}\n\tset inverted(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.inverted = value : undefined;\n\t}\n\n\t/** @description Controls whether users can navigate within the Table using the keyboard. When enabled, keyboard navigation applies to both the Task and Resource Tables, allowing users to move between table items using the keyboard.For the Task Table, the following keyboard shortcuts are available when a task is focused:  Enter – Opens the Window editor, allowing you to edit the currently focused task.  Delete – Opens a confirmation dialog to confirm the deletion of the currently focused task.Enabling this option improves accessibility and streamlines user interactions for both Task and Resource management within the Table. */\n\t@Input()\n\tget keyboardNavigation(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.keyboardNavigation : undefined;\n\t}\n\tset keyboardNavigation(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.keyboardNavigation = value : undefined;\n\t}\n\n\t/** @description Sets or retrieves the unlockKey, a unique value required to unlock and access the full features of the product. Use this property to assign an unlock key for activation or to obtain the currently set unlock key. */\n\t@Input()\n\tget unlockKey(): string {\n\t\treturn this.nativeElement ? this.nativeElement.unlockKey : undefined;\n\t}\n\tset unlockKey(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.unlockKey = value : undefined;\n\t}\n\n\t/** @description Specifies the language used for the GanttChart interface, including labels, tooltips, and other user-facing text elements. */\n\t@Input()\n\tget locale(): string {\n\t\treturn this.nativeElement ? this.nativeElement.locale : undefined;\n\t}\n\tset locale(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.locale = value : undefined;\n\t}\n\n\t/** @description Determines the latest allowable date that can be displayed or selected on the Timeline, effectively setting the upper limit for date values within the component. */\n\t@Input()\n\tget max(): string | Date {\n\t\treturn this.nativeElement ? this.nativeElement.max : undefined;\n\t}\n\tset max(value: string | Date) {\n\t\tthis.nativeElement ? this.nativeElement.max = value : undefined;\n\t}\n\n\t/** @description Specifies the earliest allowable date that can be selected or displayed on the Timeline, effectively setting the lower date limit. */\n\t@Input()\n\tget min(): string | Date {\n\t\treturn this.nativeElement ? this.nativeElement.min : undefined;\n\t}\n\tset min(value: string | Date) {\n\t\tthis.nativeElement ? this.nativeElement.min = value : undefined;\n\t}\n\n\t/** @description Defines or retrieves an object containing customizable strings used within the widget's interface for localization purposes. This object allows developers to provide translated or adapted text for various UI elements, ensuring the widget can support multiple languages and regions. It is typically used in combination with the locale property to display content in the desired language. */\n\t@Input()\n\tget messages(): any {\n\t\treturn this.nativeElement ? this.nativeElement.messages : undefined;\n\t}\n\tset messages(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.messages = value : undefined;\n\t}\n\n\t/** @description Specifies the date format used for displaying months in the timeline header. This setting defines how month values appear, such as \"Jan 2024\" or \"01/2024\", ensuring consistent and customizable presentation of months within the timeline. */\n\t@Input()\n\tget monthFormat(): MonthFormat | string {\n\t\treturn this.nativeElement ? this.nativeElement.monthFormat : undefined;\n\t}\n\tset monthFormat(value: MonthFormat | string) {\n\t\tthis.nativeElement ? this.nativeElement.monthFormat = value : undefined;\n\t}\n\n\t/** @description Specifies the time interval granularity displayed in the Month view, such as whether events are shown by week, day, or custom periods. This setting adjusts how dates and events are grouped and visualized within the Month view of the calendar. */\n\t@Input()\n\tget monthScale(): MonthScale | string {\n\t\treturn this.nativeElement ? this.nativeElement.monthScale : undefined;\n\t}\n\tset monthScale(value: MonthScale | string) {\n\t\tthis.nativeElement ? this.nativeElement.monthScale = value : undefined;\n\t}\n\n\t/** @description Specifies which days of the week, represented by integers from 0 to 6 (where 0 indicates the first day of the week and 6 indicates the last), are considered nonworking days. These selected nonworking days are visually highlighted with colored cells within the timeline display. By default, nonworking days do not influence the task end dates (dateEnd). However, if the adjustToNonworkingTime property is enabled, task scheduling will automatically adjust to account for nonworking days when calculating end dates. */\n\t@Input()\n\tget nonworkingDays(): number[] {\n\t\treturn this.nativeElement ? this.nativeElement.nonworkingDays : undefined;\n\t}\n\tset nonworkingDays(value: number[]) {\n\t\tthis.nativeElement ? this.nativeElement.nonworkingDays = value : undefined;\n\t}\n\n\t/** @description Specifies which hours of the day are considered nonworking. The nonworking hours are defined using an array that can contain individual hour numbers (e.g., [1, 2, 3] represents 1 AM, 2 AM, and 3 AM as nonworking hours) and/or nested arrays to indicate continuous ranges (e.g., [[0, 6]] represents all hours from 12:00 AM to 6:00 AM inclusive as nonworking hours).In the timeline view, cells corresponding to nonworking hours are visually distinguished (typically with a different color), helping users easily identify unavailable time slots. By default, these nonworking hours do not influence the calculation of a task’s end date (dateEnd). However, if the adjustToNonworkingTime property is enabled, the scheduler will automatically adjust tasks to skip or extend around nonworking hours. */\n\t@Input()\n\tget nonworkingHours(): number[] | number[][] {\n\t\treturn this.nativeElement ? this.nativeElement.nonworkingHours : undefined;\n\t}\n\tset nonworkingHours(value: number[] | number[][]) {\n\t\tthis.nativeElement ? this.nativeElement.nonworkingHours = value : undefined;\n\t}\n\n\t/** @description This function enables complete customization of the task element within your interface. It accepts five arguments, providing granular control over both the task and its visual representation:1. 'task' – The full task object containing all associated data.2. 'segment' – The current segment object for the task. If the task consists of a single segment, this argument will be the same as the task object.3. 'taskElement' – The root HTML element representing the task in the DOM.4. 'segmentElement' – The HTML element representing the current segment of the task.5. 'labelElement' – The HTML element that displays the segment’s label.You can use these arguments to modify the appearance, content, and behavior of the task and its segments, allowing for advanced UI customizations tailored to different application needs. */\n\t@Input()\n\tget onTaskRender(): any {\n\t\treturn this.nativeElement ? this.nativeElement.onTaskRender : undefined;\n\t}\n\tset onTaskRender(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.onTaskRender = value : undefined;\n\t}\n\n\t/** @description A function that allows you to fully customize the appearance and behavior of each task element. This function receives two parameters:    task: The JavaScript object representing the task's data and properties.  taskElement: The HTML element corresponding to the task, which you can manipulate or modify as needed.Use this function to add custom styles, event listeners, or additional content to each task element based on its data. */\n\t@Input()\n\tget taskFormatFunction(): any {\n\t\treturn this.nativeElement ? this.nativeElement.taskFormatFunction : undefined;\n\t}\n\tset taskFormatFunction(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.taskFormatFunction = value : undefined;\n\t}\n\n\t/** @description A function that enables full customization of the tooltip's appearance and behavior. This function accepts three arguments:- tooltipObject: The tooltip instance, containing all relevant data and methods for manipulating the tooltip.- event: The event object that triggered the tooltip display, useful for accessing event-specific information (e.g., cursor position).- content: The DOM element representing the tooltip’s label, which can be modified to display custom HTML, styles, or dynamic content. */\n\t@Input()\n\tget tooltipFormatFunction(): any {\n\t\treturn this.nativeElement ? this.nativeElement.tooltipFormatFunction : undefined;\n\t}\n\tset tooltipFormatFunction(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.tooltipFormatFunction = value : undefined;\n\t}\n\n\t/** @description A function that allows complete customization of the popup window used for task interactions by modifying its properties before it is displayed. The function receives three arguments:      target — The popup window instance that is about to be opened. You can use this parameter to modify visual aspects (such as size, title, buttons, and content) or add custom behavior.        type — Specifies the purpose of the popup window. Possible values are:          'task': For editing or viewing a task.      'confirm': For displaying a confirmation prompt.      'connection': For actions related to connections between tasks (e.g., deleting a link).            item — The data object associated with the popup window. This will be the current task (for 'task' and 'confirm' types) or the specific connection object (for the 'connection' type).  Use this function to dynamically personalize the popup window’s content, appearance, or logic based on the context of the action being performed. */\n\t@Input()\n\tget popupWindowCustomizationFunction(): any {\n\t\treturn this.nativeElement ? this.nativeElement.popupWindowCustomizationFunction : undefined;\n\t}\n\tset popupWindowCustomizationFunction(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.popupWindowCustomizationFunction = value : undefined;\n\t}\n\n\t/** @description Specifies which tab sections are displayed within the popup window. This property accepts the following three values:      general – Displays the General tab, which shows the main properties of the task as defined by the taskColumns property.        dependency – Displays the Dependency tab, where users can view, add, or remove connections (dependencies) related to the current task.        segments – Displays the Segments tab, where users can view, create, or delete segments that make up the task.  Use these values to control which tabs are visible to users in the popup window interface. Multiple values can be specified to show more than one tab. */\n\t@Input()\n\tget popupWindowTabs(): string[] {\n\t\treturn this.nativeElement ? this.nativeElement.popupWindowTabs : undefined;\n\t}\n\tset popupWindowTabs(value: string[]) {\n\t\tthis.nativeElement ? this.nativeElement.popupWindowTabs = value : undefined;\n\t}\n\n\t/** @description This property accepts a formatting function for the progress label displayed on the Timeline task. The function should return a string representing the desired label text. By default, the progress label is hidden; it can be made visible by setting the showProgressLabel property to true. */\n\t@Input()\n\tget progressLabelFormatFunction(): any {\n\t\treturn this.nativeElement ? this.nativeElement.progressLabelFormatFunction : undefined;\n\t}\n\tset progressLabelFormatFunction(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.progressLabelFormatFunction = value : undefined;\n\t}\n\n\t/** @description Specifies the date format used to display quarter representations (e.g., \"Q1 2024\") in the timeline header. This setting controls how quarter periods are labeled, ensuring consistency and clarity in the timeline’s visual presentation. */\n\t@Input()\n\tget quarterFormat(): QuarterFormat | string {\n\t\treturn this.nativeElement ? this.nativeElement.quarterFormat : undefined;\n\t}\n\tset quarterFormat(value: QuarterFormat | string) {\n\t\tthis.nativeElement ? this.nativeElement.quarterFormat = value : undefined;\n\t}\n\n\t/** @description Returns an array containing a flat list of all resource objects found within the element, including those nested at any level. This getter traverses the element's hierarchy and aggregates all resources into a single, non-nested array for simplified access. */\n\t@Input()\n\tget resources(): GanttChartResource[] {\n\t\treturn this.nativeElement ? this.nativeElement.resources : undefined;\n\t}\n\tset resources(value: GanttChartResource[]) {\n\t\tthis.nativeElement ? this.nativeElement.resources = value : undefined;\n\t}\n\n\t/** @description Determines which columns are displayed in the Resource Tree.  Each entry in this property should be an Object containing the following keys:- label: Specifies the column header text as it will appear in the Task Tree.- value: Defines the property or content to be displayed in the cells of that column.By default, a single column displays all resource labels. You can configure additional columns by adding objects with custom label and value pairs.Additional configurable properties for each column object include:  formatFunction: A callback function that allows customization of the cell content for the column. This function receives two arguments: the label text (as a string) and the index of the resource. It should return a string, which will be used as the displayed cell content.  min: Sets the minimum width (in pixels or another supported unit) for the column.  max: Sets the maximum width for the column.  size: Specifies the fixed width for the column.Use this configuration to tailor which resource attributes appear as columns in the Resource Tree and how they are displayed. */\n\t@Input()\n\tget resourceColumns(): GanttChartResourceColumn[] {\n\t\treturn this.nativeElement ? this.nativeElement.resourceColumns : undefined;\n\t}\n\tset resourceColumns(value: GanttChartResourceColumn[]) {\n\t\tthis.nativeElement ? this.nativeElement.resourceColumns = value : undefined;\n\t}\n\n\t/** @description Specifies whether the Resource Table supports filtering functionality, allowing users to narrow down and display specific data based on filter criteria. If set to true, filters can be applied to the Resource Table; if false, filtering options will be disabled. */\n\t@Input()\n\tget resourceFiltering(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.resourceFiltering : undefined;\n\t}\n\tset resourceFiltering(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.resourceFiltering = value : undefined;\n\t}\n\n\t/** @description A format function that enables you to customize the display of group row labels when the groupByResources option is enabled. This function allows for dynamic re-formatting of group headers, so you can control how resource names or other grouping information appear in the UI. */\n\t@Input()\n\tget resourceGroupFormatFunction(): any {\n\t\treturn this.nativeElement ? this.nativeElement.resourceGroupFormatFunction : undefined;\n\t}\n\tset resourceGroupFormatFunction(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.resourceGroupFormatFunction = value : undefined;\n\t}\n\n\t/** @description Enables you to define a custom header for the Resource Panel by specifying the content through one of the following options: an HTMLTemplate element, the ID of an existing template, or a function that returns the desired HTML. This allows for flexible and dynamic header customization to fit your application's needs. */\n\t@Input()\n\tget resourcePanelHeaderTemplate(): any {\n\t\treturn this.nativeElement ? this.nativeElement.resourcePanelHeaderTemplate : undefined;\n\t}\n\tset resourcePanelHeaderTemplate(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.resourcePanelHeaderTemplate = value : undefined;\n\t}\n\n\t/** @description Specifies the minimum allowable size (in pixels) for the Resource Panel, ensuring that users cannot resize the panel below this value. This setting helps maintain usability and proper display of the panel's content. */\n\t@Input()\n\tget resourcePanelMin(): number | string {\n\t\treturn this.nativeElement ? this.nativeElement.resourcePanelMin : undefined;\n\t}\n\tset resourcePanelMin(value: number | string) {\n\t\tthis.nativeElement ? this.nativeElement.resourcePanelMin = value : undefined;\n\t}\n\n\t/** @description Specifies the dimensions (width and/or height) of the Resource Panel, controlling how much space it occupies within the user interface. Adjusting this value directly affects the visible area available for displaying resource-related content. */\n\t@Input()\n\tget resourcePanelSize(): number | string {\n\t\treturn this.nativeElement ? this.nativeElement.resourcePanelSize : undefined;\n\t}\n\tset resourcePanelSize(value: number | string) {\n\t\tthis.nativeElement ? this.nativeElement.resourcePanelSize = value : undefined;\n\t}\n\n\t/** @description Controls how frequently the Resource Panel updates when a task is dragged, resized, or its progress is changed on the Timeline. By setting this property, you can customize the interval (in milliseconds) between automatic refreshes of the resource Tree and Timeline during these interactions. By default, the Resource Panel refreshes instantly after each change, but adjusting this value can help optimize performance for complex project schedules or large datasets. */\n\t@Input()\n\tget resourcePanelRefreshRate(): number {\n\t\treturn this.nativeElement ? this.nativeElement.resourcePanelRefreshRate : undefined;\n\t}\n\tset resourcePanelRefreshRate(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.resourcePanelRefreshRate = value : undefined;\n\t}\n\n\t/** @description A callback function that allows you to fully control and customize the content displayed in the cells of the resource timeline. The callback receives three parameters:  taskIndexes – An array containing the indexes of the tasks assigned to the current resource in this cell.  resourceIndex – The index representing the current resource row.  cellDate – A Date object or date string representing the current cell’s date.This property is specifically used when the resourceTimelineView is set to custom. The expected return value depends on the value of resourceTimelineMode:  diagram – Return a string that will be rendered as the cell’s content.  histogram – Return an object with the following properties:          capacity: The current value to be visualized for the cell.      maxCapacity: The maximum value for the histogram, used to determine the cell visualization’s scale.        custom – (Optional) You may return any custom content for the timeline cell, giving you full flexibility to represent resources however you wish.Use this callback to tailor the timeline’s resource cell display—such as showing aggregated values, custom HTML, or visualizations—according to your application’s requirements. */\n\t@Input()\n\tget resourceTimelineFormatFunction(): any {\n\t\treturn this.nativeElement ? this.nativeElement.resourceTimelineFormatFunction : undefined;\n\t}\n\tset resourceTimelineFormatFunction(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.resourceTimelineFormatFunction = value : undefined;\n\t}\n\n\t/** @description Specifies the method used to display the resource's capacity within the resource timeline. By default, the capacity is shown in hours, but this may vary depending on the value of the element’s view property. This setting controls how capacity data is visually represented for each resource, ensuring that users see capacity information in a format appropriate to the current timeline view (such as hours, days, or custom intervals). */\n\t@Input()\n\tget resourceTimelineMode(): GanttChartResourceTimelineMode | string {\n\t\treturn this.nativeElement ? this.nativeElement.resourceTimelineMode : undefined;\n\t}\n\tset resourceTimelineMode(value: GanttChartResourceTimelineMode | string) {\n\t\tthis.nativeElement ? this.nativeElement.resourceTimelineMode = value : undefined;\n\t}\n\n\t/** @description Specifies the layout and presentation of resources within the resource Timeline, controlling how individual resources are visually arranged, organized, and grouped for optimal clarity and user experience. */\n\t@Input()\n\tget resourceTimelineView(): GanttChartResourceTimelineView | string {\n\t\treturn this.nativeElement ? this.nativeElement.resourceTimelineView : undefined;\n\t}\n\tset resourceTimelineView(value: GanttChartResourceTimelineView | string) {\n\t\tthis.nativeElement ? this.nativeElement.resourceTimelineView = value : undefined;\n\t}\n\n\t/** @description Determines whether paging functionality is enabled. When set to true, data is divided into discrete pages for easier navigation and viewing; when false, all data is displayed in a single, continuous view. You can use this property to enable or disable paging, or retrieve its current state. */\n\t@Input()\n\tget paging(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.paging : undefined;\n\t}\n\tset paging(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.paging = value : undefined;\n\t}\n\n\t/** @description Gets or sets a value that determines whether the element’s alignment supports right-to-left (RTL) languages, such as Arabic or Hebrew. When enabled, the element’s content and layout are adjusted to display text and UI elements in a right-to-left orientation, ensuring proper localization for RTL locales. */\n\t@Input()\n\tget rightToLeft(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.rightToLeft : undefined;\n\t}\n\tset rightToLeft(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.rightToLeft = value : undefined;\n\t}\n\n\t/** @description \"Allows you to specify which tasks are selected by providing their unique task IDs, or retrieve the IDs of the currently selected tasks. If a task does not already have an ID, the system automatically generates an internal ID for it based on its position in the task hierarchy (using its index or tree path).\" */\n\t@Input()\n\tget selectedTaskIds(): number[] | string[] {\n\t\treturn this.nativeElement ? this.nativeElement.selectedTaskIds : undefined;\n\t}\n\tset selectedTaskIds(value: number[] | string[]) {\n\t\tthis.nativeElement ? this.nativeElement.selectedTaskIds = value : undefined;\n\t}\n\n\t/** @description Sets which resources to select by their id or gets the currently selected resource ids. If no id is provided for the resource, an internal id is generated for each resource according to it's index(tree path).\"---'Improved Version:'Specifies which resources should be selected by providing their unique IDs, or retrieves the list of currently selected resource IDs. If a resource does not have a user-defined ID, the system automatically generates an internal ID for each resource based on its position within the resource hierarchy (tree path or index). This ensures that every resource can be uniquely identified, even if explicit IDs are not assigned. */\n\t@Input()\n\tget selectedResourceIds(): number[] | string[] {\n\t\treturn this.nativeElement ? this.nativeElement.selectedResourceIds : undefined;\n\t}\n\tset selectedResourceIds(value: number[] | string[]) {\n\t\tthis.nativeElement ? this.nativeElement.selectedResourceIds = value : undefined;\n\t}\n\n\t/** @description Defines or retrieves the selection mode for the component. This property is relevant only when the selection feature is enabled. It determines how users can select items (e.g., single, multiple), and has no effect if selection is disabled. */\n\t@Input()\n\tget selectionMode(): GanttChartSelectionMode | string {\n\t\treturn this.nativeElement ? this.nativeElement.selectionMode : undefined;\n\t}\n\tset selectionMode(value: GanttChartSelectionMode | string) {\n\t\tthis.nativeElement ? this.nativeElement.selectionMode = value : undefined;\n\t}\n\n\t/** @description Controls whether the current time shader is active. When enabled, all cells corresponding to past time periods will be visually shaded to distinguish them from present and future time slots. Disabling this option will display all cells without any time-based shading. */\n\t@Input()\n\tget shadeUntilCurrentTime(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.shadeUntilCurrentTime : undefined;\n\t}\n\tset shadeUntilCurrentTime(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.shadeUntilCurrentTime = value : undefined;\n\t}\n\n\t/** @description Displays the selection column in the Task or Resource Table. When enabled, a checkbox column appears, allowing users to select individual tasks or resources directly from the table. This feature facilitates bulk actions or easy identification of selected items. */\n\t@Input()\n\tget showSelectionColumn(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.showSelectionColumn : undefined;\n\t}\n\tset showSelectionColumn(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.showSelectionColumn = value : undefined;\n\t}\n\n\t/** @description Controls the visibility of task baselines in the interface. Baselines represent the original planned schedule of tasks and are specified using the 'planned' attribute on each task object within the dataSource property. When this option is enabled, the baselines will be displayed alongside the actual task data for comparison. */\n\t@Input()\n\tget showBaseline(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.showBaseline : undefined;\n\t}\n\tset showBaseline(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.showBaseline = value : undefined;\n\t}\n\n\t/** @description Displays a progress label within the progress bars for each Timeline task, providing a clear visual indication of the current completion percentage directly on the corresponding task's bar. */\n\t@Input()\n\tget showProgressLabel(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.showProgressLabel : undefined;\n\t}\n\tset showProgressLabel(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.showProgressLabel = value : undefined;\n\t}\n\n\t/** @description If enabled, the dateStart and dateEnd values of tasks will be automatically adjusted (coerced) to align with the nearest timeline cell boundary, based on the current timeline view. This setting also affects task positioning during drag-and-drop operations, ensuring that tasks always snap to the closest valid timeline interval when they are moved or resized. */\n\t@Input()\n\tget snapToNearest(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.snapToNearest : undefined;\n\t}\n\tset snapToNearest(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.snapToNearest = value : undefined;\n\t}\n\n\t/** @description Specifies whether the GanttChart allows sorting by a single column, multiple columns, or disallows column sorting entirely. This setting controls the user's ability to organize tasks in the chart by clicking on one or more column headers. */\n\t@Input()\n\tget sortFunction(): { (dataSource: any, sortColumns: string[], directions: string[], defaultCompareFunctions: { (firstRecord: any, secondRecord: any): number }[]): void } {\n\t\treturn this.nativeElement ? this.nativeElement.sortFunction : undefined;\n\t}\n\tset sortFunction(value: { (dataSource: any, sortColumns: string[], directions: string[], defaultCompareFunctions: { (firstRecord: any, secondRecord: any): number }[]): void }) {\n\t\tthis.nativeElement ? this.nativeElement.sortFunction = value : undefined;\n\t}\n\n\t/** @description A getter method that returns a flattened array containing all task objects nested within the element, regardless of their depth or hierarchical structure. This allows easy access to every task in the element as a single-level array. */\n\t@Input()\n\tget sortMode(): GanttChartSortMode | string {\n\t\treturn this.nativeElement ? this.nativeElement.sortMode : undefined;\n\t}\n\tset sortMode(value: GanttChartSortMode | string) {\n\t\tthis.nativeElement ? this.nativeElement.sortMode = value : undefined;\n\t}\n\n\t/** @description 'Description'Defines which columns are displayed in the Task Tree. The value of this property should be an array of objects, each describing a column. Each column object must include the following required keys:- label: Specifies the text that will appear as the column header in the Task Tree.- value: Specifies the key of the task attribute from the dataSource to display as the cell content in that column.By default, one column will be shown with all task labels. Additional columns can be configured using this property.'Optional properties for each column object:'  formatFunction: A function for customizing the display content of each cell in the column. Receives the final label value (string) and returns the desired rendering (string or element).  min: Sets the minimum width of the column (in pixels or CSS units).  max: Sets the maximum width of the column (in pixels or CSS units).  size: Sets the default (actual) width of the column (in pixels or CSS units).  customEditor: A callback for providing a custom editor for the column when editing via a dialog/window. It accepts two arguments:          label: The column label.      value: The current cell value in the column.        The function should return the editor component or element.  setCustomEditorValue: A callback used to programmatically set the value of the custom editor.  getCustomEditorValue: A callback used to programmatically retrieve the value from the custom editor.This configuration enables fine-grained customization of how task attributes are displayed and edited within each column of the Task Tree. */\n\t@Input()\n\tget tasks(): GanttChartTask[] {\n\t\treturn this.nativeElement ? this.nativeElement.tasks : undefined;\n\t}\n\tset tasks(value: GanttChartTask[]) {\n\t\tthis.nativeElement ? this.nativeElement.tasks = value : undefined;\n\t}\n\n\t/** @description Specifies whether users can apply filters to the Task Table, allowing them to view only tasks that meet certain criteria. If enabled, filtering options will be available; if disabled, the Task Table will display all tasks without filtering capabilities. */\n\t@Input()\n\tget taskColumns(): GanttChartTaskColumn[] {\n\t\treturn this.nativeElement ? this.nativeElement.taskColumns : undefined;\n\t}\n\tset taskColumns(value: GanttChartTaskColumn[]) {\n\t\tthis.nativeElement ? this.nativeElement.taskColumns = value : undefined;\n\t}\n\n\t/** @description Specifies the minimum size of the Task Panel when the Resource Panel is visible. This property ensures that the Task Panel does not shrink below the defined size, maintaining usability and layout integrity when both panels are displayed. */\n\t@Input()\n\tget taskFiltering(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.taskFiltering : undefined;\n\t}\n\tset taskFiltering(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.taskFiltering = value : undefined;\n\t}\n\n\t/** @description Specifies the dimensions of the Task Panel when the Resource Panel is displayed. This setting controls how much space the Task Panel occupies, ensuring it remains visible and accessible alongside the Resource Panel. */\n\t@Input()\n\tget taskPanelMin(): string | number {\n\t\treturn this.nativeElement ? this.nativeElement.taskPanelMin : undefined;\n\t}\n\tset taskPanelMin(value: string | number) {\n\t\tthis.nativeElement ? this.nativeElement.taskPanelMin = value : undefined;\n\t}\n\n\t/** @description Specifies the minimum width, in pixels, that the timeline component can be resized or displayed at. This ensures that the timeline will not shrink below the defined width, maintaining usability and proper layout. */\n\t@Input()\n\tget taskPanelSize(): string | number {\n\t\treturn this.nativeElement ? this.nativeElement.taskPanelSize : undefined;\n\t}\n\tset taskPanelSize(value: string | number) {\n\t\tthis.nativeElement ? this.nativeElement.taskPanelSize = value : undefined;\n\t}\n\n\t/** @description Specifies the minimum width (in pixels) that the task table can be resized to, ensuring the table does not become narrower than this value. This helps maintain readability and layout consistency. */\n\t@Input()\n\tget timelineMin(): string | number {\n\t\treturn this.nativeElement ? this.nativeElement.timelineMin : undefined;\n\t}\n\tset timelineMin(value: string | number) {\n\t\tthis.nativeElement ? this.nativeElement.timelineMin = value : undefined;\n\t}\n\n\t/** @description Specifies the width of the task table, controlling how much horizontal space it occupies within its container. Adjust this value to set the overall size of the table and ensure proper display and alignment within your layout. */\n\t@Input()\n\tget treeMin(): string | number {\n\t\treturn this.nativeElement ? this.nativeElement.treeMin : undefined;\n\t}\n\tset treeMin(value: string | number) {\n\t\tthis.nativeElement ? this.nativeElement.treeMin = value : undefined;\n\t}\n\n\t/** @description A custom formatting function for the Timeline header, allowing you to control how each date cell in the header is displayed. The function receives the following arguments:  date (Date): The JavaScript Date object representing the date associated with the current header cell.  type (string): A string indicating the granularity of the header cell, such as 'month', 'week', 'day', etc., specifying what period the cell represents.  isHeaderDetails (boolean): A boolean value specifying whether the cell is part of the detailed header section (typically used for secondary or sub-header rows) or part of the main header row.  value (string): The default formatted label for the cell, as generated by the timeline component, which you may use or modify in your custom output.Use this function to return a custom string (or JSX/HTML element, depending on context) for each header cell, enabling advanced formatting of date headers in the timeline view. */\n\t@Input()\n\tget treeSize(): string | number {\n\t\treturn this.nativeElement ? this.nativeElement.treeSize : undefined;\n\t}\n\tset treeSize(value: string | number) {\n\t\tthis.nativeElement ? this.nativeElement.treeSize = value : undefined;\n\t}\n\n\t/** @description Controls the visibility of tooltips throughout the application. When enabled, informative tooltips will appear for timeline tasks, resources, connections, indicators, and segments, providing users with additional context and details about each element. Disabling this option will hide all tooltips in these areas. */\n\t@Input()\n\tget timelineHeaderFormatFunction(): any {\n\t\treturn this.nativeElement ? this.nativeElement.timelineHeaderFormatFunction : undefined;\n\t}\n\tset timelineHeaderFormatFunction(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.timelineHeaderFormatFunction = value : undefined;\n\t}\n\n\t/** @description Specifies whether the vertical scrollbar is displayed, allowing the user to scroll content vertically when necessary. */\n\t@Input()\n\tget tooltip(): GanttChartTooltip {\n\t\treturn this.nativeElement ? this.nativeElement.tooltip : undefined;\n\t}\n\tset tooltip(value: GanttChartTooltip) {\n\t\tthis.nativeElement ? this.nativeElement.tooltip = value : undefined;\n\t}\n\n\t/** @description Specifies the date range displayed on the timeline. Accepted values include:day: The timeline displays all hours within a single day, allowing for detailed, intraday scheduling and review.week: The timeline presents each day within a single week, providing a broader weekly overview.month: The timeline shows individual days across an entire month, making it easy to view and manage monthly schedules.year: The timeline displays each month of the year, providing a high-level annual perspective.resource: The timeline groups and displays current tasks by the resources assigned to them. Tasks without an assigned resource are grouped under a special \"Unassigned\" category for easy identification.The timeline features a header section that labels each cell according to its corresponding date or resource. This header is divided into two tiers (for example, months and days, or days and hours) to provide both summary and detailed information, enhancing clarity and context for users navigating the timeline. */\n\t@Input()\n\tget verticalScrollBarVisibility(): VerticalScrollBarVisibility | string {\n\t\treturn this.nativeElement ? this.nativeElement.verticalScrollBarVisibility : undefined;\n\t}\n\tset verticalScrollBarVisibility(value: VerticalScrollBarVisibility | string) {\n\t\tthis.nativeElement ? this.nativeElement.verticalScrollBarVisibility = value : undefined;\n\t}\n\n\t/** @description Specifies the display format for dates in the timeline header when they represent years. This setting controls how years are presented (e.g., \"2024\", \"’24\", or \"Year 2024\") to ensure consistency and clarity in the timeline header’s date representation. */\n\t@Input()\n\tget view(): GanttChartView | string {\n\t\treturn this.nativeElement ? this.nativeElement.view : undefined;\n\t}\n\tset view(value: GanttChartView | string) {\n\t\tthis.nativeElement ? this.nativeElement.view = value : undefined;\n\t}\n\n\t/** @description Specifies the display format for dates in the timeline header when the timeline view is set to show weeks. This setting controls how each week's date range or label appears, allowing customization of the week header’s date representation. */\n\t@Input()\n\tget yearFormat(): YearFormat | string {\n\t\treturn this.nativeElement ? this.nativeElement.yearFormat : undefined;\n\t}\n\tset yearFormat(value: YearFormat | string) {\n\t\tthis.nativeElement ? this.nativeElement.yearFormat = value : undefined;\n\t}\n\n\t/** @description Specifies or retrieves the visual theme applied to the element, controlling its overall appearance and styling (such as colors, backgrounds, and typography) according to predefined theme options. */\n\t@Input()\n\tget weekFormat(): WeekFormat | string {\n\t\treturn this.nativeElement ? this.nativeElement.weekFormat : undefined;\n\t}\n\tset weekFormat(value: WeekFormat | string) {\n\t\tthis.nativeElement ? this.nativeElement.weekFormat = value : undefined;\n\t}\n\n\t/** @description Determines whether the element can receive keyboard focus. When set to true, the element becomes focusable and can be navigated to using the Tab key or programmatically via JavaScript. When accessed, returns a boolean indicating the current focusability state of the element. */\n\t@Input()\n\tget theme(): string {\n\t\treturn this.nativeElement ? this.nativeElement.theme : undefined;\n\t}\n\tset theme(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.theme = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget unfocusable(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.unfocusable : undefined;\n\t}\n\tset unfocusable(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.unfocusable = value : undefined;\n\t}\n\n\t/** @description This event is triggered when a batch update operation begins, specifically after the beginUpdate method has been executed. It signals that subsequent changes to the data will be grouped as part of a batch, allowing for improved performance and deferred processing until the update process is completed.\n\t*  @param event. The custom event. \t*/\n\t@Output() onBeginUpdate: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered after the endUpdate method has been executed, indicating that a batch update operation has completed. It signals that any batched changes have been applied, and the system can now perform follow-up actions or refresh the affected components.\n\t*  @param event. The custom event. \t*/\n\t@Output() onEndUpdate: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is fired when the user initiates the process of connecting one task to another—such as starting to draw a link or dependency between two tasks. Within the event handler, you can call event.preventDefault() to cancel the connection operation before it completes. This provides an opportunity to validate conditions, enforce business rules, or restrict certain connections as needed.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\tstartIndex)\n\t*   startIndex - The index of the task that a connection is started from.\n\t*/\n\t@Output() onConnectionStart: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when the user successfully establishes a link or dependency between two distinct tasks, typically by connecting their endpoints within the user interface. It signifies that a relationship (such as a workflow, sequence, or prerequisite) has been created between the selected tasks.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\tid, \tstartTaskId, \tstartIndex, \tendIndex, \tendTaskId, \ttype)\n\t*   id - The id of the connection that was created.\n\t*   startTaskId - The id of the task that a connection is started from.\n\t*   startIndex - The index of the task that a connection is started from.\n\t*   endIndex - The index of the task that a connection ended to.\n\t*   endTaskId - The id of the task that a connection ended to.\n\t*   type - The type of connection. Fours types are available: <ul><li><b>0</b> - start-to-start</li><li><b>1</b> - end-to-start</li><li><b>2</b> - end-to-end</li><li><b>3</b> - start-to-end</li></ul>\n\t*/\n\t@Output() onConnectionEnd: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever a user selects or deselects a Task item. It fires both when a Task becomes selected and when a previously selected Task is unselected, allowing you to respond to changes in Task selection state.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\tvalue, \toldValue)\n\t*   value - The index of the new selected task.\n\t*   oldValue - The index of the previously selected task.\n\t*/\n\t@Output() onChange: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever a column within the Tree component is resized by the user. You can enable or disable column resizing functionality using the columnResize property. When column resizing is enabled, this event allows you to respond to changes in column width, such as updating layout or saving user preferences.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\tdataField, \theaderCellElement, \twidthInPercentages, \twidth)\n\t*   dataField - The name of the column. Corresponds to the <b>value</b> attribute of a <b>taskColumns/resourceColumns</b> object.\n\t*   headerCellElement - The HTMLElement column cell element that was resized.\n\t*   widthInPercentages - The new width of the column in percentages.\n\t*   width - The new width of the column in pixels.\n\t*/\n\t@Output() onColumnResize: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is fired immediately before the task editing window or tooltip is about to close. At this stage, you have the opportunity to intercept and prevent the closing operation by calling event.preventDefault() within your event handler. This allows you to perform validation, display confirmation dialogs, or execute other logic before the window or tooltip is dismissed.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\towner, \titem, \ttarget, \ttype)\n\t*   owner - The HTMLElement that is the owner of the tooltip. This attribute is defined only when the event is related to the tooltip.\n\t*   item - The item object that is related to the tooltip owner. It can be a task/segment/resource/indicator object. This attribute is defined only when the event is related to the tooltip.\n\t*   target - The instance of the window/tooltip that is going to close.\n\t*   type - The type of window/tooltip that is going to close. There are three types of windows inside GanttChart: <ul><li><b>confirm</b> - a confirm window. This type of window is usually used to confirm the deletion of a task.</li><li><b>task</b> - a window used for task editing.</li><li><b>connection</b> - a window used to delete a connection.</li></ul>. If the event is a tooltip event, there are several tooltip types: <ul><li>indicator - when the tooltip owner is an indicator.</li><li>segment - when the tooltip owner is a task segment.</li><li>task - when the tooltip owner is a task.</li><li>resource - when the tooltip target is a resource.</li></ul>\n\t*/\n\t@Output() onClosing: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when the task editing window is closed or hidden by the user. It indicates that the user has exited the task editing interface, either by saving changes, cancelling, or clicking outside the window. This event can be used to perform cleanup actions, update the UI, or save edits as necessary.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\towner, \titem, \ttarget, \ttype)\n\t*   owner - The HTMLElement that is the owner of the tooltip. This attribute is defined only when the event is related to the tooltip\n\t*   item - The item object that is related to the tooltip owner. It can be a task/segment/resource/indicator object. This attribute is defined only when the event is related to the tooltip.\n\t*   target - The instance of the window/tooltip that is closed.\n\t*   type - The type of window/tooltip that is closed. There are three types of windows inside GanttChart: <ul><li><b>confirm</b> - a confirm window. This type of window is usually used to confirm the deletion of a task.</li><li><b>task</b> - a window used for task editing.</li><li><b>connection</b> - a window used to delete a connection.</li></ul>. If the event is a tooltip event, there are several tooltip types: <ul><li>indicator - when the tooltip owner is an indicator.</li><li>segment - when the tooltip owner is a task segment.</li><li>task - when the tooltip owner is a task.</li><li>resource - when the tooltip target is a resource.</li></ul>\n\t*/\n\t@Output() onClose: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever a user collapses an item, such as hiding or minimizing a section, panel, or list element within the interface. It enables developers to execute custom logic or UI updates in response to the item's transition from an expanded (visible) state to a collapsed (hidden or minimized) state.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\tisGroup, \titem, \tindex, \tlabel, \tvalue)\n\t*   isGroup - A boolean flag indicating whether the collapsed item is a resource group. This is the case when <b>groupByResoruces</b> is enabled.\n\t*   item - The object details of the collapsed item.\n\t*   index - The index of the collapsed item.\n\t*   label - The label of the collapsed item.\n\t*   value - The value of the collapsed item.\n\t*/\n\t@Output() onCollapse: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when a user begins dragging a task element. In the event handler function, you can call event.preventDefault() to cancel or prevent the drag operation from proceeding. This allows you to implement custom logic to determine whether dragging should be allowed for a specific task, based on application requirements.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\tid, \titem, \tdateStart, \tdateEnd, \tsegment)\n\t*   id - The id of the task that is going to be dragged.\n\t*   item - The object of the task that is going to be dragged.\n\t*   dateStart - The start date of the task that is going to be dragged.\n\t*   dateEnd - The end date of the task that is going to be dragged.\n\t*   segment - The segment object that is going to be dragged. This attribute is undefined if a segment is not going to be dragged.\n\t*/\n\t@Output() onDragStart: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when the user completes dragging a task and releases it, indicating the end of the drag-and-drop operation for that specific task. It can be used to perform actions such as updating the task's position, saving changes, or triggering related callbacks after the drag action concludes.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\tid, \titem, \tdateStart, \tdateEnd, \tsegment)\n\t*   id - The id of the task that is was dragged.\n\t*   item - The object of the task that is was dragged.\n\t*   dateStart - The start date of the task that is was dragged.\n\t*   dateEnd - The end date of the task that is was dragged.\n\t*   segment - The segment object that was dragged. This attribute is undefined if a segment has not been dragged.\n\t*/\n\t@Output() onDragEnd: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when a user expands an item, such as clicking to reveal additional content or details. It can be used to execute custom logic in response to the item's expansion, such as loading more data, updating the user interface, or tracking user interactions.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\tisGroup, \titem, \tindex, \tlabel, \tvalue)\n\t*   isGroup - A boolean flag indicating whether the collapsed item is a resource group. This is the case when <b>groupByResoruces</b> is enabled.\n\t*   item - The index of the expanded item.\n\t*   index - The index of the expanded item.\n\t*   label - The label of the expanded item.\n\t*   value - The value of the expanded item.\n\t*/\n\t@Output() onExpand: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever a filter is applied to the GanttChart, such as when the user sets specific criteria to display only certain tasks or time periods. It allows developers to execute custom logic in response to filtering actions, such as updating related UI components or fetching additional data based on the current filter state.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\ttype, \taction, \tfilters)\n\t*   type - The type of items that have been filtered ( task or resource ).\n\t*   action - The name of the filtering action (whether filtering is added or removed).\n\t*   filters - The filters that have been applied. Filters represent JQX.Utilities.FilterGroup objects.\n\t*/\n\t@Output() onFilter: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever a user clicks on a task, resource, or connection within either the Timeline area or the Tree columns of the interface. It enables developers to handle user interactions with these elements, allowing for custom behaviors or actions in response to the selection.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\tid, \titem, \ttype, \toriginalEvent)\n\t*   id - The id of the task.\n\t*   item - The item that was clicked. It can be a task, resource or connection.\n\t*   type - The type of item. Possible values are: 'task', 'project', 'resource', 'connection'.\n\t*   originalEvent - The original DOM event.\n\t*/\n\t@Output() onItemClick: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever a user double clicks on a task, resource, or connection within either the Timeline area or the Tree columns of the interface. It enables developers to handle user interactions with these elements, allowing for custom behaviors or actions in response to the selection.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\tid, \titem, \ttype, \toriginalEvent)\n\t*   id - The id of the task.\n\t*   item - The item that was clicked. It can be a task, resource or connection.\n\t*   type - The type of item. Possible values are: 'task', 'project', 'resource', 'connection'.\n\t*   originalEvent - The original DOM event.\n\t*/\n\t@Output() onItemDoubleClick: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever a new Task, Resource, or Connection is added to the system—such as when a user creates a new task, assigns a new resource, or establishes a new connection between entities. The event allows you to handle actions or updates related to these insertions in real time.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\ttype, \titem)\n\t*   type - The type of item that has been modified. The type could be: 'connection', 'task', 'project', 'resource'.\n\t*   item - An object that represents the actual item with it's attributes.\n\t*/\n\t@Output() onItemInsert: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever a Task, Resource, or Connection is deleted or removed from the system. It allows you to perform actions or update the user interface in response to the removal of these entities. The event provides relevant information about the item that was removed, enabling you to handle cleanup, logging, or other custom behaviors as needed.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\tid, \ttype, \titem)\n\t*   id - The id of the task.\n\t*   type - The type of item that has been modified. The type could be: 'connection', 'task', 'project', 'resource'.\n\t*   item - An object that represents the actual item with it's attributes.\n\t*/\n\t@Output() onItemRemove: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever a Task, Resource, or Connection undergoes an update. This includes changes to properties, status, or associations within any of these entities. Use this event to respond to modifications such as edits, status transitions, or reassignments involving Tasks, Resources, or Connections in the system.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\tid, \ttype, \titem)\n\t*   id - The id of the task.\n\t*   type - The type of item that has been modified. The type could be: 'connection', 'task', 'project', 'resource'.\n\t*   item - An object that represents the actual item with it's attributes.\n\t*/\n\t@Output() onItemUpdate: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is fired immediately before the task editing window or tooltip is about to open. At this stage, you have the opportunity to intercept and potentially cancel the opening operation by calling event.preventDefault() within your event handler. This allows you to implement custom logic to control whether the editing window or tooltip should be displayed.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\towner, \titem, \ttarget, \ttype)\n\t*   owner - The HTMLElement that is the owner of the tooltip. This attribute is defined only when the event is related to the tooltip\n\t*   item - The item object that is related to the tooltip owner. It can be a task/segment/resource/indicator object. This attribute is defined only when the event is related to the tooltip.\n\t*   target - The instance of the window/tooltip that is going to open.\n\t*   type - The type of window/tooltip that is going to open. There are three types of windows inside GanttChart: <ul><li><b>confirm</b> - a confirm window. This type of window is usually used to confirm the deletion of a task.</li><li><b>task</b> - a window used for task editing.</li><li><b>connection</b> - a window used to delete a connection.</li></ul>. If the event is a tooltip event, there are several tooltip types: <ul><li>indicator - when the tooltip owner is an indicator.</li><li>segment - when the tooltip owner is a task segment.</li><li>task - when the tooltip owner is a task.</li><li>resource - when the tooltip target is a resource.</li></ul>\n\t*/\n\t@Output() onOpening: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever the task editing window becomes visible, such as when a user opens the edit task modal or interface. It is also triggered whenever a tooltip related to task actions is shown. This allows developers to respond to both the display of the task edit view and the appearance of relevant tooltips.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\towner, \titem, \ttarget, \ttype)\n\t*   owner - The HTMLElement that is the owner of the tooltip. This attribute is defined only when the event is related to the tooltip\n\t*   item - The item object that is related to the tooltip owner. It can be a task/segment/resource/indicator object. This attribute is defined only when the event is related to the tooltip.\n\t*   target - The instance of the window/tooltip that is opened.\n\t*   type - The type of window/tooltip that is opened. There are three types of windows inside GanttChart: <ul><li><b>confirm</b> - a confirm window. This type of window is usually used to confirm the deletion of a task.</li><li><b>task</b> - a window used for task editing.</li><li><b>connection</b> - a window used to delete a connection.</li></ul>. If the event is a tooltip event, there are several tooltip types: <ul><li>indicator - when the tooltip owner is an indicator.</li><li>segment - when the tooltip owner is a task segment.</li><li>task - when the tooltip owner is a task.</li><li>resource - when the tooltip target is a resource.</li></ul>\n\t*/\n\t@Output() onOpen: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is fired whenever the progress of a task bar begins to change due to user interaction, such as dragging the progress handle or clicking on the bar. Within the event handler, you can call event.preventDefault() to cancel or prevent the progress update from occurring. This provides an opportunity to validate the operation or implement custom logic before the task bar value is changed.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\tid, \tindex, \tprogress)\n\t*   id - The id of the task.\n\t*   index - The index of the task which progress is going to be changed.\n\t*   progress - The progress of the task before it is changed.\n\t*/\n\t@Output() onProgressChangeStart: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever there is an update to a task's progress value. It occurs each time the task progresses, such as when a user completes a step or when the system automatically tracks advancement. The event provides updated information about the current state of the task’s progress, enabling UI elements or other components to respond accordingly (e.g., updating a progress bar or displaying status messages).\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\tid, \tindex, \tprogress)\n\t*   id - The id of the task.\n\t*   index - The index of the task which progress is has been changed.\n\t*   progress - The progress of the task after it was changed.\n\t*/\n\t@Output() onProgressChangeEnd: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when the user begins resizing a task, such as changing its duration or endpoints. Within the event handler function, you can prevent the resizing operation from proceeding by calling event.preventDefault(). This allows developers to implement custom logic or validation before allowing the resize action to continue.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\tid, \titem, \tdateStart, \tdateEnd, \tsegment)\n\t*   id - The id of the task that is going to be resized.\n\t*   item - The object of the task that is going to be resized.\n\t*   dateStart - The start date of the task that is going to be resized.\n\t*   dateEnd - The end date of the task that is going to be resized.\n\t*   segment - The segment object that is going to be resized. This attribute is undefined if a segment is not going to be resized.\n\t*/\n\t@Output() onResizeStart: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when a user completes resizing a task, indicating that the resize action has ended and the new task size has been set.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\tid, \titem, \tdateStart, \tdateEnd, \tsegment)\n\t*   id - The id of the task that was resized.\n\t*   item - The object of the task that was resized.\n\t*   dateStart - The start date of the task that was resized.\n\t*   dateEnd - The end date of the task that was resized.\n\t*   segment - The segment object that was resized. This attribute is undefined if a segment has not been resized.\n\t*/\n\t@Output() onResizeEnd: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever the user sorts the GanttChart by clicking on a column header. It fires each time the sorting order or the sorted column changes, allowing you to respond to updates in the displayed task order.\n\t*  @param event. The custom event. \tCustom event was created with: event.detail(\ttype, \tcolumns, \tsortDataFields, \tsortOrders, \tsortDataTypes)\n\t*   type - The type of columns that have been sorted ( task or resource column ).\n\t*   columns - An array of objects that contains the currently sorted column objects.\n\t*   sortDataFields - The dataFields of the columns that have been sorted. The dataField corresponds to the <b>value</b> property of a <b>taskColumns/resourceColumns</b> object.\n\t*   sortOrders - The orders of the columns that have been sorted.\n\t*   sortDataTypes - The data types of the columns that have been sorted.\n\t*/\n\t@Output() onSort: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when the user scrolls to the very bottom of the Timeline component, indicating that all currently loaded timeline items have been reached. It can be used to implement features such as infinite scrolling or loading additional content when the end of the timeline is visible.\n\t*  @param event. The custom event. \t*/\n\t@Output() onScrollBottomReached: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when the Timeline component reaches its uppermost scroll position, indicating that the user has scrolled all the way to the top of the Timeline. Use this event to load earlier items, display notifications, or perform other actions when the beginning of the Timeline is reached.\n\t*  @param event. The custom event. \t*/\n\t@Output() onScrollTopReached: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when the user scrolls the Timeline component all the way to the start of its horizontal axis, reaching the earliest (leftmost) visible position. Use this event to detect when the Timeline has reached its starting boundary during horizontal scrolling.\n\t*  @param event. The custom event. \t*/\n\t@Output() onScrollLeftReached: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when the user scrolls to the far right end of the Timeline component horizontally, indicating that no additional content is available in that direction.\n\t*  @param event. The custom event. \t*/\n\t@Output() onScrollRightReached: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description Enables the application of a user-defined filter to a specified column, allowing you to customize how data is displayed or managed within either a task column or a resource column. This feature supports more precise data sorting, searching, or visibility based on your chosen criteria. \n\t* @param {any} columns. An object or an array of objects with the following syntax: <ul><li><b>type</b> - indicates the type of column to filter. Possible values are 'task' or 'resource'.</li><li><b>value</b> - the value of the column that must match the value attribute of a taskColumns/resourceColumns object(e.g. 'label', 'dateStart', etc).</li></ul>.\n\t* @param {any} filterGroup. A JQX.Utilities.FilterGroup object. Here's an example for creating a FilterGroup object: <pre>const filterGroup = new window.JQX.Utilities.FilterGroup(), filterObject = filterGroup.createFilter('string', 'Task B', 'STARTS_WITH_CASE_SENSITIVE'); filterGroup.addFilter('or', filterObject); gantt.addFilter({ type: 'task', value: 'label' }, filterGroup);</pre>\n\t*/\n    public addFilter(columns: any, filterGroup: any): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.addFilter(columns, filterGroup);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.addFilter(columns, filterGroup);\n            });\n        }\n    }\n\n\t/** @description Removes all active filters from the current view, resetting any filter selections and displaying the complete, unfiltered dataset or content. \n\t*/\n    public clearFilters(): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.clearFilters();\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.clearFilters();\n            });\n        }\n    }\n\n\t/** @description Removes any active sorting from the columns, restoring the original or default order of the data. This action resets the column sorting state, so no columns are sorted after this operation. \n\t*/\n    public clearSort(): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.clearSort();\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.clearSort();\n            });\n        }\n    }\n\n\t/** @description Deselects all currently selected items within the GanttChart component, including both Tasks and Resources. Additionally, this action removes any visual highlights or indicators related to task-resource assignments, ensuring that no items remain selected or highlighted in the chart. \n\t*/\n    public clearSelection(): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.clearSelection();\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.clearSelection();\n            });\n        }\n    }\n\n\t/** @description Removes a previously stored state of the element from LocalStorage, based on the element's unique id attribute. Note: The element must have an id specified for this operation to work. \n\t*/\n    public clearState(): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.clearState();\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.clearState();\n            });\n        }\n    }\n\n\t/** @description Deletes all existing tasks from the list, resulting in an empty task collection. This action is irreversible and will permanently remove every task from storage. \n\t*/\n    public clearTasks(): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.clearTasks();\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.clearTasks();\n            });\n        }\n    }\n\n\t/** @description Deletes all resources from the system, ensuring that no data or assets remain. This operation is irreversible and will remove every resource currently managed by the application. \n\t*/\n    public clearResources(): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.clearResources();\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.clearResources();\n            });\n        }\n    }\n\n\t/** @description Establishes a logical link between two tasks, indicating that the completion or status of one task directly influences or triggers the other. This connection can be used to define dependencies, control workflow order, and ensure tasks are executed in the correct sequence. \n\t* @param {number | string} startTaskIndex. The id of the start task or the connection string like '2-3-0'. <b>If the complete connections string is provided as the first argument, the rest of the method arguments are not necessary</b>\n\t* @param {number | string} taskEndIndex?. The id of the end task.\n\t* @param {number} connectionType?. The type of the connection. A numeric value from 0 to 3. The connection type can be: <ul><li><b>0</b> - Start-to-Start connection.</li><li><b>1</b> - End-to-Start connection.</li><li><b>2</b> - End-to-End connection.</li><li><b>3</b> - Start-to-End connection.</li></ul>\n\t* @param {number} lag?. The connection lag in miliseconds. Used by the Auto scheduling algorithm in order allow some slack time slack time before or after the next task begins/ends. Lag is measured in miliseconds. It can be a negative (lead) or a positive (lag) number.\n\t*/\n    public createConnection(startTaskIndex: number | string, taskEndIndex?: number | string, connectionType?: number, lag?: number): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.createConnection(startTaskIndex, taskEndIndex, connectionType, lag);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.createConnection(startTaskIndex, taskEndIndex, connectionType, lag);\n            });\n        }\n    }\n\n\t/** @description Collapses a currently expanded project section, minimizing its content to provide a streamlined view and reduce on-screen clutter. This action hides the project's detailed information while keeping the project accessible for future expansion. \n\t* @param {string | number} id. The id of a project item that should be collapsed.\n\t*/\n    public collapse(id: string | number): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.collapse(id);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.collapse(id);\n            });\n        }\n    }\n\n\t/** @description Initiates an update operation, allowing you to group and apply multiple method calls or set several properties in a single batch. This approach is ideal for making coordinated changes efficiently, minimizing redundant processing or event triggers that could occur if each update were applied individually. \n\t*/\n    public beginUpdate(): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.beginUpdate();\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.beginUpdate();\n            });\n        }\n    }\n\n\t/** @description Concludes the update operation, allowing the GanttChart to resume its rendering process. Invoking this method will trigger a refresh, ensuring that all recent changes are visually reflected on the chart. \n\t*/\n    public endUpdate(): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.endUpdate();\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.endUpdate();\n            });\n        }\n    }\n\n\t/** @description Refreshes the GanttChart display after resizing by recalculating and updating the scrollbars to ensure proper alignment and navigation. \n\t* @param {boolean} fullRefresh?. If set the GanttChart will be re-rendered completely.\n\t*/\n    public refresh(fullRefresh?: boolean): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.refresh(fullRefresh);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.refresh(fullRefresh);\n            });\n        }\n    }\n\n\t/** @description Collapses all rows. \n\t* @returns {any}\n  */\n\tpublic async collapseAllRows(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.collapseAllRows();\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic collapseAllRowsSync(): any {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.collapseAllRows();\n        }\n        return null;\n    }\n\n\t/** @description Ensures that the specified task element is brought into view within the scrollable container by automatically scrolling the page or container if necessary, so the task is fully visible to the user. \n\t* @param {string | number} taskId. The id of the target Task.\n\t*/\n    public ensureVisible(taskId: string | number): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.ensureVisible(taskId);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.ensureVisible(taskId);\n            });\n        }\n    }\n\n\t/** @description Expands a collapsed project to reveal its associated tasks, allowing users to view and interact with all items within the project. \n\t* @param {string | number} id. The id of a project task that should be expanded.\n\t*/\n    public expand(id: string | number): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.expand(id);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.expand(id);\n            });\n        }\n    }\n\n\t/** @description Exports the hierarchical tree data structure associated with the GanttChart, including all tasks, sub-tasks, and their relationships, in a serialized format suitable for data exchange or storage. \n\t* @param {string} dataFormat. Determines the format of the exported file. Three possible values are available: <ul><li><b>pdf</b></li><li><b>xlsx</b></li><li><b>html</b></li><li><b>tsv</b></li><li><b>csv</b></li><li><b>xml</b></li></ul>\n\t* @param {any} callback?. A callback that allows to format the exported data based on a condition. For additional details, refer ro the JQX Export Documentation.\n\t*/\n    public exportData(dataFormat: string, callback?: any): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.exportData(dataFormat, callback);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.exportData(dataFormat, callback);\n            });\n        }\n    }\n\n\t/** @description Expands all rows. \n\t* @returns {any}\n  */\n\tpublic async expandAllRows(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.expandAllRows();\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic expandAllRowsSync(): any {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.expandAllRows();\n        }\n        return null;\n    }\n\n\t/** @description Retrieves a complete list of all current connections. The returned value is an array of objects, where each object represents a single connection and includes comprehensive metadata about that connection. Each connection object contains the following properties:- **id**: A unique identifier for the connection.- **type**: The type or category of the connection (e.g., dependency, sequential, etc.).- **startTaskId**: The unique identifier of the task where the connection originates.- **endTaskId**: The unique identifier of the task where the connection terminates.- **startIndex**: The index position within the start task from which the connection begins (useful for tasks with multiple connection points).- **endIndex**: The index position within the end task where the connection attaches.- **lag**: The lag time, typically in milliseconds or a project-specific unit, representing any delay between the linked tasks.This structure provides all necessary details for understanding the relationship and timing between connected tasks. \n\t* @returns {any}\n  */\n\tpublic async getConnections(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.getConnections();\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic getConnectionsSync(): any {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.getConnections();\n        }\n        return null;\n    }\n\n\t/** @description Returns the details of the specified connection, providing information such as: the starting task (`startTask`), ending task (`endTask`), unique identifiers of the starting and ending tasks (`startTaskId`, `endTaskId`), and the connection type (`type`). For a comprehensive explanation of the available connection types, please refer to the 'connectionEnd' event documentation within this document or the dedicated topic on our website. \n\t* @param {string} connectionId. A connection id. Each connection has a unique id that is assigned when a connection is created.\n\t* @returns {any}\n  */\n\tpublic async getConnectionDetails(connectionId): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.getConnectionDetails(connectionId);\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic getConnectionDetailsSync(connectionId): any {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.getConnectionDetails(connectionId);\n        }\n        return null;\n    }\n\n\t/** @description Provides a comprehensive JSON object containing all tasks within the specified element, including detailed information about each task's attributes, their interconnections (such as dependencies or links), and the full configuration settings associated with each task. This structured representation allows for thorough inspection, processing, or manipulation of the tasks and their relationships. \n\t* @returns {any[]}\n  */\n\tpublic async getState(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.getState();\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic getStateSync(): any[] {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.getState();\n        }\n        return null;\n    }\n\n\t/** @description Returns the tree path of a specified task or resource. The tree path represents the unique location of the task or resource within a hierarchical structure. If the user does not explicitly provide an ID for the task or resource, this tree path will be used as its default unique identifier. \n\t* @param {any} item. A GattChartTask/GanttChartResource item object.\n\t* @returns {string}\n  */\n\tpublic async getItemPath(item): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.getItemPath(item);\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic getItemPathSync(item): string {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.getItemPath(item);\n        }\n        return null;\n    }\n\n\t/** @description Returns the task object that matches the specified id or path. The id/path parameter can be either a unique identifier or a hierarchical location string for the task. The returned object contains detailed information and properties related to the task, such as its status, title, description, due date, and any associated metadata. \n\t* @param {string | number} itemId. The id/path of a task.\n\t* @returns {any}\n  */\n\tpublic async getTask(itemId): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.getTask(itemId);\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic getTaskSync(itemId): any {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.getTask(itemId);\n        }\n        return null;\n    }\n\n\t/** @description Returns an array containing all task objects currently present in the GanttChart. Each task object includes details such as the task ID, name, start date, end date, dependencies, and any additional task-specific properties. \n\t* @returns {any[]}\n  */\n\tpublic async getTasks(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.getTasks();\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic getTasksSync(): any[] {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.getTasks();\n        }\n        return null;\n    }\n\n\t/** @description Returns the zero-based index position of the specified task within a task list. If the task is not found, the method returns -1. \n\t* @param {any} task. A GattChartTask object.\n\t* @returns {number}\n  */\n\tpublic async getTaskIndex(task): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.getTaskIndex(task);\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic getTaskIndexSync(task): number {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.getTaskIndex(task);\n        }\n        return null;\n    }\n\n\t/** @description Returns the definitions of all connections associated with a specific task, including details about each connection's type, configuration, and related parameters. \n\t* @param {any} taskId. A GanttChartTask object or it's id.\n\t* @returns {any}\n  */\n\tpublic async getTaskConnections(taskId): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.getTaskConnections(taskId);\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic getTaskConnectionsSync(taskId): any {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.getTaskConnections(taskId);\n        }\n        return null;\n    }\n\n\t/** @description Returns the associated Project object for a given task. If the task is not linked to any Project, the function returns undefined. \n\t* @param {any} task. A GantChartTask object.\n\t* @returns {any}\n  */\n\tpublic async getTaskProject(task): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.getTaskProject(task);\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic getTaskProjectSync(task): any {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.getTaskProject(task);\n        }\n        return null;\n    }\n\n\t/** @description Returns the resource object that matches the specified ID or path parameter. This object contains all relevant properties and data associated with the requested resource. If no resource is found with the provided ID or path, the method returns null or an error, depending on implementation. \n\t* @param {string | number} itemId. The id/path of a resource.\n\t* @returns {any}\n  */\n\tpublic async getResource(itemId): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.getResource(itemId);\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic getResourceSync(itemId): any {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.getResource(itemId);\n        }\n        return null;\n    }\n\n\t/** @description Returns an array containing all resource objects associated with the GanttChart. Each resource object includes detailed information about a specific resource, such as its unique identifier, name, and any additional properties defined for resources within the GanttChart. This allows developers to access and manipulate the full set of resources currently present in the chart. \n\t* @returns {any[]}\n  */\n\tpublic async getResources(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.getResources();\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic getResourcesSync(): any[] {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.getResources();\n        }\n        return null;\n    }\n\n\t/** @description Returns the zero-based index position of the specified resource within a collection or array. If the resource is not found, the function typically returns -1. \n\t* @param {any} resource. A GanttChartResource object.\n\t* @returns {number}\n  */\n\tpublic async getResourceIndex(resource): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.getResourceIndex(resource);\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic getResourceIndexSync(resource): number {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.getResourceIndex(resource);\n        }\n        return null;\n    }\n\n\t/** @description Returns a list of tasks that have been assigned to the specified resource, including all relevant details for each task. This allows you to retrieve and review all tasks currently associated with the given resource. \n\t* @param {any} resource. A GanttChartResource object or it's id.\n\t* @returns {any}\n  */\n\tpublic async getResourceTasks(resource): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.getResourceTasks(resource);\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic getResourceTasksSync(resource): any {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.getResourceTasks(resource);\n        }\n        return null;\n    }\n\n\t/** @description Returns the IDs of the currently selected tasks or resources as an array. If selection functionality is disabled or if no items are currently selected, the function returns null. \n\t* @returns {any}\n  */\n\tpublic async getSelectedIds(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.getSelectedIds();\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic getSelectedIdsSync(): any {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.getSelectedIds();\n        }\n        return null;\n    }\n\n\t/** @description Returns an array containing all tasks that are currently selected by the user. Each task object in the array includes relevant task details such as its identifier, name, status, and any other associated properties. If no tasks are selected, an empty array is returned. \n\t* @returns {any}\n  */\n\tpublic async getSelectedTasks(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.getSelectedTasks();\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic getSelectedTasksSync(): any {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.getSelectedTasks();\n        }\n        return null;\n    }\n\n\t/** @description Returns an array containing information about all resources currently selected by the user. Each resource object may include details such as its unique identifier, name, type, and relevant metadata. This allows developers to programmatically access and process the user's current selections within the application. \n\t* @returns {any}\n  */\n\tpublic async getSelectedResources(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.getSelectedResources();\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic getSelectedResourcesSync(): any {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.getSelectedResources();\n        }\n        return null;\n    }\n\n\t/** @description Returns the working hours for a given day as an array of numerical values, where each value represents an hour within the standard working period (e.g., [9, 10, 11, 12, 13, 14, 15, 16, 17] for a 9 AM to 5 PM schedule). \n\t* @returns {any}\n  */\n\tpublic async getWorkingHours(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.getWorkingHours();\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic getWorkingHoursSync(): any {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.getWorkingHours();\n        }\n        return null;\n    }\n\n\t/** @description Conceals the tooltip element when it is currently displayed, ensuring that the tooltip is no longer visible to the user. \n\t* @returns {any}\n  */\n\tpublic async hideTooltip(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.hideTooltip();\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic hideTooltipSync(): any {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.hideTooltip();\n        }\n        return null;\n    }\n\n\t/** @description Determines whether the specified target date falls on a working day by evaluating it against the nonworkingDays property. Returns true if the target date is a working day (not listed in nonworkingDays), and false if it is a non-working day. \n\t* @param {Date} date. A javascript Date object or a string/number which represents a valid JS Date.\n\t*/\n    public isWorkingDay(date: Date): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.isWorkingDay(date);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.isWorkingDay(date);\n            });\n        }\n    }\n\n\t/** @description Enhancement:Restores the element’s previously saved state by loading the provided state object, or, if no argument is supplied, checks the browser’s LocalStorage for any saved states associated with the element and loads them if available. \n\t* @param {any[]} state?. An Array containing a valid structure of Gantt Chart tasks.\n\t*/\n    public loadState(state?: any[]): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.loadState(state);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.loadState(state);\n            });\n        }\n    }\n\n\t/** @description Removes all existing links or dependencies between tasks, effectively disconnecting every task from one another. After this operation, no task will be linked, dependent on, or related to any other task in the project. \n\t*/\n    public removeAllConnections(): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.removeAllConnections();\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.removeAllConnections();\n            });\n        }\n    }\n\n\t/** @description Removes a connection between two tasks.  The function can be called in one of two ways:1. With three arguments: the start task's index, the end task's index, and the connection type (for example, \"finish-to-start\" or \"start-to-end\").2. With a single connection string argument that describes the connection (e.g., \"1->2:FS\").This allows you to specify which task relationship to remove either by providing explicit task indices and type, or via a string representation of the connection. \n\t* @param {number | string} startTaskIndex. The index of the start task or the connection string like '2-3-0.\n\t* @param {number} taskEndIndex?. The index of the end task.\n\t* @param {number} connectionType?. The type of the connection. A numeric value from 0 to 3.\n\t* @returns {any}\n  */\n\tpublic async removeConnection(startTaskIndex, taskEndIndex?, connectionType?): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.removeConnection(startTaskIndex, taskEndIndex, connectionType);\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic removeConnectionSync(startTaskIndex, taskEndIndex?, connectionType?): any {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.removeConnection(startTaskIndex, taskEndIndex, connectionType);\n        }\n        return null;\n    }\n\n\t/** @description Deletes all connections associated with a specified task. If a second, valid task is provided as an argument, only the connections between the two specified tasks are removed. \n\t* @param {any} taskStart. The start task object or it's id.\n\t* @param {any} taskEnd?. The end task object or it's id.\n\t*/\n    public removeTaskConnection(taskStart: any, taskEnd?: any): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.removeTaskConnection(taskStart, taskEnd);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.removeTaskConnection(taskStart, taskEnd);\n            });\n        }\n    }\n\n\t/** @description Displays a tooltip for a designated element, providing additional contextual information or guidance when the user hovers over, focuses on, or interacts with that element. \n\t* @param {HTMLElement} target. The HTMLElement that will be the target of the tooltip.\n\t* @param {string} content?. Allows to set a custom content for the Tooltip.\n\t*/\n    public showTooltip(target: HTMLElement, content?: string): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.showTooltip(target, content);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.showTooltip(target, content);\n            });\n        }\n    }\n\n\t/** @description Scrolls the view to a specific date within a calendar or timeline component, bringing the selected date into focus for the user. \n\t* @param {Date} date. The date to scroll to.\n\t*/\n    public scrollToDate(date: Date): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.scrollToDate(date);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.scrollToDate(date);\n            });\n        }\n    }\n\n\t/** @description Stores the current configuration of the element in the browser's LocalStorage, allowing the settings to persist across page reloads or browser sessions. Note: The element must have a unique id attribute assigned for this functionality to work properly. \n\t* @param {any[]} state?. An Array containing a valid structure of Gantt Chart tasks.\n\t*/\n    public saveState(state?: any[]): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.saveState(state);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.saveState(state);\n            });\n        }\n    }\n\n\t/** @description Inserts a new task into the timeline. You can specify the task’s placement by providing a project ID: if a valid project ID is supplied, the new task will be created as a subtask under that project; if no project ID is given, the task will be added as a root-level item in the timeline. This allows for flexible organization, supporting both standalone tasks and tasks nested within projects. \n\t* @param {any} taskObject. An object describing a Gantt Chart task.\n\t* @param {any} project?. A number or string that represents the id of a project (e.g. '0') or a project object definition present in the GanttChart. This parameter determines the parent project of the task that will be inserted. If <b>null</b> is passed as an arguemnt the new task will be inserted at root level without a parent project.\n\t* @param {number} index?. The index where the new item should be inserted(e.g. 2). This index will determine the position of the newly inserted task.\n\t* @returns {string | number | undefined}\n  */\n\tpublic async insertTask(taskObject, project?, index?): Promise<any> {\n\t\tconst getResultOnRender = () => {\n            return new Promise(resolve => {\n                this.nativeElement.whenRendered(() => {\n                    const result = this.nativeElement.insertTask(taskObject, project, index);\n                    resolve(result)\n                });\n            });\n        };\n        const result = await getResultOnRender();\n\n        return result;\n    }\n\n\tpublic insertTaskSync(taskObject, project?, index?): string | number | undefined {\n        if (this.nativeElement.isRendered) {\n \t       return this.nativeElement.insertTask(taskObject, project, index);\n        }\n        return null;\n    }\n\n\t/** @description Updates the details of an existing task, project, or milestone, such as its title, description, status, deadline, or assigned users. This operation allows you to modify key attributes to reflect changes in progress, requirements, or scheduling. \n\t* @param {any} taskId. A number or string that represents the id of a task/project(e.g. '0') or the object definition of the task/project.\n\t* @param {any} taskObject. An object describing a Gantt Chart task. The properties of this object will be applied to the desired task.\n\t*/\n    public updateTask(taskId: any, taskObject: any): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.updateTask(taskId, taskObject);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.updateTask(taskId, taskObject);\n            });\n        }\n    }\n\n\t/** @description Removes the specified task from the timeline, effectively deleting it from the list of scheduled events. This operation updates the timeline to ensure the removed task no longer appears or affects the scheduling of other tasks. \n\t* @param {any} taskId. A number or string that represents the id of a task or the actual item object.\n\t*/\n    public removeTask(taskId: any): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.removeTask(taskId);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.removeTask(taskId);\n            });\n        }\n    }\n\n\t/** @description Adds a new resource to the collection by creating and storing the provided data. Returns details of the created resource upon successful insertion. \n\t* @param {string | number} resourceId. A string that represents the id of a resource or it's hierarchical position, e.g. '0' ( following jqxTree syntax), or a number that represents the index of a resource.\n\t* @param {any} resourceObject?. An object describing a Gantt Chart resource.\n\t*/\n    public insertResource(resourceId: string | number, resourceObject?: any): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.insertResource(resourceId, resourceObject);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.insertResource(resourceId, resourceObject);\n            });\n        }\n    }\n\n\t/** @description Updates the specified resource with new data or modifications. This operation applies changes to the current state of the resource identified by its unique identifier, ensuring that only the provided fields are altered while preserving any unspecified properties. \n\t* @param {any} resourceId. A string that represents the id of a resource or it's hierarchical position, e.g. '0' ( following jqxTree syntax), or a number that represents the index of a resource.\n\t* @param {any} taskObject. An object describing a Gantt Chart resource. The properties of this object will be applied to the target resource.\n\t*/\n    public updateResource(resourceId: any, taskObject: any): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.updateResource(resourceId, taskObject);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.updateResource(resourceId, taskObject);\n            });\n        }\n    }\n\n\t/** @description Deletes a specified resource from the system, permanently removing it and its associated data. This action cannot be undone. \n\t* @param {any} resourceId. A string that represents the id of a resource or it's hierarchical position, e.g. '0' ( following jqxTree syntax), or a number that represents the index of a resource.\n\t*/\n    public removeResource(resourceId: any): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.removeResource(resourceId);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.removeResource(resourceId);\n            });\n        }\n    }\n\n\t/** @description Opens a popup window that allows the user to either edit or delete a connection when a specific connection string is provided. This popup provides relevant options and fields based on the selected task (edit or delete), streamlining the process of managing connection configurations. \n\t* @param {any} taskId. A string or number that represents the id of a task or the task object that is going to be edited or a connection string(e.g. '2-0-0').\n\t*/\n    public openWindow(taskId: any): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.openWindow(taskId);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.openWindow(taskId);\n            });\n        }\n    }\n\n\t/** @description Closes any active popup window that was opened within the specified element. This method searches for and terminates all open popup windows that are currently displayed inside the targeted element, ensuring that no popups remain visible or interactive. \n\t*/\n    public closeWindow(): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.closeWindow();\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.closeWindow();\n            });\n        }\n    }\n\n\t/** @description Configures the GanttChart for optimal print layout and formatting, then automatically launches the browser's Print Preview dialog, allowing users to review and print the current chart view. \n\t*/\n    public print(): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.print();\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.print();\n            });\n        }\n    }\n\n\t/** @description Enables users to define the standard working days and hours for the entire schedule in a single action. This ensures consistency by applying the specified days and time ranges across the relevant calendar or system settings. \n\t* @param {{ days: (number | string | number[])[], hours: (number | string | number[])[] }} settings. An object definition that contains the days and hours that should be working. The days and hours can be defined as an array of numbers where each number is a day/hour, strings where each string represents a range of days/hours (e.g. '1-5' or '2:00-8:00') or nested array of numbers (e.g. [[1,5]] or [[2, 8]]) which means from 1 to 5 or 2 to 8.\n\t*/\n    public setWorkTime(settings: { days: (number | string | number[])[], hours: (number | string | number[])[] }): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.setWorkTime(settings);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.setWorkTime(settings);\n            });\n        }\n    }\n\n\t/** @description Enables users to retrieve and select a specific task by providing its unique task ID. This functionality ensures precise identification and access to individual tasks within the system. \n\t* @param {string | number} id. The id of the task to select.\n\t*/\n    public selectTask(id: string | number): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.selectTask(id);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.selectTask(id);\n            });\n        }\n    }\n\n\t/** @description Enables the selection of a specific resource by specifying its unique identifier (ID). This functionality ensures that only the resource matching the provided ID is retrieved or manipulated. \n\t* @param {string | number} id. The id of the resource to select.\n\t*/\n    public selectResource(id: string | number): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.selectResource(id);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.selectResource(id);\n            });\n        }\n    }\n\n\t/** @description Enables the deselection of a specific task by specifying its unique task ID. This operation removes the selected state from the corresponding task if it is currently selected. \n\t* @param {string | number} id. The id of the task to unselect.\n\t*/\n    public unselectTask(id: string | number): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.unselectTask(id);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.unselectTask(id);\n            });\n        }\n    }\n\n\t/** @description Enables the deselection of a specific resource by providing its unique identifier (ID). This function removes the selected state from the resource corresponding to the given ID, if it is currently selected. \n\t* @param {string | number} id. The id of the resource to unselect.\n\t*/\n    public unselectResource(id: string | number): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.unselectResource(id);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.unselectResource(id);\n            });\n        }\n    }\n\n\t/** @description Removes any previously defined working hours for the user or resource. This method serves as the counterpart to setWorkingTime, effectively clearing or resetting the working time settings that were established earlier. \n\t* @param {{ days: (number | string | number[])[], hours: (number | string | number[])[] }} settings. An object definition that contains the days and hours that should not be working. The days and hours can be defined as an array of numbers where each number is a day/hour, strings where each string represents a range of days/hours (e.g. '1-5' or '2:00-8:00') or nested array of numbers (e.g. [[1,5]] or [[2, 8]]) which means from 1 to 5 or 2 to 8.\n\t*/\n    public unsetWorkTime(settings: { days: (number | string | number[])[], hours: (number | string | number[])[] }): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.unsetWorkTime(settings);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.unsetWorkTime(settings);\n            });\n        }\n    }\n\n\t/** @description Automatically sorts the tasks and resources in the GanttChart when the sortable option is enabled, allowing users to organize items by specified criteria such as start date, name, or priority. \n\t* @param {any} columns. An Array of objects which determine which columns to be sorted, the sort order and the type of item to sort: task or resource. If no arguments are provided sorting will be removed. <br /> An object should have the following properties: <ul><li><b>value</b> - a string that represents the value of a <b>taskColumn</b> to sort.</li><li><b>sortOrder</b> - a string that represents the sorting order for the column: 'asc' (asscending sorting) or 'desc' (descending) are possible values. </li><li><b>type</b> - a string that represents the type of item to sort. This property determines which panel will be sorted. Two possible values: 'task', 'resource'.</li></ul>\n\t*/\n    public sort(columns: any): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.sort(columns);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.sort(columns);\n            });\n        }\n    }\n\n\t/** @description Sets the locale of a component. \n\t* @param {string} locale. The locale abbreviation. For example: 'de'.\n\t* @param {any} messages?. Object containing the locale messages.\n\t*/\n    public setLocale(locale: string, messages?: any): void {\n        if (this.nativeElement.isRendered) {\n            this.nativeElement.setLocale(locale, messages);\n        }\n        else\n        {\n            this.nativeElement.whenRendered(() => {\n                this.nativeElement.setLocale(locale, messages);\n            });\n        }\n    }\n\n\n\tget isRendered(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.isRendered : false;\n\t}\n\n\tngOnInit() {\n\t}\n\n    ngAfterViewInit() {\n      const that = this;\n\n      that.onCreate.emit(that.nativeElement);\n\n\t\tif (Smart) Smart.Render();\n\n\t\tthis.nativeElement.classList.add('smart-angular');\n\n\t\tif (this.nativeElement.whenRendered) this.nativeElement.whenRendered(() => { that.onReady.emit(that.nativeElement); });\n\t\tthis.listen();\n\t}\n\n\tngOnDestroy() {\n\t\tthis.unlisten();\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (this.nativeElement && this.nativeElement.isRendered) {\n\t\t\tfor (const propName in changes) {\n\t\t\t\tif (changes.hasOwnProperty(propName)) {\n\t\t\t\t\tthis.nativeElement[propName] = changes[propName].currentValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @description Add event listeners. */\n\tprivate listen(): void {\n        const that = this;\n\t\tthat.eventHandlers['beginUpdateHandler'] = (event: CustomEvent) => { that.onBeginUpdate.emit(event); }\n\t\tthat.nativeElement.addEventListener('beginUpdate', that.eventHandlers['beginUpdateHandler']);\n\n\t\tthat.eventHandlers['endUpdateHandler'] = (event: CustomEvent) => { that.onEndUpdate.emit(event); }\n\t\tthat.nativeElement.addEventListener('endUpdate', that.eventHandlers['endUpdateHandler']);\n\n\t\tthat.eventHandlers['connectionStartHandler'] = (event: CustomEvent) => { that.onConnectionStart.emit(event); }\n\t\tthat.nativeElement.addEventListener('connectionStart', that.eventHandlers['connectionStartHandler']);\n\n\t\tthat.eventHandlers['connectionEndHandler'] = (event: CustomEvent) => { that.onConnectionEnd.emit(event); }\n\t\tthat.nativeElement.addEventListener('connectionEnd', that.eventHandlers['connectionEndHandler']);\n\n\t\tthat.eventHandlers['changeHandler'] = (event: CustomEvent) => { that.onChange.emit(event); }\n\t\tthat.nativeElement.addEventListener('change', that.eventHandlers['changeHandler']);\n\n\t\tthat.eventHandlers['columnResizeHandler'] = (event: CustomEvent) => { that.onColumnResize.emit(event); }\n\t\tthat.nativeElement.addEventListener('columnResize', that.eventHandlers['columnResizeHandler']);\n\n\t\tthat.eventHandlers['closingHandler'] = (event: CustomEvent) => { that.onClosing.emit(event); }\n\t\tthat.nativeElement.addEventListener('closing', that.eventHandlers['closingHandler']);\n\n\t\tthat.eventHandlers['closeHandler'] = (event: CustomEvent) => { that.onClose.emit(event); }\n\t\tthat.nativeElement.addEventListener('close', that.eventHandlers['closeHandler']);\n\n\t\tthat.eventHandlers['collapseHandler'] = (event: CustomEvent) => { that.onCollapse.emit(event); }\n\t\tthat.nativeElement.addEventListener('collapse', that.eventHandlers['collapseHandler']);\n\n\t\tthat.eventHandlers['dragStartHandler'] = (event: CustomEvent) => { that.onDragStart.emit(event); }\n\t\tthat.nativeElement.addEventListener('dragStart', that.eventHandlers['dragStartHandler']);\n\n\t\tthat.eventHandlers['dragEndHandler'] = (event: CustomEvent) => { that.onDragEnd.emit(event); }\n\t\tthat.nativeElement.addEventListener('dragEnd', that.eventHandlers['dragEndHandler']);\n\n\t\tthat.eventHandlers['expandHandler'] = (event: CustomEvent) => { that.onExpand.emit(event); }\n\t\tthat.nativeElement.addEventListener('expand', that.eventHandlers['expandHandler']);\n\n\t\tthat.eventHandlers['filterHandler'] = (event: CustomEvent) => { that.onFilter.emit(event); }\n\t\tthat.nativeElement.addEventListener('filter', that.eventHandlers['filterHandler']);\n\n\t\tthat.eventHandlers['itemClickHandler'] = (event: CustomEvent) => { that.onItemClick.emit(event); }\n\t\tthat.nativeElement.addEventListener('itemClick', that.eventHandlers['itemClickHandler']);\n\n\t\tthat.eventHandlers['itemDoubleClickHandler'] = (event: CustomEvent) => { that.onItemDoubleClick.emit(event); }\n\t\tthat.nativeElement.addEventListener('itemDoubleClick', that.eventHandlers['itemDoubleClickHandler']);\n\n\t\tthat.eventHandlers['itemInsertHandler'] = (event: CustomEvent) => { that.onItemInsert.emit(event); }\n\t\tthat.nativeElement.addEventListener('itemInsert', that.eventHandlers['itemInsertHandler']);\n\n\t\tthat.eventHandlers['itemRemoveHandler'] = (event: CustomEvent) => { that.onItemRemove.emit(event); }\n\t\tthat.nativeElement.addEventListener('itemRemove', that.eventHandlers['itemRemoveHandler']);\n\n\t\tthat.eventHandlers['itemUpdateHandler'] = (event: CustomEvent) => { that.onItemUpdate.emit(event); }\n\t\tthat.nativeElement.addEventListener('itemUpdate', that.eventHandlers['itemUpdateHandler']);\n\n\t\tthat.eventHandlers['openingHandler'] = (event: CustomEvent) => { that.onOpening.emit(event); }\n\t\tthat.nativeElement.addEventListener('opening', that.eventHandlers['openingHandler']);\n\n\t\tthat.eventHandlers['openHandler'] = (event: CustomEvent) => { that.onOpen.emit(event); }\n\t\tthat.nativeElement.addEventListener('open', that.eventHandlers['openHandler']);\n\n\t\tthat.eventHandlers['progressChangeStartHandler'] = (event: CustomEvent) => { that.onProgressChangeStart.emit(event); }\n\t\tthat.nativeElement.addEventListener('progressChangeStart', that.eventHandlers['progressChangeStartHandler']);\n\n\t\tthat.eventHandlers['progressChangeEndHandler'] = (event: CustomEvent) => { that.onProgressChangeEnd.emit(event); }\n\t\tthat.nativeElement.addEventListener('progressChangeEnd', that.eventHandlers['progressChangeEndHandler']);\n\n\t\tthat.eventHandlers['resizeStartHandler'] = (event: CustomEvent) => { that.onResizeStart.emit(event); }\n\t\tthat.nativeElement.addEventListener('resizeStart', that.eventHandlers['resizeStartHandler']);\n\n\t\tthat.eventHandlers['resizeEndHandler'] = (event: CustomEvent) => { that.onResizeEnd.emit(event); }\n\t\tthat.nativeElement.addEventListener('resizeEnd', that.eventHandlers['resizeEndHandler']);\n\n\t\tthat.eventHandlers['sortHandler'] = (event: CustomEvent) => { that.onSort.emit(event); }\n\t\tthat.nativeElement.addEventListener('sort', that.eventHandlers['sortHandler']);\n\n\t\tthat.eventHandlers['scrollBottomReachedHandler'] = (event: CustomEvent) => { that.onScrollBottomReached.emit(event); }\n\t\tthat.nativeElement.addEventListener('scrollBottomReached', that.eventHandlers['scrollBottomReachedHandler']);\n\n\t\tthat.eventHandlers['scrollTopReachedHandler'] = (event: CustomEvent) => { that.onScrollTopReached.emit(event); }\n\t\tthat.nativeElement.addEventListener('scrollTopReached', that.eventHandlers['scrollTopReachedHandler']);\n\n\t\tthat.eventHandlers['scrollLeftReachedHandler'] = (event: CustomEvent) => { that.onScrollLeftReached.emit(event); }\n\t\tthat.nativeElement.addEventListener('scrollLeftReached', that.eventHandlers['scrollLeftReachedHandler']);\n\n\t\tthat.eventHandlers['scrollRightReachedHandler'] = (event: CustomEvent) => { that.onScrollRightReached.emit(event); }\n\t\tthat.nativeElement.addEventListener('scrollRightReached', that.eventHandlers['scrollRightReachedHandler']);\n\n\t}\n\n\t/** @description Remove event listeners. */\n\tprivate unlisten(): void {\n        const that = this;\n\t\tif (that.eventHandlers['beginUpdateHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('beginUpdate', that.eventHandlers['beginUpdateHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['endUpdateHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('endUpdate', that.eventHandlers['endUpdateHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['connectionStartHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('connectionStart', that.eventHandlers['connectionStartHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['connectionEndHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('connectionEnd', that.eventHandlers['connectionEndHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['changeHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('change', that.eventHandlers['changeHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['columnResizeHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('columnResize', that.eventHandlers['columnResizeHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['closingHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('closing', that.eventHandlers['closingHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['closeHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('close', that.eventHandlers['closeHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['collapseHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('collapse', that.eventHandlers['collapseHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['dragStartHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('dragStart', that.eventHandlers['dragStartHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['dragEndHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('dragEnd', that.eventHandlers['dragEndHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['expandHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('expand', that.eventHandlers['expandHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['filterHandler']) {\n\t\t\tthat.nativeElement.onfilterHandler = null;\n\t\t}\n\n\t\tif (that.eventHandlers['itemClickHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('itemClick', that.eventHandlers['itemClickHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['itemDoubleClickHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('itemDoubleClick', that.eventHandlers['itemDoubleClickHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['itemInsertHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('itemInsert', that.eventHandlers['itemInsertHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['itemRemoveHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('itemRemove', that.eventHandlers['itemRemoveHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['itemUpdateHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('itemUpdate', that.eventHandlers['itemUpdateHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['openingHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('opening', that.eventHandlers['openingHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['openHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('open', that.eventHandlers['openHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['progressChangeStartHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('progressChangeStart', that.eventHandlers['progressChangeStartHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['progressChangeEndHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('progressChangeEnd', that.eventHandlers['progressChangeEndHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['resizeStartHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('resizeStart', that.eventHandlers['resizeStartHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['resizeEndHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('resizeEnd', that.eventHandlers['resizeEndHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['sortHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('sort', that.eventHandlers['sortHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['scrollBottomReachedHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('scrollBottomReached', that.eventHandlers['scrollBottomReachedHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['scrollTopReachedHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('scrollTopReached', that.eventHandlers['scrollTopReachedHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['scrollLeftReachedHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('scrollLeftReached', that.eventHandlers['scrollLeftReachedHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['scrollRightReachedHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('scrollRightReached', that.eventHandlers['scrollRightReachedHandler']);\n\t\t}\n\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { GanttChartComponent } from './smart.ganttchart';\nimport { CUSTOM_ELEMENTS_SCHEMA  } from '@angular/core';\n\n@NgModule({\n    declarations: [GanttChartComponent],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\texports: [GanttChartComponent]\n})\n\nexport class GanttChartModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}