{"version":3,"sources":["jquery-asPieProgress.es.js"],"names":["global","factory","define","amd","exports","require","mod","jQuery","jqueryAsPieProgressEs","this","_jquery","_classCallCheck","instance","Constructor","TypeError","_jquery2","obj","__esModule","default","_interopRequireDefault","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","prototype","SvgElement","tag","attrs","elem","document","createElementNS","hasOwnProperty","call","setAttribute","Date","now","getTime","vendors","window","requestAnimationFrame","vp","cancelAnimationFrame","test","navigator","userAgent","lastTime","callback","nextTime","Math","max","setTimeout","clearTimeout","performance","isPercentage","n","indexOf","svgSupported","createSVGRect","easingBezier","mX1","mY1","mX2","mY2","a","aA1","aA2","b","c","calcBezier","aT","getSlope","getTForX","aX","aGuessT","_i","currentSlope","css","fn","EASING","ease","linear","ease-in","ease-out","ease-in-out","DEFAULTS","namespace","classes","svg","element","number","content","min","goal","size","speed","barcolor","barsize","trackcolor","fillcolor","easing","numberCallback","round","getPercentage","contentCallback","asPieProgress","options","$element","extend","data","addClass","attr","parseInt","first","_frameId","initialized","_trigger","init","value","$number","find","$content","width","height","prepare","version","preserveAspectRatio","viewBox","buildTrack","buildBar","append","appendTo","cx","cy","ellipse","rx","ry","stroke","fill","stroke-width","appendChild","path","bar","_drawBar","_updateBar","barGoal","r","percentage","endAngle","PI","x1","sin","x2","y1","cos","y2","big","d","percenage","getTotalLength","offset","style","strokeDasharray","strokeDashoffset","eventType","_len","arguments","params","Array","_key","concat","trigger","NAMESPACE$1","onFunction","replace","word","substring","toUpperCase","apply","that","_clear","start","startTime","endTime","abs","animation","time","next","distance","_update","html","go"],"mappings":"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","file":"jquery-asPieProgress.min.js","sourcesContent":["/**\n* jQuery asPieProgress v0.4.7\n* https://github.com/amazingSurge/jquery-asPieProgress\n*\n* Copyright (c) amazingSurge\n* Released under the LGPL-3.0 license\n*/\nimport $ from 'jquery';\n\nconst SvgElement = (tag, attrs) => {\n 'use strict';\n const elem = document.createElementNS('http://www.w3.org/2000/svg', tag);\n\n if (!attrs) {\n return elem;\n }\n\n for (let key in attrs) {\n if (!Object.hasOwnProperty.call(attrs, key)) {\n continue;\n }\n\n elem.setAttribute(key, attrs[key]);\n }\n return elem;\n};\n\nif (!Date.now) {\n Date.now = () => {\n 'use strict';\n return new Date().getTime();\n };\n}\n\nconst vendors = ['webkit', 'moz'];\nfor (let i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {\n const vp = vendors[i];\n window.requestAnimationFrame = window[`${vp}RequestAnimationFrame`];\n window.cancelAnimationFrame = (window[`${vp}CancelAnimationFrame`] || window[`${vp}CancelRequestAnimationFrame`]);\n}\n\nif (/iP(ad|hone|od).*OS (6|7|8)/.test(window.navigator.userAgent) // iOS6 is buggy\n ||\n !window.requestAnimationFrame || !window.cancelAnimationFrame) {\n let lastTime = 0;\n window.requestAnimationFrame = callback => {\n 'use strict';\n const now = getTime();\n const nextTime = Math.max(lastTime + 16, now);\n return setTimeout(() => {\n callback(lastTime = nextTime);\n },\n nextTime - now);\n };\n window.cancelAnimationFrame = clearTimeout;\n}\n\nconst getTime = () => {\n if (typeof window.performance !== 'undefined' && window.performance.now) {\n return window.performance.now();\n }\n return Date.now();\n};\n\nconst isPercentage = (n) => {\n 'use strict';\n\n return typeof n === 'string' && n.indexOf('%') !== -1;\n};\n\nconst svgSupported = 'createElementNS' in document && new SvgElement('svg', {}).createSVGRect;\n\nconst easingBezier = (mX1, mY1, mX2, mY2) => {\n 'use strict';\n\n const a = (aA1, aA2) => {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n };\n\n const b = (aA1, aA2) => {\n return 3.0 * aA2 - 6.0 * aA1;\n };\n\n const c = (aA1) => {\n return 3.0 * aA1;\n };\n\n // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n const calcBezier = (aT, aA1, aA2) => {\n return ((a(aA1, aA2) * aT + b(aA1, aA2)) * aT + c(aA1)) * aT;\n };\n\n // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n const getSlope = (aT, aA1, aA2) => {\n return 3.0 * a(aA1, aA2) * aT * aT + 2.0 * b(aA1, aA2) * aT + c(aA1);\n };\n\n const getTForX = (aX) => {\n // Newton raphson iteration\n let aGuessT = aX;\n for (let i = 0; i < 4; ++i) {\n let currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n let currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n };\n\n if (mX1 === mY1 && mX2 === mY2) {\n return {\n css: 'linear',\n fn(aX) {\n return aX;\n }\n };\n }\n\n return {\n css: `cubic-bezier(${mX1},${mY1},${mX2},${mY2})`,\n fn(aX) {\n return calcBezier(getTForX(aX), mY1, mY2);\n }\n };\n};\n\nvar EASING = {\n ease: easingBezier(0.25, 0.1, 0.25, 1.0),\n linear: easingBezier(0.00, 0.0, 1.00, 1.0),\n 'ease-in': easingBezier(0.42, 0.0, 1.00, 1.0),\n 'ease-out': easingBezier(0.00, 0.0, 0.58, 1.0),\n 'ease-in-out': easingBezier(0.42, 0.0, 0.58, 1.0)\n};\n\nvar DEFAULTS = {\n namespace: 'asPieProgress',\n classes: {\n svg: 'pie_progress__svg',\n element: 'pie_progress',\n number: 'pie_progress__number',\n content: 'pie_progress__content'\n },\n min: 0,\n max: 100,\n goal: 100,\n size: 160,\n speed: 15, // speed of 1/100\n barcolor: '#ef1e25',\n barsize: '4',\n trackcolor: '#f2f2f2',\n fillcolor: 'none',\n easing: 'ease',\n numberCallback(n) {\n 'use strict';\n const percentage = Math.round(this.getPercentage(n));\n return `${percentage}%`;\n },\n contentCallback: null\n};\n\nconst NAMESPACE$1 = 'asPieProgress';\n\nclass asPieProgress {\n constructor(element, options) {\n this.element = element;\n this.$element = $(element);\n\n this.options = $.extend(true, {}, DEFAULTS, options, this.$element.data());\n this.namespace = this.options.namespace;\n\n this.classes = this.options.classes;\n this.easing = EASING[this.options.easing] || EASING.ease;\n this.$element.addClass(this.classes.element);\n\n this.min = this.$element.attr('aria-valuemin');\n this.max = this.$element.attr('aria-valuemax');\n this.min = this.min ? parseInt(this.min, 10) : this.options.min;\n this.max = this.max ? parseInt(this.max, 10) : this.options.max;\n this.first = this.$element.attr('aria-valuenow');\n this.first = this.first ? parseInt(this.first, 10) : (this.options.first ? this.options.first : this.min);\n this.now = this.first;\n this.goal = this.options.goal;\n\n this._frameId = null;\n\n this.initialized = false;\n\n this._trigger('init');\n this.init();\n }\n\n init() {\n this.$number = this.$element.find(`.${this.classes.number}`);\n this.$content = this.$element.find(`.${this.classes.content}`);\n\n this.size = this.options.size;\n this.width = this.size;\n this.height = this.size;\n\n this.prepare();\n\n this.initialized = true;\n this._trigger('ready');\n }\n\n prepare() {\n if (!svgSupported) {\n return;\n }\n\n this.svg = new SvgElement('svg', {\n version: '1.1',\n preserveAspectRatio: 'xMinYMin meet',\n viewBox: `0 0 ${this.width} ${this.height}`\n });\n\n this.buildTrack();\n this.buildBar();\n\n $(`
`).append(this.svg).appendTo(this.$element);\n }\n\n buildTrack() {\n const height = this.size,\n width = this.size;\n\n const cx = width / 2,\n cy = height / 2;\n\n const barsize = this.options.barsize;\n\n const ellipse = new SvgElement('ellipse', {\n rx: cx - barsize / 2,\n ry: cy - barsize / 2,\n cx,\n cy,\n stroke: this.options.trackcolor,\n fill: this.options.fillcolor,\n 'stroke-width': barsize\n });\n\n this.svg.appendChild(ellipse);\n }\n\n buildBar() {\n if (!svgSupported) {\n return;\n }\n\n const path = new SvgElement('path', {\n fill: 'none',\n 'stroke-width': this.options.barsize,\n stroke: this.options.barcolor\n });\n this.bar = path;\n this.svg.appendChild(path);\n\n this._drawBar(this.first);\n this._updateBar();\n }\n\n _drawBar(n) {\n if (!svgSupported) {\n return;\n }\n\n this.barGoal = n;\n const height = this.size,\n width = this.size;\n\n const cx = width / 2,\n cy = height / 2,\n startAngle = 0;\n\n const barsize = this.options.barsize;\n\n const r = Math.min(cx, cy) - barsize / 2;\n this.r = r;\n let percentage = this.getPercentage(n);\n\n if (percentage === 100) {\n percentage -= 0.0001;\n }\n const endAngle = startAngle + percentage * Math.PI * 2 / 100;\n\n const x1 = cx + r * Math.sin(startAngle),\n x2 = cx + r * Math.sin(endAngle),\n y1 = cy - r * Math.cos(startAngle),\n y2 = cy - r * Math.cos(endAngle);\n\n // This is a flag for angles larger than than a half circle\n // It is required by the SVG arc drawing component\n let big = 0;\n if (endAngle - startAngle > Math.PI) {\n big = 1;\n }\n\n // This string holds the path details\n const d = `M${x1},${y1} A${r},${r} 0 ${big} 1 ${x2},${y2}`;\n\n this.bar.setAttribute('d', d);\n }\n\n _updateBar() {\n if (!svgSupported) {\n return;\n }\n const percenage = this.getPercentage(this.now);\n\n const length = this.bar.getTotalLength();\n const offset = length * (1 - percenage / this.getPercentage(this.barGoal));\n\n this.bar.style.strokeDasharray = `${length} ${length}`;\n this.bar.style.strokeDashoffset = offset;\n }\n\n _trigger(eventType, ...params) {\n const data = [this].concat(params);\n\n // event\n this.$element.trigger(`${NAMESPACE$1}::${eventType}`, data);\n\n // callback\n eventType = eventType.replace(/\\b\\w+\\b/g, (word) => {\n return word.substring(0, 1).toUpperCase() + word.substring(1);\n });\n const onFunction = `on${eventType}`;\n\n if (typeof this.options[onFunction] === 'function') {\n this.options[onFunction].apply(this, params);\n }\n }\n\n // Return the percentage based on the current step\n getPercentage(n) {\n return 100 * (n - this.min) / (this.max - this.min);\n }\n\n go(goal) {\n const that = this;\n this._clear();\n\n if (isPercentage(goal)) {\n goal = parseInt(goal.replace('%', ''), 10);\n goal = Math.round(this.min + (goal / 100) * (this.max - this.min));\n }\n if (typeof goal === 'undefined') {\n goal = this.goal;\n }\n\n if (goal > this.max) {\n goal = this.max;\n } else if (goal < this.min) {\n goal = this.min;\n }\n\n if (this.barGoal < goal) {\n this._drawBar(goal);\n }\n\n const start = that.now;\n const startTime = getTime();\n const endTime = startTime + Math.abs(start - goal) * 100 * that.options.speed / (that.max - that.min);\n\n const animation = time => {\n let next;\n\n if (time > endTime) {\n next = goal;\n } else {\n const distance = (time - startTime) / that.options.speed;\n next = Math.round(that.easing.fn(distance / 100) * (that.max - that.min));\n\n if (goal > start) {\n next = start + next;\n if (next > goal) {\n next = goal;\n }\n } else {\n next = start - next;\n if (next < goal) {\n next = goal;\n }\n }\n }\n\n that._update(next);\n if (next === goal) {\n window.cancelAnimationFrame(that._frameId);\n that._frameId = null;\n\n if (that.now === that.goal) {\n that._trigger('finish');\n }\n } else {\n that._frameId = window.requestAnimationFrame(animation);\n }\n };\n\n that._frameId = window.requestAnimationFrame(animation);\n }\n\n _update(n) {\n this.now = n;\n\n this._updateBar();\n\n this.$element.attr('aria-valuenow', this.now);\n if (this.$number.length > 0 && typeof this.options.numberCallback === 'function') {\n this.$number.html(this.options.numberCallback.call(this, [this.now]));\n }\n if (this.$content.length > 0 && typeof this.options.contentCallback === 'function') {\n this.$content.html(this.options.contentCallback.call(this, [this.now]));\n }\n\n this._trigger('update', n);\n }\n\n _clear() {\n if (this._frameId) {\n window.cancelAnimationFrame(this._frameId);\n this._frameId = null;\n }\n }\n\n get() {\n return this.now;\n }\n\n start() {\n this._clear();\n this._trigger('start');\n this.go(this.goal);\n }\n\n reset() {\n this._clear();\n this._drawBar(this.first);\n this._update(this.first);\n this._trigger('reset');\n }\n\n stop() {\n this._clear();\n this._trigger('stop');\n }\n\n finish() {\n this._clear();\n this._update(this.goal);\n this._trigger('finish');\n }\n\n destroy() {\n this.$element.data(NAMESPACE$1, null);\n this._trigger('destroy');\n }\n\n static registerEasing(name, ...args) {\n EASING[name] = easingBezier(...args);\n }\n\n static getEasing(name) {\n return EASING[name];\n }\n\n static setDefaults(options) {\n $.extend(true, DEFAULTS, $.isPlainObject(options) && options);\n }\n}\n\nvar info = {\n version:'0.4.7'\n};\n\nconst NAMESPACE = 'asPieProgress';\nconst OtherAsPieProgress = $.fn.asPieProgress;\n\nconst jQueryAsPieProgress = function(options, ...args) {\n if (typeof options === 'string') {\n const method = options;\n\n if (/^_/.test(method)) {\n return false;\n } else if ((/^(get)/.test(method))) {\n const instance = this.first().data(NAMESPACE);\n if (instance && typeof instance[method] === 'function') {\n return instance[method](...args);\n }\n } else {\n return this.each(function() {\n const instance = $.data(this, NAMESPACE);\n if (instance && typeof instance[method] === 'function') {\n instance[method](...args);\n }\n });\n }\n }\n\n return this.each(function() {\n if (!$(this).data(NAMESPACE)) {\n $(this).data(NAMESPACE, new asPieProgress(this, options));\n }\n });\n};\n\n$.fn.asPieProgress = jQueryAsPieProgress;\n\n$.asPieProgress = $.extend({\n setDefaults: asPieProgress.setDefaults,\n registerEasing: asPieProgress.registerEasing,\n getEasing: asPieProgress.getEasing,\n noConflict: function() {\n $.fn.asPieProgress = OtherAsPieProgress;\n return jQueryAsPieProgress;\n }\n}, info);\n"]}