{"version":3,"file":"use-display-data.mjs","sources":["../../../../../../../packages/components/bubble/src/hooks/use-display-data.ts"],"sourcesContent":["import { computed, unref, watch } from 'vue'\nimport { useEventCallback, useState } from '@element-plus/hooks'\nimport { ListItemType } from './use-list-data'\nimport type { Ref } from 'vue'\n\ntype UseDisplayDataReturn = [\n  Ref<ListItemType[]>,\n  (value: string | number) => void\n]\n\nexport default function useDisplayData(\n  items: Ref<ListItemType[]>,\n  displayListLastItemTypingComplete?: (key: string | number) => void\n): UseDisplayDataReturn {\n  const [displayCount, setDisplayCount] = useState(items.value.length)\n\n  const displayList = computed(() => {\n    return items.value.slice(0, unref(displayCount))\n  })\n\n  const displayListLastKey = computed(() => {\n    const lastItem = unref(displayList)[unref(displayList).length - 1]\n    return lastItem ? lastItem.key : null\n  })\n\n  // When `items` changed, we replaced with latest one\n  watch(\n    items,\n    () => {\n      if (\n        unref(displayList).length &&\n        unref(displayList).every(\n          (item, index) => item.key === items.value[index]?.key\n        )\n      ) {\n        return\n      }\n\n      if (unref(displayList).length === 0) {\n        setDisplayCount(1)\n      } else {\n        // Find diff index\n        for (let i = 0; i < unref(displayList).length; i += 1) {\n          if (unref(displayList)[i].key !== items.value[i]?.key) {\n            setDisplayCount(i)\n            break\n          }\n        }\n      }\n    },\n    { immediate: true, deep: true }\n  )\n\n  // Continue to show if last one finished typing\n  const onTypingComplete = useEventCallback((key: string | number) => {\n    if (key === unref(displayListLastKey)) {\n      setDisplayCount(unref(displayCount) + 1)\n      displayListLastItemTypingComplete?.(key)\n    }\n  })\n\n  return [displayList, onTypingComplete] as const\n}\n"],"names":["_a"],"mappings":";;;;AAUwB,SAAA,cAAA,CACtB,OACA,iCACsB,EAAA;AACtB,EAAA,MAAM,CAAC,YAAc,EAAA,eAAe,IAAI,QAAS,CAAA,KAAA,CAAM,MAAM,MAAM,CAAA,CAAA;AAEnE,EAAM,MAAA,WAAA,GAAc,SAAS,MAAM;AACjC,IAAA,OAAO,MAAM,KAAM,CAAA,KAAA,CAAM,CAAG,EAAA,KAAA,CAAM,YAAY,CAAC,CAAA,CAAA;AAAA,GAChD,CAAA,CAAA;AAED,EAAM,MAAA,kBAAA,GAAqB,SAAS,MAAM;AACxC,IAAA,MAAM,WAAW,KAAM,CAAA,WAAW,EAAE,KAAM,CAAA,WAAW,EAAE,MAAS,GAAA,CAAA,CAAA,CAAA;AAChE,IAAO,OAAA,QAAA,GAAW,SAAS,GAAM,GAAA,IAAA,CAAA;AAAA,GAClC,CAAA,CAAA;AAGD,EAAA,KAAA;AAAA,IACE,KAAA;AAAA,IACA,MAAM;AA5BV,MAAA,IAAA,EAAA,CAAA;AA6BM,MAAA,IACE,MAAM,WAAW,CAAA,CAAE,MACnB,IAAA,KAAA,CAAM,WAAW,CAAE,CAAA,KAAA;AAAA,QACjB,CAAC,MAAM,KAAO,KAAA;AAhCxB,UAAAA,IAAAA,GAAAA,CAAAA;AAgC2B,UAAA,OAAA,IAAA,CAAK,UAAQA,GAAA,GAAA,KAAA,CAAM,KAAM,CAAA,KAAA,CAAA,KAAZ,gBAAAA,GAAoB,CAAA,GAAA,CAAA,CAAA;AAAA,SAAA;AAAA,OAEpD,EAAA;AACA,QAAA,OAAA;AAAA,OACF;AAEA,MAAA,IAAI,KAAM,CAAA,WAAW,CAAE,CAAA,MAAA,KAAW,CAAG,EAAA;AACnC,QAAA,eAAA,CAAgB,CAAC,CAAA,CAAA;AAAA,OACZ,MAAA;AAEL,QAAS,KAAA,IAAA,CAAA,GAAI,GAAG,CAAI,GAAA,KAAA,CAAM,WAAW,CAAE,CAAA,MAAA,EAAQ,KAAK,CAAG,EAAA;AACrD,UAAI,IAAA,KAAA,CAAM,WAAW,CAAE,CAAA,CAAA,CAAA,CAAG,UAAQ,EAAM,GAAA,KAAA,CAAA,KAAA,CAAM,CAAZ,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgB,GAAK,CAAA,EAAA;AACrD,YAAA,eAAA,CAAgB,CAAC,CAAA,CAAA;AACjB,YAAA,MAAA;AAAA,WACF;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAAA,IACA,EAAE,SAAA,EAAW,IAAM,EAAA,IAAA,EAAM,IAAK,EAAA;AAAA,GAChC,CAAA;AAGA,EAAM,MAAA,gBAAA,GAAmB,gBAAiB,CAAA,CAAC,GAAyB,KAAA;AAClE,IAAI,IAAA,GAAA,KAAQ,KAAM,CAAA,kBAAkB,CAAG,EAAA;AACrC,MAAgB,eAAA,CAAA,KAAA,CAAM,YAAY,CAAA,GAAI,CAAC,CAAA,CAAA;AACvC,MAAoC,iCAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,iCAAA,CAAA,GAAA,CAAA,CAAA;AAAA,KACtC;AAAA,GACD,CAAA,CAAA;AAED,EAAO,OAAA,CAAC,aAAa,gBAAgB,CAAA,CAAA;AACvC;;;;"}