{"version":3,"file":"BasNlEhp.js","sources":["../../../../node_modules/quasar/src/components/rating/QRating.js"],"sourcesContent":["import { h, ref, computed, onBeforeUpdate, getCurrentInstance } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport useSize, { useSizeProps } from '../../composables/private.use-size/use-size.js'\nimport { useFormProps, useFormAttrs, useFormInject } from '../../composables/use-form/private.use-form.js'\n\nimport { createComponent } from '../../utils/private.create/create.js'\nimport { stopAndPrevent } from '../../utils/event/event.js'\nimport { between } from '../../utils/format/format.js'\nimport { hMergeSlot } from '../../utils/private.render/render.js'\n\nexport default createComponent({\n name: 'QRating',\n\n props: {\n ...useSizeProps,\n ...useFormProps,\n\n modelValue: {\n type: Number,\n required: true\n },\n\n max: {\n type: [ String, Number ],\n default: 5\n },\n\n icon: [ String, Array ],\n iconHalf: [ String, Array ],\n iconSelected: [ String, Array ],\n\n iconAriaLabel: [ String, Array ],\n\n color: [ String, Array ],\n colorHalf: [ String, Array ],\n colorSelected: [ String, Array ],\n\n noReset: Boolean,\n noDimming: Boolean,\n\n readonly: Boolean,\n disable: Boolean\n },\n\n emits: [ 'update:modelValue' ],\n\n setup (props, { slots, emit }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const sizeStyle = useSize(props)\n const formAttrs = useFormAttrs(props)\n const injectFormInput = useFormInject(formAttrs)\n\n const mouseModel = ref(0)\n\n let iconRefs = {}\n\n const editable = computed(() =>\n props.readonly !== true && props.disable !== true\n )\n\n const classes = computed(() =>\n 'q-rating row inline items-center'\n + ` q-rating--${ editable.value === true ? '' : 'non-' }editable`\n + (props.noDimming === true ? ' q-rating--no-dimming' : '')\n + (props.disable === true ? ' disabled' : '')\n + (\n props.color !== void 0 && Array.isArray(props.color) === false\n ? ` text-${ props.color }`\n : ''\n )\n )\n\n const iconData = computed(() => {\n const\n iconLen = Array.isArray(props.icon) === true ? props.icon.length : 0,\n selIconLen = Array.isArray(props.iconSelected) === true ? props.iconSelected.length : 0,\n halfIconLen = Array.isArray(props.iconHalf) === true ? props.iconHalf.length : 0,\n colorLen = Array.isArray(props.color) === true ? props.color.length : 0,\n selColorLen = Array.isArray(props.colorSelected) === true ? props.colorSelected.length : 0,\n halfColorLen = Array.isArray(props.colorHalf) === true ? props.colorHalf.length : 0\n\n return {\n iconLen,\n icon: iconLen > 0 ? props.icon[ iconLen - 1 ] : props.icon,\n selIconLen,\n selIcon: selIconLen > 0 ? props.iconSelected[ selIconLen - 1 ] : props.iconSelected,\n halfIconLen,\n halfIcon: halfIconLen > 0 ? props.iconHalf[ selIconLen - 1 ] : props.iconHalf,\n colorLen,\n color: colorLen > 0 ? props.color[ colorLen - 1 ] : props.color,\n selColorLen,\n selColor: selColorLen > 0 ? props.colorSelected[ selColorLen - 1 ] : props.colorSelected,\n halfColorLen,\n halfColor: halfColorLen > 0 ? props.colorHalf[ halfColorLen - 1 ] : props.colorHalf\n }\n })\n\n const iconLabel = computed(() => {\n if (typeof props.iconAriaLabel === 'string') {\n const label = props.iconAriaLabel.length !== 0 ? `${ props.iconAriaLabel } ` : ''\n return i => `${ label }${ i }`\n }\n\n if (Array.isArray(props.iconAriaLabel) === true) {\n const iMax = props.iconAriaLabel.length\n\n if (iMax > 0) {\n return i => props.iconAriaLabel[ Math.min(i, iMax) - 1 ]\n }\n }\n\n return (i, label) => `${ label } ${ i }`\n })\n\n const stars = computed(() => {\n const\n acc = [],\n icons = iconData.value,\n ceil = Math.ceil(props.modelValue),\n tabindex = editable.value === true ? 0 : null\n\n const halfIndex = props.iconHalf === void 0 || ceil === props.modelValue\n ? -1\n : ceil\n\n for (let i = 1; i <= props.max; i++) {\n const\n active = (mouseModel.value === 0 && props.modelValue >= i) || (mouseModel.value > 0 && mouseModel.value >= i),\n half = halfIndex === i && mouseModel.value < i,\n exSelected = mouseModel.value > 0 && (half === true ? ceil : props.modelValue) >= i && mouseModel.value < i,\n color = half === true\n ? (i <= icons.halfColorLen ? props.colorHalf[ i - 1 ] : icons.halfColor)\n : (\n icons.selColor !== void 0 && active === true\n ? (i <= icons.selColorLen ? props.colorSelected[ i - 1 ] : icons.selColor)\n : (i <= icons.colorLen ? props.color[ i - 1 ] : icons.color)\n ),\n name = (\n half === true\n ? (i <= icons.halfIconLen ? props.iconHalf[ i - 1 ] : icons.halfIcon)\n : (\n icons.selIcon !== void 0 && (active === true || exSelected === true)\n ? (i <= icons.selIconLen ? props.iconSelected[ i - 1 ] : icons.selIcon)\n : (i <= icons.iconLen ? props.icon[ i - 1 ] : icons.icon)\n )\n ) || $q.iconSet.rating.icon\n\n acc.push({\n name: (\n half === true\n ? (i <= icons.halfIconLen ? props.iconHalf[ i - 1 ] : icons.halfIcon)\n : (\n icons.selIcon !== void 0 && (active === true || exSelected === true)\n ? (i <= icons.selIconLen ? props.iconSelected[ i - 1 ] : icons.selIcon)\n : (i <= icons.iconLen ? props.icon[ i - 1 ] : icons.icon)\n )\n ) || $q.iconSet.rating.icon,\n\n attrs: {\n tabindex,\n role: 'radio',\n 'aria-checked': props.modelValue === i ? 'true' : 'false',\n 'aria-label': iconLabel.value(i, name)\n },\n\n iconClass: 'q-rating__icon'\n + (active === true || half === true ? ' q-rating__icon--active' : '')\n + (exSelected === true ? ' q-rating__icon--exselected' : '')\n + (mouseModel.value === i ? ' q-rating__icon--hovered' : '')\n + (color !== void 0 ? ` text-${ color }` : '')\n })\n }\n\n return acc\n })\n\n const attributes = computed(() => {\n const attrs = { role: 'radiogroup' }\n\n if (props.disable === true) {\n attrs[ 'aria-disabled' ] = 'true'\n }\n if (props.readonly === true) {\n attrs[ 'aria-readonly' ] = 'true'\n }\n\n return attrs\n })\n\n function set (value) {\n if (editable.value === true) {\n const\n model = between(parseInt(value, 10), 1, parseInt(props.max, 10)),\n newVal = props.noReset !== true && props.modelValue === model ? 0 : model\n\n newVal !== props.modelValue && emit('update:modelValue', newVal)\n mouseModel.value = 0\n }\n }\n\n function setHoverValue (value) {\n if (editable.value === true) {\n mouseModel.value = value\n }\n }\n\n function onKeyup (e, i) {\n switch (e.keyCode) {\n case 13:\n case 32:\n set(i)\n return stopAndPrevent(e)\n case 37: // LEFT ARROW\n case 40: // DOWN ARROW\n if (iconRefs[ `rt${ i - 1 }` ]) {\n iconRefs[ `rt${ i - 1 }` ].focus()\n }\n return stopAndPrevent(e)\n case 39: // RIGHT ARROW\n case 38: // UP ARROW\n if (iconRefs[ `rt${ i + 1 }` ]) {\n iconRefs[ `rt${ i + 1 }` ].focus()\n }\n return stopAndPrevent(e)\n }\n }\n\n function resetMouseModel () {\n mouseModel.value = 0\n }\n\n onBeforeUpdate(() => {\n iconRefs = {}\n })\n\n return () => {\n const child = []\n\n stars.value.forEach(({ iconClass, name, attrs }, index) => {\n const i = index + 1\n\n child.push(\n h('div', {\n key: i,\n ref: el => { iconRefs[ `rt${ i }` ] = el },\n class: 'q-rating__icon-container flex flex-center',\n ...attrs,\n onClick () { set(i) },\n onMouseover () { setHoverValue(i) },\n onMouseout: resetMouseModel,\n onFocus () { setHoverValue(i) },\n onBlur: resetMouseModel,\n onKeyup (e) { onKeyup(e, i) }\n }, hMergeSlot(\n slots[ `tip-${ i }` ],\n [ h(QIcon, { class: iconClass, name }) ]\n ))\n )\n })\n\n if (props.name !== void 0 && props.disable !== true) {\n injectFormInput(child, 'push')\n }\n\n return h('div', {\n class: classes.value,\n style: sizeStyle.value,\n ...attributes.value\n }, child)\n }\n }\n})\n"],"names":["__nuxt_component_3","createComponent","useSizeProps","useFormProps","props","slots","emit","$q","getCurrentInstance","sizeStyle","useSize","formAttrs","useFormAttrs","injectFormInput","useFormInject","mouseModel","ref","iconRefs","editable","computed","classes","iconData","iconLen","selIconLen","halfIconLen","colorLen","selColorLen","halfColorLen","iconLabel","label","i","iMax","stars","acc","icons","ceil","tabindex","halfIndex","active","half","exSelected","color","name","attributes","attrs","set","value","model","between","newVal","setHoverValue","onKeyup","e","stopAndPrevent","resetMouseModel","onBeforeUpdate","child","iconClass","index","h","el","hMergeSlot","QIcon"],"mappings":"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","x_google_ignoreList":[0]}