{"version":3,"file":"use-list-data.mjs","sources":["../../../../../../../packages/components/bubble/src/hooks/use-list-data.ts"],"sourcesContent":["import { computed } from 'vue'\nimport type { Ref } from 'vue'\nimport type { BubbleProps } from '../bubble/bubble'\nimport type {\n  BubbleDataType,\n  BubbleListProps,\n} from '../bubble-list/bubble-list'\n\nexport type UnRef<T extends Ref<any>> = T extends Ref<infer R> ? R : never\n\nexport type ListItemType = UnRef<ReturnType<typeof useListData>>[number]\n\nexport default function useListData(\n  items: Ref<BubbleListProps['items']>,\n  roles?: BubbleListProps['roles']\n) {\n  const getRoleBubbleProps = (bubble: BubbleDataType): Partial<BubbleProps> => {\n    if (typeof roles === 'function') {\n      return roles(bubble)\n    }\n\n    if (roles) {\n      return roles[bubble.role!] || {}\n    }\n\n    return {}\n  }\n\n  const listData = computed(() =>\n    (items.value || []).map((bubbleData, i) => {\n      const mergedKey = bubbleData.key ?? `preset_${i}`\n\n      return {\n        ...getRoleBubbleProps(bubbleData),\n        ...bubbleData,\n        key: mergedKey,\n      }\n    })\n  )\n\n  return listData as Ref<any>\n}\n"],"names":[],"mappings":";;AAYwB,SAAA,WAAA,CACtB,OACA,KACA,EAAA;AACA,EAAM,MAAA,kBAAA,GAAqB,CAAC,MAAiD,KAAA;AAC3E,IAAI,IAAA,OAAO,UAAU,UAAY,EAAA;AAC/B,MAAA,OAAO,MAAM,MAAM,CAAA,CAAA;AAAA,KACrB;AAEA,IAAA,IAAI,KAAO,EAAA;AACT,MAAO,OAAA,KAAA,CAAM,MAAO,CAAA,IAAA,CAAA,IAAU,EAAC,CAAA;AAAA,KACjC;AAEA,IAAA,OAAO,EAAC,CAAA;AAAA,GACV,CAAA;AAEA,EAAA,MAAM,QAAW,GAAA,QAAA;AAAA,IAAS,MAAA,CACvB,MAAM,KAAS,IAAA,IAAI,GAAI,CAAA,CAAC,YAAY,CAAM,KAAA;AA7B/C,MAAA,IAAA,EAAA,CAAA;AA8BM,MAAA,MAAM,SAAY,GAAA,CAAA,EAAA,GAAA,UAAA,CAAW,GAAX,KAAA,IAAA,GAAA,EAAA,GAAkB,CAAU,OAAA,EAAA,CAAA,CAAA,CAAA,CAAA;AAE9C,MAAO,OAAA;AAAA,QACL,GAAG,mBAAmB,UAAU,CAAA;AAAA,QAChC,GAAG,UAAA;AAAA,QACH,GAAK,EAAA,SAAA;AAAA,OACP,CAAA;AAAA,KACD,CAAA;AAAA,GACH,CAAA;AAEA,EAAO,OAAA,QAAA,CAAA;AACT;;;;"}