{"version":3,"sources":["webpack:///../../src/util/mergeData.ts","webpack:///../../../src/components/VGrid/VRow.ts","webpack:///../../../src/components/VGrid/VCol.ts","webpack:///../../../src/components/VGrid/grid.ts","webpack:///../../../src/components/VGrid/VContainer.ts"],"names":["pattern","parseStyle","style","styleMap","split","key","val","trim","camelize","mergeData","prop","mergeTarget","i","arguments","length","Object","keys","mergeClasses","mergeStyles","undefined","mergeListeners","target","source","wrapInArray","concat","dest","arg","event","breakpoints","ALIGNMENT","makeProps","prefix","def","reduce","props","upperFirst","alignValidator","str","includes","alignProps","type","String","default","validator","justifyValidator","justifyProps","alignContentValidator","alignContentProps","propMap","align","justify","alignContent","classMap","breakpointClass","className","breakpoint","replace","toLowerCase","cache","Map","Vue","extend","name","functional","tag","dense","Boolean","noGutters","render","h","data","children","cacheKey","classList","get","forEach","value","push","set","staticClass","class","breakpointProps","Number","offsetProps","orderProps","col","offset","order","cols","alignSelf","parent","hasColClasses","some","startsWith","Grid","id","attrs","classes","filter","join","domProps","fluid","Array"],"mappings":"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","file":"a93743c.js","sourcesContent":["/**\n * @copyright 2017 Alex Regan\n * @license MIT\n * @see https://github.com/alexsasharegan/vue-functional-data-merge\n */\n/* eslint-disable max-statements */\nimport { VNodeData } from 'vue'\nimport { camelize, wrapInArray } from './helpers'\n\nconst pattern = {\n styleList: /;(?![^(]*\\))/g,\n styleProp: /:(.*)/,\n} as const\n\nfunction parseStyle (style: string) {\n const styleMap: Dictionary = {}\n\n for (const s of style.split(pattern.styleList)) {\n let [key, val] = s.split(pattern.styleProp)\n key = key.trim()\n if (!key) {\n continue\n }\n // May be undefined if the `key: value` pair is incomplete.\n if (typeof val === 'string') {\n val = val.trim()\n }\n styleMap[camelize(key)] = val\n }\n\n return styleMap\n}\n\n/**\n * Intelligently merges data for createElement.\n * Merges arguments left to right, preferring the right argument.\n * Returns new VNodeData object.\n */\nexport default function mergeData (...vNodeData: VNodeData[]): VNodeData\nexport default function mergeData (): VNodeData {\n const mergeTarget: VNodeData & Dictionary = {}\n let i: number = arguments.length\n let prop: string\n\n // Allow for variadic argument length.\n while (i--) {\n // Iterate through the data properties and execute merge strategies\n // Object.keys eliminates need for hasOwnProperty call\n for (prop of Object.keys(arguments[i])) {\n switch (prop) {\n // Array merge strategy (array concatenation)\n case 'class':\n case 'directives':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeClasses(mergeTarget[prop], arguments[i][prop])\n }\n break\n case 'style':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeStyles(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Space delimited string concatenation strategy\n case 'staticClass':\n if (!arguments[i][prop]) {\n break\n }\n if (mergeTarget[prop] === undefined) {\n mergeTarget[prop] = ''\n }\n if (mergeTarget[prop]) {\n // Not an empty string, so concatenate\n mergeTarget[prop] += ' '\n }\n mergeTarget[prop] += arguments[i][prop].trim()\n break\n // Object, the properties of which to merge via array merge strategy (array concatenation).\n // Callback merge strategy merges callbacks to the beginning of the array,\n // so that the last defined callback will be invoked first.\n // This is done since to mimic how Object.assign merging\n // uses the last given value to assign.\n case 'on':\n case 'nativeOn':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeListeners(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Object merge strategy\n case 'attrs':\n case 'props':\n case 'domProps':\n case 'scopedSlots':\n case 'staticStyle':\n case 'hook':\n case 'transition':\n if (!arguments[i][prop]) {\n break\n }\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = {}\n }\n mergeTarget[prop] = { ...arguments[i][prop], ...mergeTarget[prop] }\n break\n // Reassignment strategy (no merge)\n default: // slot, key, ref, tag, show, keepAlive\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = arguments[i][prop]\n }\n }\n }\n }\n\n return mergeTarget\n}\n\nexport function mergeStyles (\n target: undefined | string | object[] | object,\n source: undefined | string | object[] | object\n) {\n if (!target) return source\n if (!source) return target\n\n target = wrapInArray(typeof target === 'string' ? parseStyle(target) : target)\n\n return (target as object[]).concat(typeof source === 'string' ? parseStyle(source) : source)\n}\n\nexport function mergeClasses (target: any, source: any) {\n if (!source) return target\n if (!target) return source\n\n return target ? wrapInArray(target).concat(source) : source\n}\n\nexport function mergeListeners (...args: [\n { [key: string]: Function | Function[] } | undefined,\n { [key: string]: Function | Function[] } | undefined\n]) {\n if (!args[0]) return args[1]\n if (!args[1]) return args[0]\n\n const dest: { [key: string]: Function | Function[] } = {}\n\n for (let i = 2; i--;) {\n const arg = args[i]\n for (const event in arg) {\n if (!arg[event]) continue\n\n if (dest[event]) {\n // Merge current listeners before (because we are iterating backwards).\n // Note that neither \"target\" or \"source\" must be altered.\n dest[event] = ([] as Function[]).concat(arg[event], dest[event])\n } else {\n // Straight assign.\n dest[event] = arg[event]\n }\n }\n }\n\n return dest\n}\n","import './VGrid.sass'\n\nimport Vue, { PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst ALIGNMENT = ['start', 'end', 'center']\n\nfunction makeProps (prefix: string, def: () => PropOptions) {\n return breakpoints.reduce((props, val) => {\n props[prefix + upperFirst(val)] = def()\n return props\n }, {} as Dictionary)\n}\n\nconst alignValidator = (str: any) => [...ALIGNMENT, 'baseline', 'stretch'].includes(str)\nconst alignProps = makeProps('align', () => ({\n type: String,\n default: null,\n validator: alignValidator,\n}))\n\nconst justifyValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around'].includes(str)\nconst justifyProps = makeProps('justify', () => ({\n type: String,\n default: null,\n validator: justifyValidator,\n}))\n\nconst alignContentValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around', 'stretch'].includes(str)\nconst alignContentProps = makeProps('alignContent', () => ({\n type: String,\n default: null,\n validator: alignContentValidator,\n}))\n\nconst propMap = {\n align: Object.keys(alignProps),\n justify: Object.keys(justifyProps),\n alignContent: Object.keys(alignContentProps),\n}\n\nconst classMap = {\n align: 'align',\n justify: 'justify',\n alignContent: 'align-content',\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: string) {\n let className = classMap[type]\n if (val == null) {\n return undefined\n }\n if (prop) {\n // alignSm -> Sm\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // .align-items-sm-center\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-row',\n functional: true,\n props: {\n tag: {\n type: String,\n default: 'div',\n },\n dense: Boolean,\n noGutters: Boolean,\n align: {\n type: String,\n default: null,\n validator: alignValidator,\n },\n ...alignProps,\n justify: {\n type: String,\n default: null,\n validator: justifyValidator,\n },\n ...justifyProps,\n alignContent: {\n type: String,\n default: null,\n validator: alignContentValidator,\n },\n ...alignContentProps,\n },\n render (h, { props, data, children }) {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `align`, `justify`, `alignContent` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n classList.push({\n 'no-gutters': props.noGutters,\n 'row--dense': props.dense,\n [`align-${props.align}`]: props.align,\n [`justify-${props.justify}`]: props.justify,\n [`align-content-${props.alignContent}`]: props.alignContent,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'row',\n class: classList,\n }),\n children\n )\n },\n})\n","import './VGrid.sass'\n\nimport Vue, { VNode, PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['offset' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['order' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-col',\n functional: true,\n props: {\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String,\n default: null,\n validator: (str: any) => ['auto', 'start', 'end', 'center', 'baseline', 'stretch'].includes(str),\n },\n tag: {\n type: String,\n default: 'div',\n },\n },\n render (h, { props, data, children, parent }): VNode {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('col-'))\n\n classList.push({\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: !hasColClasses || !props.cols,\n [`col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(props.tag, mergeData(data, { class: classList }), children)\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\nexport default function VGrid (name: string) {\n /* @vue/component */\n return Vue.extend({\n name: `v-${name}`,\n\n functional: true,\n\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n render (h, { props, data, children }): VNode {\n data.staticClass = (`${name} ${data.staticClass || ''}`).trim()\n\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n const classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n\n if (classes.length) data.staticClass += ` ${classes.join(' ')}`\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(props.tag, data, children)\n },\n })\n}\n","import './_grid.sass'\nimport './VGrid.sass'\n\nimport Grid from './grid'\n\nimport mergeData from '../../util/mergeData'\n\n/* @vue/component */\nexport default Grid('container').extend({\n name: 'v-container',\n functional: true,\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n fluid: {\n type: Boolean,\n default: false,\n },\n },\n render (h, { props, data, children }) {\n let classes\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'container',\n class: Array({\n 'container--fluid': props.fluid,\n }).concat(classes || []),\n }),\n children\n )\n },\n})\n"],"sourceRoot":""}