{"version":3,"file":"VSelectionControlGroup.mjs","names":["makeComponentProps","provideDefaults","makeDensityProps","IconValue","useProxiedModel","makeThemeProps","computed","onScopeDispose","provide","toRef","deepEqual","genericComponent","getUid","propsFactory","useRender","VSelectionControlGroupSymbol","Symbol","for","makeSelectionControlGroupProps","color","String","disabled","Boolean","defaultsTarget","error","id","inline","falseIcon","trueIcon","ripple","type","default","multiple","name","readonly","modelValue","valueComparator","Function","makeVSelectionControlGroupProps","VSelectionControlGroup","props","emits","val","setup","_ref","slots","uid","value","updateHandlers","Set","forceUpdate","forEach","fn","onForceUpdate","cb","add","delete","density","Array","isArray","_createVNode","class","style","undefined"],"sources":["../../../src/components/VSelectionControlGroup/VSelectionControlGroup.tsx"],"sourcesContent":["// Styles\nimport './VSelectionControlGroup.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps } from '@/composables/density'\nimport { IconValue } from '@/composables/icons'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeThemeProps } from '@/composables/theme'\n\n// Utilities\nimport { computed, onScopeDispose, provide, toRef } from 'vue'\nimport { deepEqual, genericComponent, getUid, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\n\nexport interface VSelectionGroupContext {\n  modelValue: Ref<any>\n  forceUpdate: () => void\n  onForceUpdate: (fn: () => void) => void\n}\n\nexport const VSelectionControlGroupSymbol: InjectionKey<VSelectionGroupContext> = Symbol.for('vuetify:selection-control-group')\n\nexport const makeSelectionControlGroupProps = propsFactory({\n  color: String,\n  disabled: Boolean,\n  defaultsTarget: String,\n  error: Boolean,\n  id: String,\n  inline: Boolean,\n  falseIcon: IconValue,\n  trueIcon: IconValue,\n  ripple: {\n    type: Boolean,\n    default: true,\n  },\n  multiple: {\n    type: Boolean as PropType<boolean | null>,\n    default: null,\n  },\n  name: String,\n  readonly: Boolean,\n  modelValue: null,\n  type: String,\n  valueComparator: {\n    type: Function as PropType<typeof deepEqual>,\n    default: deepEqual,\n  },\n\n  ...makeComponentProps(),\n  ...makeDensityProps(),\n  ...makeThemeProps(),\n}, 'SelectionControlGroup')\n\nexport const makeVSelectionControlGroupProps = propsFactory({\n  ...makeSelectionControlGroupProps({\n    defaultsTarget: 'VSelectionControl',\n  }),\n}, 'VSelectionControlGroup')\n\nexport const VSelectionControlGroup = genericComponent()({\n  name: 'VSelectionControlGroup',\n\n  props: makeVSelectionControlGroupProps(),\n\n  emits: {\n    'update:modelValue': (val: any) => true,\n  },\n\n  setup (props, { slots }) {\n    const modelValue = useProxiedModel(props, 'modelValue')\n    const uid = getUid()\n    const id = computed(() => props.id || `v-selection-control-group-${uid}`)\n    const name = computed(() => props.name || id.value)\n\n    const updateHandlers = new Set<() => void>()\n    provide(VSelectionControlGroupSymbol, {\n      modelValue,\n      forceUpdate: () => {\n        updateHandlers.forEach(fn => fn())\n      },\n      onForceUpdate: cb => {\n        updateHandlers.add(cb)\n        onScopeDispose(() => {\n          updateHandlers.delete(cb)\n        })\n      },\n    })\n\n    provideDefaults({\n      [props.defaultsTarget]: {\n        color: toRef(props, 'color'),\n        disabled: toRef(props, 'disabled'),\n        density: toRef(props, 'density'),\n        error: toRef(props, 'error'),\n        inline: toRef(props, 'inline'),\n        modelValue,\n        multiple: computed(() => !!props.multiple || (props.multiple == null && Array.isArray(modelValue.value))),\n        name,\n        falseIcon: toRef(props, 'falseIcon'),\n        trueIcon: toRef(props, 'trueIcon'),\n        readonly: toRef(props, 'readonly'),\n        ripple: toRef(props, 'ripple'),\n        type: toRef(props, 'type'),\n        valueComparator: toRef(props, 'valueComparator'),\n      },\n    })\n\n    useRender(() => (\n      <div\n        class={[\n          'v-selection-control-group',\n          { 'v-selection-control-group--inline': props.inline },\n          props.class,\n        ]}\n        style={ props.style }\n        role={ props.type === 'radio' ? 'radiogroup' : undefined }\n      >\n        { slots.default?.() }\n      </div>\n    ))\n\n    return {}\n  },\n})\n\nexport type VSelectionControlGroup = InstanceType<typeof VSelectionControlGroup>\n"],"mappings":"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"}