util.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import type { BarMap } from './types';
  2. import type { MergeAll } from '/@/utils/types';
  3. export const BAR_MAP: BarMap = {
  4. vertical: {
  5. offset: 'offsetHeight',
  6. scroll: 'scrollTop',
  7. scrollSize: 'scrollHeight',
  8. size: 'height',
  9. key: 'vertical',
  10. axis: 'Y',
  11. client: 'clientY',
  12. direction: 'top',
  13. },
  14. horizontal: {
  15. offset: 'offsetWidth',
  16. scroll: 'scrollLeft',
  17. scrollSize: 'scrollWidth',
  18. size: 'width',
  19. key: 'horizontal',
  20. axis: 'X',
  21. client: 'clientX',
  22. direction: 'left',
  23. },
  24. };
  25. // @ts-ignore
  26. export function renderThumbStyle({ move, size, bar }) {
  27. const style = {} as any;
  28. const translate = `translate${bar.axis}(${move}%)`;
  29. style[bar.size] = size;
  30. style.transform = translate;
  31. style.msTransform = translate;
  32. style.webkitTransform = translate;
  33. return style;
  34. }
  35. function extend<T extends object, K extends object>(to: T, _from: K): T & K {
  36. return Object.assign(to, _from);
  37. }
  38. /**
  39. * [
  40. * { name: 'zhangsan', age: 18 },
  41. * { sex: 'male', age: 20 }
  42. * ]
  43. * =>
  44. * { name: 'zhangsan', sex: 'male', age: 20 }
  45. */
  46. export function toObject<T extends object[]>(arr: T): MergeAll<T> {
  47. const res = {} as MergeAll<T>;
  48. for (let i = 0; i < arr.length; i++) {
  49. if (arr[i]) {
  50. extend(res, arr[i]);
  51. }
  52. }
  53. return res;
  54. }