{"version":3,"sources":["node_modules/ng-circle-progress/fesm2020/ng-circle-progress.mjs","src/app/shared/circular-loader/circular-loader.component.ts","src/app/shared/circular-loader/circular-loader.component.html"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { EventEmitter, Component, Output, Input, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { timer } from 'rxjs';\nfunction CircleProgressComponent__svg_svg_0__svg_linearGradient_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(0, \"linearGradient\");\n i0.ɵɵelement(1, \"stop\", 5)(2, \"stop\", 6);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵattribute(\"id\", ctx_r1.svg.outerLinearGradient.id);\n i0.ɵɵadvance();\n i0.ɵɵattribute(\"stop-color\", ctx_r1.svg.outerLinearGradient.colorStop1)(\"stop-opacity\", 1);\n i0.ɵɵadvance();\n i0.ɵɵattribute(\"stop-color\", ctx_r1.svg.outerLinearGradient.colorStop2)(\"stop-opacity\", 1);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_radialGradient_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(0, \"radialGradient\");\n i0.ɵɵelement(1, \"stop\", 5)(2, \"stop\", 6);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵattribute(\"id\", ctx_r1.svg.radialGradient.id);\n i0.ɵɵadvance();\n i0.ɵɵattribute(\"stop-color\", ctx_r1.svg.radialGradient.colorStop1)(\"stop-opacity\", 1);\n i0.ɵɵadvance();\n i0.ɵɵattribute(\"stop-color\", ctx_r1.svg.radialGradient.colorStop2)(\"stop-opacity\", 1);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_ng_container_4__svg_circle_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelement(0, \"circle\");\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵattribute(\"cx\", ctx_r1.svg.backgroundCircle.cx)(\"cy\", ctx_r1.svg.backgroundCircle.cy)(\"r\", ctx_r1.svg.backgroundCircle.r)(\"fill\", ctx_r1.svg.backgroundCircle.fill)(\"fill-opacity\", ctx_r1.svg.backgroundCircle.fillOpacity)(\"stroke\", ctx_r1.svg.backgroundCircle.stroke)(\"stroke-width\", ctx_r1.svg.backgroundCircle.strokeWidth);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_ng_container_4__svg_circle_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelement(0, \"circle\");\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵattributeInterpolate2(\"fill\", \"url(\", ctx_r1.window.location.href, \"#\", ctx_r1.svg.radialGradient.id, \")\");\n i0.ɵɵattribute(\"cx\", ctx_r1.svg.backgroundCircle.cx)(\"cy\", ctx_r1.svg.backgroundCircle.cy)(\"r\", ctx_r1.svg.backgroundCircle.r)(\"fill-opacity\", ctx_r1.svg.backgroundCircle.fillOpacity)(\"stroke\", ctx_r1.svg.backgroundCircle.stroke)(\"stroke-width\", ctx_r1.svg.backgroundCircle.strokeWidth);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_ng_container_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, CircleProgressComponent__svg_svg_0__svg_ng_container_4__svg_circle_1_Template, 1, 7, \"circle\", 2)(2, CircleProgressComponent__svg_svg_0__svg_ng_container_4__svg_circle_2_Template, 1, 9, \"circle\", 2);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.options.backgroundGradient);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.options.backgroundGradient);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_circle_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelement(0, \"circle\");\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵattribute(\"cx\", ctx_r1.svg.circle.cx)(\"cy\", ctx_r1.svg.circle.cy)(\"r\", ctx_r1.svg.circle.r)(\"fill\", ctx_r1.svg.circle.fill)(\"stroke\", ctx_r1.svg.circle.stroke)(\"stroke-width\", ctx_r1.svg.circle.strokeWidth);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_ng_container_6__svg_path_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelement(0, \"path\");\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵattribute(\"d\", ctx_r1.svg.path.d)(\"stroke\", ctx_r1.svg.path.stroke)(\"stroke-width\", ctx_r1.svg.path.strokeWidth)(\"stroke-linecap\", ctx_r1.svg.path.strokeLinecap)(\"fill\", ctx_r1.svg.path.fill);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_ng_container_6__svg_path_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelement(0, \"path\");\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵattributeInterpolate2(\"stroke\", \"url(\", ctx_r1.window.location.href, \"#\", ctx_r1.svg.outerLinearGradient.id, \")\");\n i0.ɵɵattribute(\"d\", ctx_r1.svg.path.d)(\"stroke-width\", ctx_r1.svg.path.strokeWidth)(\"stroke-linecap\", ctx_r1.svg.path.strokeLinecap)(\"fill\", ctx_r1.svg.path.fill);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_ng_container_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, CircleProgressComponent__svg_svg_0__svg_ng_container_6__svg_path_1_Template, 1, 5, \"path\", 2)(2, CircleProgressComponent__svg_svg_0__svg_ng_container_6__svg_path_2_Template, 1, 7, \"path\", 2);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.options.outerStrokeGradient);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.options.outerStrokeGradient);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_1__svg_tspan_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(0, \"tspan\");\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const tspan_r3 = ctx.$implicit;\n const ctx_r1 = i0.ɵɵnextContext(4);\n i0.ɵɵattribute(\"x\", ctx_r1.svg.title.x)(\"y\", ctx_r1.svg.title.y)(\"dy\", tspan_r3.dy)(\"font-size\", ctx_r1.svg.title.fontSize)(\"font-weight\", ctx_r1.svg.title.fontWeight)(\"fill\", ctx_r1.svg.title.color);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(tspan_r3.span);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_1__svg_tspan_1_Template, 2, 7, \"tspan\", 8);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r1.svg.title.tspans);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_text_7__svg_tspan_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(0, \"tspan\");\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵattribute(\"font-size\", ctx_r1.svg.units.fontSize)(\"font-weight\", ctx_r1.svg.units.fontWeight)(\"fill\", ctx_r1.svg.units.color);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.svg.units.text);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_3__svg_tspan_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(0, \"tspan\");\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const tspan_r4 = ctx.$implicit;\n const ctx_r1 = i0.ɵɵnextContext(4);\n i0.ɵɵattribute(\"x\", ctx_r1.svg.subtitle.x)(\"y\", ctx_r1.svg.subtitle.y)(\"dy\", tspan_r4.dy)(\"font-size\", ctx_r1.svg.subtitle.fontSize)(\"font-weight\", ctx_r1.svg.subtitle.fontWeight)(\"fill\", ctx_r1.svg.subtitle.color);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(tspan_r4.span);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_3__svg_tspan_1_Template, 2, 7, \"tspan\", 8);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r1.svg.subtitle.tspans);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_text_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(0, \"text\", 7);\n i0.ɵɵtemplate(1, CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_1_Template, 2, 1, \"ng-container\", 2)(2, CircleProgressComponent__svg_svg_0__svg_text_7__svg_tspan_2_Template, 2, 4, \"tspan\", 2)(3, CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_3_Template, 2, 1, \"ng-container\", 2);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵattribute(\"x\", ctx_r1.svg.circle.cx)(\"y\", ctx_r1.svg.circle.cy)(\"text-anchor\", ctx_r1.svg.title.textAnchor);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.options.showTitle);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.options.showUnits);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.options.showSubtitle);\n }\n}\nfunction CircleProgressComponent__svg_svg_0__svg_image_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelement(0, \"image\", 9);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵattribute(\"height\", ctx_r1.svg.image.height)(\"width\", ctx_r1.svg.image.width)(\"href\", ctx_r1.svg.image.src, null, \"xlink\")(\"x\", ctx_r1.svg.image.x)(\"y\", ctx_r1.svg.image.y);\n }\n}\nfunction CircleProgressComponent__svg_svg_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(0, \"svg\", 1);\n i0.ɵɵlistener(\"click\", function CircleProgressComponent__svg_svg_0_Template_svg_click_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.emitClickEvent($event));\n });\n i0.ɵɵelementStart(1, \"defs\");\n i0.ɵɵtemplate(2, CircleProgressComponent__svg_svg_0__svg_linearGradient_2_Template, 3, 5, \"linearGradient\", 2)(3, CircleProgressComponent__svg_svg_0__svg_radialGradient_3_Template, 3, 5, \"radialGradient\", 2);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(4, CircleProgressComponent__svg_svg_0__svg_ng_container_4_Template, 3, 2, \"ng-container\", 2)(5, CircleProgressComponent__svg_svg_0__svg_circle_5_Template, 1, 6, \"circle\", 2)(6, CircleProgressComponent__svg_svg_0__svg_ng_container_6_Template, 3, 2, \"ng-container\", 2)(7, CircleProgressComponent__svg_svg_0__svg_text_7_Template, 4, 6, \"text\", 3)(8, CircleProgressComponent__svg_svg_0__svg_image_8_Template, 1, 5, \"image\", 4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵattribute(\"viewBox\", ctx_r1.svg.viewBox)(\"height\", ctx_r1.svg.height)(\"width\", ctx_r1.svg.width)(\"class\", ctx_r1.options.class);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r1.options.outerStrokeGradient);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.options.backgroundGradient);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.options.showBackground);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.options.showInnerStroke);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", +ctx_r1.options.percent !== 0 || ctx_r1.options.showZeroOuterStroke);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.options.showImage && (ctx_r1.options.showTitle || ctx_r1.options.showUnits || ctx_r1.options.showSubtitle));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.options.showImage);\n }\n}\nclass CircleProgressOptions {\n constructor() {\n this.class = '';\n this.backgroundGradient = false;\n this.backgroundColor = 'transparent';\n this.backgroundGradientStopColor = 'transparent';\n this.backgroundOpacity = 1;\n this.backgroundStroke = 'transparent';\n this.backgroundStrokeWidth = 0;\n this.backgroundPadding = 5;\n this.percent = 0;\n this.radius = 90;\n this.space = 4;\n this.toFixed = 0;\n this.maxPercent = 1000;\n this.renderOnClick = true;\n this.units = '%';\n this.unitsFontSize = '10';\n this.unitsFontWeight = 'normal';\n this.unitsColor = '#444444';\n this.outerStrokeGradient = false;\n this.outerStrokeWidth = 8;\n this.outerStrokeColor = '#78C000';\n this.outerStrokeGradientStopColor = 'transparent';\n this.outerStrokeLinecap = 'round';\n this.innerStrokeColor = '#C7E596';\n this.innerStrokeWidth = 4;\n this.titleFormat = undefined;\n this.title = 'auto';\n this.titleColor = '#444444';\n this.titleFontSize = '20';\n this.titleFontWeight = 'normal';\n this.subtitleFormat = undefined;\n this.subtitle = 'progress';\n this.subtitleColor = '#A9A9A9';\n this.subtitleFontSize = '10';\n this.subtitleFontWeight = 'normal';\n this.imageSrc = undefined;\n this.imageHeight = 0;\n this.imageWidth = 0;\n this.animation = true;\n this.animateTitle = true;\n this.animateSubtitle = false;\n this.animationDuration = 500;\n this.showTitle = true;\n this.showSubtitle = true;\n this.showUnits = true;\n this.showImage = false;\n this.showBackground = true;\n this.showInnerStroke = true;\n this.clockwise = true;\n this.responsive = false;\n this.startFromZero = true;\n this.showZeroOuterStroke = true;\n this.lazy = false;\n }\n}\nlet CircleProgressComponent = /*#__PURE__*/(() => {\n class CircleProgressComponent {\n constructor(defaultOptions, ngZone, elRef, injector) {\n this.ngZone = ngZone;\n this.elRef = elRef;\n this.onClick = new EventEmitter();\n // of component\n this.svgElement = null;\n // whether is in viewport\n this.isInViewport = false;\n // event for notifying viewport change caused by scrolling or resizing\n this.onViewportChanged = new EventEmitter();\n this._viewportChangedSubscriber = null;\n this.options = new CircleProgressOptions();\n this.defaultOptions = new CircleProgressOptions();\n this._lastPercent = 0;\n this._gradientUUID = null;\n this.render = () => {\n this.applyOptions();\n if (this.options.lazy) {\n // Draw svg if it doesn't exist\n this.svgElement === null && this.draw(this._lastPercent);\n // Draw it only when it's in the viewport\n if (this.isInViewport) {\n // Draw it at the latest position when I am in.\n if (this.options.animation && this.options.animationDuration > 0) {\n this.animate(this._lastPercent, this.options.percent);\n } else {\n this.draw(this.options.percent);\n }\n this._lastPercent = this.options.percent;\n }\n } else {\n if (this.options.animation && this.options.animationDuration > 0) {\n this.animate(this._lastPercent, this.options.percent);\n } else {\n this.draw(this.options.percent);\n }\n this._lastPercent = this.options.percent;\n }\n };\n this.polarToCartesian = (centerX, centerY, radius, angleInDegrees) => {\n let angleInRadius = angleInDegrees * Math.PI / 180;\n let x = centerX + Math.sin(angleInRadius) * radius;\n let y = centerY - Math.cos(angleInRadius) * radius;\n return {\n x: x,\n y: y\n };\n };\n this.draw = percent => {\n // make percent reasonable\n percent = percent === undefined ? this.options.percent : Math.abs(percent);\n // circle percent shouldn't be greater than 100%.\n let circlePercent = percent > 100 ? 100 : percent;\n // determine box size\n let boxSize = this.options.radius * 2 + this.options.outerStrokeWidth * 2;\n if (this.options.showBackground) {\n boxSize += this.options.backgroundStrokeWidth * 2 + this.max(0, this.options.backgroundPadding * 2);\n }\n // the centre of the circle\n let centre = {\n x: boxSize / 2,\n y: boxSize / 2\n };\n // the start point of the arc\n let startPoint = {\n x: centre.x,\n y: centre.y - this.options.radius\n };\n // get the end point of the arc\n let endPoint = this.polarToCartesian(centre.x, centre.y, this.options.radius, 360 * (this.options.clockwise ? circlePercent : 100 - circlePercent) / 100); // ####################\n // We'll get an end point with the same [x, y] as the start point when percent is 100%, so move x a little bit.\n if (circlePercent === 100) {\n endPoint.x = endPoint.x + (this.options.clockwise ? -0.01 : +0.01);\n }\n // largeArcFlag and sweepFlag\n let largeArcFlag, sweepFlag;\n if (circlePercent > 50) {\n [largeArcFlag, sweepFlag] = this.options.clockwise ? [1, 1] : [1, 0];\n } else {\n [largeArcFlag, sweepFlag] = this.options.clockwise ? [0, 1] : [0, 0];\n }\n // percent may not equal the actual percent\n let titlePercent = this.options.animateTitle ? percent : this.options.percent;\n let titleTextPercent = titlePercent > this.options.maxPercent ? `${this.options.maxPercent.toFixed(this.options.toFixed)}+` : titlePercent.toFixed(this.options.toFixed);\n let subtitlePercent = this.options.animateSubtitle ? percent : this.options.percent;\n // get title object\n let title = {\n x: centre.x,\n y: centre.y,\n textAnchor: 'middle',\n color: this.options.titleColor,\n fontSize: this.options.titleFontSize,\n fontWeight: this.options.titleFontWeight,\n texts: [],\n tspans: []\n };\n // from v0.9.9, both title and titleFormat(...) may be an array of string.\n if (this.options.titleFormat !== undefined && this.options.titleFormat.constructor.name === 'Function') {\n let formatted = this.options.titleFormat(titlePercent);\n if (formatted instanceof Array) {\n title.texts = [...formatted];\n } else {\n title.texts.push(formatted.toString());\n }\n } else {\n if (this.options.title === 'auto') {\n title.texts.push(titleTextPercent);\n } else {\n if (this.options.title instanceof Array) {\n title.texts = [...this.options.title];\n } else {\n title.texts.push(this.options.title.toString());\n }\n }\n }\n // get subtitle object\n let subtitle = {\n x: centre.x,\n y: centre.y,\n textAnchor: 'middle',\n color: this.options.subtitleColor,\n fontSize: this.options.subtitleFontSize,\n fontWeight: this.options.subtitleFontWeight,\n texts: [],\n tspans: []\n };\n // from v0.9.9, both subtitle and subtitleFormat(...) may be an array of string.\n if (this.options.subtitleFormat !== undefined && this.options.subtitleFormat.constructor.name === 'Function') {\n let formatted = this.options.subtitleFormat(subtitlePercent);\n if (formatted instanceof Array) {\n subtitle.texts = [...formatted];\n } else {\n subtitle.texts.push(formatted.toString());\n }\n } else {\n if (this.options.subtitle instanceof Array) {\n subtitle.texts = [...this.options.subtitle];\n } else {\n subtitle.texts.push(this.options.subtitle.toString());\n }\n }\n // get units object\n let units = {\n text: `${this.options.units}`,\n fontSize: this.options.unitsFontSize,\n fontWeight: this.options.unitsFontWeight,\n color: this.options.unitsColor\n };\n // get total count of text lines to be shown\n let rowCount = 0,\n rowNum = 1;\n this.options.showTitle && (rowCount += title.texts.length);\n this.options.showSubtitle && (rowCount += subtitle.texts.length);\n // calc dy for each tspan for title\n if (this.options.showTitle) {\n for (let span of title.texts) {\n title.tspans.push({\n span: span,\n dy: this.getRelativeY(rowNum, rowCount)\n });\n rowNum++;\n }\n }\n // calc dy for each tspan for subtitle\n if (this.options.showSubtitle) {\n for (let span of subtitle.texts) {\n subtitle.tspans.push({\n span: span,\n dy: this.getRelativeY(rowNum, rowCount)\n });\n rowNum++;\n }\n }\n // create ID for gradient element\n if (null === this._gradientUUID) {\n this._gradientUUID = this.uuid();\n }\n // Bring it all together\n this.svg = {\n viewBox: `0 0 ${boxSize} ${boxSize}`,\n // Set both width and height to '100%' if it's responsive\n width: this.options.responsive ? '100%' : boxSize,\n height: this.options.responsive ? '100%' : boxSize,\n backgroundCircle: {\n cx: centre.x,\n cy: centre.y,\n r: this.options.radius + this.options.outerStrokeWidth / 2 + this.options.backgroundPadding,\n fill: this.options.backgroundColor,\n fillOpacity: this.options.backgroundOpacity,\n stroke: this.options.backgroundStroke,\n strokeWidth: this.options.backgroundStrokeWidth\n },\n path: {\n // A rx ry x-axis-rotation large-arc-flag sweep-flag x y (https://developer.mozilla.org/en/docs/Web/SVG/Tutorial/Paths#Arcs)\n d: `M ${startPoint.x} ${startPoint.y}\n A ${this.options.radius} ${this.options.radius} 0 ${largeArcFlag} ${sweepFlag} ${endPoint.x} ${endPoint.y}`,\n stroke: this.options.outerStrokeColor,\n strokeWidth: this.options.outerStrokeWidth,\n strokeLinecap: this.options.outerStrokeLinecap,\n fill: 'none'\n },\n circle: {\n cx: centre.x,\n cy: centre.y,\n r: this.options.radius - this.options.space - this.options.outerStrokeWidth / 2 - this.options.innerStrokeWidth / 2,\n fill: 'none',\n stroke: this.options.innerStrokeColor,\n strokeWidth: this.options.innerStrokeWidth\n },\n title: title,\n units: units,\n subtitle: subtitle,\n image: {\n x: centre.x - this.options.imageWidth / 2,\n y: centre.y - this.options.imageHeight / 2,\n src: this.options.imageSrc,\n width: this.options.imageWidth,\n height: this.options.imageHeight\n },\n outerLinearGradient: {\n id: 'outer-linear-' + this._gradientUUID,\n colorStop1: this.options.outerStrokeColor,\n colorStop2: this.options.outerStrokeGradientStopColor === 'transparent' ? '#FFF' : this.options.outerStrokeGradientStopColor\n },\n radialGradient: {\n id: 'radial-' + this._gradientUUID,\n colorStop1: this.options.backgroundColor,\n colorStop2: this.options.backgroundGradientStopColor === 'transparent' ? '#FFF' : this.options.backgroundGradientStopColor\n }\n };\n };\n this.getAnimationParameters = (previousPercent, currentPercent) => {\n const MIN_INTERVAL = 10;\n let times, step, interval;\n let fromPercent = this.options.startFromZero ? 0 : previousPercent < 0 ? 0 : previousPercent;\n let toPercent = currentPercent < 0 ? 0 : this.min(currentPercent, this.options.maxPercent);\n let delta = Math.abs(Math.round(toPercent - fromPercent));\n if (delta >= 100) {\n // we will finish animation in 100 times\n times = 100;\n if (!this.options.animateTitle && !this.options.animateSubtitle) {\n step = 1;\n } else {\n // show title or subtitle animation even if the arc is full, we also need to finish it in 100 times.\n step = Math.round(delta / times);\n }\n } else {\n // we will finish in as many times as the number of percent.\n times = delta;\n step = 1;\n }\n // Get the interval of timer\n interval = Math.round(this.options.animationDuration / times);\n // Readjust all values if the interval of timer is extremely small.\n if (interval < MIN_INTERVAL) {\n interval = MIN_INTERVAL;\n times = this.options.animationDuration / interval;\n if (!this.options.animateTitle && !this.options.animateSubtitle && delta > 100) {\n step = Math.round(100 / times);\n } else {\n step = Math.round(delta / times);\n }\n }\n // step must be greater than 0.\n if (step < 1) {\n step = 1;\n }\n return {\n times: times,\n step: step,\n interval: interval\n };\n };\n this.animate = (previousPercent, currentPercent) => {\n if (this._timerSubscription && !this._timerSubscription.closed) {\n this._timerSubscription.unsubscribe();\n }\n let fromPercent = this.options.startFromZero ? 0 : previousPercent;\n let toPercent = currentPercent;\n let {\n step: step,\n interval: interval\n } = this.getAnimationParameters(fromPercent, toPercent);\n let count = fromPercent;\n if (fromPercent < toPercent) {\n this._timerSubscription = timer(0, interval).subscribe(() => {\n count += step;\n if (count <= toPercent) {\n if (!this.options.animateTitle && !this.options.animateSubtitle && count >= 100) {\n this.draw(toPercent);\n this._timerSubscription.unsubscribe();\n } else {\n this.draw(count);\n }\n } else {\n this.draw(toPercent);\n this._timerSubscription.unsubscribe();\n }\n });\n } else {\n this._timerSubscription = timer(0, interval).subscribe(() => {\n count -= step;\n if (count >= toPercent) {\n if (!this.options.animateTitle && !this.options.animateSubtitle && toPercent >= 100) {\n this.draw(toPercent);\n this._timerSubscription.unsubscribe();\n } else {\n this.draw(count);\n }\n } else {\n this.draw(toPercent);\n this._timerSubscription.unsubscribe();\n }\n });\n }\n };\n this.applyOptions = () => {\n // the options of may change already\n for (let name of Object.keys(this.options)) {\n if (this.hasOwnProperty(name) && this[name] !== undefined) {\n this.options[name] = this[name];\n } else if (this.templateOptions && this.templateOptions[name] !== undefined) {\n this.options[name] = this.templateOptions[name];\n }\n }\n // make sure key options valid\n this.options.radius = Math.abs(+this.options.radius);\n this.options.space = +this.options.space;\n this.options.percent = +this.options.percent > 0 ? +this.options.percent : 0;\n this.options.maxPercent = Math.abs(+this.options.maxPercent);\n this.options.animationDuration = Math.abs(this.options.animationDuration);\n this.options.outerStrokeWidth = Math.abs(+this.options.outerStrokeWidth);\n this.options.innerStrokeWidth = Math.abs(+this.options.innerStrokeWidth);\n this.options.backgroundPadding = +this.options.backgroundPadding;\n };\n this.getRelativeY = (rowNum, rowCount) => {\n // why '-0.18em'? It's a magic number when property 'alignment-baseline' equals 'baseline'. :)\n let initialOffset = -0.18,\n offset = 1;\n return (initialOffset + offset * (rowNum - rowCount / 2)).toFixed(2) + 'em';\n };\n this.min = (a, b) => {\n return a < b ? a : b;\n };\n this.max = (a, b) => {\n return a > b ? a : b;\n };\n this.uuid = () => {\n // https://www.w3resource.com/javascript-exercises/javascript-math-exercise-23.php\n var dt = new Date().getTime();\n var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (dt + Math.random() * 16) % 16 | 0;\n dt = Math.floor(dt / 16);\n return (c == 'x' ? r : r & 0x3 | 0x8).toString(16);\n });\n return uuid;\n };\n this.checkViewport = () => {\n this.findSvgElement();\n let previousValue = this.isInViewport;\n this.isInViewport = this.isElementInViewport(this.svgElement);\n if (previousValue !== this.isInViewport && this.onViewportChanged.observers.length > 0) {\n this.ngZone.run(() => {\n this.onViewportChanged.emit({\n oldValue: previousValue,\n newValue: this.isInViewport\n });\n });\n }\n };\n this.onScroll = event => {\n this.checkViewport();\n };\n this.loadEventsForLazyMode = () => {\n if (this.options.lazy) {\n this.ngZone.runOutsideAngular(() => {\n this.document.addEventListener('scroll', this.onScroll, true);\n this.window.addEventListener('resize', this.onScroll, true);\n });\n if (this._viewportChangedSubscriber === null) {\n this._viewportChangedSubscriber = this.onViewportChanged.subscribe(({\n oldValue,\n newValue\n }) => {\n newValue ? this.render() : null;\n });\n }\n // svgElement must be created in DOM before being checked.\n // Is there a better way to check the existence of svgElemnt?\n let _timer = timer(0, 50).subscribe(() => {\n this.svgElement === null ? this.checkViewport() : _timer.unsubscribe();\n });\n }\n };\n this.unloadEventsForLazyMode = () => {\n // Remove event listeners\n this.document.removeEventListener('scroll', this.onScroll, true);\n this.window.removeEventListener('resize', this.onScroll, true);\n // Unsubscribe onViewportChanged\n if (this._viewportChangedSubscriber !== null) {\n this._viewportChangedSubscriber.unsubscribe();\n this._viewportChangedSubscriber = null;\n }\n };\n this.document = injector.get(DOCUMENT);\n this.window = this.document.defaultView;\n Object.assign(this.options, defaultOptions);\n Object.assign(this.defaultOptions, defaultOptions);\n }\n emitClickEvent(event) {\n if (this.options.renderOnClick) {\n this.animate(0, this.options.percent);\n }\n if (this.onClick.observers.length > 0) {\n this.onClick.emit(event);\n }\n }\n isDrawing() {\n return this._timerSubscription && !this._timerSubscription.closed;\n }\n findSvgElement() {\n if (this.svgElement === null) {\n let tags = this.elRef.nativeElement.getElementsByTagName('svg');\n if (tags.length > 0) {\n this.svgElement = tags[0];\n }\n }\n }\n isElementInViewport(el) {\n // Return false if el has not been created in page.\n if (el === null || el === undefined) return false;\n // Check if the element is out of view due to a container scrolling\n let rect = el.getBoundingClientRect(),\n parent = el.parentNode,\n parentRect;\n do {\n parentRect = parent.getBoundingClientRect();\n if (rect.top >= parentRect.bottom) return false;\n if (rect.bottom <= parentRect.top) return false;\n if (rect.left >= parentRect.right) return false;\n if (rect.right <= parentRect.left) return false;\n parent = parent.parentNode;\n } while (parent != this.document.body);\n // Check its within the document viewport\n if (rect.top >= (this.window.innerHeight || this.document.documentElement.clientHeight)) return false;\n if (rect.bottom <= 0) return false;\n if (rect.left >= (this.window.innerWidth || this.document.documentElement.clientWidth)) return false;\n if (rect.right <= 0) return false;\n return true;\n }\n ngOnInit() {\n this.loadEventsForLazyMode();\n }\n ngOnDestroy() {\n this.unloadEventsForLazyMode();\n }\n ngOnChanges(changes) {\n this.render();\n if ('lazy' in changes) {\n changes.lazy.currentValue ? this.loadEventsForLazyMode() : this.unloadEventsForLazyMode();\n }\n }\n }\n CircleProgressComponent.ɵfac = function CircleProgressComponent_Factory(t) {\n return new (t || CircleProgressComponent)(i0.ɵɵdirectiveInject(CircleProgressOptions), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Injector));\n };\n CircleProgressComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CircleProgressComponent,\n selectors: [[\"circle-progress\"]],\n inputs: {\n name: \"name\",\n class: \"class\",\n backgroundGradient: \"backgroundGradient\",\n backgroundColor: \"backgroundColor\",\n backgroundGradientStopColor: \"backgroundGradientStopColor\",\n backgroundOpacity: \"backgroundOpacity\",\n backgroundStroke: \"backgroundStroke\",\n backgroundStrokeWidth: \"backgroundStrokeWidth\",\n backgroundPadding: \"backgroundPadding\",\n radius: \"radius\",\n space: \"space\",\n percent: \"percent\",\n toFixed: \"toFixed\",\n maxPercent: \"maxPercent\",\n renderOnClick: \"renderOnClick\",\n units: \"units\",\n unitsFontSize: \"unitsFontSize\",\n unitsFontWeight: \"unitsFontWeight\",\n unitsColor: \"unitsColor\",\n outerStrokeGradient: \"outerStrokeGradient\",\n outerStrokeWidth: \"outerStrokeWidth\",\n outerStrokeColor: \"outerStrokeColor\",\n outerStrokeGradientStopColor: \"outerStrokeGradientStopColor\",\n outerStrokeLinecap: \"outerStrokeLinecap\",\n innerStrokeColor: \"innerStrokeColor\",\n innerStrokeWidth: \"innerStrokeWidth\",\n titleFormat: \"titleFormat\",\n title: \"title\",\n titleColor: \"titleColor\",\n titleFontSize: \"titleFontSize\",\n titleFontWeight: \"titleFontWeight\",\n subtitleFormat: \"subtitleFormat\",\n subtitle: \"subtitle\",\n subtitleColor: \"subtitleColor\",\n subtitleFontSize: \"subtitleFontSize\",\n subtitleFontWeight: \"subtitleFontWeight\",\n imageSrc: \"imageSrc\",\n imageHeight: \"imageHeight\",\n imageWidth: \"imageWidth\",\n animation: \"animation\",\n animateTitle: \"animateTitle\",\n animateSubtitle: \"animateSubtitle\",\n animationDuration: \"animationDuration\",\n showTitle: \"showTitle\",\n showSubtitle: \"showSubtitle\",\n showUnits: \"showUnits\",\n showImage: \"showImage\",\n showBackground: \"showBackground\",\n showInnerStroke: \"showInnerStroke\",\n clockwise: \"clockwise\",\n responsive: \"responsive\",\n startFromZero: \"startFromZero\",\n showZeroOuterStroke: \"showZeroOuterStroke\",\n lazy: \"lazy\",\n templateOptions: [i0.ɵɵInputFlags.None, \"options\", \"templateOptions\"]\n },\n outputs: {\n onClick: \"onClick\"\n },\n features: [i0.ɵɵNgOnChangesFeature],\n decls: 1,\n vars: 1,\n consts: [[\"xmlns\", \"http://www.w3.org/2000/svg\", \"preserveAspectRatio\", \"xMidYMid meet\", 3, \"click\", 4, \"ngIf\"], [\"xmlns\", \"http://www.w3.org/2000/svg\", \"preserveAspectRatio\", \"xMidYMid meet\", 3, \"click\"], [4, \"ngIf\"], [\"alignment-baseline\", \"baseline\", 4, \"ngIf\"], [\"preserveAspectRatio\", \"none\", 4, \"ngIf\"], [\"offset\", \"5%\"], [\"offset\", \"95%\"], [\"alignment-baseline\", \"baseline\"], [4, \"ngFor\", \"ngForOf\"], [\"preserveAspectRatio\", \"none\"]],\n template: function CircleProgressComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, CircleProgressComponent__svg_svg_0_Template, 9, 11, \"svg\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.svg);\n }\n },\n dependencies: [i1.NgForOf, i1.NgIf],\n encapsulation: 2\n });\n return CircleProgressComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgCircleProgressModule = /*#__PURE__*/(() => {\n class NgCircleProgressModule {\n static forRoot(options = {}) {\n return {\n ngModule: NgCircleProgressModule,\n providers: [{\n provide: CircleProgressOptions,\n useValue: options\n }]\n };\n }\n }\n NgCircleProgressModule.ɵfac = function NgCircleProgressModule_Factory(t) {\n return new (t || NgCircleProgressModule)();\n };\n NgCircleProgressModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgCircleProgressModule\n });\n NgCircleProgressModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [CommonModule]\n });\n return NgCircleProgressModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/*\n * Public API Surface of ng-circle-progress\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CircleProgressComponent, CircleProgressOptions, NgCircleProgressModule };\n","import {ChangeDetectionStrategy, Component, Input} from '@angular/core';\r\nimport {NgClass, NgStyle} from \"@angular/common\";\r\nimport {NgCircleProgressModule } from \"ng-circle-progress\";\r\n\r\n@Component({\r\n selector: 'app-circular-loader',\r\n standalone: true,\r\n imports: [NgCircleProgressModule, NgStyle, NgClass],\r\n templateUrl: './circular-loader.component.html',\r\n styleUrls: ['./circular-loader.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CircularLoaderComponent {\r\n\r\n @Input() currentValue: number = 0;\r\n /**\r\n * If an animation should be used\r\n */\r\n @Input() animation: boolean = true;\r\n /**\r\n * Color of an inner bar\r\n */\r\n @Input() innerStrokeColor: string = 'transparent';\r\n /**\r\n * Color of the Downloader bar\r\n */\r\n @Input() outerStrokeColor: string = '#4ac694';\r\n @Input() backgroundColor: string = '#000';\r\n @Input() fontSize: string = '36px';\r\n /**\r\n * Show the icon inside the downloader\r\n */\r\n @Input() showIcon: boolean = true;\r\n /**\r\n * The width in pixels of the loader\r\n */\r\n @Input() width: string = '100px';\r\n /**\r\n * The height in pixels of the loader\r\n */\r\n @Input() height: string = '100px';\r\n /**\r\n * Centers the icon in the middle of the loader. Best for card use.\r\n */\r\n @Input() center: boolean = true;\r\n}\r\n","@if (currentValue > 0) {\r\n @if (showIcon) {\r\n
\r\n \r\n
\r\n }\r\n\r\n
\r\n \r\n
\r\n}\r\n"],"mappings":"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","names":["CircleProgressComponent__svg_svg_0__svg_linearGradient_2_Template","rf","ctx","ɵɵnamespaceSVG","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ctx_r1","ɵɵnextContext","ɵɵattribute","ɵɵadvance","CircleProgressComponent__svg_svg_0__svg_radialGradient_3_Template","CircleProgressComponent__svg_svg_0__svg_ng_container_4__svg_circle_1_Template","CircleProgressComponent__svg_svg_0__svg_ng_container_4__svg_circle_2_Template","ɵɵattributeInterpolate2","CircleProgressComponent__svg_svg_0__svg_ng_container_4_Template","ɵɵelementContainerStart","ɵɵtemplate","ɵɵelementContainerEnd","ɵɵproperty","CircleProgressComponent__svg_svg_0__svg_circle_5_Template","CircleProgressComponent__svg_svg_0__svg_ng_container_6__svg_path_1_Template","CircleProgressComponent__svg_svg_0__svg_ng_container_6__svg_path_2_Template","CircleProgressComponent__svg_svg_0__svg_ng_container_6_Template","CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_1__svg_tspan_1_Template","ɵɵtext","tspan_r3","ɵɵtextInterpolate","CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_1_Template","CircleProgressComponent__svg_svg_0__svg_text_7__svg_tspan_2_Template","CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_3__svg_tspan_1_Template","tspan_r4","CircleProgressComponent__svg_svg_0__svg_text_7__svg_ng_container_3_Template","CircleProgressComponent__svg_svg_0__svg_text_7_Template","CircleProgressComponent__svg_svg_0__svg_image_8_Template","CircleProgressComponent__svg_svg_0_Template","_r1","ɵɵgetCurrentView","ɵɵlistener","$event","ɵɵrestoreView","ɵɵresetView","CircleProgressOptions","CircleProgressComponent","defaultOptions","ngZone","elRef","injector","EventEmitter","centerX","centerY","radius","angleInDegrees","angleInRadius","x","y","percent","circlePercent","boxSize","centre","startPoint","endPoint","largeArcFlag","sweepFlag","titlePercent","titleTextPercent","subtitlePercent","title","formatted","subtitle","units","rowCount","rowNum","span","previousPercent","currentPercent","times","step","interval","fromPercent","toPercent","delta","count","timer","name","a","b","dt","uuid","c","r","previousValue","event","oldValue","newValue","_timer","DOCUMENT","tags","el","rect","parent","parentRect","changes","ɵɵdirectiveInject","NgZone","ElementRef","Injector","ɵɵdefineComponent","InputFlags","ɵɵNgOnChangesFeature","NgForOf","NgIf","NgCircleProgressModule","options","ɵɵdefineNgModule","ɵɵdefineInjector","CommonModule","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵproperty","ɵɵpureFunction1","_c1","ctx_r0","center","ɵɵadvance","_c2","fontSize","ɵɵtemplate","CircularLoaderComponent_Conditional_0_Conditional_0_Template","ɵɵconditional","showIcon","ɵɵpureFunction2","_c0","width","height","currentValue","outerStrokeColor","innerStrokeColor","animation","backgroundColor","CircularLoaderComponent","constructor","selectors","inputs","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","CircularLoaderComponent_Conditional_0_Template","NgCircleProgressModule","CircleProgressComponent","NgStyle","NgClass","styles","changeDetection","_CircularLoaderComponent"],"x_google_ignoreList":[0]}