{"version":3,"file":"VRow.mjs","names":["makeTagProps","capitalize","computed","h","genericComponent","breakpoints","ALIGNMENT","SPACE","makeRowProps","prefix","def","reduce","props","val","ALIGN_VALUES","alignValidator","str","includes","alignProps","type","String","default","validator","JUSTIFY_VALUES","justifyValidator","justifyProps","ALIGN_CONTENT_VALUES","alignContentValidator","alignContentProps","propMap","align","Object","keys","justify","alignContent","classMap","breakpointClass","prop","className","undefined","breakpoint","replace","toLowerCase","VRow","name","dense","Boolean","noGutters","setup","slots","classes","classList","forEach","value","push","tag","class"],"sources":["../../../src/components/VGrid/VRow.ts"],"sourcesContent":["// Styles\nimport './VGrid.sass'\n\n// Composables\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { capitalize, computed, h } from 'vue'\nimport { genericComponent } from '@/util'\n\n// Types\nimport type { Prop, PropType } from 'vue'\n\nconst breakpoints = ['sm', 'md', 'lg', 'xl', 'xxl'] as const // no xs\n\nconst ALIGNMENT = ['start', 'end', 'center'] as const\n\nconst SPACE = ['space-between', 'space-around', 'space-evenly'] as const\n\nfunction makeRowProps <T> (prefix: string, def: () => Prop<T, null>) {\n  return breakpoints.reduce((props, val) => {\n    props[prefix + capitalize(val)] = def()\n    return props\n  }, {} as Record<string, Prop<T, null>>)\n}\n\nconst ALIGN_VALUES = [...ALIGNMENT, 'baseline', 'stretch'] as const\nconst alignValidator = (str: any) => ALIGN_VALUES.includes(str)\nconst alignProps = makeRowProps('align', () => ({\n  type: String as PropType<typeof ALIGN_VALUES[number]>,\n  default: null,\n  validator: alignValidator,\n}))\n\nconst JUSTIFY_VALUES = [...ALIGNMENT, ...SPACE] as const\nconst justifyValidator = (str: any) => JUSTIFY_VALUES.includes(str)\nconst justifyProps = makeRowProps('justify', () => ({\n  type: String as PropType<typeof JUSTIFY_VALUES[number]>,\n  default: null,\n  validator: justifyValidator,\n}))\n\nconst ALIGN_CONTENT_VALUES = [...ALIGNMENT, ...SPACE, 'stretch'] as const\nconst alignContentValidator = (str: any) => ALIGN_CONTENT_VALUES.includes(str)\nconst alignContentProps = makeRowProps('alignContent', () => ({\n  type: String as PropType<typeof ALIGN_CONTENT_VALUES[number]>,\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\nexport const VRow = genericComponent()({\n  name: 'VRow',\n\n  props: {\n    dense: Boolean,\n    noGutters: Boolean,\n    align: {\n      type: String as PropType<typeof ALIGN_VALUES[number]>,\n      default: null,\n      validator: alignValidator,\n    },\n    ...alignProps,\n    justify: {\n      type: String as PropType<typeof ALIGN_CONTENT_VALUES[number]>,\n      default: null,\n      validator: justifyValidator,\n    },\n    ...justifyProps,\n    alignContent: {\n      type: String as PropType<typeof ALIGN_CONTENT_VALUES[number]>,\n      default: null,\n      validator: alignContentValidator,\n    },\n\n    ...alignContentProps,\n    ...makeTagProps(),\n  },\n\n  setup (props, { slots }) {\n    const classes = computed(() => {\n      const classList: any[] = []\n\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        'v-row--no-gutters': props.noGutters,\n        'v-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      return classList\n    })\n\n    return () => h(props.tag, {\n      class: ['v-row', classes.value],\n    }, slots.default?.())\n  },\n})\n\nexport type VRow = InstanceType<typeof VRow>\n"],"mappings":"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"}