@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.
- package/LICENSE +21 -0
- package/MIGRATION.md +36 -0
- package/OWNERSHIP.md +32 -32
- package/README.md +405 -265
- package/_button.scss +6 -2
- package/_chunks/arrow-up-Cw8hW9vp.js +4 -0
- package/_chunks/calculator-CDWOuAcp.js +4 -0
- package/_chunks/{calendar-CpaUK7w1.js → calendar-CgXQgkga.js} +28 -18
- package/_chunks/chart-frame-hcOlnQ1K.js +145 -0
- package/_chunks/{chevron-right-sxHQMSkq.js → check-BwI7iCAm.js} +2 -2
- package/_chunks/{chevron-left-D0nc4Z5S.js → chevron-right-CM3ljziP.js} +2 -2
- package/_chunks/choice-chips-SkllS5Kl.js +126 -0
- package/_chunks/clock-BOhPNlW3.js +4 -0
- package/_chunks/{color-palette-BBMFmUNA.js → color-palette-DMJUChWC.js} +20 -22
- package/_chunks/{color-picker-D90Jg-M8.js → color-picker-BpCTuIdm.js} +77 -72
- package/_chunks/{component-YDcfoOLz.js → component-CfeHXgIw.js} +301 -282
- package/_chunks/{component-metadata-BENbgTjU.js → component-metadata-BKd7U8OW.js} +0 -12
- package/_chunks/configurator-actions-DnStE6Yl.js +155 -0
- package/_chunks/configurator-field-icon-CmcM_sPs.js +53 -0
- package/_chunks/control-Dcrjsunl.js +118 -0
- package/_chunks/{controls-DIum-E66.js → controls-B_6NJarZ.js} +217 -182
- package/_chunks/{date-control-BJSzu79z.js → date-control-C4h4m75W.js} +1 -1
- package/_chunks/{date-time-BxPJusp9.js → date-time-CTOSbzb0.js} +344 -307
- package/_chunks/{delete-button-Bblyah10.js → delete-button-CW9vjLnk.js} +6 -6
- package/_chunks/dialog.parts-3w5FR06n.js +131 -0
- package/_chunks/{duration-87U2EoMS.js → duration-Bf2OS1V5.js} +19 -18
- package/_chunks/editor-popup-ByU7qiub.js +82 -0
- package/_chunks/field-configurator-D5dZRhDe.js +288 -0
- package/_chunks/field-context-D57PnBbH.js +5 -0
- package/_chunks/{framework-mount-C-Zwm44H.js → framework-mount-Bk4O_T7T.js} +1 -1
- package/_chunks/icon-toolbar-DSjOdwM7.js +134 -0
- package/_chunks/magnifying-glass-CvrTDSkB.js +4 -0
- package/_chunks/minus-BOAR3A1C.js +4 -0
- package/_chunks/mount-BRdcG60g.js +267 -0
- package/_chunks/{native.view-ByyZ1CT5.js → native-Blr3byjO.js} +1 -1
- package/_chunks/native-control-B_fVA5bL.js +649 -0
- package/_chunks/{number-input-BeIadZuL.js → number-input-CmM6_2vR.js} +7 -7
- package/_chunks/{picker-DpP7iQLA.js → picker-DTqET-2W.js} +2 -2
- package/_chunks/plus-CbGRkIGl.js +4 -0
- package/_chunks/popover-controller-D-AvKQ7B.js +102 -0
- package/_chunks/popup-C35Isk7p.js +378 -0
- package/_chunks/{rating-choice-Ca8ZBty3.js → rating-choice-C-6wcb9U.js} +1 -1
- package/_chunks/render-m5eMMwFR.js +83 -0
- package/_chunks/{reorder-list-Cc3KmfAN.js → reorder-list-DIl1gkV6.js} +1 -1
- package/_chunks/request-trail-DrhdpWiH.js +762 -0
- package/_chunks/rich-text-BnilBbhU.js +842 -0
- package/_chunks/rotate-left-BF6G883o.js +4 -0
- package/_chunks/rotate-right-Iha5ScJ1.js +4 -0
- package/_chunks/selection-list-tooltips-C5oMJe26.js +42 -0
- package/_chunks/title-tooltip-Cw6LOZhb.js +11 -0
- package/_chunks/tooltip-D4xkio5G.js +54 -0
- package/_chunks/tooltip-owner-DjdvqKzz.js +19 -0
- package/_chunks/tooltip-session-B6X6x8G_.js +110 -0
- package/_chunks/tooltip-text-BXsUEmBH.js +12 -0
- package/_chunks/top-layer-popup-CNSDdfJV.js +59 -0
- package/_dialog.scss +55 -21
- package/_form.scss +71 -21
- package/_legend.scss +25 -7
- package/_shared/data-query/index.d.ts +2 -2
- package/_shared/data-query/load-options.d.ts +2 -2
- package/_variables.scss +34 -32
- package/_view-switcher.scss +6 -0
- package/activity-message.d.ts +1 -1
- package/ai/_chat.scss +227 -0
- package/ai/_style.scss +170 -39
- package/ai/chat.d.ts +65 -0
- package/ai/components.d.ts +34 -5
- package/ai/index.d.ts +3 -0
- package/ai/index.js +3 -3
- package/ai/mount.d.ts +59 -6
- package/ai/prompt-history.d.ts +13 -0
- package/ai/request-trail.d.ts +9 -3
- package/ai/results/_style.scss +83 -0
- package/ai/results/index.d.ts +11 -0
- package/ai/results/metrics.d.ts +5 -0
- package/ai/results/table.d.ts +5 -0
- package/ai/results/text.d.ts +5 -0
- package/ai/results/types.d.ts +29 -0
- package/ai/transcript.d.ts +27 -0
- package/ai/translations.d.ts +1 -1
- package/angular/angular.d.ts +1 -1
- package/angular/angular.js +13 -10
- package/assignee/assignee.scss +28 -6
- package/assignee/index.js +34 -35
- package/avatar/avatar.style.scss +23 -6
- package/avatar/index.d.ts +25 -2
- package/avatar/index.js +33 -32
- package/badge.d.ts +1 -1
- package/badge.view.d.ts +8 -0
- package/brush-range/_brush-range.scss +55 -49
- package/brush-range/component.d.ts +1 -3
- package/brush-range/component.js +27 -27
- package/buttons/delete-button.d.ts +2 -1
- package/buttons/delete-button.js +1 -1
- package/buttons/delete-button.style.scss +6 -2
- package/buttons/remove-button.d.ts +1 -1
- package/buttons/remove-button.js +1 -1
- package/buttons/remove-button.style.scss +1 -1
- package/buttons/svg-button.d.ts +2 -1
- package/buttons/svg-button.js +19 -19
- package/calendar/_calendar.scss +27 -26
- package/calendar/calendar.js +1 -1
- package/calendar/header.js +1 -2
- package/calendar/index.js +2 -2
- package/cell-input.scss +3 -7
- package/cell-visuals/badge.style.scss +6 -3
- package/cell-visuals/bar-chart.style.scss +2 -1
- package/cell-visuals/column-type.style.css +12 -0
- package/cell-visuals/progress-line-value.renderer.style.scss +4 -2
- package/cell-visuals/progress-line.style.scss +1 -4
- package/cell-visuals/sparkline.style.scss +2 -1
- package/cell-visuals/timeline.style.css +4 -2
- package/checkbox/checkbox.scss +6 -24
- package/choice-chips/index.d.ts +3 -1
- package/choice-chips/index.js +1 -1
- package/color-palette/color-palette.js +1 -1
- package/color-palette/color-palette.style.scss +88 -25
- package/color-palette/color-picker.js +2 -2
- package/color-palette/color-picker.style.scss +23 -10
- package/color-palette/common-palettes.d.ts +1 -1
- package/color-palette/common-palettes.js +1 -1
- package/color-palette/native.d.ts +15 -2
- package/component-catalog.d.ts +24 -11
- package/configurator-actions.d.ts +67 -0
- package/configurator-actions.js +1 -0
- package/configurator-aggregation-list.d.ts +14 -0
- package/configurator-aggregation-list.js +63 -0
- package/configurator-drop-zone.d.ts +39 -0
- package/configurator-drop-zone.js +66 -0
- package/configurator-field-icon.d.ts +10 -0
- package/configurator-field-icon.js +1 -0
- package/configurator-focus.d.ts +4 -0
- package/configurator-focus.js +39 -0
- package/configurator-sections.d.ts +42 -0
- package/configurator-sections.js +71 -0
- package/control-attributes.js +7 -7
- package/control-presentation.d.ts +8 -2
- package/control-presentation.js +25 -20
- package/controls.d.ts +19 -7
- package/controls.js +4 -3
- package/core/editor-popup-position.d.ts +6 -2
- package/core/editor-popup.d.ts +4 -0
- package/core/editor-popup.js +1 -1
- package/core/popover-controller.d.ts +35 -0
- package/core/popup-ownership.d.ts +2 -0
- package/core/selection-list-tooltips.d.ts +2 -0
- package/core/title-tooltip.d.ts +2 -0
- package/core/tooltip-session.d.ts +29 -0
- package/core/tooltip-surface.d.ts +13 -0
- package/core/tooltip-text.d.ts +6 -0
- package/core/tooltip.d.ts +35 -0
- package/core/top-layer-popup.d.ts +4 -0
- package/core/top-layer-popup.js +1 -23
- package/date-time/attach.d.ts +1 -1
- package/date-time/date-control.d.ts +1 -1
- package/date-time/field.d.ts +3 -2
- package/date-time/index.js +1 -1
- package/date-time/style.scss +242 -39
- package/date-time/time-selection.d.ts +3 -1
- package/date-time/types.d.ts +5 -1
- package/dialog/dialog-action-footer.d.ts +17 -2
- package/dialog/dialog.dom.d.ts +15 -2
- package/dialog/dialog.dom.js +3 -3
- package/dialog/dialog.parts.d.ts +1 -1
- package/dialog/dialog.parts.js +1 -1
- package/distribution-chart/_distribution-chart.scss +113 -77
- package/distribution-chart/area-chart.js +1 -1
- package/distribution-chart/bar-chart.d.ts +5 -2
- package/distribution-chart/bar-chart.js +7 -3
- package/distribution-chart/chart-frame.d.ts +2 -1
- package/distribution-chart/index.d.ts +1 -1
- package/distribution-chart/line-chart.js +1 -1
- package/dropdown/content.d.ts +2 -1
- package/dropdown/content.js +1 -142
- package/dropdown/control.d.ts +14 -0
- package/dropdown/control.js +1 -0
- package/dropdown/control.view.d.ts +6 -0
- package/dropdown/dropdown.types.d.ts +5 -1
- package/dropdown/editor-dropdown.style.scss +54 -16
- package/dropdown/index.d.ts +1 -1
- package/dropdown/index.js +3 -4
- package/dropdown/lookup-field.d.ts +5 -0
- package/dropdown/lookup-field.js +2 -1
- package/dropdown/popup.d.ts +2 -2
- package/dropdown/popup.js +1 -141
- package/duration/index.js +1 -1
- package/duration/style.scss +1 -1
- package/editor-actions.js +1 -1
- package/editor-layout/index.d.ts +4 -4
- package/editor-layout/index.js +39 -34
- package/editor-layout/style.scss +82 -18
- package/field-configurator.d.ts +39 -1
- package/field-configurator.js +4 -170
- package/field-expansion.d.ts +9 -0
- package/fieldset.d.ts +3 -0
- package/filter/filters/slider/_single-slider.scss +57 -38
- package/filter/filters/slider/_slider.scss +41 -33
- package/filter/filters/slider/control.js +2 -0
- package/filter/filters/slider/runtime.js +49 -22
- package/filter/filters/slider/single.js +1 -1
- package/filter-badge.js +1 -1
- package/filter-controls.d.ts +0 -1
- package/filter-controls.js +9 -10
- package/form-controls/field-context.d.ts +5 -0
- package/form-controls/index.d.ts +10 -2
- package/form-controls/index.js +4 -9
- package/form-controls/presentation.d.ts +1 -1
- package/form-controls/presentation.js +53 -45
- package/formatting/index.d.ts +1 -1
- package/formatting/index.js +40 -35
- package/formatting/styles.scss +14 -57
- package/framework.js +237 -226
- package/history-controls.d.ts +14 -0
- package/history-controls.js +27 -0
- package/icon-toolbar.d.ts +62 -0
- package/icon-toolbar.js +1 -0
- package/icons/icon.d.ts +1 -1
- package/legend.d.ts +1 -1
- package/masked-input/index.js +1 -1
- package/native-control.d.ts +6 -5
- package/native-control.js +3 -26
- package/native-controls.d.ts +54 -2
- package/native-styles.css +1 -1
- package/native-styles.scss +6 -2
- package/native.d.ts +3 -3
- package/native.js +41 -37
- package/number-input/index.d.ts +1 -1
- package/number-input/index.js +1 -1
- package/package.json +88 -14
- package/pagination.d.ts +3 -0
- package/pagination.js +50 -40
- package/pdf-viewer/header.d.ts +1 -1
- package/pdf-viewer/index.d.ts +2 -2
- package/pdf-viewer/index.js +1 -1
- package/pdf-viewer/search-bar.d.ts +1 -1
- package/pdf-viewer/status.d.ts +1 -1
- package/pdf-viewer/style.scss +205 -45
- package/pickers.d.ts +5 -1
- package/preact-mount.js +1 -1
- package/preact.d.ts +15 -10
- package/preact.js +109 -64
- package/progress/_bar.scss +9 -3
- package/progress/_circular.scss +2 -1
- package/rating-choice.js +1 -1
- package/react-adapter.d.ts +4 -2
- package/react-control.d.ts +1 -0
- package/react.d.ts +20 -11
- package/react.js +72 -88
- package/reorder-list.d.ts +1 -1
- package/reorder-list.js +1 -1
- package/reorder-list.scss +59 -17
- package/resource-picker/resource-picker-popup.js +1 -1
- package/resource-picker/resource-picker.js +73 -71
- package/resource-picker/resource-picker.scss +66 -35
- package/rich-text/engine.d.ts +17 -19
- package/rich-text/format-html.d.ts +2 -0
- package/rich-text/index.d.ts +11 -7
- package/rich-text/index.js +1 -1
- package/rich-text/model.d.ts +6 -3
- package/rich-text/render-model.d.ts +4 -5
- package/rich-text/style.scss +295 -55
- package/rich-text/syntax.d.ts +5 -2
- package/rich-text/toolbar.d.ts +6 -6
- package/rich-text/translations.d.ts +5 -15
- package/search-input/index.js +1 -1
- package/search-input/native.d.ts +21 -2
- package/select.d.ts +22 -0
- package/select.js +1 -0
- package/selection-list.d.ts +1 -0
- package/selection-list.js +3 -1
- package/status-feedback/exit-snapshot.js +1 -1
- package/status-feedback/index.js +2 -2
- package/status-feedback/popover.js +9 -9
- package/status-feedback/render.js +3 -44
- package/status-feedback/status-feedback.scss +130 -34
- package/status-feedback/types.d.ts +4 -0
- package/status-feedback/use-auto-dismiss.d.ts +3 -0
- package/styles/_activity-message.scss +24 -7
- package/styles/_alert.scss +78 -17
- package/styles/_cell-editor-frame.scss +11 -0
- package/styles/_compositions.scss +404 -82
- package/styles/_control.scss +42 -12
- package/styles/_disclosure.scss +15 -5
- package/styles/_editor-counter.scss +16 -6
- package/styles/_editor-slider.scss +8 -4
- package/styles/_field-configurator.scss +321 -23
- package/styles/_fields-grid.scss +49 -0
- package/styles/_filter-controls.scss +10 -2
- package/styles/_icon-action.scss +48 -15
- package/styles/_loading.scss +12 -3
- package/styles/_motion.scss +32 -9
- package/styles/_palette.scss +0 -24
- package/styles/_primitives.scss +376 -116
- package/styles/_theme.scss +130 -86
- package/styles/_thresholds.scss +28 -25
- package/styles/_time-grid.scss +8 -3
- package/styles/_tokens.scss +6 -1
- package/styles/configurator-actions.scss +241 -0
- package/styles/pagination.css +213 -0
- package/styles/{legacy-rating.css → rating.css} +8 -3
- package/styles.css +1 -1
- package/styles.scss +3 -5
- package/surfaces.d.ts +38 -2
- package/surfaces.js +37 -134
- package/svelte/UiComponent.server.js +1 -48
- package/svelte/UiComponent.svelte +44 -32
- package/svelte.d.ts +1 -1
- package/svelte.js +33 -68
- package/switch/index.js +15 -14
- package/time-grid.d.ts +0 -1
- package/time-grid.js +38 -37
- package/timeline-track/_style.scss +96 -24
- package/timeline-track/component.d.ts +5 -1
- package/timeline-track/index.js +71 -54
- package/timeline-track/model.d.ts +9 -0
- package/timeline-track/model.js +10 -1
- package/ui.css +1 -1
- package/view-switcher.d.ts +23 -0
- package/vue.d.ts +51 -35
- package/vue.js +149 -178
- package/_chunks/chart-frame-BC99KjGa.js +0 -127
- package/_chunks/choice-chips-Cs4D-3nH.js +0 -110
- package/_chunks/compat.module-DDB2pm9O.js +0 -229
- package/_chunks/control-tooltip-ztgmsG7H.js +0 -100
- package/_chunks/dialog.parts-DBqo3Qwb.js +0 -134
- package/_chunks/dropdown-voWqmwAe.js +0 -357
- package/_chunks/editor-popup-D3JdS8l3.js +0 -81
- package/_chunks/mount-DZe_6VtR.js +0 -90
- package/_chunks/request-trail-IdNiFvKH.js +0 -347
- package/_chunks/rich-text-BzI1DyfF.js +0 -477
- package/avatar/index.view.d.ts +0 -25
- package/color-palette/native.view.d.ts +0 -15
- package/control-presentation.view.d.ts +0 -8
- package/dialog/dialog-action-footer.view.d.ts +0 -20
- package/dialog/dialog.dom.view.d.ts +0 -15
- package/form-controls/index.view.d.ts +0 -12
- package/formatting/control-tooltip.d.ts +0 -27
- package/native-controls.view.d.ts +0 -54
- package/react-native-select.d.ts +0 -6
- package/search-input/native.view.d.ts +0 -21
- package/styles/legacy-pagination.css +0 -112
- package/surfaces.view.d.ts +0 -63
- 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 {
|
|
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
|
|
6
|
-
function
|
|
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
|
|
14
|
-
let t = (
|
|
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", {}),
|
|
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((
|
|
32
|
-
let { weekday:
|
|
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")}${
|
|
35
|
+
class: `${t("row")}${f ? " is-weekend" : ""}`,
|
|
35
36
|
role: "row",
|
|
36
|
-
children: [/* @__PURE__ */ n(
|
|
37
|
+
children: [/* @__PURE__ */ n(i, {
|
|
37
38
|
class: t("weekday"),
|
|
38
39
|
role: "rowheader",
|
|
39
|
-
title:
|
|
40
|
-
children:
|
|
41
|
-
}),
|
|
42
|
-
let
|
|
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":
|
|
48
|
-
class:
|
|
49
|
-
weekend:
|
|
48
|
+
"data-time-cell": i,
|
|
49
|
+
class: o({
|
|
50
|
+
weekend: f,
|
|
50
51
|
outsideWorkHours: u
|
|
51
|
-
})
|
|
52
|
-
"aria-selected":
|
|
53
|
-
"aria-label": e.cellLabel(
|
|
54
|
-
tabIndex: e.focused ===
|
|
55
|
-
onFocus: () => e.onFocus(
|
|
56
|
-
onKeyDown: (n) => e.onKeyDown(n,
|
|
57
|
-
onClick: (n) => e.onClick(n,
|
|
58
|
-
onPointerDown: (n) => e.onPointerDown(n,
|
|
59
|
-
onPointerEnter: () => e.onPointerEnter(
|
|
60
|
-
},
|
|
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
|
-
},
|
|
63
|
+
}, l);
|
|
63
64
|
})
|
|
64
65
|
})]
|
|
65
66
|
});
|
|
66
67
|
}
|
|
67
|
-
function
|
|
68
|
+
function c(n) {
|
|
68
69
|
let r = t(n);
|
|
69
70
|
r.current = n;
|
|
70
|
-
let
|
|
71
|
+
let i = t(), o = t(), s = t(), c = () => {
|
|
71
72
|
o.current?.(), o.current = void 0;
|
|
72
73
|
};
|
|
73
74
|
e(() => () => {
|
|
74
|
-
|
|
75
|
+
i.current = void 0, c(), s.current !== void 0 && cancelAnimationFrame(s.current);
|
|
75
76
|
}, []);
|
|
76
77
|
let l = (e, t) => {
|
|
77
|
-
let n =
|
|
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(),
|
|
101
|
+
e.preventDefault(), c(), i.current = { selected: !s };
|
|
101
102
|
let l = e.currentTarget.ownerDocument, u = () => {
|
|
102
|
-
|
|
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(
|
|
107
|
+
}, r.current.onPaint(t, n, !s), r.current.onFocus(a(t, n));
|
|
107
108
|
},
|
|
108
109
|
onPointerEnter: (e, t) => {
|
|
109
|
-
|
|
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 {
|
|
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
|
|
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(
|
|
13
|
-
|
|
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(
|
|
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 {
|
|
25
|
-
|
|
26
|
-
|
|
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:
|
|
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 {
|
|
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 {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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)
|
|
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 {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
.rv-timeline-control__handle--
|
|
101
|
-
|
|
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 {
|
|
173
|
+
.rv-timeline-control__bar {
|
|
174
|
+
transition: none;
|
|
175
|
+
}
|
|
110
176
|
}
|
|
111
177
|
@media (forced-colors: active) {
|
|
112
|
-
.rv-timeline-control__track {
|
|
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 {
|
|
120
|
-
|
|
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>):
|
|
27
|
+
export declare function TimelineTrack<T extends TimelineTrackEvent>({ rows, tooltip, formatValue, getTooltip, selected, range, labels, onSelect, onEventChange, }: TimelineTrackProps<T>): JSX.Element;
|
package/timeline-track/index.js
CHANGED
|
@@ -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 {
|
|
4
|
-
import {
|
|
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
|
|
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
|
|
13
|
-
let
|
|
14
|
-
...
|
|
15
|
-
...
|
|
16
|
-
},
|
|
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),
|
|
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
|
-
},
|
|
25
|
-
},
|
|
26
|
-
let t =
|
|
25
|
+
}, v(t.id));
|
|
26
|
+
}, C = (e) => {
|
|
27
|
+
let t = x.current;
|
|
27
28
|
if (!t) return;
|
|
28
|
-
let n =
|
|
29
|
-
|
|
30
|
-
},
|
|
31
|
-
|
|
32
|
-
},
|
|
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 =
|
|
36
|
-
|
|
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":
|
|
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:
|
|
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:
|
|
50
|
+
children: g.end
|
|
50
51
|
}),
|
|
51
|
-
|
|
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:
|
|
55
|
-
let a =
|
|
56
|
-
return /* @__PURE__ */ t(
|
|
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
|
-
|
|
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":
|
|
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":
|
|
75
|
-
"aria-label": e.event.label ? `${
|
|
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: () =>
|
|
78
|
-
onPointerDown: (t) =>
|
|
79
|
-
onPointerMove:
|
|
80
|
-
onPointerUp:
|
|
81
|
-
onPointerCancel:
|
|
82
|
-
onKeyDown: (t) =>
|
|
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":
|
|
95
|
-
"aria-valuemin": Math.min(
|
|
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: () =>
|
|
105
|
+
onFocus: () => v(e.id),
|
|
100
106
|
onPointerDown: (t) => {
|
|
101
|
-
t.stopPropagation(),
|
|
107
|
+
t.stopPropagation(), S(t, e, "start");
|
|
102
108
|
},
|
|
103
|
-
onPointerMove:
|
|
104
|
-
onPointerUp:
|
|
105
|
-
onPointerCancel:
|
|
109
|
+
onPointerMove: C,
|
|
110
|
+
onPointerUp: w,
|
|
111
|
+
onPointerCancel: w,
|
|
106
112
|
onKeyDown: (t) => {
|
|
107
|
-
t.stopPropagation(),
|
|
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":
|
|
122
|
+
"aria-label": b.resizeEnd(s),
|
|
117
123
|
"aria-valuemin": e.event.start,
|
|
118
|
-
"aria-valuemax": Math.max(
|
|
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: () =>
|
|
127
|
+
onFocus: () => v(e.id),
|
|
122
128
|
onPointerDown: (t) => {
|
|
123
|
-
t.stopPropagation(),
|
|
129
|
+
t.stopPropagation(), S(t, e, "end");
|
|
124
130
|
},
|
|
125
|
-
onPointerMove:
|
|
126
|
-
onPointerUp:
|
|
127
|
-
onPointerCancel:
|
|
131
|
+
onPointerMove: C,
|
|
132
|
+
onPointerUp: w,
|
|
133
|
+
onPointerCancel: w,
|
|
128
134
|
onKeyDown: (t) => {
|
|
129
|
-
t.stopPropagation(),
|
|
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 {
|
|
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;
|
package/timeline-track/model.js
CHANGED
|
@@ -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 };
|