@revolist/ui 4.0.2-rc → 4.0.2

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 (343) hide show
  1. package/LICENSE +21 -0
  2. package/MIGRATION.md +36 -0
  3. package/OWNERSHIP.md +32 -32
  4. package/README.md +405 -265
  5. package/_button.scss +6 -2
  6. package/_chunks/arrow-up-Cw8hW9vp.js +4 -0
  7. package/_chunks/calculator-CDWOuAcp.js +4 -0
  8. package/_chunks/{calendar-CpaUK7w1.js → calendar-CgXQgkga.js} +28 -18
  9. package/_chunks/chart-frame-hcOlnQ1K.js +145 -0
  10. package/_chunks/{chevron-right-sxHQMSkq.js → check-BwI7iCAm.js} +2 -2
  11. package/_chunks/{chevron-left-D0nc4Z5S.js → chevron-right-CM3ljziP.js} +2 -2
  12. package/_chunks/choice-chips-SkllS5Kl.js +126 -0
  13. package/_chunks/clock-BOhPNlW3.js +4 -0
  14. package/_chunks/{color-palette-BBMFmUNA.js → color-palette-DMJUChWC.js} +20 -22
  15. package/_chunks/{color-picker-D90Jg-M8.js → color-picker-BpCTuIdm.js} +77 -72
  16. package/_chunks/{component-YDcfoOLz.js → component-CfeHXgIw.js} +301 -282
  17. package/_chunks/{component-metadata-BENbgTjU.js → component-metadata-BKd7U8OW.js} +0 -12
  18. package/_chunks/configurator-actions-DnStE6Yl.js +155 -0
  19. package/_chunks/configurator-field-icon-CmcM_sPs.js +53 -0
  20. package/_chunks/control-Dcrjsunl.js +118 -0
  21. package/_chunks/{controls-DIum-E66.js → controls-B_6NJarZ.js} +217 -182
  22. package/_chunks/{date-control-BJSzu79z.js → date-control-C4h4m75W.js} +1 -1
  23. package/_chunks/{date-time-BxPJusp9.js → date-time-CTOSbzb0.js} +344 -307
  24. package/_chunks/{delete-button-Bblyah10.js → delete-button-CW9vjLnk.js} +6 -6
  25. package/_chunks/dialog.parts-3w5FR06n.js +131 -0
  26. package/_chunks/{duration-87U2EoMS.js → duration-Bf2OS1V5.js} +19 -18
  27. package/_chunks/editor-popup-ByU7qiub.js +82 -0
  28. package/_chunks/field-configurator-D5dZRhDe.js +288 -0
  29. package/_chunks/field-context-D57PnBbH.js +5 -0
  30. package/_chunks/{framework-mount-C-Zwm44H.js → framework-mount-Bk4O_T7T.js} +1 -1
  31. package/_chunks/icon-toolbar-DSjOdwM7.js +134 -0
  32. package/_chunks/magnifying-glass-CvrTDSkB.js +4 -0
  33. package/_chunks/minus-BOAR3A1C.js +4 -0
  34. package/_chunks/mount-BRdcG60g.js +267 -0
  35. package/_chunks/{native.view-ByyZ1CT5.js → native-Blr3byjO.js} +1 -1
  36. package/_chunks/native-control-B_fVA5bL.js +649 -0
  37. package/_chunks/{number-input-BeIadZuL.js → number-input-CmM6_2vR.js} +7 -7
  38. package/_chunks/{picker-DpP7iQLA.js → picker-DTqET-2W.js} +2 -2
  39. package/_chunks/plus-CbGRkIGl.js +4 -0
  40. package/_chunks/popover-controller-D-AvKQ7B.js +102 -0
  41. package/_chunks/popup-C35Isk7p.js +378 -0
  42. package/_chunks/{rating-choice-Ca8ZBty3.js → rating-choice-C-6wcb9U.js} +1 -1
  43. package/_chunks/render-m5eMMwFR.js +83 -0
  44. package/_chunks/{reorder-list-Cc3KmfAN.js → reorder-list-DIl1gkV6.js} +1 -1
  45. package/_chunks/request-trail-DrhdpWiH.js +762 -0
  46. package/_chunks/rich-text-BnilBbhU.js +842 -0
  47. package/_chunks/rotate-left-BF6G883o.js +4 -0
  48. package/_chunks/rotate-right-Iha5ScJ1.js +4 -0
  49. package/_chunks/selection-list-tooltips-C5oMJe26.js +42 -0
  50. package/_chunks/title-tooltip-Cw6LOZhb.js +11 -0
  51. package/_chunks/tooltip-D4xkio5G.js +54 -0
  52. package/_chunks/tooltip-owner-DjdvqKzz.js +19 -0
  53. package/_chunks/tooltip-session-B6X6x8G_.js +110 -0
  54. package/_chunks/tooltip-text-BXsUEmBH.js +12 -0
  55. package/_chunks/top-layer-popup-CNSDdfJV.js +59 -0
  56. package/_dialog.scss +55 -21
  57. package/_form.scss +71 -21
  58. package/_legend.scss +25 -7
  59. package/_shared/data-query/index.d.ts +2 -2
  60. package/_shared/data-query/load-options.d.ts +2 -2
  61. package/_variables.scss +34 -32
  62. package/_view-switcher.scss +6 -0
  63. package/activity-message.d.ts +1 -1
  64. package/ai/_chat.scss +227 -0
  65. package/ai/_style.scss +170 -39
  66. package/ai/chat.d.ts +65 -0
  67. package/ai/components.d.ts +34 -5
  68. package/ai/index.d.ts +3 -0
  69. package/ai/index.js +3 -3
  70. package/ai/mount.d.ts +59 -6
  71. package/ai/prompt-history.d.ts +13 -0
  72. package/ai/request-trail.d.ts +9 -3
  73. package/ai/results/_style.scss +83 -0
  74. package/ai/results/index.d.ts +11 -0
  75. package/ai/results/metrics.d.ts +5 -0
  76. package/ai/results/table.d.ts +5 -0
  77. package/ai/results/text.d.ts +5 -0
  78. package/ai/results/types.d.ts +29 -0
  79. package/ai/transcript.d.ts +27 -0
  80. package/ai/translations.d.ts +1 -1
  81. package/angular/angular.d.ts +1 -1
  82. package/angular/angular.js +13 -10
  83. package/assignee/assignee.scss +28 -6
  84. package/assignee/index.js +34 -35
  85. package/avatar/avatar.style.scss +23 -6
  86. package/avatar/index.d.ts +25 -2
  87. package/avatar/index.js +33 -32
  88. package/badge.d.ts +1 -1
  89. package/badge.view.d.ts +8 -0
  90. package/brush-range/_brush-range.scss +55 -49
  91. package/brush-range/component.d.ts +1 -3
  92. package/brush-range/component.js +27 -27
  93. package/buttons/delete-button.d.ts +2 -1
  94. package/buttons/delete-button.js +1 -1
  95. package/buttons/delete-button.style.scss +6 -2
  96. package/buttons/remove-button.d.ts +1 -1
  97. package/buttons/remove-button.js +1 -1
  98. package/buttons/remove-button.style.scss +1 -1
  99. package/buttons/svg-button.d.ts +2 -1
  100. package/buttons/svg-button.js +19 -19
  101. package/calendar/_calendar.scss +27 -26
  102. package/calendar/calendar.js +1 -1
  103. package/calendar/header.js +1 -2
  104. package/calendar/index.js +2 -2
  105. package/cell-input.scss +3 -7
  106. package/cell-visuals/badge.style.scss +6 -3
  107. package/cell-visuals/bar-chart.style.scss +2 -1
  108. package/cell-visuals/column-type.style.css +12 -0
  109. package/cell-visuals/progress-line-value.renderer.style.scss +4 -2
  110. package/cell-visuals/progress-line.style.scss +1 -4
  111. package/cell-visuals/sparkline.style.scss +2 -1
  112. package/cell-visuals/timeline.style.css +4 -2
  113. package/checkbox/checkbox.scss +6 -24
  114. package/choice-chips/index.d.ts +3 -1
  115. package/choice-chips/index.js +1 -1
  116. package/color-palette/color-palette.js +1 -1
  117. package/color-palette/color-palette.style.scss +88 -25
  118. package/color-palette/color-picker.js +2 -2
  119. package/color-palette/color-picker.style.scss +23 -10
  120. package/color-palette/common-palettes.d.ts +1 -1
  121. package/color-palette/common-palettes.js +1 -1
  122. package/color-palette/native.d.ts +15 -2
  123. package/component-catalog.d.ts +24 -11
  124. package/configurator-actions.d.ts +67 -0
  125. package/configurator-actions.js +1 -0
  126. package/configurator-aggregation-list.d.ts +14 -0
  127. package/configurator-aggregation-list.js +63 -0
  128. package/configurator-drop-zone.d.ts +39 -0
  129. package/configurator-drop-zone.js +66 -0
  130. package/configurator-field-icon.d.ts +10 -0
  131. package/configurator-field-icon.js +1 -0
  132. package/configurator-focus.d.ts +4 -0
  133. package/configurator-focus.js +39 -0
  134. package/configurator-sections.d.ts +42 -0
  135. package/configurator-sections.js +71 -0
  136. package/control-attributes.js +7 -7
  137. package/control-presentation.d.ts +8 -2
  138. package/control-presentation.js +25 -20
  139. package/controls.d.ts +19 -7
  140. package/controls.js +4 -3
  141. package/core/editor-popup-position.d.ts +6 -2
  142. package/core/editor-popup.d.ts +4 -0
  143. package/core/editor-popup.js +1 -1
  144. package/core/popover-controller.d.ts +35 -0
  145. package/core/popup-ownership.d.ts +2 -0
  146. package/core/selection-list-tooltips.d.ts +2 -0
  147. package/core/title-tooltip.d.ts +2 -0
  148. package/core/tooltip-session.d.ts +29 -0
  149. package/core/tooltip-surface.d.ts +13 -0
  150. package/core/tooltip-text.d.ts +6 -0
  151. package/core/tooltip.d.ts +35 -0
  152. package/core/top-layer-popup.d.ts +4 -0
  153. package/core/top-layer-popup.js +1 -23
  154. package/date-time/attach.d.ts +1 -1
  155. package/date-time/date-control.d.ts +1 -1
  156. package/date-time/field.d.ts +3 -2
  157. package/date-time/index.js +1 -1
  158. package/date-time/style.scss +242 -39
  159. package/date-time/time-selection.d.ts +3 -1
  160. package/date-time/types.d.ts +5 -1
  161. package/dialog/dialog-action-footer.d.ts +17 -2
  162. package/dialog/dialog.dom.d.ts +15 -2
  163. package/dialog/dialog.dom.js +3 -3
  164. package/dialog/dialog.parts.d.ts +1 -1
  165. package/dialog/dialog.parts.js +1 -1
  166. package/distribution-chart/_distribution-chart.scss +113 -77
  167. package/distribution-chart/area-chart.js +1 -1
  168. package/distribution-chart/bar-chart.d.ts +5 -2
  169. package/distribution-chart/bar-chart.js +7 -3
  170. package/distribution-chart/chart-frame.d.ts +2 -1
  171. package/distribution-chart/index.d.ts +1 -1
  172. package/distribution-chart/line-chart.js +1 -1
  173. package/dropdown/content.d.ts +2 -1
  174. package/dropdown/content.js +1 -142
  175. package/dropdown/control.d.ts +14 -0
  176. package/dropdown/control.js +1 -0
  177. package/dropdown/control.view.d.ts +6 -0
  178. package/dropdown/dropdown.types.d.ts +5 -1
  179. package/dropdown/editor-dropdown.style.scss +54 -16
  180. package/dropdown/index.d.ts +1 -1
  181. package/dropdown/index.js +3 -4
  182. package/dropdown/lookup-field.d.ts +5 -0
  183. package/dropdown/lookup-field.js +2 -1
  184. package/dropdown/popup.d.ts +2 -2
  185. package/dropdown/popup.js +1 -141
  186. package/duration/index.js +1 -1
  187. package/duration/style.scss +1 -1
  188. package/editor-actions.js +1 -1
  189. package/editor-layout/index.d.ts +4 -4
  190. package/editor-layout/index.js +39 -34
  191. package/editor-layout/style.scss +82 -18
  192. package/field-configurator.d.ts +39 -1
  193. package/field-configurator.js +4 -170
  194. package/field-expansion.d.ts +9 -0
  195. package/fieldset.d.ts +3 -0
  196. package/filter/filters/slider/_single-slider.scss +57 -38
  197. package/filter/filters/slider/_slider.scss +41 -33
  198. package/filter/filters/slider/control.js +2 -0
  199. package/filter/filters/slider/runtime.js +49 -22
  200. package/filter/filters/slider/single.js +1 -1
  201. package/filter-badge.js +1 -1
  202. package/filter-controls.d.ts +0 -1
  203. package/filter-controls.js +9 -10
  204. package/form-controls/field-context.d.ts +5 -0
  205. package/form-controls/index.d.ts +10 -2
  206. package/form-controls/index.js +4 -9
  207. package/form-controls/presentation.d.ts +1 -1
  208. package/form-controls/presentation.js +53 -45
  209. package/formatting/index.d.ts +1 -1
  210. package/formatting/index.js +40 -35
  211. package/formatting/styles.scss +14 -57
  212. package/framework.js +237 -226
  213. package/history-controls.d.ts +14 -0
  214. package/history-controls.js +27 -0
  215. package/icon-toolbar.d.ts +62 -0
  216. package/icon-toolbar.js +1 -0
  217. package/icons/icon.d.ts +1 -1
  218. package/legend.d.ts +1 -1
  219. package/masked-input/index.js +1 -1
  220. package/native-control.d.ts +6 -5
  221. package/native-control.js +3 -26
  222. package/native-controls.d.ts +54 -2
  223. package/native-styles.css +1 -1
  224. package/native-styles.scss +6 -2
  225. package/native.d.ts +3 -3
  226. package/native.js +41 -37
  227. package/number-input/index.d.ts +1 -1
  228. package/number-input/index.js +1 -1
  229. package/package.json +88 -14
  230. package/pagination.d.ts +3 -0
  231. package/pagination.js +50 -40
  232. package/pdf-viewer/header.d.ts +1 -1
  233. package/pdf-viewer/index.d.ts +2 -2
  234. package/pdf-viewer/index.js +1 -1
  235. package/pdf-viewer/search-bar.d.ts +1 -1
  236. package/pdf-viewer/status.d.ts +1 -1
  237. package/pdf-viewer/style.scss +205 -45
  238. package/pickers.d.ts +5 -1
  239. package/preact-mount.js +1 -1
  240. package/preact.d.ts +15 -10
  241. package/preact.js +109 -64
  242. package/progress/_bar.scss +9 -3
  243. package/progress/_circular.scss +2 -1
  244. package/rating-choice.js +1 -1
  245. package/react-adapter.d.ts +4 -2
  246. package/react-control.d.ts +1 -0
  247. package/react.d.ts +20 -11
  248. package/react.js +72 -88
  249. package/reorder-list.d.ts +1 -1
  250. package/reorder-list.js +1 -1
  251. package/reorder-list.scss +59 -17
  252. package/resource-picker/resource-picker-popup.js +1 -1
  253. package/resource-picker/resource-picker.js +73 -71
  254. package/resource-picker/resource-picker.scss +66 -35
  255. package/rich-text/engine.d.ts +17 -19
  256. package/rich-text/format-html.d.ts +2 -0
  257. package/rich-text/index.d.ts +11 -7
  258. package/rich-text/index.js +1 -1
  259. package/rich-text/model.d.ts +6 -3
  260. package/rich-text/render-model.d.ts +4 -5
  261. package/rich-text/style.scss +295 -55
  262. package/rich-text/syntax.d.ts +5 -2
  263. package/rich-text/toolbar.d.ts +6 -6
  264. package/rich-text/translations.d.ts +5 -15
  265. package/search-input/index.js +1 -1
  266. package/search-input/native.d.ts +21 -2
  267. package/select.d.ts +22 -0
  268. package/select.js +1 -0
  269. package/selection-list.d.ts +1 -0
  270. package/selection-list.js +3 -1
  271. package/status-feedback/exit-snapshot.js +1 -1
  272. package/status-feedback/index.js +2 -2
  273. package/status-feedback/popover.js +9 -9
  274. package/status-feedback/render.js +3 -44
  275. package/status-feedback/status-feedback.scss +130 -34
  276. package/status-feedback/types.d.ts +4 -0
  277. package/status-feedback/use-auto-dismiss.d.ts +3 -0
  278. package/styles/_activity-message.scss +24 -7
  279. package/styles/_alert.scss +78 -17
  280. package/styles/_cell-editor-frame.scss +11 -0
  281. package/styles/_compositions.scss +404 -82
  282. package/styles/_control.scss +42 -12
  283. package/styles/_disclosure.scss +15 -5
  284. package/styles/_editor-counter.scss +16 -6
  285. package/styles/_editor-slider.scss +8 -4
  286. package/styles/_field-configurator.scss +321 -23
  287. package/styles/_fields-grid.scss +49 -0
  288. package/styles/_filter-controls.scss +10 -2
  289. package/styles/_icon-action.scss +48 -15
  290. package/styles/_loading.scss +12 -3
  291. package/styles/_motion.scss +32 -9
  292. package/styles/_palette.scss +0 -24
  293. package/styles/_primitives.scss +376 -116
  294. package/styles/_theme.scss +130 -86
  295. package/styles/_thresholds.scss +28 -25
  296. package/styles/_time-grid.scss +8 -3
  297. package/styles/_tokens.scss +6 -1
  298. package/styles/configurator-actions.scss +241 -0
  299. package/styles/pagination.css +213 -0
  300. package/styles/{legacy-rating.css → rating.css} +8 -3
  301. package/styles.css +1 -1
  302. package/styles.scss +3 -5
  303. package/surfaces.d.ts +38 -2
  304. package/surfaces.js +37 -134
  305. package/svelte/UiComponent.server.js +1 -48
  306. package/svelte/UiComponent.svelte +44 -32
  307. package/svelte.d.ts +1 -1
  308. package/svelte.js +33 -68
  309. package/switch/index.js +15 -14
  310. package/time-grid.d.ts +0 -1
  311. package/time-grid.js +38 -37
  312. package/timeline-track/_style.scss +96 -24
  313. package/timeline-track/component.d.ts +5 -1
  314. package/timeline-track/index.js +71 -54
  315. package/timeline-track/model.d.ts +9 -0
  316. package/timeline-track/model.js +10 -1
  317. package/ui.css +1 -1
  318. package/view-switcher.d.ts +23 -0
  319. package/vue.d.ts +51 -35
  320. package/vue.js +149 -178
  321. package/_chunks/chart-frame-BC99KjGa.js +0 -127
  322. package/_chunks/choice-chips-Cs4D-3nH.js +0 -110
  323. package/_chunks/compat.module-DDB2pm9O.js +0 -229
  324. package/_chunks/control-tooltip-ztgmsG7H.js +0 -100
  325. package/_chunks/dialog.parts-DBqo3Qwb.js +0 -134
  326. package/_chunks/dropdown-voWqmwAe.js +0 -357
  327. package/_chunks/editor-popup-D3JdS8l3.js +0 -81
  328. package/_chunks/mount-DZe_6VtR.js +0 -90
  329. package/_chunks/request-trail-IdNiFvKH.js +0 -347
  330. package/_chunks/rich-text-BzI1DyfF.js +0 -477
  331. package/avatar/index.view.d.ts +0 -25
  332. package/color-palette/native.view.d.ts +0 -15
  333. package/control-presentation.view.d.ts +0 -8
  334. package/dialog/dialog-action-footer.view.d.ts +0 -20
  335. package/dialog/dialog.dom.view.d.ts +0 -15
  336. package/form-controls/index.view.d.ts +0 -12
  337. package/formatting/control-tooltip.d.ts +0 -27
  338. package/native-controls.view.d.ts +0 -54
  339. package/react-native-select.d.ts +0 -6
  340. package/search-input/native.view.d.ts +0 -21
  341. package/styles/legacy-pagination.css +0 -112
  342. package/surfaces.view.d.ts +0 -63
  343. package/vue-native-select.d.ts +0 -9
