UNPKG

vuetify

Version:

Vue Material Component Framework

1 lines 32.4 kB
{"version":3,"file":"helpers.mjs","names":["camelize","capitalize","computed","Fragment","reactive","toRefs","watchEffect","getNestedValue","obj","path","fallback","last","length","undefined","i","deepEqual","a","b","Date","getTime","Object","props","keys","every","p","getObjectValueByPath","replace","split","getPropertyFromItem","item","property","value","Array","isArray","createRange","start","from","v","k","getZIndex","el","nodeType","Node","ELEMENT_NODE","index","window","getComputedStyle","getPropertyValue","parentNode","convertToUnit","str","unit","isNaN","String","isFinite","Number","isObject","isComponentInstance","$el","keyCodes","freeze","enter","tab","delete","esc","space","up","down","left","right","end","home","del","backspace","insert","pageup","pagedown","shift","keyValues","o","pick","paths","found","create","rest","key","some","RegExp","test","omit","exclude","clone","forEach","prop","filterInputAttrs","attrs","arrayDiff","diff","includes","push","groupItems","items","groupBy","groupDesc","groups","current","val","name","wrapInArray","defaultFilter","search","toString","toLocaleLowerCase","indexOf","searchItems","toLowerCase","trim","filter","debounce","fn","delay","timeoutId","args","clearTimeout","setTimeout","throttle","limit","throttling","getPrefixedSlots","prefix","slots","startsWith","reduce","clamp","min","max","Math","padEnd","char","repeat","chunk","size","chunked","substr","humanReadableFileSize","bytes","base","abs","toFixed","camelizeObjectKeys","mergeDeep","source","target","arrayFn","out","sourceProperty","targetProperty","fillArray","fill","flattenFragments","nodes","map","node","type","children","flat","randomHexColor","n","random","slice","toKebabCase","cache","has","get","kebab","set","Map","findChildren","vnode","child","component","subTree","findChildrenWithProvide","getOwnPropertySymbols","provides","CircularBuffer","constructor","values","concat","getEventCoordinates","e","clientX","touches","clientY","destructComputed","getter","refs","flush","arr","onRE","isOn","EventProp","Function","hasEvent","callEvent","handler","h"],"sources":["../../src/util/helpers.ts"],"sourcesContent":["// Utilities\nimport { camelize, capitalize, computed, Fragment, reactive, toRefs, watchEffect } from 'vue'\n\n// Types\nimport type {\n ComponentInternalInstance,\n ComponentPublicInstance,\n ComputedGetter,\n InjectionKey,\n PropType,\n Ref,\n Slots,\n ToRefs,\n VNode,\n VNodeChild,\n} from 'vue'\n\nexport function getNestedValue (obj: any, path: (string | number)[], fallback?: any): any {\n const last = path.length - 1\n\n if (last < 0) return obj === undefined ? fallback : obj\n\n for (let i = 0; i < last; i++) {\n if (obj == null) {\n return fallback\n }\n obj = obj[path[i]]\n }\n\n if (obj == null) return fallback\n\n return obj[path[last]] === undefined ? fallback : obj[path[last]]\n}\n\nexport function deepEqual (a: any, b: any): boolean {\n if (a === b) return true\n\n if (\n a instanceof Date &&\n b instanceof Date &&\n a.getTime() !== b.getTime()\n ) {\n // If the values are Date, compare them as timestamps\n return false\n }\n\n if (a !== Object(a) || b !== Object(b)) {\n // If the values aren't objects, they were already checked for equality\n return false\n }\n\n const props = Object.keys(a)\n\n if (props.length !== Object.keys(b).length) {\n // Different number of props, don't bother to check\n return false\n }\n\n return props.every(p => deepEqual(a[p], b[p]))\n}\n\nexport function getObjectValueByPath (obj: any, path: string, fallback?: any): any {\n // credit: http://stackoverflow.com/questions/6491463/accessing-nested-javascript-objects-with-string-key#comment55278413_6491621\n if (obj == null || !path || typeof path !== 'string') return fallback\n if (obj[path] !== undefined) return obj[path]\n path = path.replace(/\\[(\\w+)\\]/g, '.$1') // convert indexes to properties\n path = path.replace(/^\\./, '') // strip a leading dot\n return getNestedValue(obj, path.split('.'), fallback)\n}\n\nexport type SelectItemKey =\n | boolean // Ignored\n | string // Lookup by key, can use dot notation for nested objects\n | (string | number)[] // Nested lookup by key, each array item is a key in the next level\n | ((item: Record<string, any>, fallback?: any) => any)\n\nexport function getPropertyFromItem (\n item: any,\n property: SelectItemKey,\n fallback?: any\n): any {\n if (property == null) return item === undefined ? fallback : item\n\n if (item !== Object(item)) {\n if (typeof property !== 'function') return fallback\n\n const value = property(item, fallback)\n\n return typeof value === 'undefined' ? fallback : value\n }\n\n if (typeof property === 'string') return getObjectValueByPath(item, property, fallback)\n\n if (Array.isArray(property)) return getNestedValue(item, property, fallback)\n\n if (typeof property !== 'function') return fallback\n\n const value = property(item, fallback)\n\n return typeof value === 'undefined' ? fallback : value\n}\n\nexport function createRange (length: number, start = 0): number[] {\n return Array.from({ length }, (v, k) => start + k)\n}\n\nexport function getZIndex (el?: Element | null): number {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return 0\n\n const index = +window.getComputedStyle(el).getPropertyValue('z-index')\n\n if (!index) return getZIndex(el.parentNode as Element)\n return index\n}\n\nexport function convertToUnit (str: number, unit?: string): string\nexport function convertToUnit (str: string | number | null | undefined, unit?: string): string | undefined\nexport function convertToUnit (str: string | number | null | undefined, unit = 'px'): string | undefined {\n if (str == null || str === '') {\n return undefined\n } else if (isNaN(+str!)) {\n return String(str)\n } else if (!isFinite(+str!)) {\n return undefined\n } else {\n return `${Number(str)}${unit}`\n }\n}\n\nexport function isObject (obj: any): obj is object {\n return obj !== null && typeof obj === 'object' && !Array.isArray(obj)\n}\n\nexport function isComponentInstance (obj: any): obj is ComponentPublicInstance {\n return obj?.$el\n}\n\n// KeyboardEvent.keyCode aliases\nexport const keyCodes = Object.freeze({\n enter: 13,\n tab: 9,\n delete: 46,\n esc: 27,\n space: 32,\n up: 38,\n down: 40,\n left: 37,\n right: 39,\n end: 35,\n home: 36,\n del: 46,\n backspace: 8,\n insert: 45,\n pageup: 33,\n pagedown: 34,\n shift: 16,\n})\n\nexport const keyValues: Record<string, string> = Object.freeze({\n enter: 'Enter',\n tab: 'Tab',\n delete: 'Delete',\n esc: 'Escape',\n space: 'Space',\n up: 'ArrowUp',\n down: 'ArrowDown',\n left: 'ArrowLeft',\n right: 'ArrowRight',\n end: 'End',\n home: 'Home',\n del: 'Delete',\n backspace: 'Backspace',\n insert: 'Insert',\n pageup: 'PageUp',\n pagedown: 'PageDown',\n shift: 'Shift',\n})\n\nexport function keys<O extends {}> (o: O) {\n return Object.keys(o) as (keyof O)[]\n}\n\ntype MaybePick<\n T extends object,\n U extends Extract<keyof T, string>\n> = Record<string, unknown> extends T ? Partial<Pick<T, U>> : Pick<T, U>\n\nexport function pick<\n T extends object,\n U extends Extract<keyof T, string>\n> (obj: T, paths: U[]): [yes: MaybePick<T, U>, no: Omit<T, U>]\nexport function pick<\n T extends object,\n U extends Extract<keyof T, string>\n> (obj: T, paths: (U | RegExp)[]): [yes: Partial<T>, no: Partial<T>]\nexport function pick<\n T extends object,\n U extends Extract<keyof T, string>\n> (obj: T, paths: (U | RegExp)[]): [yes: Partial<T>, no: Partial<T>] {\n const found = Object.create(null)\n const rest = Object.create(null)\n\n for (const key in obj) {\n if (\n paths.some(path => path instanceof RegExp\n ? path.test(key)\n : path === key\n )\n ) {\n found[key] = obj[key]\n } else {\n rest[key] = obj[key]\n }\n }\n\n return [found, rest]\n}\n\nexport function omit<\n T extends object,\n U extends Extract<keyof T, string>\n> (obj: T, exclude: U[]): Omit<T, U> {\n const clone = { ...obj }\n\n exclude.forEach(prop => delete clone[prop])\n\n return clone\n}\n\n/**\n * Filter attributes that should be applied to\n * the root element of a an input component. Remaining\n * attributes should be passed to the <input> element inside.\n */\nexport function filterInputAttrs (attrs: Record<string, unknown>) {\n return pick(attrs, ['class', 'style', 'id', /^data-/])\n}\n\n/**\n * Returns the set difference of B and A, i.e. the set of elements in B but not in A\n */\nexport function arrayDiff (a: any[], b: any[]): any[] {\n const diff: any[] = []\n for (let i = 0; i < b.length; i++) {\n if (!a.includes(b[i])) diff.push(b[i])\n }\n return diff\n}\n\ninterface ItemGroup<T> {\n name: string\n items: T[]\n}\n\nexport function groupItems<T extends any = any> (\n items: T[],\n groupBy: string[],\n groupDesc: boolean[]\n): ItemGroup<T>[] {\n const key = groupBy[0]\n const groups: ItemGroup<T>[] = []\n let current\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const val = getObjectValueByPath(item, key, null)\n if (current !== val) {\n current = val\n groups.push({\n name: val ?? '',\n items: [],\n })\n }\n groups[groups.length - 1].items.push(item)\n }\n return groups\n}\n\nexport function wrapInArray<T> (v: T | T[] | null | undefined): T[] {\n return v == null\n ? []\n : Array.isArray(v)\n ? v : [v]\n}\n\nexport function defaultFilter (value: any, search: string | null, item: any) {\n return value != null &&\n search != null &&\n typeof value !== 'boolean' &&\n value.toString().toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) !== -1\n}\n\nexport function searchItems<T extends any = any> (items: T[], search: string): T[] {\n if (!search) return items\n search = search.toString().toLowerCase()\n if (search.trim() === '') return items\n\n return items.filter((item: any) => Object.keys(item).some(key => defaultFilter(getObjectValueByPath(item, key), search, item)))\n}\n\nexport function debounce (fn: Function, delay: number) {\n let timeoutId = 0 as any\n return (...args: any[]) => {\n clearTimeout(timeoutId)\n timeoutId = setTimeout(() => fn(...args), delay)\n }\n}\n\nexport function throttle<T extends (...args: any[]) => any> (fn: T, limit: number) {\n let throttling = false\n return (...args: Parameters<T>): void | ReturnType<T> => {\n if (!throttling) {\n throttling = true\n setTimeout(() => throttling = false, limit)\n return fn(...args)\n }\n }\n}\n\ntype Writable<T> = {\n -readonly [P in keyof T]: T[P]\n}\n\n/**\n * Filters slots to only those starting with `prefix`, removing the prefix\n */\nexport function getPrefixedSlots (prefix: string, slots: Slots): Slots {\n return Object.keys(slots)\n .filter(k => k.startsWith(prefix))\n .reduce<Writable<Slots>>((obj, k) => {\n obj[k.replace(prefix, '')] = slots[k]\n return obj\n }, {})\n}\n\nexport function clamp (value: number, min = 0, max = 1) {\n return Math.max(min, Math.min(max, value))\n}\n\nexport function padEnd (str: string, length: number, char = '0') {\n return str + char.repeat(Math.max(0, length - str.length))\n}\n\nexport function chunk (str: string, size = 1) {\n const chunked: string[] = []\n let index = 0\n while (index < str.length) {\n chunked.push(str.substr(index, size))\n index += size\n }\n return chunked\n}\n\nexport function humanReadableFileSize (bytes: number, base: 1000 | 1024 = 1000): string {\n if (bytes < base) {\n return `${bytes} B`\n }\n\n const prefix = base === 1024 ? ['Ki', 'Mi', 'Gi'] : ['k', 'M', 'G']\n let unit = -1\n while (Math.abs(bytes) >= base && unit < prefix.length - 1) {\n bytes /= base\n ++unit\n }\n return `${bytes.toFixed(1)} ${prefix[unit]}B`\n}\n\nexport function camelizeObjectKeys (obj: Record<string, any> | null | undefined) {\n if (!obj) return {}\n\n return Object.keys(obj).reduce((o: any, key: string) => {\n o[camelize(key)] = obj[key]\n return o\n }, {})\n}\n\nexport function mergeDeep (\n source: Record<string, any> = {},\n target: Record<string, any> = {},\n arrayFn?: (a: unknown[], b: unknown[]) => unknown[],\n) {\n const out: Record<string, any> = {}\n\n for (const key in source) {\n out[key] = source[key]\n }\n\n for (const key in target) {\n const sourceProperty = source[key]\n const targetProperty = target[key]\n\n // Only continue deep merging if\n // both properties are objects\n if (\n isObject(sourceProperty) &&\n isObject(targetProperty)\n ) {\n out[key] = mergeDeep(sourceProperty, targetProperty, arrayFn)\n\n continue\n }\n\n if (Array.isArray(sourceProperty) && Array.isArray(targetProperty) && arrayFn) {\n out[key] = arrayFn(sourceProperty, targetProperty)\n\n continue\n }\n\n out[key] = targetProperty\n }\n\n return out\n}\n\nexport function fillArray<T> (length: number, obj: T) {\n return Array(length).fill(obj)\n}\n\nexport function flattenFragments (nodes: VNode[]): VNode[] {\n return nodes.map(node => {\n if (node.type === Fragment) {\n return flattenFragments(node.children as VNode[])\n } else {\n return node\n }\n }).flat()\n}\n\nexport const randomHexColor = () => {\n const n = (Math.random() * 0xfffff * 1000000).toString(16)\n return '#' + n.slice(0, 6)\n}\n\nexport function toKebabCase (str = '') {\n if (toKebabCase.cache.has(str)) return toKebabCase.cache.get(str)!\n const kebab = str\n .replace(/[^a-z]/gi, '-')\n .replace(/\\B([A-Z])/g, '-$1')\n .toLowerCase()\n toKebabCase.cache.set(str, kebab)\n return kebab\n}\ntoKebabCase.cache = new Map<string, string>()\n\nexport type MaybeRef<T> = T | Ref<T>\n\nexport function findChildren (vnode?: VNodeChild): ComponentInternalInstance[] {\n if (!vnode || typeof vnode !== 'object') {\n return []\n }\n\n if (Array.isArray(vnode)) {\n return vnode\n .map(child => findChildren(child))\n .filter(v => v)\n .flat(1)\n } else if (Array.isArray(vnode.children)) {\n return vnode.children\n .map(child => findChildren(child))\n .filter(v => v)\n .flat(1)\n } else if (vnode.component) {\n return [vnode.component, ...findChildren(vnode.component?.subTree)]\n .filter(v => v)\n .flat(1)\n }\n\n return []\n}\n\nexport function findChildrenWithProvide (\n key: InjectionKey<any> | symbol,\n vnode?: VNodeChild,\n): ComponentInternalInstance[] {\n if (!vnode || typeof vnode !== 'object') return []\n\n if (Array.isArray(vnode)) {\n return vnode.map(child => findChildrenWithProvide(key, child)).flat(1)\n } else if (Array.isArray(vnode.children)) {\n return vnode.children.map(child => findChildrenWithProvide(key, child)).flat(1)\n } else if (vnode.component) {\n if (Object.getOwnPropertySymbols(vnode.component.provides).includes(key as symbol)) {\n return [vnode.component]\n } else if (vnode.component.subTree) {\n return findChildrenWithProvide(key, vnode.component.subTree).flat(1)\n }\n }\n\n return []\n}\n\nexport class CircularBuffer<T = never> {\n readonly #arr: Array<T> = []\n #pointer = 0\n\n constructor (public readonly size: number) {}\n\n push (val: T) {\n this.#arr[this.#pointer] = val\n this.#pointer = (this.#pointer + 1) % this.size\n }\n\n values (): T[] {\n return this.#arr.slice(this.#pointer).concat(this.#arr.slice(0, this.#pointer))\n }\n}\n\nexport type UnionToIntersection<U> =\n (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never\n\nexport function getEventCoordinates (e: MouseEvent | TouchEvent) {\n if ('touches' in e) {\n return { clientX: e.touches[0].clientX, clientY: e.touches[0].clientY }\n }\n\n return { clientX: e.clientX, clientY: e.clientY }\n}\n\n// Only allow a single return type\ntype NotAUnion<T> = [T] extends [infer U] ? _NotAUnion<U, U> : never\ntype _NotAUnion<T, U> = U extends any ? [T] extends [U] ? unknown : never : never\n\n/**\n * Convert a computed ref to a record of refs.\n * The getter function must always return an object with the same keys.\n */\nexport function destructComputed<T extends object> (getter: ComputedGetter<T & NotAUnion<T>>): ToRefs<T>\nexport function destructComputed<T extends object> (getter: ComputedGetter<T>) {\n const refs = reactive({}) as T\n const base = computed(getter)\n watchEffect(() => {\n for (const key in base.value) {\n refs[key] = base.value[key]\n }\n }, { flush: 'sync' })\n return toRefs(refs)\n}\n\n/** Array.includes but value can be any type */\nexport function includes (arr: readonly any[], val: any) {\n return arr.includes(val)\n}\n\nconst onRE = /^on[^a-z]/\nexport const isOn = (key: string) => onRE.test(key)\n\nexport type EventProp<T = (...args: any[]) => any> = T | T[]\nexport const EventProp = [Function, Array] as PropType<EventProp>\n\nexport function hasEvent (props: Record<string, any>, name: string) {\n name = 'on' + capitalize(name)\n return !!(props[name] || props[`${name}Once`] || props[`${name}Capture`] || props[`${name}OnceCapture`] || props[`${name}CaptureOnce`])\n}\n\nexport function callEvent (handler: EventProp | undefined, ...args: any[]) {\n if (Array.isArray(handler)) {\n for (const h of handler) {\n h(...args)\n }\n } else if (typeof handler === 'function') {\n handler(...args)\n }\n}\n"],"mappings":"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"}