@mintplayer/ng-bootstrap 21.22.0 → 21.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/fesm2022/mintplayer-ng-bootstrap-accordion.mjs +20 -20
  2. package/fesm2022/mintplayer-ng-bootstrap-accordion.mjs.map +1 -1
  3. package/fesm2022/mintplayer-ng-bootstrap-alert.mjs +8 -8
  4. package/fesm2022/mintplayer-ng-bootstrap-alert.mjs.map +1 -1
  5. package/fesm2022/mintplayer-ng-bootstrap-badge.mjs +5 -5
  6. package/fesm2022/mintplayer-ng-bootstrap-badge.mjs.map +1 -1
  7. package/fesm2022/mintplayer-ng-bootstrap-breadcrumb.mjs +6 -6
  8. package/fesm2022/mintplayer-ng-bootstrap-breadcrumb.mjs.map +1 -1
  9. package/fesm2022/mintplayer-ng-bootstrap-button-group.mjs +3 -3
  10. package/fesm2022/mintplayer-ng-bootstrap-button-group.mjs.map +1 -1
  11. package/fesm2022/mintplayer-ng-bootstrap-button-type.mjs +4 -4
  12. package/fesm2022/mintplayer-ng-bootstrap-button-type.mjs.map +1 -1
  13. package/fesm2022/mintplayer-ng-bootstrap-calendar-month.mjs +9 -9
  14. package/fesm2022/mintplayer-ng-bootstrap-calendar-month.mjs.map +1 -1
  15. package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs +10 -10
  16. package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs.map +1 -1
  17. package/fesm2022/mintplayer-ng-bootstrap-card.mjs +8 -8
  18. package/fesm2022/mintplayer-ng-bootstrap-card.mjs.map +1 -1
  19. package/fesm2022/mintplayer-ng-bootstrap-carousel.mjs +25 -25
  20. package/fesm2022/mintplayer-ng-bootstrap-carousel.mjs.map +1 -1
  21. package/fesm2022/mintplayer-ng-bootstrap-close.mjs +3 -3
  22. package/fesm2022/mintplayer-ng-bootstrap-close.mjs.map +1 -1
  23. package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs +7 -7
  24. package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs.map +1 -1
  25. package/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs +58 -58
  26. package/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs.map +1 -1
  27. package/fesm2022/mintplayer-ng-bootstrap-container.mjs +3 -3
  28. package/fesm2022/mintplayer-ng-bootstrap-container.mjs.map +1 -1
  29. package/fesm2022/mintplayer-ng-bootstrap-context-menu.mjs +3 -3
  30. package/fesm2022/mintplayer-ng-bootstrap-context-menu.mjs.map +1 -1
  31. package/fesm2022/mintplayer-ng-bootstrap-copy.mjs +4 -4
  32. package/fesm2022/mintplayer-ng-bootstrap-copy.mjs.map +1 -1
  33. package/fesm2022/mintplayer-ng-bootstrap-datatable.mjs +20 -20
  34. package/fesm2022/mintplayer-ng-bootstrap-datatable.mjs.map +1 -1
  35. package/fesm2022/mintplayer-ng-bootstrap-datepicker.mjs +6 -6
  36. package/fesm2022/mintplayer-ng-bootstrap-datepicker.mjs.map +1 -1
  37. package/fesm2022/mintplayer-ng-bootstrap-dock.mjs +798 -1175
  38. package/fesm2022/mintplayer-ng-bootstrap-dock.mjs.map +1 -1
  39. package/fesm2022/mintplayer-ng-bootstrap-dropdown-divider.mjs +3 -3
  40. package/fesm2022/mintplayer-ng-bootstrap-dropdown-divider.mjs.map +1 -1
  41. package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs +10 -10
  42. package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +1 -1
  43. package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs +15 -15
  44. package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs.map +1 -1
  45. package/fesm2022/mintplayer-ng-bootstrap-enhanced-paste.mjs +3 -3
  46. package/fesm2022/mintplayer-ng-bootstrap-enhanced-paste.mjs.map +1 -1
  47. package/fesm2022/mintplayer-ng-bootstrap-enum.mjs +3 -3
  48. package/fesm2022/mintplayer-ng-bootstrap-enum.mjs.map +1 -1
  49. package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs +16 -16
  50. package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -1
  51. package/fesm2022/mintplayer-ng-bootstrap-floating-labels.mjs +3 -3
  52. package/fesm2022/mintplayer-ng-bootstrap-floating-labels.mjs.map +1 -1
  53. package/fesm2022/mintplayer-ng-bootstrap-font-color.mjs +3 -3
  54. package/fesm2022/mintplayer-ng-bootstrap-font-color.mjs.map +1 -1
  55. package/fesm2022/mintplayer-ng-bootstrap-for.mjs +4 -4
  56. package/fesm2022/mintplayer-ng-bootstrap-for.mjs.map +1 -1
  57. package/fesm2022/mintplayer-ng-bootstrap-form.mjs +11 -11
  58. package/fesm2022/mintplayer-ng-bootstrap-form.mjs.map +1 -1
  59. package/fesm2022/mintplayer-ng-bootstrap-grid.mjs +26 -26
  60. package/fesm2022/mintplayer-ng-bootstrap-grid.mjs.map +1 -1
  61. package/fesm2022/mintplayer-ng-bootstrap-has-overlay.mjs +4 -4
  62. package/fesm2022/mintplayer-ng-bootstrap-has-overlay.mjs.map +1 -1
  63. package/fesm2022/mintplayer-ng-bootstrap-has-property.mjs +3 -3
  64. package/fesm2022/mintplayer-ng-bootstrap-has-property.mjs.map +1 -1
  65. package/fesm2022/mintplayer-ng-bootstrap-in-list.mjs +3 -3
  66. package/fesm2022/mintplayer-ng-bootstrap-in-list.mjs.map +1 -1
  67. package/fesm2022/mintplayer-ng-bootstrap-input-group.mjs +3 -3
  68. package/fesm2022/mintplayer-ng-bootstrap-input-group.mjs.map +1 -1
  69. package/fesm2022/mintplayer-ng-bootstrap-instance-of.mjs +14 -14
  70. package/fesm2022/mintplayer-ng-bootstrap-instance-of.mjs.map +1 -1
  71. package/fesm2022/mintplayer-ng-bootstrap-let.mjs +4 -4
  72. package/fesm2022/mintplayer-ng-bootstrap-let.mjs.map +1 -1
  73. package/fesm2022/mintplayer-ng-bootstrap-linify.mjs +3 -3
  74. package/fesm2022/mintplayer-ng-bootstrap-linify.mjs.map +1 -1
  75. package/fesm2022/mintplayer-ng-bootstrap-list-group.mjs +7 -7
  76. package/fesm2022/mintplayer-ng-bootstrap-list-group.mjs.map +1 -1
  77. package/fesm2022/mintplayer-ng-bootstrap-markdown.mjs +12 -12
  78. package/fesm2022/mintplayer-ng-bootstrap-markdown.mjs.map +1 -1
  79. package/fesm2022/mintplayer-ng-bootstrap-marquee.mjs +3 -3
  80. package/fesm2022/mintplayer-ng-bootstrap-marquee.mjs.map +1 -1
  81. package/fesm2022/mintplayer-ng-bootstrap-modal.mjs +24 -24
  82. package/fesm2022/mintplayer-ng-bootstrap-modal.mjs.map +1 -1
  83. package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs +24 -24
  84. package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -1
  85. package/fesm2022/mintplayer-ng-bootstrap-navbar-toggler.mjs +5 -5
  86. package/fesm2022/mintplayer-ng-bootstrap-navbar-toggler.mjs.map +1 -1
  87. package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs +58 -58
  88. package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs.map +1 -1
  89. package/fesm2022/mintplayer-ng-bootstrap-navigation-lock.mjs +8 -8
  90. package/fesm2022/mintplayer-ng-bootstrap-navigation-lock.mjs.map +1 -1
  91. package/fesm2022/mintplayer-ng-bootstrap-no-noscript.mjs +3 -3
  92. package/fesm2022/mintplayer-ng-bootstrap-no-noscript.mjs.map +1 -1
  93. package/fesm2022/mintplayer-ng-bootstrap-offcanvas.mjs +40 -40
  94. package/fesm2022/mintplayer-ng-bootstrap-offcanvas.mjs.map +1 -1
  95. package/fesm2022/mintplayer-ng-bootstrap-ordinal-number.mjs +3 -3
  96. package/fesm2022/mintplayer-ng-bootstrap-ordinal-number.mjs.map +1 -1
  97. package/fesm2022/mintplayer-ng-bootstrap-pagination.mjs +12 -12
  98. package/fesm2022/mintplayer-ng-bootstrap-pagination.mjs.map +1 -1
  99. package/fesm2022/mintplayer-ng-bootstrap-parallax.mjs +6 -6
  100. package/fesm2022/mintplayer-ng-bootstrap-parallax.mjs.map +1 -1
  101. package/fesm2022/mintplayer-ng-bootstrap-placeholder.mjs +7 -7
  102. package/fesm2022/mintplayer-ng-bootstrap-placeholder.mjs.map +1 -1
  103. package/fesm2022/mintplayer-ng-bootstrap-playlist-toggler.mjs +5 -5
  104. package/fesm2022/mintplayer-ng-bootstrap-playlist-toggler.mjs.map +1 -1
  105. package/fesm2022/mintplayer-ng-bootstrap-popover.mjs +20 -20
  106. package/fesm2022/mintplayer-ng-bootstrap-popover.mjs.map +1 -1
  107. package/fesm2022/mintplayer-ng-bootstrap-priority-nav.mjs +30 -30
  108. package/fesm2022/mintplayer-ng-bootstrap-priority-nav.mjs.map +1 -1
  109. package/fesm2022/mintplayer-ng-bootstrap-progress-bar.mjs +17 -17
  110. package/fesm2022/mintplayer-ng-bootstrap-progress-bar.mjs.map +1 -1
  111. package/fesm2022/mintplayer-ng-bootstrap-range.mjs +9 -9
  112. package/fesm2022/mintplayer-ng-bootstrap-range.mjs.map +1 -1
  113. package/fesm2022/mintplayer-ng-bootstrap-rating.mjs +7 -7
  114. package/fesm2022/mintplayer-ng-bootstrap-rating.mjs.map +1 -1
  115. package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs +25 -25
  116. package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs.map +1 -1
  117. package/fesm2022/mintplayer-ng-bootstrap-scheduler.mjs +16 -16
  118. package/fesm2022/mintplayer-ng-bootstrap-scheduler.mjs.map +1 -1
  119. package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs +14 -14
  120. package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs.map +1 -1
  121. package/fesm2022/mintplayer-ng-bootstrap-searchbox.mjs +24 -24
  122. package/fesm2022/mintplayer-ng-bootstrap-searchbox.mjs.map +1 -1
  123. package/fesm2022/mintplayer-ng-bootstrap-select.mjs +19 -19
  124. package/fesm2022/mintplayer-ng-bootstrap-select.mjs.map +1 -1
  125. package/fesm2022/mintplayer-ng-bootstrap-select2.mjs +20 -20
  126. package/fesm2022/mintplayer-ng-bootstrap-select2.mjs.map +1 -1
  127. package/fesm2022/mintplayer-ng-bootstrap-shell.mjs +11 -11
  128. package/fesm2022/mintplayer-ng-bootstrap-shell.mjs.map +1 -1
  129. package/fesm2022/mintplayer-ng-bootstrap-signature-pad.mjs +7 -7
  130. package/fesm2022/mintplayer-ng-bootstrap-signature-pad.mjs.map +1 -1
  131. package/fesm2022/mintplayer-ng-bootstrap-slugify.mjs +3 -3
  132. package/fesm2022/mintplayer-ng-bootstrap-slugify.mjs.map +1 -1
  133. package/fesm2022/mintplayer-ng-bootstrap-spinner.mjs +7 -7
  134. package/fesm2022/mintplayer-ng-bootstrap-spinner.mjs.map +1 -1
  135. package/fesm2022/mintplayer-ng-bootstrap-split-string.mjs +3 -3
  136. package/fesm2022/mintplayer-ng-bootstrap-split-string.mjs.map +1 -1
  137. package/fesm2022/mintplayer-ng-bootstrap-sticky-footer.mjs +6 -6
  138. package/fesm2022/mintplayer-ng-bootstrap-sticky-footer.mjs.map +1 -1
  139. package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs +57 -67
  140. package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs.map +1 -1
  141. package/fesm2022/mintplayer-ng-bootstrap-table.mjs +10 -10
  142. package/fesm2022/mintplayer-ng-bootstrap-table.mjs.map +1 -1
  143. package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs +8 -8
  144. package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs.map +1 -1
  145. package/fesm2022/mintplayer-ng-bootstrap-toast.mjs +24 -24
  146. package/fesm2022/mintplayer-ng-bootstrap-toast.mjs.map +1 -1
  147. package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs +22 -22
  148. package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs.map +1 -1
  149. package/fesm2022/mintplayer-ng-bootstrap-tooltip.mjs +10 -10
  150. package/fesm2022/mintplayer-ng-bootstrap-tooltip.mjs.map +1 -1
  151. package/fesm2022/mintplayer-ng-bootstrap-treeview.mjs +14 -14
  152. package/fesm2022/mintplayer-ng-bootstrap-treeview.mjs.map +1 -1
  153. package/fesm2022/mintplayer-ng-bootstrap-trust-html.mjs +3 -3
  154. package/fesm2022/mintplayer-ng-bootstrap-trust-html.mjs.map +1 -1
  155. package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs +10 -10
  156. package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs.map +1 -1
  157. package/fesm2022/mintplayer-ng-bootstrap-uc-first.mjs +3 -3
  158. package/fesm2022/mintplayer-ng-bootstrap-uc-first.mjs.map +1 -1
  159. package/fesm2022/mintplayer-ng-bootstrap-user-agent.mjs +3 -3
  160. package/fesm2022/mintplayer-ng-bootstrap-user-agent.mjs.map +1 -1
  161. package/fesm2022/mintplayer-ng-bootstrap-viewport.mjs +3 -3
  162. package/fesm2022/mintplayer-ng-bootstrap-viewport.mjs.map +1 -1
  163. package/fesm2022/mintplayer-ng-bootstrap-virtual-datatable.mjs +10 -10
  164. package/fesm2022/mintplayer-ng-bootstrap-virtual-datatable.mjs.map +1 -1
  165. package/fesm2022/mintplayer-ng-bootstrap-web-components-scheduler-core.mjs +1356 -0
  166. package/fesm2022/mintplayer-ng-bootstrap-web-components-scheduler-core.mjs.map +1 -0
  167. package/fesm2022/mintplayer-ng-bootstrap-web-components-scheduler.mjs +3819 -0
  168. package/fesm2022/mintplayer-ng-bootstrap-web-components-scheduler.mjs.map +1 -0
  169. package/fesm2022/mintplayer-ng-bootstrap-web-components-splitter.mjs +731 -0
  170. package/fesm2022/mintplayer-ng-bootstrap-web-components-splitter.mjs.map +1 -0
  171. package/fesm2022/mintplayer-ng-bootstrap-web-components-tab-control.mjs +549 -0
  172. package/fesm2022/mintplayer-ng-bootstrap-web-components-tab-control.mjs.map +1 -0
  173. package/fesm2022/mintplayer-ng-bootstrap-word-count.mjs +3 -3
  174. package/fesm2022/mintplayer-ng-bootstrap-word-count.mjs.map +1 -1
  175. package/package.json +20 -6
  176. package/types/mintplayer-ng-bootstrap-dock.d.ts +55 -19
  177. package/types/mintplayer-ng-bootstrap-scheduler.d.ts +2 -2
  178. package/types/mintplayer-ng-bootstrap-tab-control.d.ts +7 -11
  179. package/types/mintplayer-ng-bootstrap-web-components-scheduler-core.d.ts +890 -0
  180. package/types/mintplayer-ng-bootstrap-web-components-scheduler.d.ts +354 -0
  181. package/types/mintplayer-ng-bootstrap-web-components-splitter.d.ts +165 -0
  182. package/types/mintplayer-ng-bootstrap-web-components-tab-control.d.ts +95 -0
