slider.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. var __rest = (this && this.__rest) || function (s, e) {
  2. var t = {};
  3. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
  4. t[p] = s[p];
  5. if (s != null && typeof Object.getOwnPropertySymbols === "function")
  6. for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
  7. if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
  8. t[p[i]] = s[p[i]];
  9. }
  10. return t;
  11. };
  12. import { Slider as SliderComponent } from '@antv/gui';
  13. import { format } from 'd3-format';
  14. import { isTranspose } from '../utils/coordinate';
  15. import { invert } from '../utils/scale';
  16. /**
  17. * Slider component.
  18. */
  19. export const Slider = (options) => {
  20. // do not pass size.
  21. const { orientation, labelFormatter, size, style, position } = options, rest = __rest(options, ["orientation", "labelFormatter", "size", "style", "position"]);
  22. return ({ scales: [scale], value, theme, coordinate }) => {
  23. var _a;
  24. const { bbox } = value;
  25. const { x, y, width, height } = bbox;
  26. const { slider: sliderTheme = {} } = theme;
  27. const defaultFormatter = ((_a = scale.getFormatter) === null || _a === void 0 ? void 0 : _a.call(scale)) || ((v) => v.toString());
  28. const formatter = typeof labelFormatter === 'string'
  29. ? format(labelFormatter)
  30. : labelFormatter;
  31. const isHorizontal = orientation === 'horizontal';
  32. const reverse = isTranspose(coordinate) && isHorizontal;
  33. return new SliderComponent({
  34. className: 'slider',
  35. style: Object.assign({}, sliderTheme, Object.assign(Object.assign({ x,
  36. y, trackLength: isHorizontal ? width : height, orientation, formatter: (v) => {
  37. const f = formatter || defaultFormatter;
  38. const v1 = reverse ? 1 - v : v;
  39. const tick = invert(scale, v1, true);
  40. return f(tick);
  41. } }, style), rest)),
  42. });
  43. };
  44. };
  45. Slider.props = {
  46. defaultPosition: 'bottom',
  47. defaultSize: 24,
  48. defaultOrder: 1,
  49. };
  50. //# sourceMappingURL=slider.js.map