{"version":3,"file":"index.vue.mjs","sources":["../../../../../../components/text-field/src/index.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { isEmpty, useNamespace } from '@fusion-ui-vue/utils'\nimport { computed, useAttrs, useSlots } from 'vue'\nimport { css, useColor } from '@fusion-ui-vue/theme'\nimport { UPDATE_MODEL_EVENT } from '@fusion-ui-vue/constants'\nimport Typography from '../../typography'\nimport FnInput from '../../input'\nimport { textFieldProps } from './text-field'\n\nconst props = defineProps(textFieldProps)\nconst emits = defineEmits<{ (e: 'update:modelValue', v: string): void }>()\nconst attrs = useAttrs()\nconst slots = useSlots()\nconst ns = useNamespace('text-field')\n\nconst cssClass = computed(() => {\n  const $color = props.error\n    ? useColor(props, null, 'var(--md-sys-color-error)')\n    : useColor(props, 'color', 'var(--md-sys-color-primary)')\n  return css`\n    --fn-text-field-color: ${$color.value};\n  `\n})\nconst value = computed<string>({\n  get() {\n    return props.modelValue as any\n  },\n  set(newVal) {\n    emits(UPDATE_MODEL_EVENT, newVal)\n  },\n})\n\nconst generateId = () => {\n  return (Math.random() + 1).toString(36).substring(7)\n}\n\nconst id: string = attrs?.id\n  ? (attrs.id as string)\n  : `text-field-${generateId()}`\nconst label = computed(() => props?.label ?? '')\n\nconst hasContent = computed<boolean>(() => {\n  const startAdornment = slots?.startAdornment?.()\n\n  return !isEmpty(props.modelValue) || !!startAdornment\n})\n</script>\n\n<template>\n  <div\n    :class=\"[\n      ns.b(),\n      ns.m(props.variant),\n      ns.m(props.size),\n      props.error ? ns.m('error') : '',\n      hasContent ? ns.m('content-within') : '',\n      cssClass,\n    ]\"\n  >\n    <typography\n      v-if=\"props?.label\"\n      component=\"label\"\n      :class=\"[ns.e('label')]\"\n      color=\"rgb(var(--md-sys-color-on-surface-rgb) / 0.6);\"\n      no-warp\n    >\n      {{ label }}\n    </typography>\n    <div :class=\"[ns.em('div', 'input-wrapper')]\">\n      <slot\n        name=\"startAdornment\"\n        v-bind=\"{ class: [ns.m('start-adornment')], color: 'onSurfaceVariant' }\"\n      />\n      <fn-input\n        :id=\"id\"\n        v-model=\"value\"\n        type=\"text\"\n        v-bind=\"$attrs\"\n        :class=\"[ns.e('input')]\"\n      />\n      <slot\n        name=\"endAdornment\"\n        v-bind=\"{ class: [ns.m('end-adornment')], color: 'onSurfaceVariant' }\"\n      />\n      <span :class=\"[ns.em('span', 'border')]\" />\n    </div>\n    <typography\n      v-if=\"props?.supportingText\"\n      :class=\"[ns.m('supporting-text')]\"\n      variant=\"body.small\"\n      color=\"var(--fn-text-field-color)\"\n      no-warp\n    >\n      {{ props.supportingText }}\n    </typography>\n  </div>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAWA,IAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AACvB,IAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AACjB,IAAA,MAAA,EAAA,GAAK,aAAa,YAAY,CAAA,CAAA;AAE9B,IAAA,MAAA,QAAA,GAAW,SAAS,MAAM;AACxB,MAAA,MAAA,MAAA,GAAS,KAAM,CAAA,KAAA,GACjB,QAAS,CAAA,KAAA,EAAO,IAAM,EAAA,2BAA2B,CACjD,GAAA,QAAA,CAAS,KAAO,EAAA,OAAA,EAAS,6BAA6B,CAAA,CAAA;AACnD,MAAA,OAAA,GAAA,CAAA;AAAA,2BAAA,EACoB,OAAO,KAAK,CAAA;AAAA,EAAA,CAAA,CAAA;AAAA,KAExC,CAAA,CAAA;AACD,IAAA,MAAM,QAAQ,QAAiB,CAAA;AAAA,MAC7B,GAAM,GAAA;AACJ,QAAA,OAAO,KAAM,CAAA,UAAA,CAAA;AAAA,OACf;AAAA,MACA,IAAI,MAAQ,EAAA;AACV,QAAA,KAAA,CAAM,oBAAoB,MAAM,CAAA,CAAA;AAAA,OAClC;AAAA,KACD,CAAA,CAAA;AAED,IAAA,MAAM,aAAa,MAAM;AACf,MAAA,OAAA,CAAA,IAAA,CAAK,QAAW,GAAA,CAAA,EAAG,SAAS,EAAE,CAAA,CAAE,UAAU,CAAC,CAAA,CAAA;AAAA,KACrD,CAAA;AAEA,IAAA,MAAM,MAAa,KAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,EAAA,IACrB,MAAM,EACP,GAAA,CAAA,WAAA,EAAc,YAAY,CAAA,CAAA,CAAA;AAC9B,IAAM,MAAA,KAAA,GAAQ,SAAS,MAAM;;AAAA,MAAA,OAAA,CAAA,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,UAAP,IAAgB,GAAA,EAAA,GAAA,EAAA,CAAA;AAAA,KAAE,CAAA,CAAA;AAEzC,IAAA,MAAA,UAAA,GAAa,SAAkB,MAAM;;AACnC,MAAA,MAAA,cAAA,GAAA,CAAiB,oCAAO,cAAP,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA;AAEvB,MAAA,OAAO,CAAC,OAAQ,CAAA,KAAA,CAAM,UAAU,CAAA,IAAK,CAAC,CAAC,cAAA,CAAA;AAAA,KACxC,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}