{"version":3,"file":"use-index.mjs","sources":["../../../../packages/hooks/use-index.ts"],"sourcesContent":["import type { Ref } from 'vue'\nimport { computed, onMounted, onUpdated, ref, watch } from 'vue'\nimport { isUndefined } from '../utils/is'\n\nexport const useIndex = ({\n  itemRef,\n  selector,\n  index,\n  parentClassName\n}: {\n  itemRef: Ref<HTMLElement | undefined>\n  selector: string\n  index?: Ref<number | undefined>\n  parentClassName?: string\n}) => {\n  const _index = ref(-1)\n  const innerIndex = computed(() => index?.value ?? _index.value)\n\n  const parent = ref<HTMLElement>()\n\n  const getParent = () => {\n    let parent = itemRef.value?.parentElement ?? undefined\n    if (parentClassName) {\n      while (parent && !parent.className.includes(parentClassName)) {\n        parent = parent.parentElement ?? undefined\n      }\n    }\n    return parent\n  }\n\n  const getIndex = () => {\n    if (isUndefined(index?.value) && parent.value && itemRef.value) {\n      const index = Array.from(parent.value.querySelectorAll(selector)).indexOf(itemRef.value)\n      if (index !== _index.value) {\n        _index.value = index\n      }\n    }\n  }\n\n  watch(itemRef, () => {\n    if (itemRef.value && !parent.value) {\n      parent.value = getParent()\n    }\n  })\n\n  onMounted(() => {\n    if (itemRef.value) {\n      parent.value = getParent()\n    }\n    getIndex()\n  })\n  onUpdated(() => getIndex())\n\n  return {\n    innerIndex\n  }\n}\n"],"names":["parent","index"],"mappings":";;;AAIO,MAAM,WAAW,CAAC;AAAA,EACvB,OAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,eAAA;AACF,CAKM,KAAA;AACJ,EAAM,MAAA,MAAA,GAAS,IAAI,CAAE,CAAA,CAAA,CAAA;AACrB,EAAM,MAAA,UAAA,GAAa,SAAS,MAAG;AAhBjC,IAAA,IAAA,EAAA,CAAA;AAgBoC,IAAO,OAAA,CAAA,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,KAAA,KAAP,YAAgB,MAAO,CAAA,KAAA,CAAA;AAAA,GAAK,CAAA,CAAA;AAE9D,EAAA,MAAM,SAAS,GAAiB,EAAA,CAAA;AAEhC,EAAA,MAAM,YAAY,MAAM;AApB1B,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAqBI,IAAA,IAAIA,OAAS,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,KAAR,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAe,kBAAf,IAAgC,GAAA,EAAA,GAAA,KAAA,CAAA,CAAA;AAC7C,IAAA,IAAI,eAAiB,EAAA;AACnB,MAAA,OAAOA,WAAU,CAACA,OAAAA,CAAO,SAAU,CAAA,QAAA,CAAS,eAAe,CAAG,EAAA;AAC5D,QAAAA,OAAS,GAAA,CAAA,EAAA,GAAAA,OAAO,CAAA,aAAA,KAAP,IAAwB,GAAA,EAAA,GAAA,KAAA,CAAA,CAAA;AAAA,OACnC;AAAA,KACF;AACA,IAAOA,OAAAA,OAAAA,CAAAA;AAAA,GACT,CAAA;AAEA,EAAA,MAAM,WAAW,MAAM;AACrB,IAAA,IAAI,YAAY,KAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,KAAK,KAAK,MAAO,CAAA,KAAA,IAAS,QAAQ,KAAO,EAAA;AAC9D,MAAMC,MAAAA,MAAAA,GAAQ,KAAM,CAAA,IAAA,CAAK,MAAO,CAAA,KAAA,CAAM,gBAAiB,CAAA,QAAQ,CAAC,CAAA,CAAE,OAAQ,CAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AACvF,MAAIA,IAAAA,MAAAA,KAAU,OAAO,KAAO,EAAA;AAC1B,QAAA,MAAA,CAAO,KAAQA,GAAAA,MAAAA,CAAAA;AAAA,OACjB;AAAA,KACF;AAAA,GACF,CAAA;AAEA,EAAA,KAAA,CAAM,SAAS,MAAM;AACnB,IAAA,IAAI,OAAQ,CAAA,KAAA,IAAS,CAAC,MAAA,CAAO,KAAO,EAAA;AAClC,MAAA,MAAA,CAAO,QAAQ,SAAU,EAAA,CAAA;AAAA,KAC3B;AAAA,GACD,CAAA,CAAA;AAED,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,QAAQ,KAAO,EAAA;AACjB,MAAA,MAAA,CAAO,QAAQ,SAAU,EAAA,CAAA;AAAA,KAC3B;AACA,IAAS,QAAA,EAAA,CAAA;AAAA,GACV,CAAA,CAAA;AACD,EAAU,SAAA,CAAA,MAAM,UAAU,CAAA,CAAA;AAE1B,EAAO,OAAA;AAAA,IACL,UAAA;AAAA,GACF,CAAA;AACF;;;;"}