(value: number, input: { count: number; limit: number; selected: number; dir: -1 | 1 })
| 41 | } |
| 42 | |
| 43 | function moveOffset(value: number, input: { count: number; limit: number; selected: number; dir: -1 | 1 }) { |
| 44 | const max = maxOffset(input.count, input.limit) |
| 45 | const margin = previewMargin(input.limit) |
| 46 | if (input.dir < 0 && input.selected < value + margin) { |
| 47 | return Math.max(0, Math.min(max, input.selected - margin)) |
| 48 | } |
| 49 | |
| 50 | if (input.dir > 0 && input.selected > value + input.limit - margin - 1) { |
| 51 | return Math.min(max, input.selected - input.limit + margin + 1) |
| 52 | } |
| 53 | |
| 54 | return Math.min(max, value) |
| 55 | } |
| 56 | |
| 57 | export function createFooterMenuState(input: { count: Accessor<number>; limit?: number }) { |
| 58 | const [selected, setSelected] = createSignal(0) |
no test coverage detected