{"version":3,"file":"fieldInjection-D83UnufB.mjs","sources":["../../src/components/field/fieldInjection.ts"],"sourcesContent":["import {\n    computed,\n    inject,\n    provide,\n    type ComputedRef,\n    type InjectionKey,\n} from \"vue\";\n\nimport { getOption } from \"@/utils/config\";\nimport type { FieldProps } from \"./props\";\n\nexport type FieldData = {\n    $el: Element | null;\n    props: FieldProps;\n    hasInnerField: boolean;\n    variant?: string;\n    message?: string | string[];\n    labelId: string;\n    inputAttrs: object;\n    addInnerField: () => void;\n    setInputId: (value: string) => void;\n    setFocus: (value: boolean) => void;\n    setFilled: (value: boolean) => void;\n    setVariant: (value?: string) => void;\n    setMessage: (value?: string | string[]) => void;\n};\n\n/** provide/inject type */\ntype ProvidedField = ComputedRef<FieldData | undefined>;\n\n/** provide/inject key */\nconst $FieldKey: InjectionKey<ProvidedField> = Symbol(\"FielData\");\n\n/**\n * Provide field component data via dependency injection.\n * Provided data is a computed ref to ensure reactivity.\n */\nexport function provideField(data: ProvidedField): void {\n    provide($FieldKey, data);\n}\n\n/** Inject parent field component if used inside one. **/\nexport function injectField(): {\n    parentField: ComputedRef<FieldData | undefined>;\n    statusVariantIcon: ComputedRef<string>;\n    statusVariant: ComputedRef<string | undefined>;\n    statusMessage: ComputedRef<string | string[] | undefined>;\n} {\n    const parentField = inject(\n        $FieldKey,\n        computed(() => undefined),\n    );\n\n    /** Get the message prop from parent if it's a Field. */\n    const statusMessage = computed<string | string[] | undefined>(() => {\n        if (\n            (Array.isArray(parentField?.value?.message) &&\n                !parentField?.value?.message.length) ||\n            (!Array.isArray(parentField?.value?.message) &&\n                !parentField?.value?.message)\n        )\n            return undefined;\n        return parentField?.value.message;\n    });\n\n    /** Get the type prop from parent if it's a Field. */\n    const statusVariant = computed<string | undefined>(() => {\n        if (!parentField?.value?.variant) return undefined;\n        if (typeof parentField.value.variant === \"string\")\n            return parentField.value.variant;\n        if (Array.isArray(parentField.value.variant)) {\n            for (const key in parentField.value.variant as any) {\n                if (parentField.value.variant[key]) return key;\n            }\n        }\n        return undefined;\n    });\n\n    const statusVariantIconConfig = getOption(\"statusVariantIcon\", {\n        success: \"check\",\n        danger: \"alert-circle\",\n        info: \"information\",\n        warning: \"alert\",\n    });\n\n    /** Icon name based on the variant. */\n    const statusVariantIcon = computed<string>(() => {\n        if (!statusVariant.value || !statusVariantIconConfig) return \"\";\n        return statusVariantIconConfig[statusVariant.value] || \"\";\n    });\n\n    return {\n        parentField,\n        statusVariant,\n        statusVariantIcon,\n        statusMessage,\n    };\n}\n"],"names":[],"mappings":";;;AA+BA,MAAM,YAAyC,OAAO,UAAU;AAMzD,SAAS,aAAa,MAA2B;AACpD,UAAQ,WAAW,IAAI;AAC3B;AAGO,SAAS,cAKd;AACE,QAAM,cAAc;AAAA,IAChB;AAAA,IACA,SAAS,MAAM,MAAS;AAAA,EAAA;AAI5B,QAAM,gBAAgB,SAAwC,MAAM;AAChE,QACK,MAAM,QAAQ,aAAa,OAAO,OAAO,KACtC,CAAC,aAAa,OAAO,QAAQ,UAChC,CAAC,MAAM,QAAQ,aAAa,OAAO,OAAO,KACvC,CAAC,aAAa,OAAO;AAEzB,aAAO;AACX,WAAO,aAAa,MAAM;AAAA,EAC9B,CAAC;AAGD,QAAM,gBAAgB,SAA6B,MAAM;AACrD,QAAI,CAAC,aAAa,OAAO,QAAS,QAAO;AACzC,QAAI,OAAO,YAAY,MAAM,YAAY;AACrC,aAAO,YAAY,MAAM;AAC7B,QAAI,MAAM,QAAQ,YAAY,MAAM,OAAO,GAAG;AAC1C,iBAAW,OAAO,YAAY,MAAM,SAAgB;AAChD,YAAI,YAAY,MAAM,QAAQ,GAAG,EAAG,QAAO;AAAA,MAC/C;AAAA,IACJ;AACA,WAAO;AAAA,EACX,CAAC;AAED,QAAM,0BAA0B,UAAU,qBAAqB;AAAA,IAC3D,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,EAAA,CACZ;AAGD,QAAM,oBAAoB,SAAiB,MAAM;AAC7C,QAAI,CAAC,cAAc,SAAS,CAAC,wBAAyB,QAAO;AAC7D,WAAO,wBAAwB,cAAc,KAAK,KAAK;AAAA,EAC3D,CAAC;AAED,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAER;"}