{"version":3,"sources":["webpack:///../../../src/mixins/rippleable/index.ts","webpack:///../../../src/mixins/selectable/index.ts"],"names":["Vue","extend","name","directives","ripple","props","type","Boolean","Object","default","methods","genRipple","data","this","staticClass","push","value","center","$createElement","prevent","e","preventDefault","mixins","VInput","Rippleable","Comparable","model","prop","event","id","String","inputValue","falseValue","trueValue","multiple","label","hasColor","lazyValue","computed","computedColor","isActive","color","isDark","appIsDark","isMultiple","Array","isArray","internalValue","input","some","item","valueComparator","undefined","isDirty","rippleState","isDisabled","validationState","watch","val","genLabel","options","call","on","click","genInput","attrs","assign","toString","disabled","computedId","role","domProps","checked","blur","onBlur","change","onChange","focus","onFocus","keydown","onKeydown","ref","onClick","$emit","isInteractive","length","filter","validate","isFocused"],"mappings":"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","file":"assets/js/chunk-6044da8d.a7616283.js","sourcesContent":["// Directives\nimport ripple from '../../directives/ripple'\n\n// Types\nimport Vue, { VNode, VNodeData, VNodeDirective } from 'vue'\n\nexport default Vue.extend({\n name: 'rippleable',\n\n directives: { ripple },\n\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n },\n\n methods: {\n genRipple (data: VNodeData = {}): VNode | null {\n if (!this.ripple) return null\n\n data.staticClass = 'v-input--selection-controls__ripple'\n\n data.directives = data.directives || []\n data.directives.push({\n name: 'ripple',\n value: { center: true },\n } as VNodeDirective)\n\n return this.$createElement('div', data)\n },\n },\n})\n","// Components\nimport VInput from '../../components/VInput'\n\n// Mixins\nimport Rippleable from '../rippleable'\nimport Comparable from '../comparable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\nexport function prevent (e: Event) {\n e.preventDefault()\n}\n\n/* @vue/component */\nexport default mixins(\n VInput,\n Rippleable,\n Comparable\n).extend({\n name: 'selectable',\n\n model: {\n prop: 'inputValue',\n event: 'change',\n },\n\n props: {\n id: String,\n inputValue: null as any,\n falseValue: null as any,\n trueValue: null as any,\n multiple: {\n type: Boolean,\n default: null,\n },\n label: String,\n },\n\n data () {\n return {\n hasColor: this.inputValue,\n lazyValue: this.inputValue,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (!this.isActive) return undefined\n if (this.color) return this.color\n if (this.isDark && !this.appIsDark) return 'white'\n return 'primary'\n },\n isMultiple (): boolean {\n return this.multiple === true || (this.multiple === null && Array.isArray(this.internalValue))\n },\n isActive (): boolean {\n const value = this.value\n const input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) return false\n\n return input.some(item => this.valueComparator(item, value))\n }\n\n if (this.trueValue === undefined || this.falseValue === undefined) {\n return value\n ? this.valueComparator(value, input)\n : Boolean(input)\n }\n\n return this.valueComparator(input, this.trueValue)\n },\n isDirty (): boolean {\n return this.isActive\n },\n rippleState (): string | undefined {\n return !this.isDisabled && !this.validationState\n ? undefined\n : this.validationState\n },\n },\n\n watch: {\n inputValue (val) {\n this.lazyValue = val\n this.hasColor = val\n },\n },\n\n methods: {\n genLabel () {\n const label = VInput.options.methods.genLabel.call(this)\n\n if (!label) return label\n\n label!.data!.on = {\n // Label shouldn't cause the input to focus\n click: prevent,\n }\n\n return label\n },\n genInput (type: string, attrs: object) {\n return this.$createElement('input', {\n attrs: Object.assign({\n 'aria-checked': this.isActive.toString(),\n disabled: this.isDisabled,\n id: this.computedId,\n role: type,\n type,\n }, attrs),\n domProps: {\n value: this.value,\n checked: this.isActive,\n },\n on: {\n blur: this.onBlur,\n change: this.onChange,\n focus: this.onFocus,\n keydown: this.onKeydown,\n click: prevent,\n },\n ref: 'input',\n })\n },\n onClick (e: Event) {\n this.onChange()\n this.$emit('click', e)\n },\n onChange () {\n if (!this.isInteractive) return\n\n const value = this.value\n let input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) {\n input = []\n }\n\n const length = input.length\n\n input = input.filter((item: any) => !this.valueComparator(item, value))\n\n if (input.length === length) {\n input.push(value)\n }\n } else if (this.trueValue !== undefined && this.falseValue !== undefined) {\n input = this.valueComparator(input, this.trueValue) ? this.falseValue : this.trueValue\n } else if (value) {\n input = this.valueComparator(input, value) ? null : value\n } else {\n input = !input\n }\n\n this.validate(true, input)\n this.internalValue = input\n this.hasColor = input\n },\n onFocus (e: FocusEvent) {\n this.isFocused = true\n this.$emit('focus', e)\n },\n onBlur (e: FocusEvent) {\n this.isFocused = false\n this.$emit('blur', e)\n },\n /** @abstract */\n onKeydown (e: Event) {},\n },\n})\n"],"sourceRoot":""}