{"version":3,"file":"ScrollBar.cjs","sources":["../../../../../../packages/vue-components/vc-virtual-list/src/ScrollBar.tsx"],"sourcesContent":["import type { PropType } from 'vue';\nimport { classNames, createRef, raf, supportsPassive } from '@antdv/utils';\nimport { defineComponent, reactive } from 'vue';\n\nconst MIN_SIZE = 20;\n\ninterface ScrollBarState {\n  dragging: boolean;\n  pageY: number | null;\n  startTop: number | null;\n  visible: boolean;\n}\n\nfunction getPageY(e: MouseEvent | TouchEvent) {\n  return 'touches' in e ? e.touches[0].pageY : e.pageY;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ScrollBar',\n  inheritAttrs: false,\n  props: {\n    prefixCls: String,\n    scrollTop: Number,\n    scrollHeight: Number,\n    height: Number,\n    count: Number,\n    onScroll: {\n      type: Function as PropType<(scrollTop: number) => void>,\n    },\n    onStartMove: {\n      type: Function as PropType<() => void>,\n    },\n    onStopMove: {\n      type: Function as PropType<() => void>,\n    },\n  },\n  setup() {\n    return {\n      moveRaf: null,\n      scrollbarRef: createRef(),\n      thumbRef: createRef(),\n      visibleTimeout: null,\n      state: reactive<ScrollBarState>({\n        dragging: false,\n        pageY: null,\n        startTop: null,\n        visible: false,\n      }),\n    };\n  },\n  watch: {\n    scrollTop: {\n      handler() {\n        this.delayHidden();\n      },\n      flush: 'post',\n    },\n  },\n\n  mounted() {\n    this.scrollbarRef.current?.addEventListener(\n      'touchstart',\n      this.onScrollbarTouchStart,\n      supportsPassive ? ({ passive: false } as EventListenerOptions) : false,\n    );\n    this.thumbRef.current?.addEventListener(\n      'touchstart',\n      this.onMouseDown,\n      supportsPassive ? ({ passive: false } as EventListenerOptions) : false,\n    );\n  },\n\n  beforeUnmount() {\n    this.removeEvents();\n    clearTimeout(this.visibleTimeout);\n  },\n  methods: {\n    delayHidden() {\n      clearTimeout(this.visibleTimeout);\n      this.state.visible = true;\n\n      this.visibleTimeout = setTimeout(() => {\n        this.state.visible = false;\n      }, 2000);\n    },\n\n    onScrollbarTouchStart(e: TouchEvent) {\n      e.preventDefault();\n    },\n\n    onContainerMouseDown(e: MouseEvent) {\n      e.stopPropagation();\n      e.preventDefault();\n    },\n\n    // ======================= Clean =======================\n    patchEvents() {\n      window.addEventListener('mousemove', this.onMouseMove);\n      window.addEventListener('mouseup', this.onMouseUp);\n\n      this.thumbRef.current.addEventListener(\n        'touchmove',\n        this.onMouseMove,\n        supportsPassive ? ({ passive: false } as EventListenerOptions) : false,\n      );\n      this.thumbRef.current.addEventListener('touchend', this.onMouseUp);\n    },\n\n    removeEvents() {\n      window.removeEventListener('mousemove', this.onMouseMove);\n      window.removeEventListener('mouseup', this.onMouseUp);\n\n      this.scrollbarRef.current.removeEventListener(\n        'touchstart',\n        this.onScrollbarTouchStart,\n        supportsPassive ? ({ passive: false } as EventListenerOptions) : false,\n      );\n      if (this.thumbRef.current) {\n        this.thumbRef.current.removeEventListener(\n          'touchstart',\n          this.onMouseDown,\n          supportsPassive ? ({ passive: false } as EventListenerOptions) : false,\n        );\n        this.thumbRef.current.removeEventListener(\n          'touchmove',\n          this.onMouseMove,\n          supportsPassive ? ({ passive: false } as EventListenerOptions) : false,\n        );\n        this.thumbRef.current.removeEventListener('touchend', this.onMouseUp);\n      }\n      raf.cancel(this.moveRaf);\n    },\n\n    // ======================= Thumb =======================\n    onMouseDown(e: MouseEvent | TouchEvent) {\n      const { onStartMove } = this.$props;\n\n      Object.assign(this.state, {\n        dragging: true,\n        pageY: getPageY(e),\n        startTop: this.getTop(),\n      });\n\n      onStartMove();\n      this.patchEvents();\n      e.stopPropagation();\n      e.preventDefault();\n    },\n\n    onMouseMove(e: MouseEvent | TouchEvent) {\n      const { dragging, pageY, startTop } = this.state;\n      const { onScroll } = this.$props;\n\n      raf.cancel(this.moveRaf);\n\n      if (dragging) {\n        const offsetY = getPageY(e) - pageY;\n        const newTop = startTop + offsetY;\n\n        const enableScrollRange = this.getEnableScrollRange();\n        const enableHeightRange = this.getEnableHeightRange();\n\n        const ptg = enableHeightRange ? newTop / enableHeightRange : 0;\n        const newScrollTop = Math.ceil(ptg * enableScrollRange);\n        this.moveRaf = raf(() => {\n          onScroll(newScrollTop);\n        });\n      }\n    },\n\n    onMouseUp() {\n      const { onStopMove } = this.$props;\n      this.state.dragging = false;\n\n      onStopMove();\n      this.removeEvents();\n    },\n\n    // ===================== Calculate =====================\n    getSpinHeight() {\n      const { height, scrollHeight } = this.$props;\n      let baseHeight = (height / scrollHeight) * 100;\n      baseHeight = Math.max(baseHeight, MIN_SIZE);\n      baseHeight = Math.min(baseHeight, height / 2);\n      return Math.floor(baseHeight);\n    },\n\n    getEnableScrollRange() {\n      const { scrollHeight, height } = this.$props;\n      return scrollHeight - height || 0;\n    },\n\n    getEnableHeightRange() {\n      const { height } = this.$props;\n      const spinHeight = this.getSpinHeight();\n      return height - spinHeight || 0;\n    },\n\n    getTop() {\n      const { scrollTop } = this.$props;\n      const enableScrollRange = this.getEnableScrollRange();\n      const enableHeightRange = this.getEnableHeightRange();\n      if (scrollTop === 0 || enableScrollRange === 0)\n        return 0;\n\n      const ptg = scrollTop / enableScrollRange;\n      return ptg * enableHeightRange;\n    },\n    // Not show scrollbar when height is large than scrollHeight\n    showScroll() {\n      const { height, scrollHeight } = this.$props;\n      return scrollHeight > height;\n    },\n  },\n\n  render() {\n    const { dragging, visible } = this.state;\n    const { prefixCls } = this.$props;\n    const spinHeight = `${this.getSpinHeight()}px`;\n    const top = `${this.getTop()}px`;\n    const canScroll = this.showScroll();\n    const mergedVisible = canScroll && visible;\n    return (\n      <div\n        ref={this.scrollbarRef}\n        class={classNames(`${prefixCls}-scrollbar`, {\n          [`${prefixCls}-scrollbar-show`]: canScroll,\n        })}\n        style={{\n          width: '8px',\n          top: 0,\n          bottom: 0,\n          right: 0,\n          position: 'absolute',\n          display: mergedVisible ? undefined : 'none',\n        }}\n        onMousedown={this.onContainerMouseDown}\n        onMousemove={this.delayHidden}\n      >\n        <div\n          ref={this.thumbRef}\n          class={classNames(`${prefixCls}-scrollbar-thumb`, {\n            [`${prefixCls}-scrollbar-thumb-moving`]: dragging,\n          })}\n          style={{\n            width: '100%',\n            height: spinHeight,\n            top,\n            left: 0,\n            position: 'absolute',\n            background: 'rgba(0, 0, 0, 0.5)',\n            borderRadius: '99px',\n            cursor: 'pointer',\n            userSelect: 'none',\n          }}\n          onMousedown={this.onMouseDown}\n        />\n      </div>\n    );\n  },\n});\n"],"names":["MIN_SIZE","getPageY","e","touches","pageY","defineComponent","compatConfig","MODE","name","inheritAttrs","props","prefixCls","String","scrollTop","Number","scrollHeight","height","count","onScroll","type","Function","onStartMove","onStopMove","setup","moveRaf","scrollbarRef","createRef","thumbRef","visibleTimeout","state","reactive","dragging","startTop","visible","watch","handler","delayHidden","flush","mounted","current","addEventListener","onScrollbarTouchStart","supportsPassive","passive","onMouseDown","beforeUnmount","removeEvents","clearTimeout","methods","setTimeout","preventDefault","onContainerMouseDown","stopPropagation","patchEvents","window","onMouseMove","onMouseUp","removeEventListener","raf","cancel","$props","Object","assign","getTop","offsetY","newTop","enableScrollRange","getEnableScrollRange","enableHeightRange","getEnableHeightRange","ptg","newScrollTop","Math","ceil","getSpinHeight","baseHeight","max","min","floor","spinHeight","showScroll","render","top","canScroll","mergedVisible","_createVNode","classNames","width","bottom","right","position","display","undefined","left","background","borderRadius","cursor","userSelect"],"mappings":"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"}