mirror of
https://github.com/He4eT/oddkb.git
synced 2026-05-05 01:17:25 +00:00
37 lines
743 B
JavaScript
37 lines
743 B
JavaScript
const HALVES_GAP = 5
|
|
const NUMBER_OF_ROWS = 8
|
|
|
|
const row = (keys, start, gapOffset) => [
|
|
{x: start},
|
|
...keys.slice(0, keys.length / 2),
|
|
{x: HALVES_GAP + gapOffset},
|
|
...keys.slice(keys.length / 2),
|
|
].flat()
|
|
|
|
const row12 = keys =>
|
|
row(keys, 0, 0)
|
|
|
|
const row4 = (keys, rowIndex) => ({
|
|
4: row(keys, 2, 4),
|
|
5: row(keys, 4, 0),
|
|
6: row(keys, 6, -4),
|
|
7: row(keys, 6, -4),
|
|
}[rowIndex % NUMBER_OF_ROWS])
|
|
|
|
const buildRow = (keys, rowIndex) => ({
|
|
12: row12(keys),
|
|
4: row4(keys, rowIndex)
|
|
}[keys.length] || ['Oh no...'])
|
|
|
|
const layerRange = layerIndex =>
|
|
layerIndex === -1
|
|
? []
|
|
: Array(2)
|
|
.fill(layerIndex)
|
|
.map((x, i) => x + i)
|
|
.map(x => x * NUMBER_OF_ROWS)
|
|
|
|
module.exports = {
|
|
layerRange,
|
|
buildRow
|
|
}
|