{"version":3,"file":"slider.type.mjs","sources":["../../../../../../packages/components/slider/src/slider.type.ts"],"sourcesContent":["import type { ComputedRef, CSSProperties, InjectionKey, Ref } from 'vue'\r\nimport type { Nullable } from '@sgui-plus/utils/types'\r\n\r\nexport interface ISliderProps {\r\n  modelValue: number | number[]\r\n  min: number\r\n  max: number\r\n  step: number\r\n  showInput: boolean\r\n  showInputControls: boolean\r\n  showStops: boolean\r\n  showTooltip: string\r\n  formatTooltip: (val: number) => number | string\r\n  disabled: boolean\r\n  range: boolean\r\n  vertical: boolean\r\n  height: string\r\n  label: string\r\n  marks?: Record<number, any>\r\n  placement: string\r\n}\r\n\r\nexport interface ISliderInitData {\r\n  firstValue: Nullable<number>\r\n  secondValue: Nullable<number>\r\n  oldValue: Nullable<number>\r\n  dragging: boolean\r\n  sliderSize: number\r\n}\r\n\r\nexport interface ISliderProvider {\r\n  disabled: ComputedRef<boolean>\r\n  min: ComputedRef<number>\r\n  max: ComputedRef<number>\r\n  step: ComputedRef<number>\r\n  showTooltip: ComputedRef<boolean>\r\n  precision: ComputedRef<number>\r\n  sliderSize: ComputedRef<number>\r\n  formatTooltip: ComputedRef<(value: number) => number | string>\r\n  emitChange: () => void\r\n  resetSize: () => void\r\n  updateDragging: (val: boolean) => void\r\n}\r\n\r\nexport type Mark = {\r\n  point: number\r\n  position: number\r\n  mark: { [s: string]: any }\r\n}\r\n\r\nexport type Marks = ComputedRef<Mark[]>\r\n\r\nexport type Stops = {\r\n  stops: ComputedRef<number[]>\r\n  getStopStyle: (position: number) => CSSProperties\r\n}\r\n\r\nexport type Slide = {\r\n  slider: Ref<HTMLElement>\r\n  firstButton: Ref<ISliderButton>\r\n  secondButton: Ref<ISliderButton>\r\n  sliderDisabled: ComputedRef<boolean>\r\n  minValue: ComputedRef<number>\r\n  maxValue: ComputedRef<number>\r\n  runwayStyle: ComputedRef<CSSProperties>\r\n  barStyle: ComputedRef<CSSProperties>\r\n  resetSize: () => void\r\n  setPosition: (percent: number) => void\r\n  emitChange: () => void\r\n  onSliderClick: (event: MouseEvent) => void\r\n}\r\n\r\nexport type ButtonRefs = {\r\n  [s in 'firstButton' | 'secondButton']: Ref<Nullable<ISliderButton>>\r\n}\r\n\r\nexport interface ISliderButtonProps {\r\n  modelValue: number\r\n  vertical: boolean\r\n}\r\n\r\nexport interface ISliderButtonInitData {\r\n  hovering: boolean\r\n  dragging: boolean\r\n  isClick: boolean\r\n  startX: number\r\n  currentX: number\r\n  startY: number\r\n  currentY: number\r\n  startPosition: number\r\n  newPosition: number\r\n  oldValue: number\r\n}\r\n\r\nexport interface ISliderButton {\r\n  tooltip: Ref<Nullable<HTMLElement>>\r\n  showTooltip: Ref<boolean>\r\n  wrapperStyle: ComputedRef<CSSProperties>\r\n  formatValue: ComputedRef<number | string>\r\n  handleMouseEnter: () => void\r\n  handleMouseLeave: () => void\r\n  onButtonDown: (event: MouseEvent | TouchEvent) => void\r\n  onLeftKeyDown: () => void\r\n  onRightKeyDown: () => void\r\n  setPosition: (newPosition: number) => void\r\n}\r\n\r\nexport const SliderContextKey: InjectionKey<any> = Symbol('SliderContextKey')\r\n"],"names":[],"mappings":"AAAY,MAAC,gBAAgB,GAAG,MAAM,CAAC,kBAAkB;;;;"}