{"version":3,"file":"index.mjs","sources":["../../../../../../projects/components/widgets/basic/progress/progress-circle/src/progress-circle.props.ts","../../../../../../projects/components/widgets/basic/progress/progress-circle/src/progress-circle.component.ts","../../../../../../projects/components/widgets/basic/progress/progress-circle/src/progress-circle.component.html","../../../../../../projects/components/widgets/basic/progress/progress-circle/src/index.ts"],"sourcesContent":["import {PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register} from '@wm/components/base';\n\nexport const registerProps = () => {\n    register(\n        'wm-progress-circle',\n        new Map(\n            [\n                ['captionplacement', {value: 'inside', ...PROP_STRING}],\n                ['class', PROP_STRING],\n                ['dataset', PROP_ANY],\n                ['datavalue', {value: '30', ...PROP_STRING}],\n                ['displayformat', {value: '9%', ...PROP_STRING}],\n                ['hint', PROP_STRING],\n                ['arialabel', PROP_STRING],\n                ['maxvalue', {value: 100, ...PROP_NUMBER}],\n                ['minvalue', {value: 0, ...PROP_NUMBER}],\n                ['name', PROP_STRING],\n                ['show', {value: true, ...PROP_BOOLEAN}],\n                ['subtitle', PROP_STRING],\n                ['tabindex', {value: 0, ...PROP_NUMBER}],\n                ['title', PROP_STRING],\n                ['type', {value: 'default', ...PROP_STRING}]\n            ]\n        )\n    );\n};\n","import { NgCircleProgressModule } from 'ng-circle-progress';\nimport {AfterViewInit, Component, Inject, Injector, OnDestroy, Optional, ViewChild} from '@angular/core';\nimport {CircleProgressComponent, CircleProgressOptionsInterface} from 'ng-circle-progress';\n\n\nimport {IRedrawableComponent, IWidgetConfig, provideAsWidgetRef, StylableComponent, styler} from '@wm/components/base';\nimport {registerProps} from './progress-circle.props';\nimport {calculatePercent, getDecimalCount, isPercentageValue} from '@wm/components/basic/progress/progress-utils';\nimport {clone, debounce, extend} from \"lodash-es\";\n\nconst DEFAULT_CLS = 'progress app-progress circle';\nconst WIDGET_CONFIG: IWidgetConfig = {widgetType: 'wm-progress-circle', hostClass: DEFAULT_CLS};\nconst DEFAULT_OPTIONS: CircleProgressOptionsInterface  = {\n    responsive: true,\n    innerStrokeWidth: 10,\n    outerStrokeWidth: 10,\n    unitsFontSize: '15',\n    space: -10,\n    toFixed: 0,\n    maxPercent: 100,\n    showSubtitle: false,\n    clockwise: true,\n    startFromZero: false,\n    renderOnClick: false,\n    innerStrokeColor: '',\n    outerStrokeColor: ''\n};\n\n// map of progress-bar type and classes\nexport const TYPE_CLASS_MAP_PC = {\n    'default': '',\n    'success': 'progress-circle-success',\n    'info': 'progress-circle-info',\n    'warning': 'progress-circle-warning',\n    'danger': 'progress-circle-danger',\n};\n\n\n\n@Component({\n    standalone: true,\n    imports: [NgCircleProgressModule],\n    selector: '[wmProgressCircle]',\n    templateUrl: './progress-circle.component.html',\n    providers: [\n        provideAsWidgetRef(ProgressCircleComponent)\n    ],\n    exportAs: 'wmProgressCircle'\n})\nexport class ProgressCircleComponent extends StylableComponent implements AfterViewInit, OnDestroy, IRedrawableComponent {\n    static initializeProps = registerProps();\n\n    public displayformat: string;\n    public datavalue: string;\n    public minvalue: number;\n    public maxvalue: number;\n    public type: string;\n    public title: string;\n    public subtitle: string;\n    public captionplacement: string;\n    public percentagevalue: number;\n    public redraw: Function;\n    public options: CircleProgressOptionsInterface;\n    public hint: string;\n    public arialabel: string;\n    public displayValue: string;\n\n    @ViewChild(CircleProgressComponent, { static: true }) circleRef: CircleProgressComponent;\n\n\n    constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n        super(inj, WIDGET_CONFIG, explicitContext);\n        styler(this.nativeElement, this);\n        this.options = clone(DEFAULT_OPTIONS);\n        this.redraw = debounce(this._redraw, 100);\n    }\n\n    private _redraw () {\n        this.circleRef.render();\n        // Select the <tspan> element that contains the percentage value\n        let tspanElement = $(this.nativeElement).find('svg text tspan:first');\n        this.displayValue = this.options.showUnits ? tspanElement?.text() + '%' : tspanElement?.text();\n    }\n\n    ngAfterViewInit() {\n        super.ngAfterViewInit();\n        this.invokeEventCallback('beforerender', {'$event' : {}});\n        this.options = Object.assign(this.circleRef.options, this.options);\n    }\n\n    getDefaultOptions() {\n        return this.options;\n    }\n\n    getLib() {\n        return 'ng-circle-progress';\n    }\n\n    overrideDefaults(options) {\n        extend(this.options, options);\n    }\n\n    updateDisplayValueFormat() {\n        // show title and subtitle only when captionplacement is 'inside'\n        this.options.showTitle = this.options.showSubtitle = (this.captionplacement === 'inside');\n\n        // show units when title value is empty and captionplacement is 'inside'\n        this.options.showUnits = !this.title && this.options.showTitle && isPercentageValue(this.displayformat);\n        this.options.toFixed = getDecimalCount(this.displayformat);\n\n        if (this.options.showTitle) {\n            this.options.title = this.title || 'auto';\n            this.options.showSubtitle = !!this.subtitle;\n            this.options.subtitle = this.subtitle || '';\n        }\n        this.redraw();\n    }\n\n    onPropertyChange(key: string, nv: any, ov?: any) {\n        switch (key) {\n            case 'type':\n                this.$element.removeClass(TYPE_CLASS_MAP_PC[ov]);\n                this.$element.addClass(TYPE_CLASS_MAP_PC[nv]);\n                break;\n            case 'minvalue':\n            case 'maxvalue':\n            case 'datavalue':\n                if (isPercentageValue(this.datavalue)) {\n                    this.percentagevalue = parseFloat(this.datavalue);\n                } else {\n                    this.percentagevalue = calculatePercent(parseFloat(this.datavalue), this.minvalue, this.maxvalue);\n                }\n                break;\n            case 'displayformat':\n            case 'captionplacement':\n            case 'title':\n            case 'subtitle':\n                this.updateDisplayValueFormat();\n                break;\n        }\n        super.onPropertyChange(key, nv, ov);\n    }\n\n    ngOnDestroy() {\n        // MEMORY LEAK FIX: Clear ViewChild reference\n        this.circleRef = null;\n\n        // MEMORY LEAK FIX: Clear debounced function reference\n        if (this.redraw && typeof (this.redraw as any).cancel === 'function') {\n            (this.redraw as any).cancel();\n        }\n        this.redraw = null;\n\n        super.ngOnDestroy();\n    }\n}\n","<circle-progress [percent]=\"percentagevalue\" [options]=\"options\"></circle-progress>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}