{"version":3,"file":"primeng-metergroup.mjs","sources":["../../src/metergroup/style/metergroupstyle.ts","../../src/metergroup/metergroup.ts","../../src/metergroup/primeng-metergroup.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { style } from '@primeuix/styles/metergroup';\nimport { BaseStyle } from 'primeng/base';\n\nconst classes = {\n    root: ({ instance }) => [\n        'p-metergroup p-component',\n        {\n            'p-metergroup-horizontal': instance.orientation === 'horizontal',\n            'p-metergroup-vertical': instance.orientation === 'vertical'\n        }\n    ],\n    meters: 'p-metergroup-meters',\n    meter: 'p-metergroup-meter',\n    labelList: ({ instance }) => [\n        'p-metergroup-label-list',\n        {\n            'p-metergroup-label-list-vertical': instance.labelOrientation === 'vertical',\n            'p-metergroup-label-list-horizontal': instance.labelOrientation === 'horizontal'\n        }\n    ],\n    label: 'p-metergroup-label',\n    labelIcon: 'p-metergroup-label-icon',\n    labelMarker: 'p-metergroup-label-marker',\n    labelText: 'p-metergroup-label-text'\n};\n\n@Injectable()\nexport class MeterGroupStyle extends BaseStyle {\n    name = 'metergroup';\n\n    style = style;\n\n    classes = classes;\n}\n\n/**\n *\n * MeterGroup is a group of process status indicators.\n *\n * [Live Demo](https://www.primeng.org/metergroup)\n *\n * @module metergroupstyle\n *\n */\nexport enum MeterGroupClasses {\n    /**\n     * Class name of the root element\n     */\n    root = 'p-metergroup',\n    /**\n     * Class name of the meters element\n     */\n    meters = 'p-metergroup-meters',\n    /**\n     * Class name of the meter element\n     */\n    meter = 'p-metergroup-meter',\n    /**\n     * Class name of the label list element\n     */\n    labelList = 'p-metergroup-label-list',\n    /**\n     * Class name of the label element\n     */\n    label = 'p-metergroup-label',\n    /**\n     * Class name of the label icon element\n     */\n    labelIcon = 'p-metergroup-label-icon',\n    /**\n     * Class name of the label marker element\n     */\n    labelMarker = 'p-metergroup-label-marker',\n    /**\n     * Class name of the label text element\n     */\n    labelText = 'p-metergroup-label-text'\n}\n\nexport interface MeterGroupStyle extends BaseStyle {}\n","import { CommonModule } from '@angular/common';\nimport { AfterContentInit, ChangeDetectionStrategy, Component, ContentChild, ContentChildren, ElementRef, forwardRef, inject, InjectionToken, Input, NgModule, QueryList, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { getOuterHeight } from '@primeuix/utils';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind } from 'primeng/bind';\nimport { MeterGroupIconTemplateContext, MeterGroupLabelTemplateContext, MeterGroupMeterTemplateContext, MeterGroupPassThrough, MeterItem } from 'primeng/types/metergroup';\nimport { MeterGroupStyle } from './style/metergroupstyle';\n\nconst METERGROUP_INSTANCE = new InjectionToken<MeterGroup>('METERGROUP_INSTANCE');\n\n@Component({\n    selector: 'p-meterGroupLabel, p-metergrouplabel',\n    standalone: true,\n    imports: [CommonModule, SharedModule, Bind],\n    template: `\n        <ol [class]=\"cx('labelList')\" [pBind]=\"ptm('labelList')\" [attr.data-p]=\"dataP\">\n            <li *ngFor=\"let labelItem of value; let index = index; trackBy: parentInstance.trackByFn\" [class]=\"cx('label')\" [pBind]=\"ptm('label')\">\n                <ng-container *ngIf=\"!iconTemplate\">\n                    <i *ngIf=\"labelItem.icon\" [class]=\"labelItem.icon\" [ngClass]=\"cx('labelIcon')\" [pBind]=\"ptm('labelIcon')\" [ngStyle]=\"{ color: labelItem.color }\"></i>\n                    <span *ngIf=\"!labelItem.icon\" [class]=\"cx('labelMarker')\" [pBind]=\"ptm('labelMarker')\" [ngStyle]=\"{ backgroundColor: labelItem.color }\"></span>\n                </ng-container>\n                <ng-container *ngTemplateOutlet=\"iconTemplate; context: { $implicit: labelItem, icon: labelItem.icon }\"></ng-container>\n                <span [class]=\"cx('labelText')\" [pBind]=\"ptm('labelText')\">{{ labelItem.label }} ({{ parentInstance.percentValue(labelItem.value) }})</span>\n            </li>\n        </ol>\n    `\n})\nexport class MeterGroupLabel extends BaseComponent<MeterGroupPassThrough> {\n    @Input() value: any[] = [];\n\n    @Input() labelPosition: 'start' | 'end' = 'end';\n\n    @Input() labelOrientation: 'horizontal' | 'vertical' = 'horizontal';\n\n    @Input() min: number;\n\n    @Input() max: number;\n\n    @Input() iconTemplate: TemplateRef<MeterGroupIconTemplateContext> | undefined;\n\n    parentInstance: MeterGroup = inject(forwardRef(() => MeterGroup));\n\n    _componentStyle = inject(MeterGroupStyle);\n\n    get dataP() {\n        return this.cn({\n            [this.labelOrientation]: this.labelOrientation\n        });\n    }\n}\n/**\n * MeterGroup displays scalar measurements within a known range.\n * @group Components\n */\n@Component({\n    selector: 'p-meterGroup, p-metergroup, p-meter-group',\n    standalone: true,\n    imports: [CommonModule, MeterGroupLabel, SharedModule, Bind],\n    template: `\n        @if (labelPosition === 'start') {\n            <p-meterGroupLabel\n                *ngIf=\"!labelTemplate && !_labelTemplate\"\n                [value]=\"value\"\n                [labelPosition]=\"labelPosition\"\n                [labelOrientation]=\"labelOrientation\"\n                [min]=\"min\"\n                [max]=\"max\"\n                [iconTemplate]=\"iconTemplate || _iconTemplate\"\n                [pt]=\"pt\"\n                [unstyled]=\"unstyled()\"\n            />\n            <ng-container *ngTemplateOutlet=\"labelTemplate || labelTemplate; context: { $implicit: value, totalPercent: totalPercent(), percentages: percentages() }\"></ng-container>\n        }\n        <ng-container *ngTemplateOutlet=\"startTemplate || _startTemplate; context: { $implicit: value, totalPercent: totalPercent(), percentages: percentages() }\"></ng-container>\n        <div [class]=\"cx('meters')\" [pBind]=\"ptm('meters')\" [attr.data-p]=\"dataP\">\n            <ng-container *ngFor=\"let meterItem of value; let index = index; trackBy: trackByFn\">\n                <ng-container\n                    *ngTemplateOutlet=\"\n                        meterTemplate || _meterTemplate;\n                        context: {\n                            $implicit: meterItem,\n                            index: index,\n                            orientation: this.orientation,\n                            class: cx('meter'),\n                            size: percentValue(meterItem.value),\n                            totalPercent: totalPercent(),\n                            dataP: dataP\n                        }\n                    \"\n                >\n                </ng-container>\n                <ng-container *ngIf=\"!meterTemplate && !_meterTemplate && meterItem.value > 0\">\n                    <span [class]=\"cx('meter')\" [attr.data-p]=\"dataP\" [pBind]=\"ptm('meter')\" [ngStyle]=\"meterStyle(meterItem)\"></span>\n                </ng-container>\n            </ng-container>\n        </div>\n        <ng-container *ngTemplateOutlet=\"endTemplate || _endTemplate; context: { $implicit: value, totalPercent: totalPercent(), percentages: percentages() }\"></ng-container>\n        @if (labelPosition === 'end') {\n            <p-meterGroupLabel\n                *ngIf=\"!labelTemplate && !_labelTemplate\"\n                [value]=\"value\"\n                [labelPosition]=\"labelPosition\"\n                [labelOrientation]=\"labelOrientation\"\n                [min]=\"min\"\n                [max]=\"max\"\n                [iconTemplate]=\"iconTemplate || _iconTemplate\"\n                [pt]=\"pt\"\n                [unstyled]=\"unstyled()\"\n            />\n            <ng-container *ngTemplateOutlet=\"labelTemplate || _labelTemplate; context: { $implicit: value, totalPercent: totalPercent(), percentages: percentages() }\"></ng-container>\n        }\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    providers: [MeterGroupStyle, { provide: METERGROUP_INSTANCE, useExisting: MeterGroup }, { provide: PARENT_INSTANCE, useExisting: MeterGroup }],\n    host: {\n        '[attr.aria-valuemin]': 'min',\n        '[attr.role]': '\"meter\"',\n        '[attr.aria-valuemax]': 'max',\n        '[attr.aria-valuenow]': 'totalPercent()',\n        '[attr.data-p]': 'dataP',\n        '[class]': \"cn(cx('root'), styleClass)\"\n    },\n    hostDirectives: [Bind]\n})\nexport class MeterGroup extends BaseComponent<MeterGroupPassThrough> {\n    componentName = 'MeterGroup';\n\n    $pcMeterGroup: MeterGroup | undefined = inject(METERGROUP_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n    bindDirectiveInstance = inject(Bind, { self: true });\n\n    /**\n     * Current value of the metergroup.\n     * @group Props\n     */\n    @Input() value: MeterItem[] | undefined;\n    /**\n     * Mininum boundary value.\n     * @group Props\n     */\n    @Input() min: number = 0;\n    /**\n     * Maximum boundary value.\n     * @group Props\n     */\n    @Input() max: number = 100;\n    /**\n     * Specifies the layout of the component, valid values are 'horizontal' and 'vertical'.\n     * @group Props\n     */\n    @Input() orientation: 'horizontal' | 'vertical' = 'horizontal';\n    /**\n     * Specifies the label position of the component, valid values are 'start' and 'end'.\n     * @group Props\n     */\n    @Input() labelPosition: 'start' | 'end' = 'end';\n    /**\n     * Specifies the label orientation of the component, valid values are 'horizontal' and 'vertical'.\n     * @group Props\n     */\n    @Input() labelOrientation: 'horizontal' | 'vertical' | undefined = 'horizontal';\n    /**\n     * Style class of the element.\n     * @deprecated since v20.0.0, use `class` instead.\n     * @group Props\n     */\n    @Input() styleClass: string | undefined;\n\n    get vertical(): boolean {\n        return this.orientation === 'vertical';\n    }\n\n    /**\n     * Custom label template.\n     * @param {MeterGroupLabelTemplateContext} context - label context.\n     * @see {@link MeterGroupLabelTemplateContext}\n     * @group Templates\n     */\n    @ContentChild('label', { descendants: false }) labelTemplate: TemplateRef<MeterGroupLabelTemplateContext> | undefined;\n\n    /**\n     * Custom meter template.\n     * @param {MeterGroupMeterTemplateContext} context - meter context.\n     * @see {@link MeterGroupMeterTemplateContext}\n     * @group Templates\n     */\n    @ContentChild('meter', { descendants: false }) meterTemplate: TemplateRef<MeterGroupMeterTemplateContext> | undefined;\n\n    /**\n     * Custom end template.\n     * @param {MeterGroupLabelTemplateContext} context - end context.\n     * @see {@link MeterGroupLabelTemplateContext}\n     * @group Templates\n     */\n    @ContentChild('end', { descendants: false }) endTemplate: TemplateRef<MeterGroupLabelTemplateContext> | undefined;\n\n    /**\n     * Custom start template.\n     * @param {MeterGroupLabelTemplateContext} context - start context.\n     * @see {@link MeterGroupLabelTemplateContext}\n     * @group Templates\n     */\n    @ContentChild('start', { descendants: false }) startTemplate: TemplateRef<MeterGroupLabelTemplateContext> | undefined;\n\n    /**\n     * Custom icon template.\n     * @param {MeterGroupIconTemplateContext} context - icon context.\n     * @see {@link MeterGroupIconTemplateContext}\n     * @group Templates\n     */\n    @ContentChild('icon', { descendants: false }) iconTemplate: TemplateRef<MeterGroupIconTemplateContext> | undefined;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<PrimeTemplate> | undefined;\n\n    _labelTemplate: TemplateRef<MeterGroupLabelTemplateContext> | undefined;\n\n    _meterTemplate: TemplateRef<MeterGroupMeterTemplateContext> | undefined;\n\n    _endTemplate: TemplateRef<MeterGroupLabelTemplateContext> | undefined;\n\n    _startTemplate: TemplateRef<MeterGroupLabelTemplateContext> | undefined;\n\n    _iconTemplate: TemplateRef<MeterGroupIconTemplateContext> | undefined;\n\n    onAfterViewChecked(): void {\n        this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n    }\n\n    _componentStyle = inject(MeterGroupStyle);\n\n    constructor() {\n        super();\n    }\n\n    onAfterViewInit() {\n        const _container = this.el.nativeElement;\n        const height = getOuterHeight(_container);\n        this.vertical && (_container.style.height = height + 'px');\n    }\n\n    onAfterContentInit() {\n        this.templates?.forEach((item) => {\n            switch (item.getType()) {\n                case 'label':\n                    this._labelTemplate = item.template;\n                    break;\n\n                case 'meter':\n                    this._meterTemplate = item.template;\n                    break;\n\n                case 'icon':\n                    this._iconTemplate = item.template;\n                    break;\n\n                case 'start':\n                    this._startTemplate = item.template;\n                    break;\n\n                case 'end':\n                    this._endTemplate = item.template;\n                    break;\n            }\n        });\n    }\n\n    percent(meter = 0) {\n        if (this.max === this.min) {\n            return 100; // When min = max, any value should be 100%\n        }\n        const percentOfItem = ((meter - this.min) / (this.max - this.min)) * 100;\n\n        return Math.round(Math.max(0, Math.min(100, percentOfItem)));\n    }\n\n    percentValue(meter: number) {\n        return this.percent(meter) + '%';\n    }\n\n    meterStyle(val: MeterItem) {\n        return {\n            backgroundColor: val.color,\n            width: this.orientation === 'horizontal' && this.percentValue(val.value || 0),\n            height: this.orientation === 'vertical' && this.percentValue(val.value || 0)\n        };\n    }\n\n    totalPercent() {\n        if (!this.value) {\n            return 0;\n        }\n        return this.percent(this.value.reduce((total, val) => total + (val.value || 0), 0));\n    }\n\n    percentages() {\n        if (!this.value) {\n            return [];\n        }\n\n        let sum = 0;\n        const sumsArray: number[] = [];\n\n        this.value.forEach((item) => {\n            sum += item.value || 0;\n            sumsArray.push(sum);\n        });\n\n        return sumsArray;\n    }\n\n    trackByFn(index: number): number {\n        return index;\n    }\n\n    get dataP() {\n        return this.cn({\n            [this.orientation]: this.orientation\n        });\n    }\n}\n\n@NgModule({\n    imports: [MeterGroup, SharedModule],\n    exports: [MeterGroup, SharedModule]\n})\nexport class MeterGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}