{"version":3,"file":"VData.mjs","names":["wrapInArray","sortItems","deepEqual","groupItems","searchItems","fillArray","Vue","extend","name","inheritAttrs","props","items","type","Array","default","options","Object","sortBy","String","sortDesc","Boolean","customSort","Function","mustSort","multiSort","page","Number","itemsPerPage","groupBy","groupDesc","customGroup","locale","disableSort","disablePagination","disableFiltering","search","customFilter","serverItemsLength","data","internalOptions","assign","sortDiff","length","groupDiff","push","computed","itemsLength","filteredItems","pageCount","Math","ceil","pageStart","pageStop","min","isGrouped","pagination","slice","computedItems","paginateItems","groupedItems","scopedProps","sort","sortArray","group","updateOptions","originalItemsLength","computedOptions","watch","handler","old","deep","immediate","$emit","isArray","methods","toggle","key","oldBy","oldDesc","by","desc","byIndex","findIndex","k","splice","map","s","i","max","render","$scopedSlots"],"sources":["../../../src/components/VData/VData.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\n// Helpers\nimport { wrapInArray, sortItems, deepEqual, groupItems, searchItems, fillArray } from '../../util/helpers'\nimport Vue, { VNode } from 'vue'\n\n// Types\nimport {\n  DataOptions,\n  DataPagination,\n  DataScopeProps,\n  DataSortFunction,\n  DataGroupFunction,\n  DataSearchFunction,\n  ItemGroup,\n} from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\n\nexport default Vue.extend({\n  name: 'v-data',\n\n  inheritAttrs: false,\n\n  props: {\n    items: {\n      type: Array,\n      default: () => [],\n    } as PropValidator<any[]>,\n    options: {\n      type: Object,\n      default: () => ({}),\n    } as PropValidator<Partial<DataOptions>>,\n    sortBy: {\n      type: [String, Array],\n    } as PropValidator<string | string[] | undefined>,\n    sortDesc: {\n      type: [Boolean, Array],\n    } as PropValidator<boolean | boolean[] | undefined>,\n    customSort: {\n      type: Function,\n      default: sortItems,\n    } as PropValidator<DataSortFunction>,\n    mustSort: Boolean,\n    multiSort: Boolean,\n    page: {\n      type: Number,\n      default: 1,\n    },\n    itemsPerPage: {\n      type: Number,\n      default: 10,\n    },\n    groupBy: {\n      type: [String, Array],\n      default: () => [],\n    } as PropValidator<string | string[]>,\n    groupDesc: {\n      type: [Boolean, Array],\n      default: () => [],\n    } as PropValidator<boolean | boolean[]>,\n    customGroup: {\n      type: Function,\n      default: groupItems,\n    } as PropValidator<DataGroupFunction>,\n    locale: {\n      type: String,\n      default: 'en-US',\n    },\n    disableSort: Boolean,\n    disablePagination: Boolean,\n    disableFiltering: Boolean,\n    search: String,\n    customFilter: {\n      type: Function,\n      default: searchItems,\n    } as PropValidator<DataSearchFunction>,\n    serverItemsLength: {\n      type: Number,\n      default: -1,\n    },\n  },\n\n  data () {\n    let internalOptions: DataOptions = {\n      page: this.page,\n      itemsPerPage: this.itemsPerPage,\n      sortBy: wrapInArray(this.sortBy),\n      sortDesc: wrapInArray(this.sortDesc),\n      groupBy: wrapInArray(this.groupBy),\n      groupDesc: wrapInArray(this.groupDesc),\n      mustSort: this.mustSort,\n      multiSort: this.multiSort,\n    }\n\n    if (this.options) {\n      internalOptions = Object.assign(internalOptions, this.options)\n    }\n\n    const { sortBy, sortDesc, groupBy, groupDesc } = internalOptions\n    const sortDiff = sortBy.length - sortDesc.length\n    const groupDiff = groupBy.length - groupDesc.length\n\n    if (sortDiff > 0) {\n      internalOptions.sortDesc.push(...fillArray(sortDiff, false))\n    }\n\n    if (groupDiff > 0) {\n      internalOptions.groupDesc.push(...fillArray(groupDiff, false))\n    }\n\n    return {\n      internalOptions,\n    }\n  },\n\n  computed: {\n    itemsLength (): number {\n      return this.serverItemsLength >= 0 ? this.serverItemsLength : this.filteredItems.length\n    },\n    pageCount (): number {\n      return this.internalOptions.itemsPerPage <= 0\n        ? 1\n        : Math.ceil(this.itemsLength / this.internalOptions.itemsPerPage)\n    },\n    pageStart (): number {\n      if (this.internalOptions.itemsPerPage === -1 || !this.items.length) return 0\n\n      return (this.internalOptions.page - 1) * this.internalOptions.itemsPerPage\n    },\n    pageStop (): number {\n      if (this.internalOptions.itemsPerPage === -1) return this.itemsLength\n      if (!this.items.length) return 0\n\n      return Math.min(this.itemsLength, this.internalOptions.page * this.internalOptions.itemsPerPage)\n    },\n    isGrouped (): boolean {\n      return !!this.internalOptions.groupBy.length\n    },\n    pagination (): DataPagination {\n      return {\n        page: this.internalOptions.page,\n        itemsPerPage: this.internalOptions.itemsPerPage,\n        pageStart: this.pageStart,\n        pageStop: this.pageStop,\n        pageCount: this.pageCount,\n        itemsLength: this.itemsLength,\n      }\n    },\n    filteredItems (): any[] {\n      let items = this.items.slice()\n\n      if (!this.disableFiltering && this.serverItemsLength <= 0) {\n        items = this.customFilter(items, this.search)\n      }\n\n      return items\n    },\n    computedItems (): any[] {\n      let items = this.filteredItems.slice()\n\n      if ((!this.disableSort || this.internalOptions.groupBy.length) && this.serverItemsLength <= 0) {\n        items = this.sortItems(items)\n      }\n\n      if (!this.disablePagination && this.serverItemsLength <= 0) {\n        items = this.paginateItems(items)\n      }\n\n      return items\n    },\n    groupedItems (): ItemGroup<any>[] | null {\n      return this.isGrouped ? this.groupItems(this.computedItems) : null\n    },\n    scopedProps (): DataScopeProps {\n      return {\n        sort: this.sort,\n        sortArray: this.sortArray,\n        group: this.group,\n        items: this.computedItems,\n        options: this.internalOptions,\n        updateOptions: this.updateOptions,\n        pagination: this.pagination,\n        groupedItems: this.groupedItems,\n        originalItemsLength: this.items.length,\n      }\n    },\n    computedOptions (): DataOptions {\n      return { ...this.options } as DataOptions\n    },\n  },\n\n  watch: {\n    computedOptions: {\n      handler (options: DataOptions, old: DataOptions) {\n        if (deepEqual(options, old)) return\n\n        this.updateOptions(options)\n      },\n      deep: true,\n      immediate: true,\n    },\n    internalOptions: {\n      handler (options: DataOptions, old: DataOptions) {\n        if (deepEqual(options, old)) return\n        this.$emit('update:options', options)\n      },\n      deep: true,\n      immediate: true,\n    },\n    page (page: number) {\n      this.updateOptions({ page })\n    },\n    'internalOptions.page' (page: number) {\n      this.$emit('update:page', page)\n    },\n    itemsPerPage (itemsPerPage: number) {\n      this.updateOptions({ itemsPerPage })\n    },\n    'internalOptions.itemsPerPage' (itemsPerPage: number) {\n      this.$emit('update:items-per-page', itemsPerPage)\n    },\n    sortBy (sortBy: string | string[]) {\n      this.updateOptions({ sortBy: wrapInArray(sortBy) })\n    },\n    'internalOptions.sortBy' (sortBy: string[], old: string[]) {\n      !deepEqual(sortBy, old) && this.$emit('update:sort-by', Array.isArray(this.sortBy) ? sortBy : sortBy[0])\n    },\n    sortDesc (sortDesc: boolean | boolean[]) {\n      this.updateOptions({ sortDesc: wrapInArray(sortDesc) })\n    },\n    'internalOptions.sortDesc' (sortDesc: boolean[], old: boolean[]) {\n      !deepEqual(sortDesc, old) && this.$emit('update:sort-desc', Array.isArray(this.sortDesc) ? sortDesc : sortDesc[0])\n    },\n    groupBy (groupBy: string | string[]) {\n      this.updateOptions({ groupBy: wrapInArray(groupBy) })\n    },\n    'internalOptions.groupBy' (groupBy: string[], old: string[]) {\n      !deepEqual(groupBy, old) && this.$emit('update:group-by', Array.isArray(this.groupBy) ? groupBy : groupBy[0])\n    },\n    groupDesc (groupDesc: boolean | boolean[]) {\n      this.updateOptions({ groupDesc: wrapInArray(groupDesc) })\n    },\n    'internalOptions.groupDesc' (groupDesc: boolean[], old: boolean[]) {\n      !deepEqual(groupDesc, old) && this.$emit('update:group-desc', Array.isArray(this.groupDesc) ? groupDesc : groupDesc[0])\n    },\n    multiSort (multiSort: boolean) {\n      this.updateOptions({ multiSort })\n    },\n    'internalOptions.multiSort' (multiSort: boolean) {\n      this.$emit('update:multi-sort', multiSort)\n    },\n    mustSort (mustSort: boolean) {\n      this.updateOptions({ mustSort })\n    },\n    'internalOptions.mustSort' (mustSort: boolean) {\n      this.$emit('update:must-sort', mustSort)\n    },\n    pageCount: {\n      handler (pageCount: number) {\n        this.$emit('page-count', pageCount)\n      },\n      immediate: true,\n    },\n    computedItems: {\n      handler (computedItems: any[]) {\n        this.$emit('current-items', computedItems)\n      },\n      immediate: true,\n    },\n    pagination: {\n      handler (pagination: DataPagination, old: DataPagination) {\n        if (deepEqual(pagination, old)) return\n        this.$emit('pagination', this.pagination)\n      },\n      immediate: true,\n    },\n  },\n\n  methods: {\n    toggle (key: string, oldBy: string[], oldDesc: boolean[], page: number, mustSort: boolean, multiSort: boolean) {\n      let by = oldBy.slice()\n      let desc = oldDesc.slice()\n      const byIndex = by.findIndex((k: string) => k === key)\n\n      if (byIndex < 0) {\n        if (!multiSort) {\n          by = []\n          desc = []\n        }\n\n        by.push(key)\n        desc.push(false)\n      } else if (byIndex >= 0 && !desc[byIndex]) {\n        desc[byIndex] = true\n      } else if (!mustSort) {\n        by.splice(byIndex, 1)\n        desc.splice(byIndex, 1)\n      } else {\n        desc[byIndex] = false\n      }\n\n      // Reset page to 1 if sortBy or sortDesc have changed\n      if (!deepEqual(by, oldBy) || !deepEqual(desc, oldDesc)) {\n        page = 1\n      }\n\n      return { by, desc, page }\n    },\n    group (key: string): void {\n      const { by: groupBy, desc: groupDesc, page } = this.toggle(\n        key,\n        this.internalOptions.groupBy,\n        this.internalOptions.groupDesc,\n        this.internalOptions.page,\n        true,\n        false\n      )\n      this.updateOptions({ groupBy, groupDesc, page })\n    },\n    sort (key: string | string[]): void {\n      if (Array.isArray(key)) return this.sortArray(key)\n\n      const { by: sortBy, desc: sortDesc, page } = this.toggle(\n        key,\n        this.internalOptions.sortBy,\n        this.internalOptions.sortDesc,\n        this.internalOptions.page,\n        this.internalOptions.mustSort,\n        this.internalOptions.multiSort\n      )\n      this.updateOptions({ sortBy, sortDesc, page })\n    },\n    sortArray (sortBy: string[]) {\n      const sortDesc = sortBy.map(s => {\n        const i = this.internalOptions.sortBy.findIndex((k: string) => k === s)\n        return i > -1 ? this.internalOptions.sortDesc[i] : false\n      })\n\n      this.updateOptions({ sortBy, sortDesc })\n    },\n    updateOptions (options: any) {\n      this.internalOptions = {\n        ...this.internalOptions,\n        ...options,\n        page: this.serverItemsLength < 0\n          ? Math.max(1, Math.min(options.page || this.internalOptions.page, this.pageCount))\n          : options.page || this.internalOptions.page,\n      }\n    },\n    sortItems (items: any[]): any[] {\n      let sortBy: string[] = []\n      let sortDesc: boolean[] = []\n\n      if (!this.disableSort) {\n        sortBy = this.internalOptions.sortBy\n        sortDesc = this.internalOptions.sortDesc\n      }\n\n      if (this.internalOptions.groupBy.length) {\n        sortBy = [...this.internalOptions.groupBy, ...sortBy]\n        sortDesc = [...this.internalOptions.groupDesc, ...sortDesc]\n      }\n\n      return this.customSort(items, sortBy, sortDesc, this.locale)\n    },\n    groupItems (items: any[]): ItemGroup<any>[] {\n      return this.customGroup(items, this.internalOptions.groupBy, this.internalOptions.groupDesc)\n    },\n    paginateItems (items: any[]): any[] {\n      // Make sure we don't try to display non-existant page if items suddenly change\n      // TODO: Could possibly move this to pageStart/pageStop?\n      if (this.serverItemsLength === -1 && items.length <= this.pageStart) {\n        this.internalOptions.page = Math.max(1, Math.ceil(items.length / this.internalOptions.itemsPerPage)) || 1 // Prevent NaN\n      }\n\n      return items.slice(this.pageStart, this.pageStop)\n    },\n  },\n\n  render (): VNode {\n    return this.$scopedSlots.default && this.$scopedSlots.default(this.scopedProps) as any\n  },\n})\n"],"mappings":"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"}