{"version":3,"file":"VDataTableServer.mjs","names":["makeDataTableProps","makeVDataTableFooterProps","VDataTableFooter","VDataTableHeaders","VDataTableRows","VDivider","VTable","provideExpanded","createGroupBy","provideGroupBy","useGroupedItems","createHeaders","useDataTableItems","useOptions","createPagination","makeDataTablePaginateProps","providePagination","provideSelection","createSort","provideSort","provideDefaults","computed","provide","toRef","genericComponent","propsFactory","useRender","makeVDataTableServerProps","itemsLength","type","Number","String","required","VDataTableServer","name","props","emits","value","page","sortBy","options","setup","_ref","attrs","slots","groupBy","multiSort","mustSort","itemsPerPage","parseInt","columns","headers","showSelect","showExpand","items","toggleSort","opened","isGroupOpen","toggleGroup","extractRows","pageCount","setItemsPerPage","flatItems","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","allItems","currentPage","isExpanded","toggleExpand","itemsWithoutGroups","search","hideNoData","noDataText","loading","loadingText","slotProps","map","item","raw","internalItems","groupedItems","dataTableFooterProps","filterProps","dataTableHeadersProps","dataTableRowsProps","tableProps","_createVNode","_mergeProps","class","style","top","default","_Fragment","colgroup","hideDefaultHeader","fixedHeader","thead","hideDefaultBody","body","tbody","tfoot","bottom","hideDefaultFooter","prepend"],"sources":["../../../src/components/VDataTable/VDataTableServer.tsx"],"sourcesContent":["// Components\nimport { makeDataTableProps } from './VDataTable'\nimport { makeVDataTableFooterProps, VDataTableFooter } from './VDataTableFooter'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRows } from './VDataTableRows'\nimport { VDivider } from '@/components/VDivider'\nimport { VTable } from '@/components/VTable'\n\n// Composables\nimport { provideExpanded } from './composables/expand'\nimport { createGroupBy, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders } from './composables/headers'\nimport { useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\nimport { createPagination, makeDataTablePaginateProps, providePagination } from './composables/paginate'\nimport { provideSelection } from './composables/select'\nimport { createSort, provideSort } from './composables/sort'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { computed, provide, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VDataTableSlotProps, VDataTableSlots } from './VDataTable'\nimport type { CellProps, RowProps } from '@/components/VDataTable/types'\nimport type { GenericProps, SelectItemKey } from '@/util'\n\nexport const makeVDataTableServerProps = propsFactory({\n  itemsLength: {\n    type: [Number, String],\n    required: true,\n  },\n\n  ...makeDataTablePaginateProps(),\n  ...makeDataTableProps(),\n  ...makeVDataTableFooterProps(),\n}, 'VDataTableServer')\n\ntype ItemType<T> = T extends readonly (infer U)[] ? U : never\n\nexport const VDataTableServer = genericComponent<new <T extends readonly any[], V>(\n  props: {\n    items?: T\n    itemValue?: SelectItemKey<ItemType<T>>\n    rowProps?: RowProps<ItemType<T>>\n    cellProps?: CellProps<ItemType<T>>\n    itemSelectable?: SelectItemKey<ItemType<T>>\n    modelValue?: V\n    'onUpdate:modelValue'?: (value: V) => void\n  },\n  slots: VDataTableSlots<ItemType<T>>,\n) => GenericProps<typeof props, typeof slots>>()({\n  name: 'VDataTableServer',\n\n  props: makeVDataTableServerProps(),\n\n  emits: {\n    'update:modelValue': (value: any[]) => true,\n    'update:page': (page: number) => true,\n    'update:itemsPerPage': (page: number) => true,\n    'update:sortBy': (sortBy: any) => true,\n    'update:options': (options: any) => true,\n    'update:expanded': (options: any) => true,\n    'update:groupBy': (value: any) => true,\n  },\n\n  setup (props, { attrs, slots }) {\n    const { groupBy } = createGroupBy(props)\n    const { sortBy, multiSort, mustSort } = createSort(props)\n    const { page, itemsPerPage } = createPagination(props)\n    const itemsLength = computed(() => parseInt(props.itemsLength, 10))\n\n    const { columns, headers } = createHeaders(props, {\n      groupBy,\n      showSelect: toRef(props, 'showSelect'),\n      showExpand: toRef(props, 'showExpand'),\n    })\n\n    const { items } = useDataTableItems(props, columns)\n\n    const { toggleSort } = provideSort({ sortBy, multiSort, mustSort, page })\n\n    const { opened, isGroupOpen, toggleGroup, extractRows } = provideGroupBy({ groupBy, sortBy })\n\n    const { pageCount, setItemsPerPage } = providePagination({ page, itemsPerPage, itemsLength })\n\n    const { flatItems } = useGroupedItems(items, groupBy, opened)\n\n    const { isSelected, select, selectAll, toggleSelect, someSelected, allSelected } = provideSelection(props, {\n      allItems: items,\n      currentPage: items,\n    })\n\n    const { isExpanded, toggleExpand } = provideExpanded(props)\n\n    const itemsWithoutGroups = computed(() => extractRows(items.value))\n\n    useOptions({\n      page,\n      itemsPerPage,\n      sortBy,\n      groupBy,\n      search: toRef(props, 'search'),\n    })\n\n    provide('v-data-table', {\n      toggleSort,\n      sortBy,\n    })\n\n    provideDefaults({\n      VDataTableRows: {\n        hideNoData: toRef(props, 'hideNoData'),\n        noDataText: toRef(props, 'noDataText'),\n        loading: toRef(props, 'loading'),\n        loadingText: toRef(props, 'loadingText'),\n      },\n    })\n\n    const slotProps = computed<VDataTableSlotProps<any>>(() => ({\n      page: page.value,\n      itemsPerPage: itemsPerPage.value,\n      sortBy: sortBy.value,\n      pageCount: pageCount.value,\n      toggleSort,\n      setItemsPerPage,\n      someSelected: someSelected.value,\n      allSelected: allSelected.value,\n      isSelected,\n      select,\n      selectAll,\n      toggleSelect,\n      isExpanded,\n      toggleExpand,\n      isGroupOpen,\n      toggleGroup,\n      items: itemsWithoutGroups.value.map(item => item.raw),\n      internalItems: itemsWithoutGroups.value,\n      groupedItems: flatItems.value,\n      columns: columns.value,\n      headers: headers.value,\n    }))\n\n    useRender(() => {\n      const dataTableFooterProps = VDataTableFooter.filterProps(props)\n      const dataTableHeadersProps = VDataTableHeaders.filterProps(props)\n      const dataTableRowsProps = VDataTableRows.filterProps(props)\n      const tableProps = VTable.filterProps(props)\n\n      return (\n        <VTable\n          class={[\n            'v-data-table',\n            {\n              'v-data-table--loading': props.loading,\n            },\n            props.class,\n          ]}\n          style={ props.style }\n          { ...tableProps }\n        >\n          {{\n            top: () => slots.top?.(slotProps.value),\n            default: () => slots.default ? slots.default(slotProps.value) : (\n              <>\n                { slots.colgroup?.(slotProps.value) }\n                { !props.hideDefaultHeader && (\n                  <thead key=\"thead\" class=\"v-data-table__thead\" role=\"rowgroup\">\n                    <VDataTableHeaders\n                      { ...dataTableHeadersProps }\n                      sticky={ props.fixedHeader }\n                      v-slots={ slots }\n                    />\n                  </thead>\n                )}\n                { slots.thead?.(slotProps.value) }\n                { !props.hideDefaultBody && (\n                  <tbody class=\"v-data-table__tbody\" role=\"rowgroup\">\n                    { slots['body.prepend']?.(slotProps.value) }\n                    { slots.body ? slots.body(slotProps.value) : (\n                      <VDataTableRows\n                        { ...attrs }\n                        { ...dataTableRowsProps }\n                        items={ flatItems.value }\n                        v-slots={ slots }\n                      />\n                    )}\n                    { slots['body.append']?.(slotProps.value) }\n                  </tbody>\n                )}\n                { slots.tbody?.(slotProps.value) }\n                { slots.tfoot?.(slotProps.value) }\n              </>\n            ),\n            bottom: () => slots.bottom ? slots.bottom(slotProps.value) : !props.hideDefaultFooter && (\n              <>\n                <VDivider />\n\n                <VDataTableFooter\n                  { ...dataTableFooterProps }\n                  v-slots={{\n                    prepend: slots['footer.prepend'],\n                  }}\n                />\n              </>\n            ),\n          }}\n        </VTable>\n      )\n    })\n  },\n})\n\nexport type VDataTableServer = InstanceType<typeof VDataTableServer>\n"],"mappings":"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","ignoreList":[]}