@@ -0,0 +1,890 @@
1
+ /**
2
+ * View types for the scheduler
3
+ */
4
+ type ViewType = 'year' | 'month' | 'week' | 'day' | 'timeline';
5
+ /**
6
+ * Display mode for events
7
+ */
8
+ type DisplayMode = 'grid' | 'timeline';
9
+ /**
10
+ * Time format options
11
+ */
12
+ type TimeFormat = '12h' | '24h';
13
+ /**
14
+ * Days of the week (0 = Sunday, 1 = Monday, etc.)
15
+ */
16
+ type DayOfWeek = 0 | 1 | 2 | 3 | 4 | 5 | 6;
17
+ /**
18
+ * Drag operation types
19
+ */
20
+ type DragOperationType = 'create' | 'move' | 'resize-start' | 'resize-end';
21
+
22
+ /**
23
+ * Represents a scheduler event
24
+ */
25
+ interface SchedulerEvent {
26
+ /** Unique identifier for the event */
27
+ id: string;
28
+ /** Event title displayed in the calendar */
29
+ title: string;
30
+ /** Start date and time */
31
+ start: Date;
32
+ /** End date and time */
33
+ end: Date;
34
+ /** Whether this is an all-day event */
35
+ allDay?: boolean;
36
+ /** Background color of the event */
37
+ color?: string;
38
+ /** Text color of the event */
39
+ textColor?: string;
40
+ /** ID of the resource this event belongs to */
41
+ resourceId?: string;
42
+ /** Whether the event can be edited */
43
+ editable?: boolean;
44
+ /** Whether the event can be dragged */
45
+ draggable?: boolean;
46
+ /** Whether the event can be resized */
47
+ resizable?: boolean | {
48
+ start: boolean;
49
+ end: boolean;
50
+ };
51
+ /** Additional CSS class names */
52
+ classNames?: string[];
53
+ /** Custom properties for extending event data */
54
+ extendedProps?: Record<string, unknown>;
55
+ }
56
+ /**
57
+ * Represents a part of an event that spans multiple days
58
+ */
59
+ interface SchedulerEventPart {
60
+ /** Unique identifier for this part */
61
+ id: string;
62
+ /** Reference to the parent event */
63
+ event: SchedulerEvent;
64
+ /** Start of this part (may differ from event.start for multi-day events) */
65
+ start: Date;
66
+ /** End of this part (may be midnight for multi-day events) */
67
+ end: Date;
68
+ /** Whether this is the first day of the event */
69
+ isStart: boolean;
70
+ /** Whether this is the last day of the event */
71
+ isEnd: boolean;
72
+ /** Which day in the sequence (0-based) */
73
+ dayIndex: number;
74
+ /** Total number of days this event spans */
75
+ totalDays: number;
76
+ }
77
+ /**
78
+ * An event with its daily parts
79
+ */
80
+ interface SchedulerEventWithParts {
81
+ /** The original event */
82
+ event: SchedulerEvent;
83
+ /** Array of daily parts */
84
+ parts: SchedulerEventPart[];
85
+ }
86
+ /**
87
+ * A preview event shown during drag operations
88
+ */
89
+ interface PreviewEvent {
90
+ /** Start of the preview */
91
+ start: Date;
92
+ /** End of the preview */
93
+ end: Date;
94
+ /** Optional resource ID for resource-based views */
95
+ resourceId?: string;
96
+ }
97
+ /**
98
+ * A track/rail containing non-overlapping events
99
+ */
100
+ interface TimelineTrack {
101
+ /** Track index (0 = first/leftmost track) */
102
+ index: number;
103
+ /** Events in this track (guaranteed non-overlapping) */
104
+ events: SchedulerEvent[];
105
+ }
106
+ /**
107
+ * Position information for rendering an event
108
+ */
109
+ interface EventPosition {
110
+ /** Top position in pixels or percentage */
111
+ top: number;
112
+ /** Left position in pixels or percentage */
113
+ left: number;
114
+ /** Width in pixels or percentage */
115
+ width: number;
116
+ /** Height in pixels or percentage */
117
+ height: number;
118
+ /** Z-index for stacking */
119
+ zIndex: number;
120
+ }
121
+ /**
122
+ * Layout information for an event within its overlap group
123
+ * Used for colspan-based positioning algorithm
124
+ */
125
+ interface EventLayoutInfo {
126
+ /** Column index within the overlap group (0-based) */
127
+ col: number;
128
+ /** Number of columns this event can span */
129
+ colspan: number;
130
+ /** Total number of columns in the overlap group */
131
+ columnCount: number;
132
+ }
133
+
134
+ /**
135
+ * Represents a resource (e.g., a room, employee, machine)
136
+ */
137
+ interface Resource {
138
+ /** Unique identifier for the resource */
139
+ id: string;
140
+ /** Display title of the resource */
141
+ title: string;
142
+ /** Events assigned to this resource */
143
+ events?: SchedulerEvent[];
144
+ /** Background color for this resource's events */
145
+ color?: string;
146
+ /** Default event color for this resource */
147
+ eventColor?: string;
148
+ /** Sort order */
149
+ order?: number;
150
+ /** Custom properties for extending resource data */
151
+ extendedProps?: Record<string, unknown>;
152
+ }
153
+ /**
154
+ * Represents a group of resources (e.g., a department, category)
155
+ */
156
+ interface ResourceGroup {
157
+ /** Unique identifier for the group */
158
+ id: string;
159
+ /** Display title of the group */
160
+ title: string;
161
+ /** Child resources or nested groups */
162
+ children: (Resource | ResourceGroup)[];
163
+ /** Whether the group is collapsed in the UI */
164
+ collapsed?: boolean;
165
+ /** Background color for the group header */
166
+ color?: string;
167
+ /** Sort order */
168
+ order?: number;
169
+ }
170
+ /**
171
+ * Type guard to check if an item is a Resource
172
+ */
173
+ declare function isResource(item: Resource | ResourceGroup): item is Resource;
174
+ /**
175
+ * Type guard to check if an item is a ResourceGroup
176
+ */
177
+ declare function isResourceGroup(item: Resource | ResourceGroup): item is ResourceGroup;
178
+ /**
179
+ * Flattened resource with depth information for rendering
180
+ */
181
+ interface FlattenedResource {
182
+ /** The resource or group */
183
+ item: Resource | ResourceGroup;
184
+ /** Nesting depth (0 = top level) */
185
+ depth: number;
186
+ /** Whether this item is visible (not in a collapsed group) */
187
+ visible: boolean;
188
+ /** Parent group ID if any */
189
+ parentId?: string;
190
+ }
191
+
192
+ /**
193
+ * Represents a time slot in the scheduler grid
194
+ */
195
+ interface TimeSlot {
196
+ /** Start of the time slot */
197
+ start: Date;
198
+ /** End of the time slot */
199
+ end: Date;
200
+ }
201
+ /**
202
+ * A row of time slots with associated metadata
203
+ */
204
+ interface TimeSlotRow {
205
+ /** The time stamp for this row (e.g., 09:00) */
206
+ time: Date;
207
+ /** Label to display (e.g., "9:00 AM") */
208
+ label: string;
209
+ /** Individual slots for each column (day) */
210
+ slots: TimeSlot[];
211
+ }
212
+ /**
213
+ * Grid structure for the scheduler
214
+ */
215
+ interface SchedulerGrid {
216
+ /** Column headers (days) */
217
+ columns: Date[];
218
+ /** Row headers (times) */
219
+ rows: TimeSlotRow[];
220
+ /** All time slots flattened */
221
+ allSlots: TimeSlot[];
222
+ }
223
+
224
+ /**
225
+ * Business hours configuration
226
+ */
227
+ interface BusinessHours {
228
+ /** Days of the week when business hours apply (0 = Sunday) */
229
+ daysOfWeek: DayOfWeek[];
230
+ /** Start time in HH:mm format */
231
+ startTime: string;
232
+ /** End time in HH:mm format */
233
+ endTime: string;
234
+ }
235
+ /**
236
+ * Header toolbar configuration
237
+ */
238
+ interface HeaderToolbar {
239
+ /** Left section content */
240
+ start?: string;
241
+ /** Center section content */
242
+ center?: string;
243
+ /** Right section content */
244
+ end?: string;
245
+ }
246
+ /**
247
+ * Configuration options for the scheduler
248
+ */
249
+ interface SchedulerOptions {
250
+ /** Initial view to display */
251
+ initialView?: ViewType;
252
+ /** Initial date to display */
253
+ initialDate?: Date;
254
+ /** Locale for date formatting (e.g., 'en-US') */
255
+ locale?: string;
256
+ /** First day of the week (0 = Sunday, 1 = Monday) */
257
+ firstDayOfWeek?: DayOfWeek;
258
+ /** Timezone identifier (e.g., 'America/New_York') */
259
+ timeZone?: string;
260
+ /** Duration of each time slot in seconds (default: 1800 = 30 minutes) */
261
+ slotDuration?: number;
262
+ /** Interval between slot labels in seconds */
263
+ slotLabelInterval?: number;
264
+ /** Minimum time to display (e.g., '00:00:00') */
265
+ slotMinTime?: string;
266
+ /** Maximum time to display (e.g., '24:00:00') */
267
+ slotMaxTime?: string;
268
+ /** Time format (12h or 24h) */
269
+ timeFormat?: TimeFormat;
270
+ /** Business hours configuration */
271
+ businessHours?: BusinessHours;
272
+ /** Height of the scheduler ('auto', number in px, or CSS value) */
273
+ height?: 'auto' | number | string;
274
+ /** Height of the content area */
275
+ contentHeight?: 'auto' | number;
276
+ /** Aspect ratio for auto-sizing */
277
+ aspectRatio?: number;
278
+ /** Whether to expand rows to fill available space */
279
+ expandRows?: boolean;
280
+ /** Header toolbar configuration */
281
+ headerToolbar?: HeaderToolbar;
282
+ /** Whether events can be edited */
283
+ editable?: boolean;
284
+ /** Whether date ranges can be selected */
285
+ selectable?: boolean;
286
+ /** Whether to show a mirror element during selection */
287
+ selectMirror?: boolean;
288
+ /** Whether event duration can be changed */
289
+ eventDurationEditable?: boolean;
290
+ /** Whether event start time can be changed */
291
+ eventStartEditable?: boolean;
292
+ /** Duration of revert animation in ms */
293
+ dragRevertDuration?: number;
294
+ /** Whether to scroll during drag */
295
+ dragScroll?: boolean;
296
+ /** Snap duration in seconds */
297
+ snapDuration?: number;
298
+ /** Whether to show current time indicator */
299
+ nowIndicator?: boolean;
300
+ /** Whether to show week numbers */
301
+ weekNumbers?: boolean;
302
+ /** Text to display before week number */
303
+ weekText?: string;
304
+ /** Maximum events to show per day (true = show "+X more" link) */
305
+ dayMaxEvents?: boolean | number;
306
+ }
307
+ /**
308
+ * Default options for the scheduler
309
+ */
310
+ declare const DEFAULT_OPTIONS: Required<SchedulerOptions>;
311
+
312
+ /**
313
+ * State of a drag operation
314
+ */
315
+ interface DragState {
316
+ /** Type of drag operation */
317
+ type: DragOperationType;
318
+ /** Event being dragged (null for create operations) */
319
+ event: SchedulerEvent | null;
320
+ /** Starting time slot */
321
+ startSlot: TimeSlot;
322
+ /** Current time slot (updated during drag) */
323
+ currentSlot: TimeSlot;
324
+ /** Preview event showing where the event will be placed */
325
+ preview: PreviewEvent;
326
+ /** Resource being dragged to (for resource views) */
327
+ resource?: Resource;
328
+ /** Original event data (for reverting on cancel) */
329
+ originalEvent?: SchedulerEvent;
330
+ /** Metadata for the drag operation */
331
+ meta?: {
332
+ /** For resize: which end is being resized */
333
+ resizeHandle?: 'start' | 'end';
334
+ /** Offset from event start when drag began */
335
+ offsetMs?: number;
336
+ };
337
+ }
338
+ /**
339
+ * Result of a completed drag operation
340
+ */
341
+ interface DragResult {
342
+ /** Type of operation that was completed */
343
+ type: DragOperationType;
344
+ /** The event that was created or modified */
345
+ event: SchedulerEvent;
346
+ /** The previous event state (for move/resize) */
347
+ previousEvent?: SchedulerEvent;
348
+ /** Whether the operation was cancelled */
349
+ cancelled: boolean;
350
+ }
351
+
352
+ /**
353
+ * Base event detail interface
354
+ */
355
+ interface BaseEventDetail {
356
+ /** Original DOM event */
357
+ originalEvent?: Event;
358
+ }
359
+ /**
360
+ * Event click event detail
361
+ */
362
+ interface EventClickDetail extends BaseEventDetail {
363
+ /** The clicked event */
364
+ event: SchedulerEvent;
365
+ }
366
+ /**
367
+ * Event create event detail
368
+ */
369
+ interface EventCreateDetail extends BaseEventDetail {
370
+ /** The newly created event */
371
+ event: SchedulerEvent;
372
+ /** Resource the event was created on (if applicable) */
373
+ resource?: Resource;
374
+ }
375
+ /**
376
+ * Event update event detail
377
+ */
378
+ interface EventUpdateDetail extends BaseEventDetail {
379
+ /** The updated event */
380
+ event: SchedulerEvent;
381
+ /** The event before the update */
382
+ oldEvent: SchedulerEvent;
383
+ }
384
+ /**
385
+ * Event delete event detail
386
+ */
387
+ interface EventDeleteDetail extends BaseEventDetail {
388
+ /** The deleted event */
389
+ event: SchedulerEvent;
390
+ }
391
+ /**
392
+ * Date click event detail
393
+ */
394
+ interface DateClickDetail extends BaseEventDetail {
395
+ /** The clicked date */
396
+ date: Date;
397
+ /** Resource at the clicked location (if applicable) */
398
+ resource?: Resource;
399
+ }
400
+ /**
401
+ * Date select event detail
402
+ */
403
+ interface DateSelectDetail extends BaseEventDetail {
404
+ /** Start of the selected range */
405
+ start: Date;
406
+ /** End of the selected range */
407
+ end: Date;
408
+ /** Resource at the selected location (if applicable) */
409
+ resource?: Resource;
410
+ }
411
+ /**
412
+ * View change event detail
413
+ */
414
+ interface ViewChangeDetail {
415
+ /** The new view */
416
+ view: ViewType;
417
+ /** The current date in the new view */
418
+ date: Date;
419
+ }
420
+ /**
421
+ * Custom event map for the scheduler web component
422
+ */
423
+ interface SchedulerEventMap {
424
+ 'event-click': CustomEvent<EventClickDetail>;
425
+ 'event-dblclick': CustomEvent<EventClickDetail>;
426
+ 'event-create': CustomEvent<EventCreateDetail>;
427
+ 'event-update': CustomEvent<EventUpdateDetail>;
428
+ 'event-delete': CustomEvent<EventDeleteDetail>;
429
+ 'date-click': CustomEvent<DateClickDetail>;
430
+ 'date-select': CustomEvent<DateSelectDetail>;
431
+ 'view-change': CustomEvent<ViewChangeDetail>;
432
+ }
433
+
434
+ /**
435
+ * Service for date calculations and formatting
436
+ */
437
+ declare class DateService {
438
+ /**
439
+ * Get the start of the week for a given date
440
+ */
441
+ getWeekStart(date: Date, firstDayOfWeek?: DayOfWeek): Date;
442
+ /**
443
+ * Get all days in a week starting from a given date
444
+ */
445
+ getWeekDays(date: Date, firstDayOfWeek?: DayOfWeek): Date[];
446
+ /**
447
+ * Get the start of the month for a given date
448
+ */
449
+ getMonthStart(date: Date): Date;
450
+ /**
451
+ * Get the end of the month for a given date
452
+ */
453
+ getMonthEnd(date: Date): Date;
454
+ /**
455
+ * Get all days in a month
456
+ */
457
+ getMonthDays(date: Date): Date[];
458
+ /**
459
+ * Get weeks for a month view (includes days from adjacent months)
460
+ */
461
+ getMonthWeeks(date: Date, firstDayOfWeek?: DayOfWeek): Date[][];
462
+ /**
463
+ * Get the start of the year for a given date
464
+ */
465
+ getYearStart(date: Date): Date;
466
+ /**
467
+ * Get all months in a year
468
+ */
469
+ getYearMonths(date: Date): Date[];
470
+ /**
471
+ * Get time slots for a day
472
+ */
473
+ getTimeSlots(date: Date, slotDuration?: number, minTime?: string, maxTime?: string): TimeSlot[];
474
+ /**
475
+ * Generate a scheduler grid for week view
476
+ */
477
+ getWeekGrid(date: Date, firstDayOfWeek?: DayOfWeek, slotDuration?: number, minTime?: string, maxTime?: string, timeFormat?: TimeFormat): SchedulerGrid;
478
+ /**
479
+ * Round a date to the nearest slot
480
+ */
481
+ roundToSlot(date: Date, slotDuration: number): Date;
482
+ /**
483
+ * Floor a date to the slot start
484
+ */
485
+ floorToSlot(date: Date, slotDuration: number): Date;
486
+ /**
487
+ * Ceiling a date to the slot end
488
+ */
489
+ ceilToSlot(date: Date, slotDuration: number): Date;
490
+ /**
491
+ * Detect time format preference based on locale
492
+ * Uses the Intl API to determine if the locale uses 12-hour or 24-hour time
493
+ */
494
+ detectTimeFormat(locale?: string): TimeFormat;
495
+ /**
496
+ * Format time according to format preference
497
+ */
498
+ formatTime(date: Date, format?: TimeFormat): string;
499
+ /**
500
+ * Format date for display
501
+ */
502
+ formatDate(date: Date, locale?: string, options?: Intl.DateTimeFormatOptions): string;
503
+ /**
504
+ * Format date with weekday
505
+ */
506
+ formatDateWithWeekday(date: Date, locale?: string): string;
507
+ /**
508
+ * Get month name
509
+ */
510
+ getMonthName(date: Date, locale?: string, format?: 'long' | 'short'): string;
511
+ /**
512
+ * Get day name
513
+ */
514
+ getDayName(date: Date, locale?: string, format?: 'long' | 'short' | 'narrow'): string;
515
+ /**
516
+ * Check if two dates are the same day
517
+ */
518
+ isSameDay(date1: Date, date2: Date): boolean;
519
+ /**
520
+ * Check if two dates are the same month
521
+ */
522
+ isSameMonth(date1: Date, date2: Date): boolean;
523
+ /**
524
+ * Check if a date is today
525
+ */
526
+ isToday(date: Date): boolean;
527
+ /**
528
+ * Check if a date is in the past
529
+ */
530
+ isPast(date: Date): boolean;
531
+ /**
532
+ * Check if a date falls within a range
533
+ */
534
+ isInRange(date: Date, start: Date, end: Date): boolean;
535
+ /**
536
+ * Get the number of days between two dates
537
+ */
538
+ getDaysDifference(date1: Date, date2: Date): number;
539
+ /**
540
+ * Add days to a date
541
+ */
542
+ addDays(date: Date, days: number): Date;
543
+ /**
544
+ * Add weeks to a date
545
+ */
546
+ addWeeks(date: Date, weeks: number): Date;
547
+ /**
548
+ * Add months to a date
549
+ */
550
+ addMonths(date: Date, months: number): Date;
551
+ /**
552
+ * Add years to a date
553
+ */
554
+ addYears(date: Date, years: number): Date;
555
+ /**
556
+ * Get week number of the year
557
+ */
558
+ getWeekNumber(date: Date): number;
559
+ /**
560
+ * Get seconds from midnight for a date
561
+ */
562
+ getSecondsFromMidnight(date: Date): number;
563
+ /**
564
+ * Get duration in seconds between two dates
565
+ */
566
+ getDurationInSeconds(start: Date, end: Date): number;
567
+ }
568
+ /**
569
+ * Singleton instance of DateService
570
+ */
571
+ declare const dateService: DateService;
572
+
573
+ /**
574
+ * Service for timeline calculations and event track assignment
575
+ */
576
+ declare class TimelineService {
577
+ /**
578
+ * Split an event into daily parts
579
+ * Each part represents one day of a multi-day event
580
+ */
581
+ splitInParts(event: SchedulerEvent | PreviewEvent): SchedulerEventWithParts;
582
+ /**
583
+ * Calculate total days an event spans
584
+ */
585
+ private getTotalDays;
586
+ /**
587
+ * Assign events to tracks (rails) to minimize overlapping
588
+ * This method should be called when events are updated, NOT during drag operations
589
+ */
590
+ getTimeline(events: SchedulerEvent[]): TimelineTrack[];
591
+ /**
592
+ * Get track assignment for event parts using colspan algorithm (for rendering)
593
+ *
594
+ * This uses a colspan-based algorithm similar to Outlook/Google Calendar:
595
+ * 1. Build overlap groups (connected components of overlapping events)
596
+ * 2. Assign columns within each group using a greedy algorithm
597
+ * 3. Compute colspan - how many columns each event can span
598
+ *
599
+ * This ensures events are displayed as wide as possible:
600
+ * - An event with no overlapping events gets 100% width
601
+ * - Events only share space with events they actually overlap with
602
+ * - An event can span multiple columns if there's no blocking event to its right
603
+ */
604
+ getTimelinedParts(eventParts: SchedulerEventPart[]): {
605
+ part: SchedulerEventPart;
606
+ trackIndex: number;
607
+ totalTracks: number;
608
+ colspan: number;
609
+ }[];
610
+ /**
611
+ * Compute colspan-based layout for events (Outlook/Google Calendar algorithm)
612
+ *
613
+ * Phase 1: Build overlap groups (connected components)
614
+ * Phase 2: Assign columns within each group
615
+ * Phase 3: Compute colspan for each event
616
+ */
617
+ getColspanLayout(events: SchedulerEvent[]): Map<string, EventLayoutInfo>;
618
+ /**
619
+ * Build overlap groups (connected components)
620
+ * Events belong to the same group if they overlap directly or indirectly
621
+ *
622
+ * Optimized to reduce comparisons by pre-sorting events by start time
623
+ * and breaking early when events can no longer overlap
624
+ */
625
+ private buildOverlapGroups;
626
+ /**
627
+ * Assign columns to events within an overlap group
628
+ * Uses a greedy algorithm: place each event in the first available column
629
+ * Returns the column assignments and total column count
630
+ */
631
+ private assignColumns;
632
+ /**
633
+ * Compute colspan for an event
634
+ * An event can span multiple columns if there's no overlapping event to its right
635
+ */
636
+ private computeColspan;
637
+ /**
638
+ * Check if two events overlap in time
639
+ */
640
+ private eventsOverlap;
641
+ /**
642
+ * Calculate the relative track position for an event part (legacy method)
643
+ * @deprecated Use getColspanLayout instead for better layout
644
+ */
645
+ private getRelativeTrackPosition;
646
+ /**
647
+ * Filter events that fall within a date range
648
+ */
649
+ filterByRange(events: SchedulerEvent[], start: Date, end: Date): SchedulerEvent[];
650
+ /**
651
+ * Filter event parts that fall within a date range
652
+ */
653
+ filterPartsByRange(parts: SchedulerEventPart[], start: Date, end: Date): SchedulerEventPart[];
654
+ /**
655
+ * Get all unique timestamps from events (both start and end times)
656
+ */
657
+ private getUniqueTimestamps;
658
+ /**
659
+ * Check if a track has space for an event (no overlapping)
660
+ */
661
+ private isTrackFreeForEvent;
662
+ /**
663
+ * Get events for a specific day
664
+ */
665
+ getEventsForDay(events: SchedulerEvent[], day: Date): SchedulerEvent[];
666
+ /**
667
+ * Get event parts for a specific day
668
+ */
669
+ getPartsForDay(parts: SchedulerEventPart[], day: Date): SchedulerEventPart[];
670
+ }
671
+ /**
672
+ * Singleton instance of TimelineService
673
+ */
674
+ declare const timelineService: TimelineService;
675
+
676
+ /**
677
+ * Service for calculating event positions within the grid
678
+ */
679
+ declare class PositionService {
680
+ /**
681
+ * Calculate position for an event part in week/day view
682
+ */
683
+ calculateWeekPosition(part: SchedulerEventPart, trackIndex: number, totalTracks: number, dayIndex: number, totalDays: number, options?: Partial<SchedulerOptions>): EventPosition;
684
+ /**
685
+ * Calculate position for an event in timeline view
686
+ */
687
+ calculateTimelinePosition(part: SchedulerEventPart, trackIndex: number, totalTracks: number, viewStart: Date, viewEnd: Date, options?: Partial<SchedulerOptions>): EventPosition;
688
+ /**
689
+ * Calculate position for an all-day event in month view
690
+ */
691
+ calculateMonthEventPosition(part: SchedulerEventPart, rowIndex: number, maxRows: number, startDayIndex: number, endDayIndex: number, totalDays?: number): EventPosition;
692
+ /**
693
+ * Convert percentage-based position to pixel-based
694
+ */
695
+ toPixelPosition(position: EventPosition, containerWidth: number, containerHeight: number): EventPosition;
696
+ /**
697
+ * Generate CSS styles from position
698
+ */
699
+ toStyleString(position: EventPosition, unit?: 'px' | '%'): string;
700
+ /**
701
+ * Generate CSS object from position
702
+ */
703
+ toStyleObject(position: EventPosition, unit?: 'px' | '%'): Record<string, string>;
704
+ }
705
+ /**
706
+ * Singleton instance of PositionService
707
+ */
708
+ declare const positionService: PositionService;
709
+
710
+ /**
711
+ * Service for resource and resource group operations
712
+ */
713
+ declare class ResourceService {
714
+ /**
715
+ * Flatten a hierarchical resource structure for rendering
716
+ */
717
+ flatten(items: (Resource | ResourceGroup)[], collapsedIds?: Set<string>, depth?: number, parentId?: string, parentCollapsed?: boolean): FlattenedResource[];
718
+ /**
719
+ * Get all resources (leaf nodes) from a hierarchical structure
720
+ */
721
+ getAllResources(items: (Resource | ResourceGroup)[]): Resource[];
722
+ /**
723
+ * Get all events from all resources
724
+ */
725
+ getAllEvents(items: (Resource | ResourceGroup)[]): SchedulerEvent[];
726
+ /**
727
+ * Find a resource by ID
728
+ */
729
+ findResourceById(items: (Resource | ResourceGroup)[], id: string): Resource | undefined;
730
+ /**
731
+ * Find a resource group by ID
732
+ */
733
+ findGroupById(items: (Resource | ResourceGroup)[], id: string): ResourceGroup | undefined;
734
+ /**
735
+ * Find any item (resource or group) by ID
736
+ */
737
+ findById(items: (Resource | ResourceGroup)[], id: string): Resource | ResourceGroup | undefined;
738
+ /**
739
+ * Add an event to a resource
740
+ */
741
+ addEventToResource(items: (Resource | ResourceGroup)[], resourceId: string, event: SchedulerEvent): (Resource | ResourceGroup)[];
742
+ /**
743
+ * Update an event in a resource
744
+ */
745
+ updateEventInResource(items: (Resource | ResourceGroup)[], event: SchedulerEvent): (Resource | ResourceGroup)[];
746
+ /**
747
+ * Remove an event from all resources
748
+ */
749
+ removeEvent(items: (Resource | ResourceGroup)[], eventId: string): (Resource | ResourceGroup)[];
750
+ /**
751
+ * Move an event from one resource to another
752
+ */
753
+ moveEventToResource(items: (Resource | ResourceGroup)[], eventId: string, newResourceId: string, updatedEvent?: Partial<SchedulerEvent>): (Resource | ResourceGroup)[];
754
+ /**
755
+ * Toggle collapse state of a group
756
+ */
757
+ toggleGroupCollapse(items: (Resource | ResourceGroup)[], groupId: string): (Resource | ResourceGroup)[];
758
+ /**
759
+ * Set collapse state of a group
760
+ */
761
+ setGroupCollapse(items: (Resource | ResourceGroup)[], groupId: string, collapsed: boolean): (Resource | ResourceGroup)[];
762
+ /**
763
+ * Collapse all groups
764
+ */
765
+ collapseAll(items: (Resource | ResourceGroup)[]): (Resource | ResourceGroup)[];
766
+ /**
767
+ * Expand all groups
768
+ */
769
+ expandAll(items: (Resource | ResourceGroup)[]): (Resource | ResourceGroup)[];
770
+ /**
771
+ * Map over all resources in the hierarchy
772
+ */
773
+ private mapResources;
774
+ /**
775
+ * Map over all groups in the hierarchy
776
+ */
777
+ private mapGroups;
778
+ /**
779
+ * Get the total count of visible resources
780
+ */
781
+ getVisibleResourceCount(items: (Resource | ResourceGroup)[], collapsedIds?: Set<string>): number;
782
+ /**
783
+ * Sort resources by order property
784
+ */
785
+ sortByOrder(items: (Resource | ResourceGroup)[]): (Resource | ResourceGroup)[];
786
+ }
787
+ /**
788
+ * Singleton instance of ResourceService
789
+ */
790
+ declare const resourceService: ResourceService;
791
+
792
+ /**
793
+ * Generate a unique ID
794
+ */
795
+ declare function generateId(prefix?: string): string;
796
+ /**
797
+ * Generate a unique event ID
798
+ */
799
+ declare function generateEventId(): string;
800
+ /**
801
+ * Generate a unique resource ID
802
+ */
803
+ declare function generateResourceId(): string;
804
+ /**
805
+ * Generate a unique group ID
806
+ */
807
+ declare function generateGroupId(): string;
808
+
809
+ /**
810
+ * Default colors for events
811
+ */
812
+ declare const DEFAULT_COLORS: string[];
813
+ /**
814
+ * Get a color by index (cycles through default colors)
815
+ */
816
+ declare function getColorByIndex(index: number): string;
817
+ /**
818
+ * Calculate contrasting text color (black or white) for a background
819
+ */
820
+ declare function getContrastColor(backgroundColor: string): string;
821
+ /**
822
+ * Lighten a color by a percentage
823
+ */
824
+ declare function lightenColor(color: string, percent: number): string;
825
+ /**
826
+ * Darken a color by a percentage
827
+ */
828
+ declare function darkenColor(color: string, percent: number): string;
829
+ /**
830
+ * Add alpha (opacity) to a color
831
+ */
832
+ declare function addAlpha(color: string, alpha: number): string;
833
+
834
+ /**
835
+ * Get element by data attributes (used for finding time slots)
836
+ */
837
+ declare function getElementByData(container: Element, dataAttributes: Record<string, string>): Element | null;
838
+ /**
839
+ * Get data attributes from an element
840
+ */
841
+ declare function getDataAttributes(element: Element): Record<string, string>;
842
+ /**
843
+ * Find closest ancestor with a data attribute
844
+ */
845
+ declare function findClosestWithData(element: Element, dataAttribute: string): Element | null;
846
+ /**
847
+ * Get scroll position relative to an element
848
+ */
849
+ declare function getScrollPosition(element: Element): {
850
+ top: number;
851
+ left: number;
852
+ };
853
+ /**
854
+ * Scroll to a specific time in the scheduler
855
+ */
856
+ declare function scrollToTime(container: Element, timeElement: Element, behavior?: ScrollBehavior): void;
857
+ /**
858
+ * Check if an element is in viewport
859
+ */
860
+ declare function isInViewport(element: Element, container?: Element): boolean;
861
+ /**
862
+ * Get pointer position relative to an element
863
+ */
864
+ declare function getRelativePosition(event: MouseEvent | TouchEvent, element: Element): {
865
+ x: number;
866
+ y: number;
867
+ };
868
+ /**
869
+ * Create a CSS variable setter for theming
870
+ */
871
+ declare function setCSSVariable(element: HTMLElement, name: string, value: string): void;
872
+ /**
873
+ * Get computed CSS variable value
874
+ */
875
+ declare function getCSSVariable(element: HTMLElement, name: string): string;
876
+ /**
877
+ * Add multiple CSS classes
878
+ */
879
+ declare function addClasses(element: Element, ...classes: string[]): void;
880
+ /**
881
+ * Remove multiple CSS classes
882
+ */
883
+ declare function removeClasses(element: Element, ...classes: string[]): void;
884
+ /**
885
+ * Toggle CSS class based on condition
886
+ */
887
+ declare function toggleClass(element: Element, className: string, condition: boolean): void;
888
+
889
+ export { DEFAULT_COLORS, DEFAULT_OPTIONS, DateService, PositionService, ResourceService, TimelineService, addAlpha, addClasses, darkenColor, dateService, findClosestWithData, generateEventId, generateGroupId, generateId, generateResourceId, getCSSVariable, getColorByIndex, getContrastColor, getDataAttributes, getElementByData, getRelativePosition, getScrollPosition, isInViewport, isResource, isResourceGroup, lightenColor, positionService, removeClasses, resourceService, scrollToTime, setCSSVariable, timelineService, toggleClass };
890
+ export type { BaseEventDetail, BusinessHours, DateClickDetail, DateSelectDetail, DayOfWeek, DisplayMode, DragOperationType, DragResult, DragState, EventClickDetail, EventCreateDetail, EventDeleteDetail, EventLayoutInfo, EventPosition, EventUpdateDetail, FlattenedResource, HeaderToolbar, PreviewEvent, Resource, ResourceGroup, SchedulerEvent, SchedulerEventMap, SchedulerEventPart, SchedulerEventWithParts, SchedulerGrid, SchedulerOptions, TimeFormat, TimeSlot, TimeSlotRow, TimelineTrack, ViewChangeDetail, ViewType };