{"version":3,"file":"VDataIterator.mjs","names":["makeDataTableExpandProps","provideExpanded","makeDataTableGroupProps","provideGroupBy","useGroupedItems","useOptions","createPagination","makeDataTablePaginateProps","providePagination","usePaginatedItems","makeDataTableSelectProps","provideSelection","createSort","makeDataTableSortProps","provideSort","useSortedItems","makeDataIteratorItemsProps","useDataIteratorItems","makeComponentProps","makeFilterProps","useFilter","useProxiedModel","makeTagProps","computed","toRef","genericComponent","propsFactory","useRender","makeVDataIteratorProps","search","String","loading","Boolean","itemsPerPage","VDataIterator","name","props","emits","value","setup","_ref","slots","groupBy","items","filteredItems","transform","item","raw","sortBy","multiSort","mustSort","page","toggleSort","sortByWithGroups","opened","extractRows","isGroupOpen","toggleGroup","sortedItems","flatItems","itemsLength","length","startIndex","stopIndex","pageCount","prevPage","nextPage","setItemsPerPage","setPage","paginatedItems","paginatedItemsWithoutGroups","isSelected","select","selectAll","toggleSelect","allItems","currentPage","isExpanded","toggleExpand","slotProps","groupedItems","_createVNode","tag","class","style","default","header","footer"],"sources":["../../../src/components/VDataIterator/VDataIterator.tsx"],"sourcesContent":["// Components\nimport { makeDataTableExpandProps, provideExpanded } from '@/components/VDataTable/composables/expand'\nimport { makeDataTableGroupProps, provideGroupBy, useGroupedItems } from '@/components/VDataTable/composables/group'\nimport { useOptions } from '@/components/VDataTable/composables/options'\nimport {\n  createPagination,\n  makeDataTablePaginateProps,\n  providePagination,\n  usePaginatedItems,\n} from '@/components/VDataTable/composables/paginate'\nimport { makeDataTableSelectProps, provideSelection } from '@/components/VDataTable/composables/select'\nimport { createSort, makeDataTableSortProps, provideSort, useSortedItems } from '@/components/VDataTable/composables/sort'\n\n// Composables\nimport { makeDataIteratorItemsProps, useDataIteratorItems } from './composables/items'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { DataIteratorItem } from './composables/items'\nimport type { Group } from '@/components/VDataTable/composables/group'\nimport type { SortItem } from '@/components/VDataTable/composables/sort'\n\ntype VDataIteratorSlotProps = {\n  page: number\n  itemsPerPage: number\n  sortBy: readonly SortItem[]\n  pageCount: number\n  toggleSort: ReturnType<typeof provideSort>['toggleSort']\n  prevPage: ReturnType<typeof providePagination>['prevPage']\n  nextPage: ReturnType<typeof providePagination>['nextPage']\n  setPage: ReturnType<typeof providePagination>['setPage']\n  setItemsPerPage: ReturnType<typeof providePagination>['setItemsPerPage']\n  isSelected: ReturnType<typeof provideSelection>['isSelected']\n  select: ReturnType<typeof provideSelection>['select']\n  selectAll: ReturnType<typeof provideSelection>['selectAll']\n  toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n  isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n  toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n  isGroupOpen: ReturnType<typeof provideGroupBy>['isGroupOpen']\n  toggleGroup: ReturnType<typeof provideGroupBy>['toggleGroup']\n  items: readonly DataIteratorItem[]\n  groupedItems: readonly (DataIteratorItem | Group<DataIteratorItem>)[]\n}\n\nexport type VDataIteratorSlots = {\n  default: VDataIteratorSlotProps\n  header: VDataIteratorSlotProps\n  footer: VDataIteratorSlotProps\n  'no-data': never\n}\n\nexport const makeVDataIteratorProps = propsFactory({\n  search: String,\n  loading: Boolean,\n\n  ...makeComponentProps(),\n  ...makeDataIteratorItemsProps(),\n  ...makeDataTableSelectProps(),\n  ...makeDataTableSortProps(),\n  ...makeDataTablePaginateProps({ itemsPerPage: 5 }),\n  ...makeDataTableExpandProps(),\n  ...makeDataTableGroupProps(),\n  ...makeFilterProps(),\n  ...makeTagProps(),\n}, 'VDataIterator')\n\nexport const VDataIterator = genericComponent<VDataIteratorSlots>()({\n  name: 'VDataIterator',\n\n  props: makeVDataIteratorProps(),\n\n  emits: {\n    'update:modelValue': (value: any[]) => true,\n    'update:groupBy': (value: any) => true,\n    'update:page': (value: number) => true,\n    'update:itemsPerPage': (value: number) => true,\n    'update:sortBy': (value: any) => true,\n    'update:options': (value: any) => true,\n    'update:expanded': (value: any) => true,\n    'update:currentItems': (value: any) => true,\n  },\n\n  setup (props, { slots }) {\n    const groupBy = useProxiedModel(props, 'groupBy')\n    const search = toRef(props, 'search')\n\n    const { items } = useDataIteratorItems(props)\n    const { filteredItems } = useFilter(props, items, search, { transform: item => item.raw })\n\n    const { sortBy, multiSort, mustSort } = createSort(props)\n    const { page, itemsPerPage } = createPagination(props)\n\n    const { toggleSort } = provideSort({ sortBy, multiSort, mustSort, page })\n    const { sortByWithGroups, opened, extractRows, isGroupOpen, toggleGroup } = provideGroupBy({ groupBy, sortBy })\n\n    const { sortedItems } = useSortedItems(props, filteredItems, sortByWithGroups)\n    const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n\n    const itemsLength = computed(() => flatItems.value.length)\n\n    const {\n      startIndex,\n      stopIndex,\n      pageCount,\n      prevPage,\n      nextPage,\n      setItemsPerPage,\n      setPage,\n    } = providePagination({ page, itemsPerPage, itemsLength })\n    const { paginatedItems } = usePaginatedItems({ items: flatItems, startIndex, stopIndex, itemsPerPage })\n\n    const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value))\n\n    const {\n      isSelected,\n      select,\n      selectAll,\n      toggleSelect,\n    } = provideSelection(props, { allItems: items, currentPage: paginatedItemsWithoutGroups })\n    const { isExpanded, toggleExpand } = provideExpanded(props)\n\n    useOptions({\n      page,\n      itemsPerPage,\n      sortBy,\n      groupBy,\n      search,\n    })\n\n    const slotProps = computed(() => ({\n      page: page.value,\n      itemsPerPage: itemsPerPage.value,\n      sortBy: sortBy.value,\n      pageCount: pageCount.value,\n      toggleSort,\n      prevPage,\n      nextPage,\n      setPage,\n      setItemsPerPage,\n      isSelected,\n      select,\n      selectAll,\n      toggleSelect,\n      isExpanded,\n      toggleExpand,\n      isGroupOpen,\n      toggleGroup,\n      items: paginatedItemsWithoutGroups.value,\n      groupedItems: paginatedItems.value,\n    }))\n\n    useRender(() => (\n      <props.tag\n        class={[\n          'v-data-iterator',\n          props.class,\n        ]}\n        style={ props.style }\n      >\n        { slots.header?.(slotProps.value) }\n\n        { !paginatedItems.value.length\n          ? slots['no-data']?.()\n          : slots.default?.(slotProps.value)\n        }\n\n        { slots.footer?.(slotProps.value) }\n      </props.tag>\n    ))\n\n    return {}\n  },\n})\n\nexport type VDataIterator = InstanceType<typeof VDataIterator>\n"],"mappings":"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"}