{"version":3,"file":"VCheckboxBtn.mjs","names":["makeVSelectionControlProps","VSelectionControl","IconValue","useProxiedModel","computed","genericComponent","omit","propsFactory","useRender","makeVCheckboxBtnProps","indeterminate","Boolean","indeterminateIcon","type","default","falseIcon","trueIcon","VCheckboxBtn","name","props","emits","value","setup","_ref","slots","model","onChange","v","controlProps","filterProps","_createVNode","_mergeProps","$event","class","style","undefined"],"sources":["../../../src/components/VCheckbox/VCheckboxBtn.tsx"],"sourcesContent":["// Components\nimport { makeVSelectionControlProps, VSelectionControl } from '@/components/VSelectionControl/VSelectionControl'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VSelectionControlSlots } from '@/components/VSelectionControl/VSelectionControl'\nimport type { GenericProps } from '@/util'\n\nexport const makeVCheckboxBtnProps = propsFactory({\n  indeterminate: Boolean,\n  indeterminateIcon: {\n    type: IconValue,\n    default: '$checkboxIndeterminate',\n  },\n\n  ...makeVSelectionControlProps({\n    falseIcon: '$checkboxOff',\n    trueIcon: '$checkboxOn',\n  }),\n}, 'VCheckboxBtn')\n\nexport const VCheckboxBtn = genericComponent<new <T>(\n  props: {\n    modelValue?: T\n    'onUpdate:modelValue'?: (value: T) => void\n  },\n  slots: VSelectionControlSlots,\n) => GenericProps<typeof props, typeof slots>>()({\n  name: 'VCheckboxBtn',\n\n  props: makeVCheckboxBtnProps(),\n\n  emits: {\n    'update:modelValue': (value: any) => true,\n    'update:indeterminate': (value: boolean) => true,\n  },\n\n  setup (props, { slots }) {\n    const indeterminate = useProxiedModel(props, 'indeterminate')\n    const model = useProxiedModel(props, 'modelValue')\n\n    function onChange (v: any) {\n      if (indeterminate.value) {\n        indeterminate.value = false\n      }\n    }\n\n    const falseIcon = computed(() => {\n      return indeterminate.value\n        ? props.indeterminateIcon\n        : props.falseIcon\n    })\n\n    const trueIcon = computed(() => {\n      return indeterminate.value\n        ? props.indeterminateIcon\n        : props.trueIcon\n    })\n\n    useRender(() => {\n      const controlProps = omit(VSelectionControl.filterProps(props), ['modelValue'])\n      return (\n        <VSelectionControl\n          { ...controlProps }\n          v-model={ model.value }\n          class={[\n            'v-checkbox-btn',\n            props.class,\n          ]}\n          style={ props.style }\n          type=\"checkbox\"\n          onUpdate:modelValue={ onChange }\n          falseIcon={ falseIcon.value }\n          trueIcon={ trueIcon.value }\n          aria-checked={ indeterminate.value ? 'mixed' : undefined }\n          v-slots={ slots }\n        />\n      )\n    })\n\n    return {}\n  },\n})\n\nexport type VCheckboxBtn = InstanceType<typeof VCheckboxBtn>\n"],"mappings":";AAAA;AAAA,SACSA,0BAA0B,EAAEC,iBAAiB,sDAEtD;AAAA,SACSC,SAAS;AAAA,SACTC,eAAe,8CAExB;AACA,SAASC,QAAQ,QAAQ,KAAK;AAAA,SACrBC,gBAAgB,EAAEC,IAAI,EAAEC,YAAY,EAAEC,SAAS,gCAExD;AAIA,OAAO,MAAMC,qBAAqB,GAAGF,YAAY,CAAC;EAChDG,aAAa,EAAEC,OAAO;EACtBC,iBAAiB,EAAE;IACjBC,IAAI,EAAEX,SAAS;IACfY,OAAO,EAAE;EACX,CAAC;EAED,GAAGd,0BAA0B,CAAC;IAC5Be,SAAS,EAAE,cAAc;IACzBC,QAAQ,EAAE;EACZ,CAAC;AACH,CAAC,EAAE,cAAc,CAAC;AAElB,OAAO,MAAMC,YAAY,GAAGZ,gBAAgB,CAMG,CAAC,CAAC;EAC/Ca,IAAI,EAAE,cAAc;EAEpBC,KAAK,EAAEV,qBAAqB,CAAC,CAAC;EAE9BW,KAAK,EAAE;IACL,mBAAmB,EAAGC,KAAU,IAAK,IAAI;IACzC,sBAAsB,EAAGA,KAAc,IAAK;EAC9C,CAAC;EAEDC,KAAKA,CAAEH,KAAK,EAAAI,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAMb,aAAa,GAAGP,eAAe,CAACgB,KAAK,EAAE,eAAe,CAAC;IAC7D,MAAMM,KAAK,GAAGtB,eAAe,CAACgB,KAAK,EAAE,YAAY,CAAC;IAElD,SAASO,QAAQA,CAAEC,CAAM,EAAE;MACzB,IAAIjB,aAAa,CAACW,KAAK,EAAE;QACvBX,aAAa,CAACW,KAAK,GAAG,KAAK;MAC7B;IACF;IAEA,MAAMN,SAAS,GAAGX,QAAQ,CAAC,MAAM;MAC/B,OAAOM,aAAa,CAACW,KAAK,GACtBF,KAAK,CAACP,iBAAiB,GACvBO,KAAK,CAACJ,SAAS;IACrB,CAAC,CAAC;IAEF,MAAMC,QAAQ,GAAGZ,QAAQ,CAAC,MAAM;MAC9B,OAAOM,aAAa,CAACW,KAAK,GACtBF,KAAK,CAACP,iBAAiB,GACvBO,KAAK,CAACH,QAAQ;IACpB,CAAC,CAAC;IAEFR,SAAS,CAAC,MAAM;MACd,MAAMoB,YAAY,GAAGtB,IAAI,CAACL,iBAAiB,CAAC4B,WAAW,CAACV,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;MAC/E,OAAAW,YAAA,CAAA7B,iBAAA,EAAA8B,WAAA,CAESH,YAAY;QAAA,cACPH,KAAK,CAACJ,KAAK;QAAA,wBAAAW,MAAA,IAAXP,KAAK,CAACJ,KAAK,GAAAW,MAAA,EAOCN,QAAQ;QAAA,SANvB,CACL,gBAAgB,EAChBP,KAAK,CAACc,KAAK,CACZ;QAAA,SACOd,KAAK,CAACe,KAAK;QAAA;QAAA,aAGPnB,SAAS,CAACM,KAAK;QAAA,YAChBL,QAAQ,CAACK,KAAK;QAAA,gBACVX,aAAa,CAACW,KAAK,GAAG,OAAO,GAAGc;MAAS,IAC9CX,KAAK;IAGrB,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}