{"version":3,"sources":["../../../src/components/VRating/VRating.ts"],"names":[],"mappings":"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","sourcesContent":["// Styles\nimport '../../stylus/components/_rating.styl'\n\n// Components\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Delayable from '../../mixins/delayable'\nimport Sizeable from '../../mixins/sizeable'\nimport Rippleable from '../../mixins/rippleable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { createRange } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode, VNodeDirective, VNodeChildren } from 'vue'\n\ntype ItemSlotProps = {\n index: number\n value: number\n isFilled: boolean\n isHalfFilled?: boolean | undefined\n isHovered: boolean\n isHalfHovered?: boolean | undefined\n click: Function\n}\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Delayable,\n Rippleable,\n Sizeable,\n Themeable\n).extend({\n name: 'v-rating',\n\n props: {\n backgroundColor: {\n type: String,\n default: 'accent'\n },\n color: {\n type: String,\n default: 'primary'\n },\n dense: Boolean,\n emptyIcon: {\n type: String,\n default: '$vuetify.icons.ratingEmpty'\n },\n fullIcon: {\n type: String,\n default: '$vuetify.icons.ratingFull'\n },\n halfIcon: {\n type: String,\n default: '$vuetify.icons.ratingHalf'\n },\n halfIncrements: Boolean,\n length: {\n type: [Number, String],\n default: 5\n },\n clearable: Boolean,\n readonly: Boolean,\n hover: Boolean,\n value: {\n type: Number,\n default: 0\n }\n },\n\n data () {\n return {\n hoverIndex: -1,\n internalValue: this.value\n }\n },\n\n computed: {\n directives (): VNodeDirective[] {\n if (this.readonly || !this.ripple) return []\n\n return [{\n name: 'ripple',\n value: { circle: true }\n } as VNodeDirective]\n },\n iconProps (): object {\n const {\n dark,\n medium,\n large,\n light,\n small,\n size,\n xLarge\n } = this.$props\n\n return {\n dark,\n medium,\n large,\n light,\n size,\n small,\n xLarge\n }\n },\n isHovering (): boolean {\n return this.hover && this.hoverIndex >= 0\n }\n },\n\n watch: {\n internalValue (val) {\n val !== this.value && this.$emit('input', val)\n },\n value (val) {\n this.internalValue = val\n }\n },\n\n methods: {\n createClickFn (i: number): Function {\n return (e: MouseEvent) => {\n if (this.readonly) return\n\n const newValue = this.genHoverIndex(e, i)\n if (this.clearable && this.internalValue === newValue) {\n this.internalValue = 0\n } else {\n this.internalValue = newValue\n }\n }\n },\n createProps (i: number): ItemSlotProps {\n const props: ItemSlotProps = {\n index: i,\n value: this.internalValue,\n click: this.createClickFn(i),\n isFilled: Math.floor(this.internalValue) > i,\n isHovered: Math.floor(this.hoverIndex) > i\n }\n\n if (this.halfIncrements) {\n props.isHalfHovered = !props.isHovered && (this.hoverIndex - i) % 1 > 0\n props.isHalfFilled = !props.isFilled && (this.internalValue - i) % 1 > 0\n }\n\n return props\n },\n genHoverIndex (e: MouseEvent, i: number) {\n return i + (this.isHalfEvent(e) ? 0.5 : 1)\n },\n getIconName (props: ItemSlotProps): string {\n const isFull = this.isHovering ? props.isHovered : props.isFilled\n const isHalf = this.isHovering ? props.isHalfHovered : props.isHalfFilled\n\n return isFull ? this.fullIcon : isHalf ? this.halfIcon : this.emptyIcon\n },\n getColor (props: ItemSlotProps): string {\n if (this.isHovering) {\n if (props.isHovered || props.isHalfHovered) return this.color\n } else {\n if (props.isFilled || props.isHalfFilled) return this.color\n }\n\n return this.backgroundColor\n },\n isHalfEvent (e: MouseEvent): boolean {\n if (this.halfIncrements) {\n const rect = e.target && (e.target as HTMLElement).getBoundingClientRect()\n if (rect && (e.pageX - rect.left) < rect.width / 2) return true\n }\n\n return false\n },\n onMouseEnter (e: MouseEvent, i: number): void {\n this.runDelay('open', () => {\n this.hoverIndex = this.genHoverIndex(e, i)\n })\n },\n onMouseLeave (): void {\n this.runDelay('close', () => (this.hoverIndex = -1))\n },\n genItem (i: number): VNode | VNodeChildren | string {\n const props = this.createProps(i)\n\n if (this.$scopedSlots.item) return this.$scopedSlots.item(props)\n\n const listeners: Record = {\n click: props.click\n }\n\n if (this.hover) {\n listeners.mouseenter = (e: MouseEvent) => this.onMouseEnter(e, i)\n listeners.mouseleave = this.onMouseLeave\n\n if (this.halfIncrements) {\n listeners.mousemove = (e: MouseEvent) => this.onMouseEnter(e, i)\n }\n }\n\n return this.$createElement(VIcon, this.setTextColor(this.getColor(props), {\n directives: this.directives,\n props: this.iconProps,\n on: listeners\n }), [this.getIconName(props)])\n }\n },\n\n render (h): VNode {\n const children = createRange(Number(this.length)).map(i => this.genItem(i))\n\n return h('div', {\n staticClass: 'v-rating',\n class: {\n 'v-rating--readonly': this.readonly,\n 'v-rating--dense': this.dense\n }\n }, children)\n }\n})\n"],"sourceRoot":""}