Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | 1x 51x 107x 107x 1x 1x 1x 1x 1x 1x 1x 1x | import { Slice } from "../slice";
import type { EditorContext } from "../editor-context";
import { ColumnsSlice } from "./columns-slice";
import { ChartSlice } from "./chart-slice";
import { TimingSlice } from "./timing-slice";
import { EVENT, TIME_SIGNATURE, BPM_CHANGE, CHART_REF } from "../components";
import { EntityBuilder } from "../../entity-manager";
import type { ColumnDefinition } from "../types";
export class TimingColumnsSlice extends Slice {
static readonly sliceKey = "timing-columns";
constructor(ctx: EditorContext) {
super(ctx);
ctx.get(ColumnsSlice).registerColumnProvider(1, () => this.getColumns());
}
getColumns(): ColumnDefinition[] {
return [
{ id: "measure", title: "", width: 40 },
{
id: "time-sig",
title: "Time",
width: 48,
placementHandler: (pulse) => {
const chartId = this.ctx.get(ChartSlice).$selectedChartId.get();
Iif (!chartId) return null;
const ts = this.ctx.get(TimingSlice).getTimingEngine().getTimeSignatureAtPulse(pulse);
return new EntityBuilder()
.with(EVENT, { y: pulse })
.with(TIME_SIGNATURE, { numerator: ts.numerator, denominator: ts.denominator })
.with(CHART_REF, { chartId })
.build();
},
},
{
id: "bpm",
title: "BPM",
width: 56,
placementHandler: (pulse) => {
const chartId = this.ctx.get(ChartSlice).$selectedChartId.get();
Iif (!chartId) return null;
const bpm = this.ctx.get(TimingSlice).getTimingEngine().getBpmAtPulse(pulse);
return new EntityBuilder()
.with(EVENT, { y: pulse })
.with(BPM_CHANGE, { bpm })
.with(CHART_REF, { chartId })
.build();
},
},
{ id: "spacer", title: "", width: 8 },
];
}
}
|