{"version":3,"file":"primeng-rating.mjs","sources":["../../src/rating/style/ratingstyle.ts","../../src/rating/rating.ts","../../src/rating/primeng-rating.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { style } from '@primeuix/styles/rating';\nimport { BaseStyle } from 'primeng/base';\n\nconst classes = {\n    root: ({ instance }) => [\n        'p-rating',\n        {\n            'p-readonly': instance.readonly(),\n            'p-disabled': instance.$disabled()\n        }\n    ],\n    option: 'p-rating-option',\n    onIcon: ({ instance }) => ['p-rating-on-icon', { 'p-invalid': instance.invalid() }],\n    offIcon: ({ instance }) => ['p-rating-off-icon', { 'p-invalid': instance.invalid() }]\n};\n\n@Injectable()\nexport class RatingStyle extends BaseStyle {\n    name = 'rating';\n\n    style = style;\n\n    classes = classes;\n}\n\n/**\n *\n * Rating component is a star based selection input.\n *\n * [Live Demo](https://www.primeng.org/rating/)\n *\n * @module ratingstyle\n *\n */\nexport enum RatingClasses {\n    /**\n     * Class name of the root element\n     */\n    root = 'p-rating',\n    /**\n     * Class name of the option element\n     */\n    option = 'p-rating-option',\n    /**\n     * Class name of the on icon element\n     */\n    onIcon = 'p-rating-on-icon',\n    /**\n     * Class name of the off icon element\n     */\n    offIcon = 'p-rating-off-icon'\n}\n\nexport interface RatingStyle extends BaseStyle {}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, contentChild, forwardRef, inject, InjectionToken, input, NgModule, numberAttribute, output, Provider, signal, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { uuid } from '@primeuix/utils';\nimport { SharedModule } from 'primeng/api';\nimport { AutoFocus } from 'primeng/autofocus';\nimport { PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { BaseEditableHolder } from 'primeng/baseeditableholder';\nimport { Bind, BindModule } from 'primeng/bind';\nimport { StarFill as StarFillIcon } from '@primeicons/angular/star-fill';\nimport { Star as StarIcon } from '@primeicons/angular/star';\nimport { Nullable } from 'primeng/ts-helpers';\nimport type { RatingIconTemplateContext, RatingPassThrough, RatingRateEvent } from 'primeng/types/rating';\nimport type { CSSProperties } from 'primeng/types/shared';\nimport { RatingStyle } from './style/ratingstyle';\n\nconst RATING_INSTANCE = new InjectionToken<Rating>('RATING_INSTANCE');\n\nexport const RATING_VALUE_ACCESSOR: Provider = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => Rating),\n    multi: true\n};\n/**\n * Rating is an extension to standard radio button element with theming.\n * @group Components\n */\n@Component({\n    selector: 'p-rating',\n    imports: [NgTemplateOutlet, AutoFocus, StarFillIcon, StarIcon, SharedModule, BindModule],\n    standalone: true,\n    template: `\n        @for (star of starsArray; track star; let i = $index) {\n            <div\n                [class]=\"cx('option')\"\n                [attr.data-highlighted]=\"isHighlighted(star) ? '' : null\"\n                [attr.data-half]=\"isHalf(star) ? '' : null\"\n                (click)=\"onOptionClick($event, star + 1)\"\n                (pointermove)=\"onPointerMove($event, star)\"\n                [pBind]=\"ptm('option')\"\n            >\n                <span class=\"p-hidden-accessible\" [attr.data-p-hidden-accessible]=\"true\" [pBind]=\"ptm('hiddenOptionInputContainer')\">\n                    @if (allowHalf()) {\n                        <input\n                            type=\"radio\"\n                            [value]=\"star + 0.5\"\n                            [attr.name]=\"attrName()\"\n                            [attr.value]=\"modelValue()\"\n                            [attr.required]=\"attrRequired()\"\n                            [attr.readonly]=\"attrReadonly()\"\n                            [attr.disabled]=\"attrDisabled()\"\n                            [checked]=\"value() === star + 0.5\"\n                            [attr.aria-label]=\"starAriaLabel(star + 0.5)\"\n                            (focus)=\"onInputFocus($event, star + 0.5)\"\n                            (blur)=\"onInputBlur($event)\"\n                            (change)=\"onChange($event, star + 0.5)\"\n                            [pBind]=\"ptm('hiddenOptionInput')\"\n                        />\n                    }\n                    <input\n                        type=\"radio\"\n                        [value]=\"star + 1\"\n                        [attr.name]=\"attrName()\"\n                        [attr.value]=\"modelValue()\"\n                        [attr.required]=\"attrRequired()\"\n                        [attr.readonly]=\"attrReadonly()\"\n                        [attr.disabled]=\"attrDisabled()\"\n                        [checked]=\"isChecked(star)\"\n                        [attr.aria-label]=\"starAriaLabel(star + 1)\"\n                        (focus)=\"onInputFocus($event, star + 1)\"\n                        (blur)=\"onInputBlur($event)\"\n                        (change)=\"onChange($event, star + 1)\"\n                        [pAutoFocus]=\"autofocus()\"\n                        [pBind]=\"ptm('hiddenOptionInput')\"\n                    />\n                </span>\n                @if (offIconTemplate()) {\n                    <span [class]=\"cx('offIcon')\" [style]=\"iconOffStyle()\" [pBind]=\"ptm('offIcon')\">\n                        <ng-container *ngTemplateOutlet=\"offIconTemplate(); context: getOffIconContext(star)\"></ng-container>\n                    </span>\n                } @else if (iconOffClass()) {\n                    <span [class]=\"cn(cx('offIcon'), iconOffClass())\" [style]=\"iconOffStyle()\" [pBind]=\"ptm('offIcon')\"></span>\n                } @else {\n                    <svg data-p-icon=\"star\" [style]=\"iconOffStyle()\" [class]=\"cx('offIcon')\" [pBind]=\"ptm('offIcon')\" />\n                }\n                @if (onIconTemplate()) {\n                    <span [class]=\"cx('onIcon')\" [style]=\"iconOnStyle()\" [attr.data-orientation]=\"orientation()\" [pBind]=\"ptm('onIcon')\">\n                        <ng-container *ngTemplateOutlet=\"onIconTemplate(); context: getOnIconContext(star)\"></ng-container>\n                    </span>\n                } @else if (iconOnClass()) {\n                    <span [class]=\"cn(cx('onIcon'), iconOnClass())\" [style]=\"iconOnStyle()\" [attr.data-orientation]=\"orientation()\" [pBind]=\"ptm('onIcon')\"></span>\n                } @else {\n                    <svg data-p-icon=\"star-fill\" [style]=\"iconOnStyle()\" [class]=\"cx('onIcon')\" [attr.data-orientation]=\"orientation()\" [pBind]=\"ptm('onIcon')\" />\n                }\n            </div>\n        }\n    `,\n    providers: [RATING_VALUE_ACCESSOR, RatingStyle, { provide: RATING_INSTANCE, useExisting: Rating }, { provide: PARENT_INSTANCE, useExisting: Rating }],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        '[class]': \"cx('root')\",\n        '[attr.data-p]': 'dataP()',\n        '[attr.data-orientation]': 'orientation()',\n        '(pointerenter)': 'onPointerEnter()',\n        '(pointerleave)': 'onPointerLeave()'\n    },\n    hostDirectives: [Bind]\n})\nexport class Rating extends BaseEditableHolder<RatingPassThrough> {\n    componentName = 'Rating';\n\n    $pcRating: Rating | undefined = inject(RATING_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n    bindDirectiveInstance = inject(Bind, { self: true });\n\n    onAfterViewChecked(): void {\n        this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n    }\n\n    /**\n     * When present, changing the value is not possible.\n     * @group Props\n     */\n    readonly = input(false, { transform: booleanAttribute });\n    /**\n     * Number of stars.\n     * @group Props\n     */\n    stars = input(5, { transform: numberAttribute });\n    /**\n     * Style class of the on icon.\n     * @group Props\n     */\n    iconOnClass = input<string>();\n    /**\n     * Inline style of the on icon.\n     * @group Props\n     */\n    iconOnStyle = input<CSSProperties>();\n    /**\n     * Style class of the off icon.\n     * @group Props\n     */\n    iconOffClass = input<string>();\n    /**\n     * Inline style of the off icon.\n     * @group Props\n     */\n    iconOffStyle = input<CSSProperties>();\n    /**\n     * When present, it specifies that the component should automatically get focus on load.\n     * @group Props\n     */\n    autofocus = input(false, { transform: booleanAttribute });\n    /**\n     * When present, selecting half stars is allowed.\n     * @group Props\n     */\n    allowHalf = input(false, { transform: booleanAttribute });\n    /**\n     * Orientation of the component.\n     * @group Props\n     */\n    orientation = input<'horizontal' | 'vertical'>('horizontal');\n    /**\n     * Emitted on value change.\n     * @param {RatingRateEvent} value - Custom rate event.\n     * @group Emits\n     */\n    onRate = output<RatingRateEvent>();\n    /**\n     * Emitted when the rating receives focus.\n     * @param {Event} value - Browser event.\n     * @group Emits\n     */\n    onFocus = output<FocusEvent>();\n    /**\n     * Emitted when the rating loses focus.\n     * @param {Event} value - Browser event.\n     * @group Emits\n     */\n    onBlur = output<FocusEvent>();\n    /**\n     * Custom on icon template.\n     * @param {RatingIconTemplateContext} context - icon context.\n     * @see {@link RatingIconTemplateContext}\n     * @group Templates\n     */\n    onIconTemplate = contentChild<TemplateRef<RatingIconTemplateContext>>('onicon', { descendants: false });\n    /**\n     * Custom off icon template.\n     * @param {RatingIconTemplateContext} context - icon context.\n     * @see {@link RatingIconTemplateContext}\n     * @group Templates\n     */\n    offIconTemplate = contentChild<TemplateRef<RatingIconTemplateContext>>('officon', { descendants: false });\n\n    value = signal<Nullable<number>>(null);\n\n    public starsArray: Nullable<number[]>;\n\n    focusedOptionIndex = signal<number>(-1);\n\n    nameattr = signal<string | undefined>(undefined);\n\n    hovering = signal<boolean>(false);\n\n    hoveringValue = signal<number>(0);\n\n    _componentStyle = inject(RatingStyle);\n\n    attrRequired = computed(() => (this.required() ? '' : undefined));\n\n    attrReadonly = computed(() => (this.readonly() ? '' : undefined));\n\n    attrDisabled = computed(() => (this.$disabled() ? '' : undefined));\n\n    attrName = computed(() => this.name() || this.nameattr() + '_name');\n\n    dataP = computed(() =>\n        this.cn({\n            readonly: this.readonly(),\n            disabled: this.$disabled()\n        })\n    );\n\n    isCustomIcon = computed(() => !!(this.onIconTemplate() || this.offIconTemplate()));\n\n    activeValue = computed(() => (this.hovering() ? this.hoveringValue() : (this.value() ?? 0)));\n\n    onInit() {\n        this.nameattr.set(this.nameattr() || uuid('pn_id_'));\n        this.starsArray = [];\n        for (let i = 0; i < this.stars(); i++) {\n            this.starsArray[i] = i;\n        }\n    }\n\n    resolvePointerValue(event: PointerEvent | MouseEvent, star: number): number {\n        if (this.allowHalf()) {\n            const target = event.currentTarget as HTMLElement;\n            const rect = target.getBoundingClientRect();\n            const isHalf = this.orientation() === 'vertical' ? event.clientY < rect.top + rect.height / 2 : event.clientX < rect.left + rect.width / 2;\n            return isHalf ? star + 0.5 : star + 1;\n        }\n        return star + 1;\n    }\n\n    onOptionClick(event: MouseEvent, star: number) {\n        if (this.readonly() || this.$disabled()) return;\n\n        const target = event.target as HTMLElement | null;\n        if (target && target.tagName === 'INPUT' && (target as HTMLInputElement).type === 'radio') {\n            return;\n        }\n\n        const value = this.allowHalf() ? this.resolvePointerValue(event, star - 1) : star;\n        this.onOptionSelect(event, value);\n    }\n\n    onOptionSelect(event: Event, value: number) {\n        if (!this.readonly() && !this.$disabled()) {\n            if (value === this.value()) {\n                this.focusedOptionIndex.set(-1);\n                this.updateModel(event, null);\n            } else {\n                this.focusedOptionIndex.set(value);\n                this.updateModel(event, value || null);\n            }\n        }\n    }\n\n    onPointerMove(event: PointerEvent, star: number) {\n        if (!this.readonly() && !this.$disabled()) {\n            this.hovering.set(true);\n            const value = this.resolvePointerValue(event, star);\n            this.hoveringValue.set(value);\n        }\n    }\n\n    onPointerEnter() {\n        if (!this.readonly() && !this.$disabled()) {\n            this.hovering.set(true);\n        }\n    }\n\n    onPointerLeave() {\n        if (!this.readonly() && !this.$disabled()) {\n            this.hovering.set(false);\n            this.hoveringValue.set(0);\n        }\n    }\n\n    onChange(event: Event, value: number) {\n        this.onOptionSelect(event, value);\n    }\n\n    onInputBlur(event: FocusEvent) {\n        this.focusedOptionIndex.set(-1);\n        const next = event.relatedTarget as Node | null;\n        const host = (event.currentTarget as HTMLElement).closest('.p-rating') as HTMLElement | null;\n        if (!host || !next || !host.contains(next)) {\n            this.hovering.set(false);\n            this.hoveringValue.set(0);\n        }\n        this.onBlur.emit(event);\n    }\n\n    onInputFocus(event: FocusEvent, value: number) {\n        if (!this.readonly() && !this.$disabled()) {\n            this.focusedOptionIndex.set(value);\n\n            this.hoveringValue.set(value);\n            this.hovering.set(true);\n\n            this.onFocus.emit(event);\n        }\n    }\n\n    updateModel(event: Event, value: number | null) {\n        this.writeValue(value);\n        this.onModelChange(this.value());\n        this.onModelTouched();\n\n        this.onRate.emit({\n            originalEvent: event,\n            value: value as number\n        });\n    }\n\n    starAriaLabel(value: number) {\n        return value === 1 ? this.config.translation.aria?.star : this.config.translation.aria?.stars?.replace(/{star}/g, String(value));\n    }\n\n    isHighlighted(star: number): boolean {\n        return star < this.activeValue();\n    }\n\n    isHalf(star: number): boolean {\n        if (!this.allowHalf()) return false;\n        const activeVal = this.activeValue();\n        return activeVal === star + 0.5;\n    }\n\n    isChecked(star: number) {\n        return this.value() === star + 1;\n    }\n\n    getOnIconContext(star: number) {\n        return { $implicit: star + 1, class: this.cx('onIcon') };\n    }\n\n    getOffIconContext(star: number) {\n        return { $implicit: star + 1, class: this.cx('offIcon') };\n    }\n\n    getIconTemplate(i: number): Nullable<TemplateRef<RatingIconTemplateContext>> {\n        return !this.value() || i >= this.value()! ? this.offIconTemplate() : this.onIconTemplate() || this.offIconTemplate();\n    }\n\n    /**\n     * @override\n     *\n     * @see {@link BaseEditableHolder.writeControlValue}\n     * Writes the value to the control.\n     */\n    writeControlValue(value: any, setModelValue: (value: any) => void) {\n        this.value.set(value);\n        setModelValue(value);\n    }\n}\n\n@NgModule({\n    imports: [Rating, SharedModule],\n    exports: [Rating, SharedModule]\n})\nexport class RatingModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["StarFillIcon","StarIcon"],"mappings":"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"}