{"version":3,"file":"VCol.mjs","names":["makeTagProps","capitalize","computed","h","genericComponent","breakpoints","breakpointProps","reduce","props","val","type","Boolean","String","Number","default","offsetProps","orderProps","propMap","col","Object","keys","offset","order","breakpointClass","prop","className","undefined","breakpoint","replace","toLowerCase","ALIGN_SELF_VALUES","VCol","name","cols","alignSelf","validator","str","includes","setup","slots","classes","classList","forEach","value","push","hasColClasses","some","startsWith","tag","class"],"sources":["../../../src/components/VGrid/VCol.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 breakpointProps = (() => {\n  return breakpoints.reduce((props, val) => {\n    props[val] = {\n      type: [Boolean, String, Number],\n      default: false,\n    }\n    return props\n  }, {} as Record<string, Prop<boolean | string | number, false>>)\n})()\n\nconst offsetProps = (() => {\n  return breakpoints.reduce((props, val) => {\n    props['offset' + capitalize(val)] = {\n      type: [String, Number],\n      default: null,\n    }\n    return props\n  }, {} as Record<string, Prop<string | number, null>>)\n})()\n\nconst orderProps = (() => {\n  return breakpoints.reduce((props, val) => {\n    props['order' + capitalize(val)] = {\n      type: [String, Number],\n      default: null,\n    }\n    return props\n  }, {} as Record<string, Prop<string | number, null>>)\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: string = 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  if (type === 'col') {\n    className = 'v-' + className\n  }\n  // Handling the boolean style prop when accepting [Boolean, String, Number]\n  // means Vue will not convert <v-col sm></v-col> 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    // .v-col-md\n    return className.toLowerCase()\n  }\n  // .order-md-6\n  className += `-${val}`\n  return className.toLowerCase()\n}\n\nconst ALIGN_SELF_VALUES = ['auto', 'start', 'end', 'center', 'baseline', 'stretch'] as const\n\nexport const VCol = genericComponent()({\n  name: 'VCol',\n\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 as PropType<typeof ALIGN_SELF_VALUES[number]>,\n      default: null,\n      validator: (str: any) => ALIGN_SELF_VALUES.includes(str),\n    },\n\n    ...makeTagProps(),\n  },\n\n  setup (props, { slots }) {\n    const classes = computed(() => {\n      const classList: any[] = []\n\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('v-col-'))\n\n      classList.push({\n        // Default to .v-col if no other col-{bp}-* classes generated nor `cols` specified.\n        'v-col': !hasColClasses || !props.cols,\n        [`v-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      return classList\n    })\n\n    return () => h(props.tag, {\n      class: classes.value,\n    }, slots.default?.())\n  },\n})\n\nexport type VCol = InstanceType<typeof VCol>\n"],"mappings":"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"}