{"version":3,"sources":["webpack:///../../../src/components/VProgressCircular/index.ts","webpack:///../../../src/components/VProgressCircular/VProgressCircular.ts","webpack:///../../../src/components/VBtn/VBtn.ts","webpack:///../../../src/components/VIcon/index.ts","webpack:///./src/services/PredictionServices.js"],"names":["name","directives","intersect","props","button","indeterminate","rotate","type","Number","default","size","width","value","data","radius","isVisible","computed","calculatedSize","this","circumference","Math","classes","normalizedValue","parseFloat","strokeDashArray","strokeDashOffset","strokeWidth","styles","height","svgStyles","transform","viewBoxSize","methods","genCircle","$createElement","class","attrs","fill","cx","cy","r","offset","genSvg","children","style","xmlns","viewBox","genInfo","staticClass","$slots","onObserve","render","h","setTextColor","role","undefined","on","$listeners","baseMixins","activeClass","btnToggle","block","depressed","fab","icon","loading","outlined","plain","retainFocusOnClick","rounded","tag","text","tile","proxyClass","sizeableClasses","computedElevation","computedRipple","defaultRipple","circle","hasBg","isElevated","Boolean","elevation","isRound","measurableStyles","created","breakingProps","original","replacement","click","e","$el","genContent","genLoader","loader","setColor","includes","JSON","disabled","OUTBOUND_PENALTY","getRecommendations","aSquared","bSquared","expC","flex","recs","fullSet","urlBase","process","key","targets","url","axios","post","crossDomain","response","getPrediction","CE","CE_perc","Coating_perc"],"mappings":"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","file":"js/chunk-0ffcabbd.0a6ad7ff.js","sourcesContent":["import VProgressCircular from './VProgressCircular'\n\nexport { VProgressCircular }\nexport default VProgressCircular\n","// Styles\nimport './VProgressCircular.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utils\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\n\n/* @vue/component */\nexport default Colorable.extend({\n name: 'v-progress-circular',\n\n directives: { intersect },\n\n props: {\n button: Boolean,\n indeterminate: Boolean,\n rotate: {\n type: [Number, String],\n default: 0,\n },\n size: {\n type: [Number, String],\n default: 32,\n },\n width: {\n type: [Number, String],\n default: 4,\n },\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data: () => ({\n radius: 20,\n isVisible: true,\n }),\n\n computed: {\n calculatedSize (): number {\n return Number(this.size) + (this.button ? 8 : 0)\n },\n\n circumference (): number {\n return 2 * Math.PI * this.radius\n },\n\n classes (): object {\n return {\n 'v-progress-circular--visible': this.isVisible,\n 'v-progress-circular--indeterminate': this.indeterminate,\n 'v-progress-circular--button': this.button,\n }\n },\n\n normalizedValue (): number {\n if (this.value < 0) {\n return 0\n }\n\n if (this.value > 100) {\n return 100\n }\n\n return parseFloat(this.value)\n },\n\n strokeDashArray (): number {\n return Math.round(this.circumference * 1000) / 1000\n },\n\n strokeDashOffset (): string {\n return ((100 - this.normalizedValue) / 100) * this.circumference + 'px'\n },\n\n strokeWidth (): number {\n return Number(this.width) / +this.size * this.viewBoxSize * 2\n },\n\n styles (): object {\n return {\n height: convertToUnit(this.calculatedSize),\n width: convertToUnit(this.calculatedSize),\n }\n },\n\n svgStyles (): object {\n return {\n transform: `rotate(${Number(this.rotate)}deg)`,\n }\n },\n\n viewBoxSize (): number {\n return this.radius / (1 - Number(this.width) / +this.size)\n },\n },\n\n methods: {\n genCircle (name: string, offset: string | number): VNode {\n return this.$createElement('circle', {\n class: `v-progress-circular__${name}`,\n attrs: {\n fill: 'transparent',\n cx: 2 * this.viewBoxSize,\n cy: 2 * this.viewBoxSize,\n r: this.radius,\n 'stroke-width': this.strokeWidth,\n 'stroke-dasharray': this.strokeDashArray,\n 'stroke-dashoffset': offset,\n },\n })\n },\n genSvg (): VNode {\n const children = [\n this.indeterminate || this.genCircle('underlay', 0),\n this.genCircle('overlay', this.strokeDashOffset),\n ] as VNodeChildren\n\n return this.$createElement('svg', {\n style: this.svgStyles,\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: `${this.viewBoxSize} ${this.viewBoxSize} ${2 * this.viewBoxSize} ${2 * this.viewBoxSize}`,\n },\n }, children)\n },\n genInfo (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-circular__info',\n }, this.$slots.default)\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-circular',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: this.styles,\n on: this.$listeners,\n }), [\n this.genSvg(),\n this.genInfo(),\n ])\n },\n})\n","// Styles\nimport './VBtn.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VProgressCircular from '../VProgressCircular'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Elevatable from '../../mixins/elevatable'\nimport Positionable from '../../mixins/positionable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator, PropType } from 'vue/types/options'\nimport { RippleOptions } from '../../directives/ripple'\n\nconst baseMixins = mixins(\n VSheet,\n Routable,\n Positionable,\n Sizeable,\n GroupableFactory('btnToggle'),\n ToggleableFactory('inputValue')\n /* @vue/component */\n)\ninterface options extends ExtractVue {\n $el: HTMLElement\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-btn',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.btnToggle) return ''\n\n return this.btnToggle.activeClass\n },\n } as any as PropValidator,\n block: Boolean,\n depressed: Boolean,\n fab: Boolean,\n icon: Boolean,\n loading: Boolean,\n outlined: Boolean,\n plain: Boolean,\n retainFocusOnClick: Boolean,\n rounded: Boolean,\n tag: {\n type: String,\n default: 'button',\n },\n text: Boolean,\n tile: Boolean,\n type: {\n type: String,\n default: 'button',\n },\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-btn--active',\n }),\n\n computed: {\n classes (): any {\n return {\n 'v-btn': true,\n ...Routable.options.computed.classes.call(this),\n 'v-btn--absolute': this.absolute,\n 'v-btn--block': this.block,\n 'v-btn--bottom': this.bottom,\n 'v-btn--disabled': this.disabled,\n 'v-btn--is-elevated': this.isElevated,\n 'v-btn--fab': this.fab,\n 'v-btn--fixed': this.fixed,\n 'v-btn--has-bg': this.hasBg,\n 'v-btn--icon': this.icon,\n 'v-btn--left': this.left,\n 'v-btn--loading': this.loading,\n 'v-btn--outlined': this.outlined,\n 'v-btn--plain': this.plain,\n 'v-btn--right': this.right,\n 'v-btn--round': this.isRound,\n 'v-btn--rounded': this.rounded,\n 'v-btn--router': this.to,\n 'v-btn--text': this.text,\n 'v-btn--tile': this.tile,\n 'v-btn--top': this.top,\n ...this.themeClasses,\n ...this.groupClasses,\n ...this.elevationClasses,\n ...this.sizeableClasses,\n }\n },\n computedElevation (): string | number | undefined {\n if (this.disabled) return undefined\n\n return Elevatable.options.computed.computedElevation.call(this)\n },\n computedRipple (): RippleOptions | boolean {\n const defaultRipple = this.icon || this.fab ? { circle: true } : true\n if (this.disabled) return false\n else return this.ripple ?? defaultRipple\n },\n hasBg (): boolean {\n return !this.text && !this.plain && !this.outlined && !this.icon\n },\n isElevated (): boolean {\n return Boolean(\n !this.icon &&\n !this.text &&\n !this.outlined &&\n !this.depressed &&\n !this.disabled &&\n !this.plain &&\n (this.elevation == null || Number(this.elevation) > 0)\n )\n },\n isRound (): boolean {\n return Boolean(\n this.icon ||\n this.fab\n )\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['flat', 'text'],\n ['outline', 'outlined'],\n ['round', 'rounded'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n // TODO: Remove this in v3\n !this.retainFocusOnClick && !this.fab && e.detail && this.$el.blur()\n this.$emit('click', e)\n\n this.btnToggle && this.toggle()\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-btn__content',\n }, this.$slots.default)\n },\n genLoader (): VNode {\n return this.$createElement('span', {\n class: 'v-btn__loader',\n }, this.$slots.loader || [this.$createElement(VProgressCircular, {\n props: {\n indeterminate: true,\n size: 23,\n width: 2,\n },\n })])\n },\n },\n\n render (h): VNode {\n const children = [\n this.genContent(),\n this.loading && this.genLoader(),\n ]\n const { tag, data } = this.generateRouteLink()\n const setColor = this.hasBg\n ? this.setBackgroundColor\n : this.setTextColor\n\n if (tag === 'button') {\n data.attrs!.type = this.type\n data.attrs!.disabled = this.disabled\n }\n data.attrs!.value = ['string', 'number'].includes(typeof this.value)\n ? this.value\n : JSON.stringify(this.value)\n\n return h(tag, this.disabled ? data : setColor(this.color, data), children)\n },\n})\n","import VIcon from './VIcon'\n\nexport { VIcon }\nexport default VIcon\n","import axios from 'axios'\nconst OUTBOUND_PENALTY = 0.0316\n\nexport default {\n getRecommendations: async function (aSquared, bSquared, expC, flex, recs, fullSet) {\n const urlBase = process.env.VUE_APP_PREDICTION_API_BASE\n const key = process.env.VUE_APP_PREDICTION_API_KEY\n \n const targets = { 'a_squared': aSquared, 'b_squared': bSquared * 60, 'exp_c': expC }\n const data = { 'targets': targets, 'flex': flex, 'n_recs': recs, 'full_result_set': fullSet, 'out_bound_penalty': OUTBOUND_PENALTY}\n const url = `${urlBase}/recommend?code=${key}`\n const response = await axios.post(url, data, { crossDomain: true })\n return response\n },\n getPrediction: async function (CE, CE_perc, Coating_perc) {\n const urlBase = process.env.VUE_APP_PREDICTION_API_BASE\n const key = process.env.VUE_APP_PREDICTION_API_KEY\n\n const data = { 'CE': CE, 'CE_perc': CE_perc, 'Coating_perc': Coating_perc}\n const url = `${urlBase}/prediction?code=${key}`\n const response = await axios.post(url, data, { crossDomain: true })\n return response\n },\n}"],"sourceRoot":""}