{"version":3,"file":"items.mjs","names":["computed","getPropertyFromItem","pick","propsFactory","makeItemsProps","items","type","Array","default","itemTitle","String","Function","itemValue","itemChildren","Boolean","itemProps","returnObject","transformItem","props","item","title","value","children","isArray","undefined","_props","transformItems","raw","array","push","useItems","transformIn","map","transformOut"],"sources":["../../src/composables/items.ts"],"sourcesContent":["// Utilities\nimport { computed } from 'vue'\nimport { getPropertyFromItem, pick, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { SelectItemKey } from '@/util'\n\nexport interface InternalItem<T = any> {\n  title: string\n  value: any\n  props: {\n    [key: string]: any\n    title: string\n    value: any\n  }\n  children?: InternalItem<T>[]\n  raw: T\n}\n\nexport interface ItemProps {\n  items: any[]\n  itemTitle: SelectItemKey\n  itemValue: SelectItemKey\n  itemChildren: SelectItemKey\n  itemProps: SelectItemKey\n  returnObject: boolean\n}\n\n// Composables\nexport const makeItemsProps = propsFactory({\n  items: {\n    type: Array as PropType<ItemProps['items']>,\n    default: () => ([]),\n  },\n  itemTitle: {\n    type: [String, Array, Function] as PropType<SelectItemKey>,\n    default: 'title',\n  },\n  itemValue: {\n    type: [String, Array, Function] as PropType<SelectItemKey>,\n    default: 'value',\n  },\n  itemChildren: {\n    type: [Boolean, String, Array, Function] as PropType<SelectItemKey>,\n    default: 'children',\n  },\n  itemProps: {\n    type: [Boolean, String, Array, Function] as PropType<SelectItemKey>,\n    default: 'props',\n  },\n  returnObject: Boolean,\n}, 'item')\n\nexport function transformItem (props: Omit<ItemProps, 'items'>, item: any) {\n  const title = getPropertyFromItem(item, props.itemTitle, item)\n  const value = props.returnObject ? item : getPropertyFromItem(item, props.itemValue, title)\n  const children = getPropertyFromItem(item, props.itemChildren)\n  const itemProps = props.itemProps === true\n    ? typeof item === 'object' && item != null && !Array.isArray(item)\n      ? 'children' in item\n        ? pick(item, ['children'])[1]\n        : item\n      : undefined\n    : getPropertyFromItem(item, props.itemProps)\n\n  const _props = {\n    title,\n    value,\n    ...itemProps,\n  }\n\n  return {\n    title: String(_props.title ?? ''),\n    value: _props.value,\n    props: _props,\n    children: Array.isArray(children) ? transformItems(props, children) : undefined,\n    raw: item,\n  }\n}\n\nexport function transformItems (props: Omit<ItemProps, 'items'>, items: ItemProps['items']) {\n  const array: InternalItem[] = []\n\n  for (const item of items) {\n    array.push(transformItem(props, item))\n  }\n\n  return array\n}\n\nexport function useItems (props: ItemProps) {\n  const items = computed(() => transformItems(props, props.items))\n\n  function transformIn (value: any[]): InternalItem[] {\n    return value.map(item => transformItem(props, item))\n  }\n\n  function transformOut (value: InternalItem[]) {\n    return value.map(({ props }) => props.value)\n  }\n\n  return { items, transformIn, transformOut }\n}\n"],"mappings":"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"}