{"version":3,"file":"stickyScrollBar.cjs","sources":["../../../../../../packages/vue-components/vc-table/src/stickyScrollBar.tsx"],"sourcesContent":["import type { MouseEventHandler } from '@antdv/types';\nimport type { Ref } from 'vue';\nimport { addEventListenerWrap, classNames, getOffset, getScrollBarSize } from '@antdv/utils';\n\nimport {\n  defineComponent,\n  nextTick,\n  onActivated,\n  onBeforeUnmount,\n  onMounted,\n  ref,\n  shallowRef,\n  watch,\n  watchEffect,\n} from 'vue';\nimport { useInjectTable } from './context/TableContext';\nimport { useLayoutState } from './hooks/useFrame';\n\ninterface StickyScrollBarProps {\n  scrollBodyRef: Ref<HTMLElement>;\n  onScroll: (params: { scrollLeft?: number }) => void;\n  offsetScroll: number;\n  container: HTMLElement | Window;\n  scrollBodySizeInfo: {\n    scrollWidth: number;\n    clientWidth: number;\n  };\n}\n\nexport default defineComponent<StickyScrollBarProps>({\n  name: 'StickyScrollBar',\n  inheritAttrs: false,\n  props: ['offsetScroll', 'container', 'scrollBodyRef', 'scrollBodySizeInfo'] as any,\n  emits: ['scroll'],\n  setup(props, { emit, expose }) {\n    const tableContext = useInjectTable();\n    const bodyScrollWidth = shallowRef(0);\n    const bodyWidth = shallowRef(0);\n    const scrollBarWidth = shallowRef(0);\n    watchEffect(\n      () => {\n        bodyScrollWidth.value = props.scrollBodySizeInfo.scrollWidth || 0;\n        bodyWidth.value = props.scrollBodySizeInfo.clientWidth || 0;\n        scrollBarWidth.value\n          = bodyScrollWidth.value && bodyWidth.value * (bodyWidth.value / bodyScrollWidth.value);\n      },\n      { flush: 'post' },\n    );\n\n    const scrollBarRef = shallowRef();\n\n    const [scrollState, setScrollState] = useLayoutState({\n      scrollLeft: 0,\n      isHiddenScrollBar: true,\n    });\n\n    const refState = ref({\n      delta: 0,\n      x: 0,\n    });\n\n    const isActive = shallowRef(false);\n\n    const onMouseUp: MouseEventHandler = () => {\n      isActive.value = false;\n    };\n\n    const onMouseDown: MouseEventHandler = (event) => {\n      refState.value = { delta: event.pageX - scrollState.value.scrollLeft, x: 0 };\n      isActive.value = true;\n      event.preventDefault();\n    };\n\n    const onMouseMove: MouseEventHandler = (event) => {\n      // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons\n      const { buttons } = event || (window?.event as any);\n      if (!isActive.value || buttons === 0) {\n        // If out body mouse up, we can set isActive false when mouse move\n        if (isActive.value)\n          isActive.value = false;\n\n        return;\n      }\n      let left: number = refState.value.x + event.pageX - refState.value.x - refState.value.delta;\n\n      if (left <= 0)\n        left = 0;\n\n      if (left + scrollBarWidth.value >= bodyWidth.value)\n        left = bodyWidth.value - scrollBarWidth.value;\n\n      emit('scroll', {\n        scrollLeft: (left / bodyWidth.value) * (bodyScrollWidth.value + 2),\n      });\n\n      refState.value.x = event.pageX;\n    };\n\n    const onContainerScroll = () => {\n      if (!props.scrollBodyRef.value)\n        return;\n\n      const tableOffsetTop = getOffset(props.scrollBodyRef.value).top;\n      const tableBottomOffset = tableOffsetTop + props.scrollBodyRef.value.offsetHeight;\n      const currentClientOffset\n        = props.container === window\n          ? document.documentElement.scrollTop + window.innerHeight\n          : getOffset(props.container).top + (props.container as HTMLElement).clientHeight;\n\n      if (\n        tableBottomOffset - getScrollBarSize() <= currentClientOffset\n        || tableOffsetTop >= currentClientOffset - props.offsetScroll\n      ) {\n        setScrollState(state => ({\n          ...state,\n          isHiddenScrollBar: true,\n        }));\n      } else {\n        setScrollState(state => ({\n          ...state,\n          isHiddenScrollBar: false,\n        }));\n      }\n    };\n\n    const setScrollLeft = (left: number) => {\n      setScrollState((state) => {\n        return {\n          ...state,\n          scrollLeft: (left / bodyScrollWidth.value) * bodyWidth.value || 0,\n        };\n      });\n    };\n\n    expose({\n      setScrollLeft,\n    });\n    let onMouseUpListener = null;\n    let onMouseMoveListener = null;\n    let onResizeListener = null;\n    let onScrollListener = null;\n    onMounted(() => {\n      onMouseUpListener = addEventListenerWrap(document.body, 'mouseup', onMouseUp, false);\n      onMouseMoveListener = addEventListenerWrap(document.body, 'mousemove', onMouseMove, false);\n      onResizeListener = addEventListenerWrap(window, 'resize', onContainerScroll, false);\n    });\n    onActivated(() => {\n      nextTick(() => {\n        onContainerScroll();\n      });\n    });\n\n    onMounted(() => {\n      setTimeout(() => {\n        watch(\n          [scrollBarWidth, isActive],\n          () => {\n            onContainerScroll();\n          },\n          { immediate: true, flush: 'post' },\n        );\n      });\n    });\n\n    watch(\n      () => props.container,\n      () => {\n        onScrollListener?.remove();\n        onScrollListener = addEventListenerWrap(\n          props.container,\n          'scroll',\n          onContainerScroll,\n          false,\n        );\n      },\n      { immediate: true, flush: 'post' },\n    );\n\n    onBeforeUnmount(() => {\n      onMouseUpListener?.remove();\n      onMouseMoveListener?.remove();\n      onScrollListener?.remove();\n      onResizeListener?.remove();\n    });\n\n    watch(\n      () => ({ ...scrollState.value }),\n      (newState, preState) => {\n        if (\n          newState.isHiddenScrollBar !== preState?.isHiddenScrollBar\n          && !newState.isHiddenScrollBar\n        ) {\n          setScrollState((state) => {\n            const bodyNode = props.scrollBodyRef.value;\n            if (!bodyNode)\n              return state;\n\n            return {\n              ...state,\n              scrollLeft: (bodyNode.scrollLeft / bodyNode.scrollWidth) * bodyNode.clientWidth,\n            };\n          });\n        }\n      },\n      { immediate: true },\n    );\n    const scrollbarSize = getScrollBarSize();\n\n    return () => {\n      if (\n        bodyScrollWidth.value <= bodyWidth.value\n        || !scrollBarWidth.value\n        || scrollState.value.isHiddenScrollBar\n      ) {\n        return null;\n      }\n\n      const { prefixCls } = tableContext;\n      return (\n        <div\n          style={{\n            height: `${scrollbarSize}px`,\n            width: `${bodyWidth.value}px`,\n            bottom: `${props.offsetScroll}px`,\n          }}\n          class={`${prefixCls}-sticky-scroll`}\n        >\n          <div\n            onMousedown={onMouseDown}\n            ref={scrollBarRef}\n            class={classNames(`${prefixCls}-sticky-scroll-bar`, {\n              [`${prefixCls}-sticky-scroll-bar-active`]: isActive.value,\n            })}\n            style={{\n              width: `${scrollBarWidth.value}px`,\n              transform: `translate3d(${scrollState.value.scrollLeft}px, 0, 0)`,\n            }}\n          />\n        </div>\n      );\n    };\n  },\n});\n"],"names":["defineComponent","name","inheritAttrs","props","emits","setup","emit","expose","tableContext","useInjectTable","bodyScrollWidth","shallowRef","bodyWidth","scrollBarWidth","watchEffect","value","scrollBodySizeInfo","scrollWidth","clientWidth","flush","scrollBarRef","scrollState","setScrollState","useLayoutState","scrollLeft","isHiddenScrollBar","refState","ref","delta","x","isActive","onMouseUp","onMouseDown","event","pageX","preventDefault","onMouseMove","buttons","window","left","onContainerScroll","scrollBodyRef","tableOffsetTop","getOffset","top","tableBottomOffset","offsetHeight","currentClientOffset","container","document","documentElement","scrollTop","innerHeight","clientHeight","getScrollBarSize","offsetScroll","state","setScrollLeft","onMouseUpListener","onMouseMoveListener","onResizeListener","onScrollListener","onMounted","addEventListenerWrap","body","onActivated","nextTick","setTimeout","watch","immediate","remove","onBeforeUnmount","newState","preState","bodyNode","scrollbarSize","prefixCls","_createVNode","height","width","bottom","classNames","transform"],"mappings":"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"}