{"version":3,"file":"SelectScrollButtonImpl.cjs","sources":["../../src/Select/SelectScrollButtonImpl.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { onBeforeUnmount, ref, watchEffect } from 'vue'\nimport { injectSelectContentContext } from './SelectContentImpl.vue'\nimport { Primitive } from '@/Primitive'\nimport { useCollection } from '@/Collection'\nimport { getActiveElement } from '@/shared'\n\nexport type SelectScrollButtonImplEmits = {\n  autoScroll: []\n}\n\nconst emits = defineEmits<SelectScrollButtonImplEmits>()\nconst { getItems } = useCollection()\n\nconst contentContext = injectSelectContentContext()\nconst autoScrollTimerRef = ref<number | null>(null)\n\nfunction clearAutoScrollTimer() {\n  if (autoScrollTimerRef.value !== null) {\n    window.clearInterval(autoScrollTimerRef.value)\n    autoScrollTimerRef.value = null\n  }\n}\n\nwatchEffect(() => {\n  const activeItem = getItems().map(i => i.ref).find(\n    item => item === getActiveElement(),\n  )\n  activeItem?.scrollIntoView({ block: 'nearest' })\n})\n\nfunction handlePointerDown() {\n  if (autoScrollTimerRef.value === null) {\n    autoScrollTimerRef.value = window.setInterval(() => {\n      emits('autoScroll')\n    }, 50)\n  }\n}\n\nfunction handlePointerMove() {\n  contentContext.onItemLeave?.()\n  if (autoScrollTimerRef.value === null) {\n    autoScrollTimerRef.value = window.setInterval(() => {\n      emits('autoScroll')\n    }, 50)\n  }\n}\n\nonBeforeUnmount(() => clearAutoScrollTimer())\n</script>\n\n<template>\n  <Primitive\n    aria-hidden=\"true\"\n    :style=\"{\n      flexShrink: 0,\n    }\"\n    v-bind=\"$parent?.$props\"\n    @pointerdown=\"handlePointerDown\"\n    @pointermove=\"handlePointerMove\"\n    @pointerleave=\"\n      () => {\n        clearAutoScrollTimer();\n      }\n    \"\n  >\n    <slot />\n  </Primitive>\n</template>\n"],"names":["useCollection","injectSelectContentContext","ref","watchEffect","getActiveElement","onBeforeUnmount"],"mappings":";;;;;;;;;;;;AAWA,IAAA,MAAM,KAAQ,GAAA,MAAA;AACd,IAAM,MAAA,EAAE,QAAS,EAAA,GAAIA,mCAAc,EAAA;AAEnC,IAAA,MAAM,iBAAiBC,mDAA2B,EAAA;AAClD,IAAM,MAAA,kBAAA,GAAqBC,QAAmB,IAAI,CAAA;AAElD,IAAA,SAAS,oBAAuB,GAAA;AAC9B,MAAI,IAAA,kBAAA,CAAmB,UAAU,IAAM,EAAA;AACrC,QAAO,MAAA,CAAA,aAAA,CAAc,mBAAmB,KAAK,CAAA;AAC7C,QAAA,kBAAA,CAAmB,KAAQ,GAAA,IAAA;AAAA;AAC7B;AAGF,IAAAC,eAAA,CAAY,MAAM;AAChB,MAAA,MAAM,aAAa,QAAS,EAAA,CAAE,IAAI,CAAK,CAAA,KAAA,CAAA,CAAE,GAAG,CAAE,CAAA,IAAA;AAAA,QAC5C,CAAA,IAAA,KAAQ,SAASC,wCAAiB;AAAA,OACpC;AACA,MAAA,UAAA,EAAY,cAAe,CAAA,EAAE,KAAO,EAAA,SAAA,EAAW,CAAA;AAAA,KAChD,CAAA;AAED,IAAA,SAAS,iBAAoB,GAAA;AAC3B,MAAI,IAAA,kBAAA,CAAmB,UAAU,IAAM,EAAA;AACrC,QAAmB,kBAAA,CAAA,KAAA,GAAQ,MAAO,CAAA,WAAA,CAAY,MAAM;AAClD,UAAA,KAAA,CAAM,YAAY,CAAA;AAAA,WACjB,EAAE,CAAA;AAAA;AACP;AAGF,IAAA,SAAS,iBAAoB,GAAA;AAC3B,MAAA,cAAA,CAAe,WAAc,IAAA;AAC7B,MAAI,IAAA,kBAAA,CAAmB,UAAU,IAAM,EAAA;AACrC,QAAmB,kBAAA,CAAA,KAAA,GAAQ,MAAO,CAAA,WAAA,CAAY,MAAM;AAClD,UAAA,KAAA,CAAM,YAAY,CAAA;AAAA,WACjB,EAAE,CAAA;AAAA;AACP;AAGF,IAAgBC,mBAAA,CAAA,MAAM,sBAAsB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;"}