{"version":3,"file":"primitive.mjs","sources":["../src/primitive/Primitive.ts"],"sourcesContent":["import { type Component, defineComponent, h, type PropType } from 'vue'\nimport { Slot } from '../slot/index.ts'\n\nexport type AsTag =\n  | 'a'\n  | 'button'\n  | 'div'\n  | 'form'\n  | 'h2'\n  | 'h3'\n  | 'img'\n  | 'input'\n  | 'label'\n  | 'li'\n  | 'nav'\n  | 'ol'\n  | 'p'\n  | 'span'\n  | 'svg'\n  | 'ul'\n  | 'template'\n  | ({} & string) // any other string\n\nexport interface PrimitiveProps {\n  as?: AsTag | object\n}\n\nconst singleHtmlTags = new Set(['input', 'img'])\n\nexport const Primitive = defineComponent({\n  name: 'Primitive',\n  inheritAttrs: false,\n  props: {\n    as: {\n      type: [String, Object] as PropType<AsTag | Component>,\n      default: 'div',\n    },\n  },\n  setup(props, ctx) {\n    const asChild = props.as === 'template'\n    if (asChild) {\n      return () => h(Slot, ctx.attrs, { default: ctx.slots.default })\n    }\n\n    const isSingleHtmlTag = typeof props.as === 'string' && singleHtmlTags.has(props.as)\n\n    if (isSingleHtmlTag) {\n      return () => h(props.as, ctx.attrs)\n    }\n\n    return () => h(props.as, ctx.attrs, { default: ctx.slots.default })\n  },\n})\n"],"names":[],"mappings":";;;AA2BA,MAAM,iCAAqB,IAAA,GAAA,CAAI,CAAC,OAAA,EAAS,KAAK,CAAC,CAAA;AAExC,MAAM,YAAY,eAAgB,CAAA;AAAA,EACvC,IAAM,EAAA,WAAA;AAAA,EACN,YAAc,EAAA,KAAA;AAAA,EACd,KAAO,EAAA;AAAA,IACL,EAAI,EAAA;AAAA,MACF,IAAA,EAAM,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,MACrB,OAAS,EAAA;AAAA;AACX,GACF;AAAA,EACA,KAAA,CAAM,OAAO,GAAK,EAAA;AAChB,IAAM,MAAA,OAAA,GAAU,MAAM,EAAO,KAAA,UAAA;AAC7B,IAAA,IAAI,OAAS,EAAA;AACX,MAAO,OAAA,MAAM,CAAE,CAAA,IAAA,EAAM,GAAI,CAAA,KAAA,EAAO,EAAE,OAAS,EAAA,GAAA,CAAI,KAAM,CAAA,OAAA,EAAS,CAAA;AAAA;AAGhE,IAAM,MAAA,eAAA,GAAkB,OAAO,KAAM,CAAA,EAAA,KAAO,YAAY,cAAe,CAAA,GAAA,CAAI,MAAM,EAAE,CAAA;AAEnF,IAAA,IAAI,eAAiB,EAAA;AACnB,MAAA,OAAO,MAAM,CAAA,CAAE,KAAM,CAAA,EAAA,EAAI,IAAI,KAAK,CAAA;AAAA;AAGpC,IAAO,OAAA,MAAM,CAAE,CAAA,KAAA,CAAM,EAAI,EAAA,GAAA,CAAI,KAAO,EAAA,EAAE,OAAS,EAAA,GAAA,CAAI,KAAM,CAAA,OAAA,EAAS,CAAA;AAAA;AAEtE,CAAC;;;;"}