{"version":3,"file":"use-btn.mjs","sources":["../../../../../../packages/components/ui/btn/use-btn.ts"],"sourcesContent":["import { computed } from 'vue'\nimport useAlign, { useAlignProps } from '@vue-cesium/composables/private/use-align'\nimport useSize, { useSizeProps } from '@vue-cesium/composables/private/use-size'\n\nconst padding = {\n  none: 0,\n  xs: 4,\n  sm: 8,\n  md: 16,\n  lg: 24,\n  xl: 32\n}\n\nconst defaultSizes = {\n  xs: 8,\n  sm: 10,\n  md: 14,\n  lg: 20,\n  xl: 24\n}\n\nexport const useBtnProps = {\n  ...useSizeProps,\n\n  type: {\n    type: String,\n    default: 'button'\n  },\n\n  label: [Number, String],\n  icon: String,\n  iconRight: String,\n\n  round: Boolean,\n  outline: Boolean,\n  flat: Boolean,\n  unelevated: Boolean,\n  rounded: Boolean,\n  push: Boolean,\n  glossy: Boolean,\n\n  size: String,\n  fab: Boolean,\n  fabMini: Boolean,\n  padding: String,\n\n  color: String,\n  textColor: String,\n  noCaps: Boolean,\n  noWrap: Boolean,\n  dense: Boolean,\n\n  tabindex: [Number, String],\n\n  ripple: {\n    type: [Boolean, Object],\n    default: true\n  },\n\n  align: {\n    ...useAlignProps.align,\n    default: 'center'\n  },\n  stack: Boolean,\n  stretch: Boolean,\n  loading: {\n    type: Boolean,\n    default: null\n  },\n  disable: Boolean\n}\n\nexport default function (props) {\n  const sizeStyle = useSize(props, defaultSizes)\n  const alignClass = useAlign(props)\n\n  const style = computed(() => {\n    const obj = props.fab === false && props.fabMini === false ? sizeStyle.value : {}\n    return props.padding !== void 0\n      ? Object.assign({}, obj, {\n          padding: props.padding\n            .split(/\\s+/)\n            .map(v => (v in padding ? padding[v] + 'px' : v))\n            .join(' '),\n          minWidth: '0',\n          minHeight: '0'\n        })\n      : obj\n  })\n\n  const isRounded = computed(() => props.rounded === true || props.fab === true || props.fabMini === true)\n\n  const isActionable = computed(() => props.disable !== true && props.loading !== true)\n\n  const tabIndex = computed(() => (isActionable.value === true ? props.tabindex || 0 : -1))\n\n  const design = computed(() => {\n    if (props.flat === true) return 'flat'\n    if (props.outline === true) return 'outline'\n    if (props.push === true) return 'push'\n    if (props.unelevated === true) return 'unelevated'\n    return 'standard'\n  })\n\n  const attributes = computed(() => {\n    const acc: any = { tabindex: tabIndex.value }\n\n    if (props.type !== 'a') {\n      acc.type = props.type\n    }\n\n    acc.role = props.type === 'a' ? 'link' : 'button'\n\n    if (props.loading === true && props.percentage !== void 0) {\n      Object.assign(acc, {\n        role: 'progressbar',\n        'aria-valuemin': 0,\n        'aria-valuemax': 100,\n        'aria-valuenow': props.percentage\n      })\n    }\n\n    if (props.disable === true) {\n      acc.disabled = ''\n      acc['aria-disabled'] = 'true'\n    }\n\n    return acc\n  })\n\n  const classes = computed(() => {\n    let colors\n\n    if (props.color !== void 0) {\n      if (props.flat === true || props.outline === true) {\n        colors = `text-${props.textColor || props.color}`\n      } else {\n        colors = `bg-${props.color} text-${props.textColor || 'white'}`\n      }\n    } else if (props.textColor) {\n      colors = `text-${props.textColor}`\n    }\n\n    return (\n      `vc-btn--${design.value} ` +\n      `vc-btn--${props.round === true ? 'round' : `rectangle${isRounded.value === true ? ' vc-btn--rounded' : ''}`}` +\n      (colors !== void 0 ? ' ' + colors : '') +\n      (isActionable.value === true ? ' vc-btn--actionable vc-focusable vc-hoverable' : props.disable === true ? ' disabled' : '') +\n      (props.fab === true ? ' vc-btn--fab' : props.fabMini === true ? ' vc-btn--fab-mini' : '') +\n      (props.noCaps === true ? ' vc-btn--no-uppercase' : '') +\n      (props.dense === true ? ' vc-btn--dense' : '') +\n      (props.stretch === true ? ' no-border-radius self-stretch' : '') +\n      (props.glossy === true ? ' glossy' : '')\n    )\n  })\n\n  const innerClasses = computed(\n    () =>\n      alignClass.value +\n      (props.stack === true ? ' column' : ' row') +\n      (props.noWrap === true ? ' no-wrap text-no-wrap' : '') +\n      (props.loading === true ? ' vc-btn__content--hidden' : '')\n  )\n\n  return {\n    classes,\n    style,\n    innerClasses,\n    attributes,\n    isActionable\n  }\n}\n"],"names":[],"mappings":"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"}