package/time-grid.js CHANGED
@@ -1,23 +1,24 @@
1
1
  import { r as e, t } from "./_chunks/hooks.module-CG3gN83z.js";
2
2
  import { t as n } from "./_chunks/jsxRuntime.module-F6UFnpT-.js";
3
- import { ButtonControl as r } from "./native-control.js";
3
+ import { t as r } from "./_chunks/native-control-B_fVA5bL.js";
4
+ import { t as i } from "./_chunks/tooltip-text-BXsUEmBH.js";
4
5
  //#region src/time-grid.tsx
5
- var i = (e, t) => `${e}:${t}`;
6
- function a(e) {
6
+ var a = (e, t) => `${e}:${t}`;
7
+ function o(e) {
7
8
  return [
8
9
  "rv-time-grid__cell",
9
10
  e.weekend && "is-weekend",
10
11
  e.outsideWorkHours && "is-outside-work-hours"
11
12
  ].filter(Boolean).join(" ");
12
13
  }
13
- function o(e) {
14
- let t = (t) => `rv-time-grid__${t}${e.legacyClassPrefix ? ` ${e.legacyClassPrefix}__${t}` : ""}`, o = Array.from({ length: 12 }, (e, t) => t * 2);
14
+ function s(e) {
15
+ let t = (e) => `rv-time-grid__${e}`, s = Array.from({ length: 12 }, (e, t) => t * 2);
15
16
  return /* @__PURE__ */ n("div", {
16
17
  class: t("schedule"),
17
18
  children: [/* @__PURE__ */ n("div", {
18
19
  class: t("hours"),
19
20
  "aria-hidden": "true",
20
- children: [/* @__PURE__ */ n("span", {}), o.map((r) => /* @__PURE__ */ n("span", {
21
+ children: [/* @__PURE__ */ n("span", {}), s.map((r) => /* @__PURE__ */ n("span", {
21
22
  class: t("hour"),
22
23
  children: e.hourLabel(r)
23
24
  }, r))]
@@ -28,53 +29,53 @@ function o(e) {
28
29
  "aria-label": e.gridLabel,
29
30
  "aria-rowcount": e.days.length,
30
31
  "aria-colcount": 12,
31
- children: e.days.map((s) => {
32
- let { weekday: c, short: l, long: u } = s, d = e.weekendDays.includes(c);
32
+ children: e.days.map((c) => {
33
+ let { weekday: l, short: u, long: d } = c, f = e.weekendDays.includes(l);
33
34
  return /* @__PURE__ */ n("div", {
34
- class: `${t("row")}${d ? " is-weekend" : ""}`,
35
+ class: `${t("row")}${f ? " is-weekend" : ""}`,
35
36
  role: "row",
36
- children: [/* @__PURE__ */ n("span", {
37
+ children: [/* @__PURE__ */ n(i, {
37
38
  class: t("weekday"),
38
39
  role: "rowheader",
39
- title: u,
40
- children: l
41
- }), o.map((t) => {
42
- let o = i(c, t), l = e.cells.has(o) || e.cells.has(i(c, t + 1)), u = e.workingHours ? t < e.workingHours.startHour || t + 2 > e.workingHours.endHour : !1;
40
+ title: d,
41
+ children: u
42
+ }), s.map((t) => {
43
+ let i = a(l, t), s = e.cells.has(i) || e.cells.has(a(l, t + 1)), u = e.workingHours ? t < e.workingHours.startHour || t + 2 > e.workingHours.endHour : !1;
43
44
  return /* @__PURE__ */ n(r, {
44
45
  type: "button",
45
46
  disabled: e.disabled,
46
47
  role: "gridcell",
47
- "data-time-cell": o,
48
- class: `${a({
49
- weekend: d,
48
+ "data-time-cell": i,
49
+ class: o({
50
+ weekend: f,
50
51
  outsideWorkHours: u
51
- })} ${e.legacyClassPrefix ? `${e.legacyClassPrefix}__cell` : ""}`,
52
- "aria-selected": l,
53
- "aria-label": e.cellLabel(s, e.hourLabel(t), e.hourLabel(t + 2), l),
54
- tabIndex: e.focused === o ? 0 : -1,
55
- onFocus: () => e.onFocus(o),
56
- onKeyDown: (n) => e.onKeyDown(n, c, t),
57
- onClick: (n) => e.onClick(n, c, t, l),
58
- onPointerDown: (n) => e.onPointerDown(n, c, t, l),
59
- onPointerEnter: () => e.onPointerEnter(c, t)
60
- }, o);
52
+ }),
53
+ "aria-selected": s,
54
+ "aria-label": e.cellLabel(c, e.hourLabel(t), e.hourLabel(t + 2), s),
55
+ tabIndex: e.focused === i ? 0 : -1,
56
+ onFocus: () => e.onFocus(i),
57
+ onKeyDown: (n) => e.onKeyDown(n, l, t),
58
+ onClick: (n) => e.onClick(n, l, t, s),
59
+ onPointerDown: (n) => e.onPointerDown(n, l, t, s),
60
+ onPointerEnter: () => e.onPointerEnter(l, t)
61
+ }, i);
61
62
  })]
62
- }, c);
63
+ }, l);
63
64
  })
64
65
  })]
65
66
  });
66
67
  }
67
- function s(n) {
68
+ function c(n) {
68
69
  let r = t(n);
69
70
  r.current = n;
70
- let a = t(), o = t(), s = t(), c = () => {
71
+ let i = t(), o = t(), s = t(), c = () => {
71
72
  o.current?.(), o.current = void 0;
72
73
  };
73
74
  e(() => () => {
74
- a.current = void 0, c(), s.current !== void 0 && cancelAnimationFrame(s.current);
75
+ i.current = void 0, c(), s.current !== void 0 && cancelAnimationFrame(s.current);
75
76
  }, []);
76
77
  let l = (e, t) => {
77
- let n = i(e, t);
78
+ let n = a(e, t);
78
79
  r.current.onFocus(n), s.current !== void 0 && cancelAnimationFrame(s.current), s.current = requestAnimationFrame(() => r.current.matrixRef.current?.querySelector(`[data-time-cell="${n}"]`)?.focus());
79
80
  };
80
81
  return {
@@ -97,18 +98,18 @@ function s(n) {
97
98
  },
98
99
  onPointerDown: (e, t, n, s) => {
99
100
  if (r.current.disabled || e.button !== 0) return;
100
- e.preventDefault(), c(), a.current = { selected: !s };
101
+ e.preventDefault(), c(), i.current = { selected: !s };
101
102
  let l = e.currentTarget.ownerDocument, u = () => {
102
- a.current && (a.current = void 0, c(), r.current.onCommit());
103
+ i.current && (i.current = void 0, c(), r.current.onCommit());
103
104
  };
104
105
  l.addEventListener("pointerup", u), l.addEventListener("pointercancel", u), o.current = () => {
105
106
  l.removeEventListener("pointerup", u), l.removeEventListener("pointercancel", u);
106
- }, r.current.onPaint(t, n, !s), r.current.onFocus(i(t, n));
107
+ }, r.current.onPaint(t, n, !s), r.current.onFocus(a(t, n));
107
108
  },
108
109
  onPointerEnter: (e, t) => {
109
- a.current && !r.current.disabled && r.current.onPaint(e, t, a.current.selected);
110
+ i.current && !r.current.disabled && r.current.onPaint(e, t, i.current.selected);
110
111
  }
111
112
  };
112
113
  }
113
114
  //#endregion
114
- export { o as TimeGrid, i as timeGridCellKey, s as useTimeGridInteraction };
115
+ export { s as TimeGrid, a as timeGridCellKey, c as useTimeGridInteraction };
@@ -6,11 +6,29 @@
6
6
  height: 112px;
7
7
  margin: 0 0 12px;
8
8
  overflow: hidden;
9
- border: 1px solid var(--rv-ui-border, var(--rv-dialog-border, var(--rv-ui-border)));
9
+ border: 1px solid
10
+ var(--rv-ui-border, var(--rv-dialog-border, var(--rv-ui-border)));
10
11
  border-radius: 11px;
11
12
  background:
12
- repeating-linear-gradient(to right, transparent 0, transparent calc(25% - 1px), color-mix(in srgb, var(--rv-ui-border, var(--rv-dialog-border, var(--rv-ui-border))) 58%, transparent) 25%),
13
- var(--rv-ui-surface-sunken, color-mix(in srgb, var(--rv-dialog-bg, var(--rv-ui-surface)) 96%, var(--rv-ui-text-muted, var(--rv-dialog-muted, var(--rv-ui-text-muted)))));
13
+ repeating-linear-gradient(
14
+ to right,
15
+ transparent 0,
16
+ transparent calc(25% - 1px),
17
+ color-mix(
18
+ in srgb,
19
+ var(--rv-ui-border, var(--rv-dialog-border, var(--rv-ui-border))) 58%,
20
+ transparent
21
+ )
22
+ 25%
23
+ ),
24
+ var(
25
+ --rv-ui-surface-sunken,
26
+ color-mix(
27
+ in srgb,
28
+ var(--rv-dialog-bg, var(--rv-ui-surface)) 96%,
29
+ var(--rv-ui-text-muted, var(--rv-dialog-muted, var(--rv-ui-text-muted)))
30
+ )
31
+ );
14
32
  }
15
33
  .rv-timeline-control__track::before {
16
34
  position: absolute;
@@ -18,12 +36,29 @@
18
36
  right: 0;
19
37
  left: 0;
20
38
  height: 1px;
21
- background: color-mix(in srgb, var(--rv-ui-border, var(--rv-dialog-border, var(--rv-ui-border))) 82%, transparent);
39
+ background: color-mix(
40
+ in srgb,
41
+ var(--rv-ui-border, var(--rv-dialog-border, var(--rv-ui-border))) 82%,
42
+ transparent
43
+ );
22
44
  content: '';
23
45
  }
24
- .rv-timeline-control__range { position: absolute; bottom: 8px; color: var(--rv-ui-text-muted, var(--rv-dialog-muted, var(--rv-ui-text-muted))); font-size: 11px; font-variant-numeric: tabular-nums; }
25
- .rv-timeline-control__range--start { left: 10px; }
26
- .rv-timeline-control__range--end { right: 10px; }
46
+ .rv-timeline-control__range {
47
+ position: absolute;
48
+ bottom: 8px;
49
+ color: var(
50
+ --rv-ui-text-muted,
51
+ var(--rv-dialog-muted, var(--rv-ui-text-muted))
52
+ );
53
+ font-size: 11px;
54
+ font-variant-numeric: tabular-nums;
55
+ }
56
+ .rv-timeline-control__range--start {
57
+ left: 10px;
58
+ }
59
+ .rv-timeline-control__range--end {
60
+ right: 10px;
61
+ }
27
62
  .rv-timeline-control__bar {
28
63
  position: absolute;
29
64
  top: 39px;
@@ -37,7 +72,11 @@
37
72
  color: var(--timeline-event-text-color, #0f172a);
38
73
  box-shadow: 0 1px 2px var(--rv-ui-shadow);
39
74
  touch-action: none;
40
- transition: border-color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, cubic-bezier(.2, 0, 0, 1)), box-shadow var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, cubic-bezier(.2, 0, 0, 1));
75
+ transition:
76
+ border-color var(--rv-ui-motion-fast, 120ms)
77
+ var(--rv-ui-motion-ease, cubic-bezier(0.2, 0, 0, 1)),
78
+ box-shadow var(--rv-ui-motion-fast, 120ms)
79
+ var(--rv-ui-motion-ease, cubic-bezier(0.2, 0, 0, 1));
41
80
  }
42
81
  .rv-timeline-control__bar-move {
43
82
  position: absolute;
@@ -55,14 +94,28 @@
55
94
  cursor: grab;
56
95
  touch-action: none;
57
96
  }
58
- .rv-timeline-control__bar-move:active { cursor: grabbing; }
97
+ .rv-timeline-control__bar-move:active {
98
+ cursor: grabbing;
99
+ }
59
100
  .rv-timeline-control__bar:hover {
60
101
  border-color: var(--timeline-event-hover-color-end, #166534);
61
102
  }
62
- .rv-timeline-control__bar--selected { box-shadow: 0 0 0 3px color-mix(in srgb, var(--timeline-event-color, #16a34a) 22%, transparent), 0 1px 2px var(--rv-ui-shadow); }
63
- .rv-timeline-control__bar--milestone { border-radius: 50%; }
64
- .rv-timeline-control__bar--milestone .rv-timeline-control__bar-label { display: none; }
65
- .rv-timeline-control__bar--outside { outline: 2px dashed var(--rv-structured-warning, var(--rv-ui-warning)); outline-offset: 2px; }
103
+ .rv-timeline-control__bar--selected {
104
+ box-shadow:
105
+ 0 0 0 3px
106
+ color-mix(in srgb, var(--timeline-event-color, #16a34a) 22%, transparent),
107
+ 0 1px 2px var(--rv-ui-shadow);
108
+ }
109
+ .rv-timeline-control__bar--milestone {
110
+ border-radius: 50%;
111
+ }
112
+ .rv-timeline-control__bar--milestone .rv-timeline-control__bar-label {
113
+ display: none;
114
+ }
115
+ .rv-timeline-control__bar--outside {
116
+ outline: 2px dashed var(--rv-structured-warning, var(--rv-ui-warning));
117
+ outline-offset: 2px;
118
+ }
66
119
  .rv-timeline-control__bar-label {
67
120
  display: block;
68
121
  overflow: hidden;
@@ -89,16 +142,27 @@
89
142
  width: 4px;
90
143
  border-radius: 999px;
91
144
  background: rgb(255 255 255 / 82%);
92
- opacity: .45;
93
- transition: opacity var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, cubic-bezier(.2, 0, 0, 1));
145
+ opacity: 0.45;
146
+ transition: opacity var(--rv-ui-motion-fast, 120ms)
147
+ var(--rv-ui-motion-ease, cubic-bezier(0.2, 0, 0, 1));
94
148
  content: '';
95
149
  }
96
150
  .rv-timeline-control__bar:hover .rv-timeline-control__handle::after,
97
- .rv-timeline-control__bar--selected .rv-timeline-control__handle::after { opacity: 1; }
98
- .rv-timeline-control__handle--start { left: -12px; }
99
- .rv-timeline-control__handle--start::after { left: 10px; }
100
- .rv-timeline-control__handle--end { right: -12px; }
101
- .rv-timeline-control__handle--end::after { right: 10px; }
151
+ .rv-timeline-control__bar--selected .rv-timeline-control__handle::after {
152
+ opacity: 1;
153
+ }
154
+ .rv-timeline-control__handle--start {
155
+ left: -12px;
156
+ }
157
+ .rv-timeline-control__handle--start::after {
158
+ left: 10px;
159
+ }
160
+ .rv-timeline-control__handle--end {
161
+ right: -12px;
162
+ }
163
+ .rv-timeline-control__handle--end::after {
164
+ right: 10px;
165
+ }
102
166
 
103
167
  .rv-timeline-control__track button:focus-visible {
104
168
  outline: 0;
@@ -106,16 +170,24 @@
106
170
  box-shadow: 0 0 0 3px var(--rv-ui-focus-ring);
107
171
  }
108
172
  @media (prefers-reduced-motion: reduce) {
109
- .rv-timeline-control__bar { transition: none; }
173
+ .rv-timeline-control__bar {
174
+ transition: none;
175
+ }
110
176
  }
111
177
  @media (forced-colors: active) {
112
- .rv-timeline-control__track { border-color: CanvasText; }
178
+ .rv-timeline-control__track {
179
+ border-color: CanvasText;
180
+ }
113
181
  .rv-timeline-control__bar {
114
182
  border-color: Highlight;
115
183
  background: Highlight;
116
184
  color: HighlightText;
117
185
  forced-color-adjust: auto;
118
186
  }
119
- .rv-timeline-control__bar--selected { outline: 2px solid Highlight; }
120
- .rv-timeline-control__handle::after { background: HighlightText; }
187
+ .rv-timeline-control__bar--selected {
188
+ outline: 2px solid Highlight;
189
+ }
190
+ .rv-timeline-control__handle::after {
191
+ background: HighlightText;
192
+ }
121
193
  }
@@ -1,3 +1,4 @@
1
+ import { JSX } from '../_vendor/preact/src/index';
1
2
  import { TimelineTrackEvent, TimelineTrackRange } from './model';
2
3
  export type TimelineTrackPointerMode = 'move' | 'start' | 'end';
3
4
  export interface TimelineTrackItem<T extends TimelineTrackEvent> {
@@ -12,6 +13,9 @@ export interface TimelineTrackLabels {
12
13
  }
13
14
  export interface TimelineTrackProps<T extends TimelineTrackEvent> {
14
15
  readonly rows: readonly TimelineTrackItem<T>[];
16
+ readonly tooltip?: boolean;
17
+ readonly formatValue?: (value: number) => string;
18
+ readonly getTooltip?: (event: T) => string;
15
19
  readonly selected?: string | number;
16
20
  /** Finite bounds with end greater than start. */
17
21
  readonly range: TimelineTrackRange;
@@ -20,4 +24,4 @@ export interface TimelineTrackProps<T extends TimelineTrackEvent> {
20
24
  readonly onEventChange: (id: string | number, event: T) => void;
21
25
  }
22
26
  /** Controlled numeric timeline. Changes preserve event metadata; consumers own commits. */
23
- export declare function TimelineTrack<T extends TimelineTrackEvent>({ rows, selected, range, labels, onSelect, onEventChange, }: TimelineTrackProps<T>): import("../_vendor/preact/src/index").JSX.Element;
27
+ export declare function TimelineTrack<T extends TimelineTrackEvent>({ rows, tooltip, formatValue, getTooltip, selected, range, labels, onSelect, onEventChange, }: TimelineTrackProps<T>): JSX.Element;
@@ -1,85 +1,91 @@
1
1
  import { t as e } from "../_chunks/hooks.module-CG3gN83z.js";
2
2
  import { t } from "../_chunks/jsxRuntime.module-F6UFnpT-.js";
3
- import { ButtonControl as n } from "../native-control.js";
4
- import { eventOutsideRange as r, moveTimelineEvent as i, niceTimelineStep as a, resizeTimelineEvent as o, timelineGeometry as s } from "./model.js";
3
+ import { t as n } from "../_chunks/native-control-B_fVA5bL.js";
4
+ import { n as r } from "../_chunks/tooltip-D4xkio5G.js";
5
+ import { eventOutsideRange as i, moveTimelineEvent as a, niceTimelineStep as o, resizeTimelineEvent as s, timelineEventBackground as c, timelineGeometry as l } from "./model.js";
5
6
  //#region src/timeline-track/component.tsx
6
- var c = {
7
+ var u = {
7
8
  preview: "Timeline preview",
8
9
  moveEvent: (e) => `Move event ${e}`,
9
10
  resizeStart: (e) => `Resize start of ${e}`,
10
11
  resizeEnd: (e) => `Resize end of ${e}`
11
12
  };
12
- function l({ rows: l, selected: u, range: d, labels: f, onSelect: p, onEventChange: m }) {
13
- let h = {
14
- ...c,
15
- ...f
16
- }, g = e(), _ = (e, t, n) => {
13
+ function d({ rows: r, tooltip: d = !0, formatValue: p = String, getTooltip: m, selected: h, range: g, labels: _, onSelect: v, onEventChange: y }) {
14
+ let b = {
15
+ ...u,
16
+ ..._
17
+ }, x = e(), S = (e, t, n) => {
17
18
  let r = e.currentTarget.closest(".rv-timeline-control__track");
18
- r && (e.preventDefault(), e.currentTarget.setPointerCapture?.(e.pointerId), g.current = {
19
+ r && (e.preventDefault(), e.currentTarget.setPointerCapture?.(e.pointerId), x.current = {
19
20
  id: t.id,
20
21
  mode: n,
21
22
  clientX: e.clientX,
22
23
  event: t.event,
23
24
  width: r.getBoundingClientRect().width
24
- }, p(t.id));
25
- }, v = (e) => {
26
- let t = g.current;
25
+ }, v(t.id));
26
+ }, C = (e) => {
27
+ let t = x.current;
27
28
  if (!t) return;
28
- let n = a(d), r = (e.clientX - t.clientX) / Math.max(1, t.width) * (d.end - d.start), s = Math.round(r / n) * n, c = t.mode === "move" ? i(t.event, s, d) : o(t.event, t.mode, s, d);
29
- m(t.id, c);
30
- }, y = () => {
31
- g.current = void 0;
32
- }, b = (e, t, n) => {
29
+ let n = o(g), r = (e.clientX - t.clientX) / Math.max(1, t.width) * (g.end - g.start), i = Math.round(r / n) * n, c = t.mode === "move" ? a(t.event, i, g) : s(t.event, t.mode, i, g);
30
+ y(t.id, c);
31
+ }, w = () => {
32
+ x.current = void 0;
33
+ }, T = (e, t, n) => {
33
34
  if (e.key !== "ArrowLeft" && e.key !== "ArrowRight") return;
34
35
  e.preventDefault();
35
- let r = a(d) * (e.key === "ArrowLeft" ? -1 : 1);
36
- m(t.id, n === "move" ? i(t.event, r, d) : o(t.event, n, r, d));
36
+ let r = o(g) * (e.key === "ArrowLeft" ? -1 : 1);
37
+ y(t.id, n === "move" ? a(t.event, r, g) : s(t.event, n, r, g));
37
38
  };
38
39
  return /* @__PURE__ */ t("div", {
39
40
  class: "rv-timeline-editor__track rv-timeline-control__track",
40
41
  role: "group",
41
- "aria-label": h.preview,
42
+ "aria-label": b.preview,
42
43
  children: [
43
44
  /* @__PURE__ */ t("span", {
44
45
  class: "rv-timeline-editor__range rv-timeline-editor__range--start rv-timeline-control__range rv-timeline-control__range--start",
45
- children: d.start
46
+ children: g.start
46
47
  }),
47
48
  /* @__PURE__ */ t("span", {
48
49
  class: "rv-timeline-editor__range rv-timeline-editor__range--end rv-timeline-control__range rv-timeline-control__range--end",
49
- children: d.end
50
+ children: g.end
50
51
  }),
51
- l.map((e, t) => ({
52
+ r.map((e, t) => ({
52
53
  row: e,
53
54
  index: t
54
- })).filter(({ row: e }) => Number.isFinite(e.event.start) && Number.isFinite(e.event.end) && e.event.end >= e.event.start).map(({ row: e, index: i }) => {
55
- let a = s(e.event, d), o = r(e.event, d), c = e.event.label || h.moveEvent(i + 1);
56
- return /* @__PURE__ */ t("div", {
55
+ })).filter(({ row: e }) => Number.isFinite(e.event.start) && Number.isFinite(e.event.end) && e.event.end >= e.event.start).map(({ row: e, index: r }) => {
56
+ let a = l(e.event, g), o = i(e.event, g), s = e.event.label || b.moveEvent(r + 1);
57
+ return /* @__PURE__ */ t(f, {
58
+ tooltipText: d ? m?.(e.event) ?? `${s}: ${p(e.event.start)} – ${p(e.event.end)}` : void 0,
57
59
  class: [
58
60
  "rv-timeline-editor__bar rv-timeline-control__bar",
59
- u === e.id ? "rv-timeline-editor__bar--selected rv-timeline-control__bar--selected" : "",
61
+ h === e.id ? "rv-timeline-editor__bar--selected rv-timeline-control__bar--selected" : "",
60
62
  e.event.start === e.event.end ? "rv-timeline-editor__bar--milestone rv-timeline-control__bar--milestone" : "",
61
63
  o ? "rv-timeline-editor__bar--outside rv-timeline-control__bar--outside" : ""
62
64
  ].filter(Boolean).join(" "),
63
65
  style: {
64
66
  left: `${a.left}%`,
65
- width: `${a.width}%`
67
+ width: `${a.width}%`,
68
+ background: c(e.event),
69
+ color: e.event.textColor,
70
+ "--timeline-event-color": e.event.color,
71
+ "--timeline-event-color-end": e.event.color
66
72
  },
67
73
  role: "group",
68
- "aria-label": c,
74
+ "aria-label": s,
69
75
  children: [
70
76
  /* @__PURE__ */ t(n, {
71
77
  unstyled: !0,
72
78
  type: "button",
73
79
  class: "rv-timeline-editor__bar-move rv-timeline-control__bar-move",
74
- "data-autofocus": i === 0 ? "" : void 0,
75
- "aria-label": e.event.label ? `${h.moveEvent(i + 1)}: ${e.event.label}` : h.moveEvent(i + 1),
80
+ "data-autofocus": r === 0 ? "" : void 0,
81
+ "aria-label": e.event.label ? `${b.moveEvent(r + 1)}: ${e.event.label}` : b.moveEvent(r + 1),
76
82
  "aria-keyshortcuts": "ArrowLeft ArrowRight",
77
- onFocus: () => p(e.id),
78
- onPointerDown: (t) => _(t, e, "move"),
79
- onPointerMove: v,
80
- onPointerUp: y,
81
- onPointerCancel: y,
82
- onKeyDown: (t) => b(t, e, "move"),
83
+ onFocus: () => v(e.id),
84
+ onPointerDown: (t) => S(t, e, "move"),
85
+ onPointerMove: C,
86
+ onPointerUp: w,
87
+ onPointerCancel: w,
88
+ onKeyDown: (t) => T(t, e, "move"),
83
89
  children: /* @__PURE__ */ t("span", {
84
90
  class: "rv-timeline-editor__bar-label rv-timeline-control__bar-label",
85
91
  children: e.event.label
@@ -91,20 +97,20 @@ function l({ rows: l, selected: u, range: d, labels: f, onSelect: p, onEventChan
91
97
  class: "rv-timeline-editor__handle rv-timeline-editor__handle--start rv-timeline-control__handle rv-timeline-control__handle--start",
92
98
  role: "slider",
93
99
  "aria-orientation": "horizontal",
94
- "aria-label": h.resizeStart(c),
95
- "aria-valuemin": Math.min(d.start, e.event.start),
100
+ "aria-label": b.resizeStart(s),
101
+ "aria-valuemin": Math.min(g.start, e.event.start),
96
102
  "aria-valuemax": e.event.end,
97
103
  "aria-valuenow": e.event.start,
98
104
  "aria-keyshortcuts": "ArrowLeft ArrowRight",
99
- onFocus: () => p(e.id),
105
+ onFocus: () => v(e.id),
100
106
  onPointerDown: (t) => {
101
- t.stopPropagation(), _(t, e, "start");
107
+ t.stopPropagation(), S(t, e, "start");
102
108
  },
103
- onPointerMove: v,
104
- onPointerUp: y,
105
- onPointerCancel: y,
109
+ onPointerMove: C,
110
+ onPointerUp: w,
111
+ onPointerCancel: w,
106
112
  onKeyDown: (t) => {
107
- t.stopPropagation(), b(t, e, "start");
113
+ t.stopPropagation(), T(t, e, "start");
108
114
  }
109
115
  }),
110
116
  /* @__PURE__ */ t(n, {
@@ -113,20 +119,20 @@ function l({ rows: l, selected: u, range: d, labels: f, onSelect: p, onEventChan
113
119
  class: "rv-timeline-editor__handle rv-timeline-editor__handle--end rv-timeline-control__handle rv-timeline-control__handle--end",
114
120
  role: "slider",
115
121
  "aria-orientation": "horizontal",
116
- "aria-label": h.resizeEnd(c),
122
+ "aria-label": b.resizeEnd(s),
117
123
  "aria-valuemin": e.event.start,
118
- "aria-valuemax": Math.max(d.end, e.event.end),
124
+ "aria-valuemax": Math.max(g.end, e.event.end),
119
125
  "aria-valuenow": e.event.end,
120
126
  "aria-keyshortcuts": "ArrowLeft ArrowRight",
121
- onFocus: () => p(e.id),
127
+ onFocus: () => v(e.id),
122
128
  onPointerDown: (t) => {
123
- t.stopPropagation(), _(t, e, "end");
129
+ t.stopPropagation(), S(t, e, "end");
124
130
  },
125
- onPointerMove: v,
126
- onPointerUp: y,
127
- onPointerCancel: y,
131
+ onPointerMove: C,
132
+ onPointerUp: w,
133
+ onPointerCancel: w,
128
134
  onKeyDown: (t) => {
129
- t.stopPropagation(), b(t, e, "end");
135
+ t.stopPropagation(), T(t, e, "end");
130
136
  }
131
137
  })
132
138
  ]
@@ -135,5 +141,16 @@ function l({ rows: l, selected: u, range: d, labels: f, onSelect: p, onEventChan
135
141
  ]
136
142
  });
137
143
  }
144
+ function f({ tooltipText: e, children: n, ...i }) {
145
+ let a = r(e ?? "", !0, {
146
+ className: "rv-control-tooltip",
147
+ placement: "above"
148
+ });
149
+ return /* @__PURE__ */ t("div", {
150
+ ...i,
151
+ ...e ? a.triggerProps : {},
152
+ children: [n, e && a.tooltip]
153
+ });
154
+ }
138
155
  //#endregion
139
- export { l as TimelineTrack, r as eventOutsideRange, i as moveTimelineEvent, a as niceTimelineStep, o as resizeTimelineEvent, s as timelineGeometry };
156
+ export { d as TimelineTrack, i as eventOutsideRange, a as moveTimelineEvent, o as niceTimelineStep, s as resizeTimelineEvent, c as timelineEventBackground, l as timelineGeometry };
@@ -2,6 +2,13 @@ export interface TimelineTrackEvent {
2
2
  readonly start: number;
3
3
  readonly end: number;
4
4
  readonly label?: string;
5
+ /** Single CSS color, or weighted phases within this event. */
6
+ readonly color?: string;
7
+ readonly textColor?: string;
8
+ readonly segments?: readonly {
9
+ readonly color: string;
10
+ readonly weight: number;
11
+ }[];
5
12
  }
6
13
  export interface TimelineTrackRange {
7
14
  readonly start: number;
@@ -15,3 +22,5 @@ export declare function timelineGeometry(event: TimelineTrackEvent, range: Timel
15
22
  export declare function niceTimelineStep(range: TimelineTrackRange): number;
16
23
  export declare function moveTimelineEvent<T extends TimelineTrackEvent>(event: T, delta: number, range: TimelineTrackRange): T;
17
24
  export declare function resizeTimelineEvent<T extends TimelineTrackEvent>(event: T, edge: 'start' | 'end', delta: number, range: TimelineTrackRange): T;
25
+ /** Weighted phase colors use hard stops and scale with the event on resize. */
26
+ export declare function timelineEventBackground(event: TimelineTrackEvent): string | undefined;
@@ -34,5 +34,14 @@ function i(e, t, n, r) {
34
34
  end: Math.min(r.end, Math.max(e.start, e.end + n))
35
35
  };
36
36
  }
37
+ function a(e) {
38
+ let t = e.segments?.filter((e) => Number.isFinite(e.weight) && e.weight > 0);
39
+ if (!t?.length) return e.color;
40
+ let n = t.reduce((e, t) => e + t.weight, 0), r = 0;
41
+ return `linear-gradient(to right, ${t.map((e) => {
42
+ let t = r / n * 100;
43
+ return r += e.weight, `${e.color} ${t}% ${r / n * 100}%`;
44
+ }).join(", ")})`;
45
+ }
37
46
  //#endregion
38
- export { e as eventOutsideRange, r as moveTimelineEvent, n as niceTimelineStep, i as resizeTimelineEvent, t as timelineGeometry };
47
+ export { e as eventOutsideRange, r as moveTimelineEvent, n as niceTimelineStep, i as resizeTimelineEvent, a as timelineEventBackground, t as timelineGeometry };