50 lines
1.0 KiB
TypeScript
50 lines
1.0 KiB
TypeScript
import type { BarMap } from './types'
|
|
export const BAR_MAP: BarMap = {
|
|
vertical: {
|
|
offset: 'offsetHeight',
|
|
scroll: 'scrollTop',
|
|
scrollSize: 'scrollHeight',
|
|
size: 'height',
|
|
key: 'vertical',
|
|
axis: 'Y',
|
|
client: 'clientY',
|
|
direction: 'top'
|
|
},
|
|
horizontal: {
|
|
offset: 'offsetWidth',
|
|
scroll: 'scrollLeft',
|
|
scrollSize: 'scrollWidth',
|
|
size: 'width',
|
|
key: 'horizontal',
|
|
axis: 'X',
|
|
client: 'clientX',
|
|
direction: 'left'
|
|
}
|
|
}
|
|
|
|
export function renderThumbStyle({ move, size, bar }: any) {
|
|
const style = {} as any
|
|
const translate = `translate${bar.axis}(${move}%)`
|
|
|
|
style[bar.size] = size
|
|
style.transform = translate
|
|
style.msTransform = translate
|
|
style.webkitTransform = translate
|
|
|
|
return style
|
|
}
|
|
|
|
function extend<T, K>(to: T, _from: K): T & K {
|
|
return Object.assign(to, _from)
|
|
}
|
|
|
|
export function toObject<T>(arr: Array<T>): Record<string, T> {
|
|
const res = {}
|
|
for (let i = 0; i < arr.length; i++) {
|
|
if (arr[i]) {
|
|
extend(res, arr[i])
|
|
}
|
|
}
|
|
return res
|
|
}
|