{"version":3,"sources":["../../src/util/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import Vue from 'vue'\nimport { VNode, VNodeDirective, FunctionalComponentOptions } from 'vue/types'\nimport { VuetifyIcon } from 'vuetify'\n\nexport function createSimpleFunctional (\n c: string,\n el = 'div',\n name?: string\n) {\n return Vue.extend({\n name: name || c.replace(/__/g, '-'),\n\n functional: true,\n\n render (h, { data, children }): VNode {\n data.staticClass = (`${c} ${data.staticClass || ''}`).trim()\n\n return h(el, data, children)\n }\n })\n}\n\nfunction mergeTransitions (\n transitions: undefined | Function | Function[],\n array: Function[]\n) {\n if (Array.isArray(transitions)) return transitions.concat(array)\n if (transitions) array.push(transitions)\n return array\n}\n\nexport function createSimpleTransition (\n name: string,\n origin = 'top center 0',\n mode?: string\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n group: {\n type: Boolean,\n default: false\n },\n hideOnLeave: {\n type: Boolean,\n default: false\n },\n leaveAbsolute: {\n type: Boolean,\n default: false\n },\n mode: {\n type: String,\n default: mode\n },\n origin: {\n type: String,\n default: origin\n }\n },\n\n render (h, context): VNode {\n const tag = `transition${context.props.group ? '-group' : ''}`\n context.data = context.data || {}\n context.data.props = {\n name,\n mode: context.props.mode\n }\n context.data.on = context.data.on || {}\n if (!Object.isExtensible(context.data.on)) {\n context.data.on = { ...context.data.on }\n }\n\n const ourBeforeEnter: Function[] = []\n const ourLeave: Function[] = []\n const absolute = (el: HTMLElement) => (el.style.position = 'absolute')\n\n ourBeforeEnter.push((el: HTMLElement) => {\n el.style.transformOrigin = context.props.origin\n el.style.webkitTransformOrigin = context.props.origin\n })\n\n if (context.props.leaveAbsolute) ourLeave.push(absolute)\n if (context.props.hideOnLeave) {\n ourLeave.push((el: HTMLElement) => (el.style.display = 'none'))\n }\n\n const { beforeEnter, leave } = context.data.on\n\n // Type says Function | Function[] but\n // will only work if provided a function\n context.data.on.beforeEnter = () => mergeTransitions(beforeEnter, ourBeforeEnter)\n context.data.on.leave = mergeTransitions(leave, ourLeave)\n\n return h(tag, context.data, context.children)\n }\n }\n}\n\nexport function createJavaScriptTransition (\n name: string,\n functions: Record any>,\n mode = 'in-out'\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n mode: {\n type: String,\n default: mode\n }\n },\n\n render (h, context): VNode {\n const data = {\n props: {\n ...context.props,\n name\n },\n on: functions\n }\n\n return h('transition', data, context.children)\n }\n }\n}\n\nexport type BindingConfig = Pick\nexport function directiveConfig (binding: BindingConfig, defaults = {}): VNodeDirective {\n return {\n ...defaults,\n ...binding.modifiers,\n value: binding.arg,\n ...(binding.value || {})\n }\n}\n\nexport function addOnceEventListener (el: EventTarget, event: string, cb: () => void): void {\n var once = () => {\n cb()\n el.removeEventListener(event, once, false)\n }\n\n el.addEventListener(event, once, false)\n}\n\nlet passiveSupported = false\ntry {\n if (typeof window !== 'undefined') {\n const testListenerOpts = Object.defineProperty({}, 'passive', {\n get: () => {\n passiveSupported = true\n }\n })\n\n window.addEventListener('testListener', testListenerOpts, testListenerOpts)\n window.removeEventListener('testListener', testListenerOpts, testListenerOpts)\n }\n} catch (e) { console.warn(e) }\nexport { passiveSupported }\n\nexport function addPassiveEventListener (\n el: EventTarget,\n event: string,\n cb: EventHandlerNonNull | (() => void),\n options: {}\n): void {\n el.addEventListener(event, cb, passiveSupported ? options : false)\n}\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 (a instanceof Date && b instanceof Date) {\n // If the values are Date, they were convert to timestamp with getTime and compare it\n if (a.getTime() !== b.getTime()) 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: object, path: string, fallback?: any): any {\n // credit: http://stackoverflow.com/questions/6491463/accessing-nested-javascript-objects-with-string-key#comment55278413_6491621\n if (!path || path.constructor !== String) return fallback\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 function getPropertyFromItem (\n item: object,\n property: string | (string | number)[] | ((item: object, fallback?: any) => any),\n fallback?: any\n): any {\n if (property == null) return item === undefined ? fallback : item\n\n if (item !== Object(item)) return fallback === undefined ? item : fallback\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): number[] {\n return Array.from({ length }, (v, k) => 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 (isNaN(index)) return getZIndex(el.parentNode as Element)\n return index\n}\n\nconst tagsToReplace = {\n '&': '&',\n '<': '<',\n '>': '>'\n} as any\n\nexport function escapeHTML (str: string): string {\n return str.replace(/[&<>]/g, tag => tagsToReplace[tag] || tag)\n}\n\nexport function filterObjectOnKeys (obj: T, keys: K[]): { [N in K]: T[N] } {\n const filtered = {} as { [N in K]: T[N] }\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n if (typeof obj[key] !== 'undefined') {\n filtered[key] = obj[key]\n }\n }\n\n return filtered\n}\n\nexport function filterChildren (array: VNode[] = [], tag: string): VNode[] {\n return array.filter(child => {\n return child.componentOptions &&\n child.componentOptions.Ctor.options.name === tag\n })\n}\n\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 {\n return `${Number(str)}${unit}`\n }\n}\n\nexport function kebabCase (str: string): string {\n return (str || '').replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()\n}\n\nexport function isObject (obj: any): obj is object {\n return obj !== null && typeof obj === 'object'\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})\n\nconst ICONS_PREFIX = '$vuetify.icons.'\n\n// This remaps internal names like '$vuetify.icons.cancel'\n// to the current name or component for that icon.\nexport function remapInternalIcon (vm: Vue, iconName: string): VuetifyIcon {\n if (!iconName.startsWith(ICONS_PREFIX)) {\n return iconName\n }\n\n // Now look up icon indirection name, e.g. '$vuetify.icons.cancel'\n return getObjectValueByPath(vm, iconName, iconName)\n}\n\nexport function keys (o: O) {\n return Object.keys(o) as (keyof O)[]\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nconst camelizeRE = /-(\\w)/g\nexport const camelize = (str: string): string => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')\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 = []\n for (let i = 0; i < b.length; i++) {\n if (a.indexOf(b[i]) < 0) diff.push(b[i])\n }\n return diff\n}\n\n/**\n * Makes the first character of a string uppercase\n */\nexport function upperFirst (str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\n/**\n * Returns:\n * - 'normal' for old style slots - `