-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathsmart.numeric.js
6 lines (4 loc) · 52.9 KB
/
smart.numeric.js
1
2
3
4
5
6
/* Smart UI v15.2.0 (2023-04-20)
Copyright (c) 2011-2023 jQWidgets.
License: https://htmlelements.com/license/ */ //
Smart.Utilities.Assign("NumericProcessor",class{constructor(t,e){switch(t[e]){case"integer":return new Smart.Utilities.IntegerNumericProcessor(t,e);case"floatingPoint":return new Smart.Utilities.DecimalNumericProcessor(t,e);case"complex":return new Smart.Utilities.ComplexNumericProcessor(t,e)}}}),Smart.Utilities.Assign("BaseNumericProcessor",class{constructor(t,e){const i=this;i.context=t,i._longestLabelSize=0,i.numericFormatProperty=e,i.regexScientificNotation=new RegExp(/^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)(Y|Z|E|P|T|G|M|k|m|u|n|p|f|a|z|y){1}$/),i.regexNoLeadingZero=new RegExp(/^(-)?[.]\d+$/),i.regexLeadingZero=new RegExp(/^[+\-]?(0+)[1-9]+|^[+\-]?(0{2,})[.]|^(0{2,})$/),i.prefixesToPowers={Y:24,Z:21,E:18,P:15,T:12,G:9,M:6,k:3,m:-3,u:-6,n:-9,p:-12,f:-15,a:-18,z:-21,y:-24},window.NIComplex?i.complexConstructor=window.NIComplex:i.complexConstructor=Smart.Utilities.Complex}prepareForValidation(t,e,i){const r=this.context,a=t||void 0!==e;if(i=(i=i.toString()).replace(/\s/g,""),i=r._discardDecimalSeparator(i),this.regexLeadingZero.test(i)){const t=this.regexLeadingZero.exec(i);i=t[1]?i.replace(t[1],""):t[2]?i.replace(t[2],"0"):i.replace(t[3],"0")}this.regexNoLeadingZero.test(i)?i="-"===i.charAt(0)?"-0"+i.slice(1):"0"+i:("integer"===r[this.numericFormatProperty]&&(10===r._radixNumber||a)||"floatingPoint"===r[this.numericFormatProperty])&&this.regexScientificNotation.test(i)&&(i=this.scientificToDecimal(i));let n,l=!1;if("complex"===r[this.numericFormatProperty]&&!1===r._regexSpecial.nonNumericValue.test(i))try{if(r._regexSpecial.exaValue.test(i)){const t=i.indexOf("E"),e=parseFloat(i.slice(0,t))*Math.pow(10,18),r=parseFloat(i.slice(t+1,-1));n=new this.complexConstructor(e,r)}else n=new this.complexConstructor(i);l=!0}catch(t){l=!1}if(!1!==l||!(!a&&!1===r._regex[r._radixNumber].test(i)||a&&!1===r._regex[10].test(i)))return{value:i,enteredComplexNumber:n};r._handleNonNumericValue(t,e,i)}isENotation(t){return new RegExp(/e/i).test(t.toString())}scientificToDecimal(t){const e=this.regexScientificNotation.exec(t),i=e[1],r=e[2];return parseFloat(i)*Math.pow(10,this.prefixesToPowers[r])}_createMeasureLabel(){const t=this.context,e=document.createElement("div");return e.className="smart-label",e.style.position="absolute",e.style.visibility="hidden","far"!==t.scalePosition?t._measureLabelScale=t.$.scaleNear:t._measureLabelScale=t.$.scaleFar,t._measureLabelScale.appendChild(e),e}_addMajorTickAndLabel(t,e,i,r,a){const n=this.context,l=n._settings.leftOrTop,o=this.valueToPx(r);let s="",c="";if(parseInt(o)>parseInt(n._measurements.trackLength))return{tick:s,label:c};if(n.logarithmicScale&&(t=n._formatLabel(Math.pow(10,r))),"smart-tank"===n.nodeName.toLowerCase()||n._intervalHasChanged){let e=n._tickIntervalHandler.labelsSize;if(a){n._labelDummy.innerHTML=t;let a=this.valueToPx(r),l=this.valueToPx(n._drawMax),o=this.valueToPx(n._drawMin),s=n._labelDummy[n._settings.size],c="vertical"===n.orientation?n._labelDummy.offsetWidth:n._labelDummy.offsetHeight,m=(s+e.minLabelSize)/2,u=(s+e.maxLabelSize)/2;i=n._normalLayout?a+u<l&&a-m>o:a-u>l&&a+m<o,c>this._longestLabelSize&&(this._longestLabelSize=c)}else this._longestLabelSize=Math.max(e.minLabelOtherSize,e.maxLabelOtherSize,this._longestLabelSize)}return n._tickValues.push(r),s='<div style="'+l+": "+o+'px;" class="smart-tick"></div>',!1!==i&&(void 0===e&&(n._labelDummy.innerHTML=t,e=n._labelDummy[n._settings.size]),c+='<div class="smart-label'+(a?" smart-label-middle":"")+'" style="'+l+": "+(o-e/2)+'px;">'+t+"</div>"),{tick:s,label:c}}getWordLength(t){switch(this.context._unsigned="u"===t.charAt(0),t){case"int8":case"uint8":return 8;case"int16":case"uint16":return 16;case"int32":case"uint32":return 32;case"int64":case"uint64":return 64}}getAngleByValue(t,e,i){const r=this.context;!1!==e&&r.logarithmicScale&&(t=Math.log10(t));const a=(t-r._drawMin)*r._angleRangeCoefficient;let n;return n=void 0===r.inverted||!r.inverted&&!r.rightToLeft||r.rightToLeft&&r.inverted?r.endAngle-a:r.startAngle+a,i?n:n*Math.PI/180+Math.PI/2}getValueByAngle(t,e){const i=this.context;let r,a,n;for(void 0===i.inverted||!i.inverted&&!i.rightToLeft||i.rightToLeft&&i.inverted?(r=i.endAngle,a=t):(r=t,a=i._normalizedStartAngle);r<a;)r+=360;if(n=(r-a)/i._angleDifference*i._range+parseFloat(i._drawMin),i.logarithmicScale){if(i.customInterval)return parseFloat(Math.pow(10,this.getCoercedValue(n,!0)).toFixed(12));n=Math.pow(10,n)}return e&&!i.coerce?Math.round(n):(n=this.createDescriptor(n,void 0,!0,!0),this.getCoercedValue(n,!1))}updateGaugeValue(t){const e=this.context,i=e.value;e.value=t,e._drawValue=e.logarithmicScale?Math.log10(t).toString():t,e._number=this.createDescriptor(e.value),e.$.digitalDisplay.value=t,e.$.fireEvent("change",{value:t,oldValue:i}),e._setAriaValue("valuenow"),delete e._valueBeforeCoercion}validateColorRange(t){const e=this.context;return Math.min(Math.max(t,e.min),e.max)}getActualValue(t){return this.context.logarithmicScale?Math.pow(10,t):t}drawGaugeLogarithmicScaleMinorTicks(t,e,i){const r=this.context;let a;e instanceof Smart.Utilities.BigNumber&&(e=parseFloat(e.toString()));for(let e in t)if(a=e,e>=0&&e%1==0)break;for(let t=parseFloat(a);t<r._drawMax;t+=e)for(let a=2;a<=9;a++){const n=a*Math.pow(10,t+e-1);n<r.max&&i(n)}for(let t=parseFloat(a);t>r._drawMin;t-=e)for(let e=2;e<=9;e++){const a=e*Math.pow(10,t-1);a>r.min&&i(a)}}_getAngleDifference(t,e){const i=Math.abs(e-t)%360;return i>180?360-i:i}addCustomTicks(){const t=this,e=t.context,i=!e.logarithmicScale;let r="",a="";function n(n){const l=e.customTicks[n],o=i?t.createDescriptor(l):Math.log10(l),s=n>0&&n<e.customTicks.length-1,c=t._addMajorTickAndLabel(e._formatLabel(l),void 0,!0,o,s);r+=c.tick,a+=c.label}if(t._longestLabelSize=0,e._tickValues=[],e._labelDummy=t._createMeasureLabel(),e._normalLayout)for(let t=0;t<e.customTicks.length;t++)n(t);else for(let t=e.customTicks.length-1;t>=0;t--)n(t);"smart-tank"===e.nodeName.toLowerCase()&&e._updateScaleWidth(t._longestLabelSize),e._appendTicksAndLabelsToScales(r,a)}addGaugeCustomTicks(){const t=this,e=t.context,i=e._distance,r=e._measurements.radius-i.majorTickDistance;let a,n;function l(i){const r=e.customTicks[i],l=t.createDescriptor(r),o=t.getAngleByValue(l,!0),s=i>0&&i<e.customTicks.length-1;a(o),n(o,r,s)}a="none"!==e.ticksVisibility&&!1!==e._plotTicks?function(t){e._drawTick(t,r,"major")}:function(){},n="none"!==e.labelsVisibility&&!1!==e._plotLabels?function(t,r,a){e._drawLabel(t,r,i.labelDistance,a)}:function(){};for(let t=e.customTicks.length-1;t>=0;t--)l(t)}}),Smart.Utilities.Assign("IntegerNumericProcessor",class extends Smart.Utilities.BaseNumericProcessor{constructor(t,e){super(t,e);const i=this;i.context=t,i.defaultMins={int8:"-128",uint8:"0",int16:"-32768",uint16:"0",int32:"-2147483648",uint32:"0",int64:"-9223372036854775808",uint64:"0"},i.defaultMaxs={int8:"127",uint8:"255",int16:"32767",uint16:"65535",int32:"2147483647",uint32:"4294967295",int64:"9223372036854775807",uint64:"18446744073709551615"}}createDescriptor(t,e,i,r,a){const n=this.context;let l;if(t.constructor!==Smart.Utilities.BigNumber){let i=!a&&n._radixNumber?n._radixNumber:10;10===i&&e&&t.constructor!==Smart.Utilities.BigNumber&&this.isENotation(t)&&(t=Smart.Utilities.BigNumber.bigIntSupport?new Smart.Utilities.BigNumber(Math.round(t)):new Smart.Utilities.NumberRenderer(t).largeExponentialToDecimal()),l=n._toBigNumberDecimal?n._toBigNumberDecimal(t.toString(i,n._wordLengthNumber),i):new Smart.Utilities.BigNumber(t)}else l=new Smart.Utilities.BigNumber(t);return i&&(n._unsigned&&-1===l.compare(0)&&(l=l.set(0)),r&&(l=this.validate(l,n._minObject,n._maxObject)),l=this.round(l)),l}round(t){const e=this.context;if(t instanceof window.Smart.Utilities.BigNumber&&"bigint"==typeof t._d)return t;if(t instanceof window.Smart.Utilities.BigNumber==0||!e._wordLengthNumber||e._wordLengthNumber<64)return new Smart.Utilities.BigNumber(Math.round(t.toString()));const i=t.mod(1);return 1===i._d.length&&0===i._d[0]||((t=t.intPart())._s?(i._d[1]>5||5===i._d[1]&&i._d[2])&&(t=t.add(-1)):i._d[1]>4&&(t=t.add(1))),t}validate(t,e,i){let r;return r=-1===t.compare(e)?e:1===t.compare(i)?i:t,r}validateMinMax(t,e){const i=this.context;let r=this.defaultMins[i.wordLength],a=new Smart.Utilities.BigNumber(r),n=this.defaultMaxs[i.wordLength],l=new Smart.Utilities.BigNumber(n),o="date"!==i.mode;if(void 0===i._numberRenderer&&(i._numberRenderer=new Smart.Utilities.NumberRenderer),t&&o){null!==i.min&&(i.min=i.min.toString().replace(/\s/g,""),this.regexScientificNotation.test(i.min)&&(i.min=this.scientificToDecimal(i.min)));let t=this.round(new Smart.Utilities.BigNumber(i.min));null===i.min||i._minIsNull&&i._initialized||!(t.compare(a)>=0)?(i._minIsNull=!0,i.min=r,i._minObject=a):i._minObject=t}if(e&&o){null!==i.max&&(i.max=i.max.toString().replace(/\s/g,""),this.regexScientificNotation.test(i.max)&&(i.max=this.scientificToDecimal(i.max)));let t=this.round(new Smart.Utilities.BigNumber(i.max));null===i.max||i._maxIsNull&&i._initialized||!(t.compare(l)<=0)?(i._maxIsNull=!0,i.max=n,i._maxObject=l):i._maxObject=t}o||(i._minObject=new Smart.Utilities.BigNumber(i.min),i._maxObject=new Smart.Utilities.BigNumber(i.max)),this.compare(i._minObject,i._maxObject)||(i._minObject=a,i._maxObject=l,i._drawMin=i.logarithmicScale?0:r,i._drawMax=i.logarithmicScale?10:n,i.min=r,i.max=n),o||(i._minDate=Smart.Utilities.DateTime.fromFullTimeStamp(i.min),i._maxDate=Smart.Utilities.DateTime.fromFullTimeStamp(i.max))}valueToPx(t){const e=Smart.Utilities.BigNumber.ignoreBigIntNativeSupport;Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=!0;const i=this.context,r=new Smart.Utilities.BigNumber(i._measurements.trackLength).divide(new Smart.Utilities.BigNumber(i._range));let a;if(i._normalLayout){const e=i._drawMin instanceof Smart.Utilities.BigNumber?i._drawMin:new Smart.Utilities.BigNumber(i._drawMin);t=new Smart.Utilities.BigNumber(t),a=parseFloat(r.multiply(t.subtract(e)).toString())}else{const e=i._drawMax instanceof Smart.Utilities.BigNumber?i._drawMax:new Smart.Utilities.BigNumber(i._drawMax);a=parseFloat(this.round(e.subtract(t).multiply(r)).toString())}return Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=e,a}pxToValue(t){const e=this.context,i=Smart.Utilities.BigNumber.ignoreBigIntNativeSupport;let r;if(Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=!0,r=e._normalLayout?e._valuePerPx.multiply(t-e._trackStart):e._valuePerPx.multiply(e._trackEnd-t),r=this.round(r).toString(),Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=i,e.logarithmicScale){let t=parseFloat(r)+parseFloat(e._drawMin);return new Smart.Utilities.BigNumber(Math.round(Math.pow(10,t)))}return this.createDescriptor(e._minObject.add(r),!1,!0,!0)}compare(t,e,i){if((null===t||null===e)&&t!==e)return!0;t.constructor!==Smart.Utilities.BigNumber&&(t=new Smart.Utilities.BigNumber(t));const r=t.compare(e);return!0!==i?0!==r:r}incrementDecrement(t,e,i){const r=this.context;let a;if(t.constructor!==Smart.Utilities.BigNumber&&(t=new Smart.Utilities.BigNumber(t)),"add"===e){if(a=t.add(i),void 0!==r._drawMax)return a.compare(r._drawMax)>0?new Smart.Utilities.BigNumber(r._drawMax):a}else if(a=t.subtract(i),void 0!==r._drawMin)return a.compare(r._drawMin)<0?new Smart.Utilities.BigNumber(r._drawMin):a;return a}render(t,e){const i=this.context;if(!i.scientificNotation&&!0===e)return new Smart.Utilities.NumberRenderer(new Smart.Utilities.BigNumber(t)).bigNumberToExponent(i.significantDigits);let r=t;return i.scientificNotation&&!0===e?r=new Smart.Utilities.NumberRenderer(r).toScientific(i.significantDigits,i.precisionDigits):"string"!=typeof t&&(r=t.toString(i._radixNumber,i._wordLengthNumber,i.leadingZeros)),r}addTicksAndLabels(){const t=Smart.Utilities.BigNumber.ignoreBigIntNativeSupport;Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=!0;const e=this.context,i=e._measurements.trackLength,r=e._normalLayout,a=e._majorTicksInterval,n=this.round(new Smart.Utilities.BigNumber(e._range).divide(a)),l=i/n,o=new Smart.Utilities.BigNumber(e._drawMin),s=new Smart.Utilities.BigNumber(e._drawMax);let c,m,u,g,d,p,h,b,f,_="",S="";e._tickValues=[],this._longestLabelSize=0,r?(c=o,m=a.add(c.subtract(c.mod(a))),u=m.subtract(c),d=e._formatLabel(o),p=e._tickIntervalHandler.labelsSize.minLabelSize,g=s,h=e._formatLabel(s),b=e._tickIntervalHandler.labelsSize.maxLabelSize):(c=s,m=c.subtract(c.mod(a)),u=c.subtract(m),d=e._formatLabel(s),p=e._tickIntervalHandler.labelsSize.maxLabelSize,g=o,h=e._formatLabel(o),b=e._tickIntervalHandler.labelsSize.minLabelSize),e._labelDummy=this._createMeasureLabel(),f=this._addMajorTickAndLabel(d,p,!0,c),_+=f.tick,S+=f.label;const x=u.divide(a).multiply(l);if(0!==m.compare(e.max)&&x.compare(i)<0){const t=e._formatLabel(m.toString()),i=x.compare(p)>0;f=this._addMajorTickAndLabel(t,void 0,i,m,!0),_+=f.tick,S+=f.label}f=this.addMiddleMajorTicks(n,l,x,u,r,a),_+=f.tick,S+=f.label,f=this._addMajorTickAndLabel(h,b,!0,g),_+=f.tick,S+=f.label,"date"!==e.mode&&(_+=this.addMinorTicks(r)),e._measureLabelScale.removeChild(e._labelDummy),delete e._labelDummy,delete e._measureLabelScale,"smart-tank"===e.nodeName.toLowerCase()&&e._updateScaleWidth(this._longestLabelSize),e._appendTicksAndLabelsToScales(_,S),Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=t}addMiddleMajorTicks(t,e,i,r,a,n){const l=this.context;let o,s="",c="";for(let m=1;m<t;m++){let u,g=i.add(m*e);if(a?u=n.multiply(m).add(r.add(new Smart.Utilities.BigNumber(l._drawMin))):(u=new Smart.Utilities.BigNumber(l._drawMax).subtract(r).subtract(n.multiply(m)),m===t-1&&0===u.compare(0)&&(l._numberRenderer.numericValue=l._tickIntervalHandler.nearestPowerOfTen,o=l._numberRenderer.bigNumberToExponent(1))),0!==u.compare(l._drawMax)){let i=l._formatLabel(u.toString()),r=!0;l._labelDummy.innerHTML=o||i;let a=l._labelDummy[l._settings.size];g.add(a).compare(t*e)>=0&&(r=!1);const n=this._addMajorTickAndLabel(i,void 0,r,u,!0);s+=n.tick,c+=n.label}}return{tick:s,label:c}}addMinorTicks(t){function e(t){-1===r.indexOf(t)&&t%n==0&&(m+='<div style="'+l+": "+i._numericProcessor.valueToPx(t)+'px;" class="smart-tick smart-tick-minor"></div>')}const i=this.context,r=i._tickValues,a=i._tickIntervalHandler.nearestPowerOfTen,n=i._minorTicksInterval,l=i._settings.leftOrTop;let o,s,c,m="";if(t?(o=r[0],s=r[1],c=r[r.length-1]):(o=r[r.length-1],s=r[r.length-2],c=r[0]),i.logarithmicScale)!function(){let t=i._measurements.trackLength/r.length,e=.1;t<20?e=1:t>=20&&t<40?e=s-o>1?1:.5:t>=40&&t<80&&(e=.2);let a=Math.floor(i._drawMax),n=i._drawMax-a,c=i._drawMax-i._drawMin>r.length;for(let t=i._drawMax;t>0;t-=1){let r=n>0?Math.pow(10,t-n+1):Math.pow(10,t),a=r*e;for(let t=r;t>0;t-=a)if(t<i.max&&t>i.min){let e=new Smart.Utilities.BigNumber(Math.log10(t));(e%1==0&&c||!c)&&(m+='<div style="'+l+": "+i._numericProcessor.valueToPx(e)+'px;" class="smart-tick smart-tick-minor"></div>')}}}();else{for(let t=s;o.compare(t)<0;t=t.subtract(a))e(t);for(let t=s.add(a);c.compare(t)>0;t=t.add(a))e(t)}return m}validateCustomTicks(){const t=this.context,e="date"!==t.mode;let i=[];for(let r=0;r<t.customTicks.length;r++){let a=t.customTicks[r];e?a=this.createDescriptor(a,!1,!0):void 0===a._d&&(a=Smart.Utilities.DateTime.validateDate(a).getTimeStamp()),a.compare(t._minObject)>=0&&a.compare(t._maxObject)<=0&&i.push(a)}if(i.sort((function(t,e){return t.compare(e)})),e){for(let t=0;t<i.length;t++)i[t]=i[t].toString();i=i.filter((function(t,e,i){return!e||t!==i[e-1]}))}t.customTicks=i.slice(0)}addGaugeTicksAndLabels(){const t=Smart.Utilities.BigNumber.ignoreBigIntNativeSupport;Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=!0;const e=this.context,i=this,r=Math.max(e._tickIntervalHandler.labelsSize.minLabelSize,e._tickIntervalHandler.labelsSize.maxLabelSize),a=e._majorTicksInterval,n=e._minorTicksInterval,l={},o=e._distance,s=e._measurements.radius,c=s-o.majorTickDistance,m=s-o.minorTickDistance,u=new Smart.Utilities.BigNumber(e._drawMin),g=new Smart.Utilities.BigNumber(e._drawMax);let d,p,h,b,f,_;"none"!==e.ticksVisibility&&!1!==e._plotTicks?(d=function(t){e._drawTick(t,c,"major")},p=function(t){e._drawTick(i.getAngleByValue(t,!0),m,"minor")}):(d=function(){},p=function(){}),h="none"!==e.labelsVisibility&&!1!==e._plotLabels?function(t,i,r){e._drawLabel(t,i,o.labelDistance,r)}:function(){},void 0===e.inverted||!e.inverted&&!e.rightToLeft||e.rightToLeft&&e.inverted?(f=e.endAngle,_=e.startAngle):(f=e.startAngle,_=e.endAngle),b=i.getAngleByValue(u,!1),d(b),l[e._drawMin.toString()]=!0,h(b,e.min,!1);let S,x,v=u.subtract(u.mod(a));-1!==u.compare(0)&&(v=v.add(a));for(let t=new Smart.Utilities.BigNumber(v);-1!==t.compare(u);t=t.subtract(n))S=t;for(b=i.getAngleByValue(v,!1),d(b),l[v.toString()]=!0,2*Math.PI*e._measurements.innerRadius*(this._getAngleDifference(f,i.getAngleByValue(v,!1,!0))/360)>r&&h(b,this.getActualValue(v),-1===v.compare(g)),x=v.add(a);-1===x.compare(g.subtract(a));x=x.add(a))b=i.getAngleByValue(x,!1),d(b),l[x.toString()]=!0,h(b,this.getActualValue(x),!0);if(void 0===l[x.toString()]&&1!==x.compare(g)&&(b=i.getAngleByValue(x,!1),d(b),l[x.toString()]=!0,2*Math.PI*e._measurements.innerRadius*(this._getAngleDifference(_,i.getAngleByValue(x,!1,!0))/360)>=r&&h(b,this.getActualValue(x),!0),e._normalizedStartAngle!==e.endAngle&&(b=i.getAngleByValue(g,!1),d(b),2*Math.PI*e._measurements.innerRadius*(this._getAngleDifference(_,f)/360)>=r&&h(b,e.max,!1))),"date"!==e.mode){if(e.logarithmicScale)this.drawGaugeLogarithmicScaleMinorTicks(l,a,p);else for(let t=S;-1===t.compare(g);t=t.add(n))l[t.toString()]||p(t);Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=t}else Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=t}updateToolTipAndValue(t,e,i){const r=this.context,a=r.logarithmicScale;r._updateTooltipValue(t.toString()),a&&(t=parseFloat(Math.pow(10,parseFloat(t)).toFixed(11)));const n=(t=t instanceof Smart.Utilities.BigNumber?t:new Smart.Utilities.BigNumber(t)).toString();r._number=t,r._drawValue=a?Math.log10(n):t,0!==t.compare(e)&&i&&("numeric"===r.mode?(r.value=n,t=n):(e=r._valueDate,r._valueDate=Smart.Utilities.DateTime.fromFullTimeStamp(n),r.value=t,t=r._valueDate),r._programmaticValueIsSet||r.$.fireEvent("change",{value:t,oldValue:e}),r.$.hiddenInput&&(r.$.hiddenInput.value=t),r._setAriaValue("valuenow"))}validateInterval(t){const e=this.context,i=e._maxObject.subtract(e._minObject);e._validInterval=new Smart.Utilities.BigNumber(t),e._validInterval=this.round(e._validInterval),e._validInterval.compare(0)<=0&&(e._validInterval=new Smart.Utilities.BigNumber(1)),1===e._validInterval.compare(i)&&(e._validInterval=i),e.interval=e._validInterval.toString()}getCoercedValue(t,e,i){const r=this.context;if(!r.coerce)return t;const a=!r.logarithmicScale;let n,l;if(t=t instanceof Smart.Utilities.BigNumber?t:new Smart.Utilities.BigNumber(t),r.customInterval){const e=r.customTicks;if(0===e.length)return t;let l,o;if(a||i){n=r._minObject,l=n.subtract(t).abs(),o=n;for(let i=0;i<e.length;i++){const r=this.createDescriptor(e[i]),a=r.subtract(t).abs();-1===a.compare(l)&&(l=a,o=r)}}else{n=r._drawMin,l=Math.abs(n-parseFloat(t.toString())),o=n;for(let i=0;i<e.length;i++){const r=Math.log10(e[i]),a=Math.abs(r-t);a<l&&(l=a,o=r)}o=new Smart.Utilities.BigNumber(o)}return o}let o=r._validInterval;if("date"===r.mode){if("addYears"===r._dateIncrementMethod)return this.coerceYear(t);if("addMonths"===r._dateIncrementMethod)return this.coerceMonth(t);o=new Smart.Utilities.BigNumber(r._dateIntervalNumber).multiply(o)}!1!==e?(n=new Smart.Utilities.BigNumber(r._drawMin),l=new Smart.Utilities.BigNumber(r._drawMax)):(n=new Smart.Utilities.BigNumber(r.min),l=new Smart.Utilities.BigNumber(r.max));let s=t.subtract(n),c=s.mod(o);if(0===c.compare(0))return t;let m=s.subtract(c),u=m.add(o);if(s.subtract(m).abs().compare(s.subtract(u).abs())<0)return m.add(n);{const t=u.add(n);return t.compare(l)<=0?t:m.add(n)}}coerceMonth(t){const e=this.context,i=parseFloat(e._validInterval),r=Smart.Utilities.DateTime.fromFullTimeStamp(t),a=r.year(),n=r.month(),l=r.day(),o=e._minDate.year(),s=e._minDate.month(),c=12*(e._maxDate.year()-o-1)+12-s+e._maxDate.month();let m=12*(a-1-o)+(12-s)+n;1===i&&(-1!==[1,3,5,7,8,10,12].indexOf(n)?(l>16||16===l&&r.hour()>11)&&m++:2===n?r.isLeapYear(a)?(l>15||15===l&&r.hour()>11)&&m++:l>14&&m++:l>15&&m++),m=this.getCoercedTimePart(0,c,m,i);let u=e._minDate.addMonths(m,!0);return 1===u.compare(e._maxDate)&&(u=e._minDate.addMonths(m-i,!0)),e._drawValue=new Smart.Utilities.BigNumber(u.getTimeStamp()),e._drawValue}coerceYear(t){const e=this.context,i=parseFloat(e._validInterval),r=Smart.Utilities.DateTime.fromFullTimeStamp(t),a=e._maxDate.year(),n=Smart.Utilities.DateTime.getConstructorParameters(e._minDate);let l=r.year();r.month()>6&&l++;let o=this.getCoercedTimePart(e._minDate.year(),a,l,i);o>a&&(o-=i),n[0]=o,n.unshift(null);const s=new(Function.prototype.bind.apply(Smart.Utilities.DateTime,n));return e._drawValue=new Smart.Utilities.BigNumber(s.getTimeStamp()),e._drawValue}getCoercedTimePart(t,e,i,r){let a=i-t,n=a%r;if(0===n)return i;let l=parseFloat((a-n).toFixed(12)),o=l+r;if(e-t<=r)return i>=t+(e-t)/2?e:t;if(Math.abs(a-l)<Math.abs(a-o))return l+t;{const i=o+t;return i>e?l+t:i}}updateValue(t){const e=this.context;t=t instanceof Smart.Utilities.BigNumber?t:new Smart.Utilities.BigNumber(t);const i=this.validate(t,e._minObject,e._maxObject);let r,a,n=e.value;e._number=i,e._drawValue=e.logarithmicScale?Math.log10(i):i,"numeric"===e.mode?(r=t.toString(),e.value=r,a=this.compare(t,n)):(n=Smart.Utilities.DateTime.fromFullTimeStamp(n),e._valueDate=Smart.Utilities.DateTime.fromFullTimeStamp(t),e.value=t,r=t=e._valueDate,a=0!==t.compare(n)),e._programmaticValueIsSet||!a&&!e._scaleTypeChangedFlag||e.$.fireEvent("change",{value:r,oldValue:n}),e.$.hiddenInput&&(e.$.hiddenInput.value=t),e._setAriaValue("valuenow"),e._moveThumbBasedOnValue(e._drawValue)}getValuePerPx(t,e){const i=Smart.Utilities.BigNumber.ignoreBigIntNativeSupport;Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=!0;const r=new Smart.Utilities.BigNumber(t).divide(e);return Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=i,r}restrictValue(t){t[1].constructor===Smart.Utilities.BigNumber?-1===t[1].compare(t[0])&&t[1].set(t[0]):t[1]<t[0]&&(t[1]=t[0])}getAngleByValue(t,e,i){const r=this.context,a=Smart.Utilities.BigNumber.ignoreBigIntNativeSupport;if(Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=!0,r._wordLengthNumber<64)return Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=a,super.getAngleByValue(parseFloat(t.toString()),e,i);t instanceof Smart.Utilities.BigNumber==0&&(t=new Smart.Utilities.BigNumber(t)),!1!==e&&r.logarithmicScale&&(t=new Smart.Utilities.BigNumber(Math.log10(t.toString())));const n=t.subtract(r._drawMin).multiply(r._angleRangeCoefficient);let l;return l=void 0===r.inverted||!r.inverted&&!r.rightToLeft||r.rightToLeft&&r.inverted?n.multiply(-1).add(r.endAngle):n.add(r.startAngle),l=parseFloat(l.toString()),Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=a,i?l:l*Math.PI/180+Math.PI/2}getValueByAngle(t){const e=this.context;if(e._wordLengthNumber<64)return super.getValueByAngle(t,!0);const i=Smart.Utilities.BigNumber.ignoreBigIntNativeSupport;let r,a,n,l;for(Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=!0,void 0===e.inverted||!e.inverted&&!e.rightToLeft||e.rightToLeft&&e.inverted?(r=e.endAngle,a=t):(r=t,a=e._normalizedStartAngle);r<a;)r+=360;return n=new Smart.Utilities.BigNumber((r-a)/e._angleDifference).multiply(e._range).add(e._drawMin),e.logarithmicScale&&(n=new Smart.Utilities.BigNumber(Math.pow(10,n.toString()))),l=e.coerce?this.getCoercedValue(n,!1):this.round(n),Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=i,new Smart.Utilities.BigNumber(l)}updateGaugeValue(t){if(t instanceof Smart.Utilities.BigNumber==0)return super.updateGaugeValue(t);const e=this.context,i=e._getEventValue();"numeric"===e.mode?(e.value=t.toString(),e.$.digitalDisplay.value=e.value):(e._valueDate=Smart.Utilities.DateTime.fromFullTimeStamp(t),e.value=t),e._drawValue=e.logarithmicScale?Math.log10(e.value).toString():e.value,e._number=t,e.$.fireEvent("change",{value:e._getEventValue(),oldValue:i}),e._setAriaValue("valuenow")}validateColorRange(t){const e=this.context;if(e._wordLengthNumber<64)return super.validateColorRange(t);t="numeric"===e.mode?new Smart.Utilities.BigNumber(t):(t=Smart.Utilities.DateTime.validateDate(t)).getTimeStamp();const i=new Smart.Utilities.BigNumber(e.min),r=new Smart.Utilities.BigNumber(e.max);return-1===t.compare(i)&&(t=i),1===t.compare(r)&&(t=r),t}lockRotation(t,e){const i=this.context;if(e instanceof Smart.Utilities.BigNumber==0&&(e=new Smart.Utilities.BigNumber(e)),t&&-1===e.compare(i._number)){if(i._lockCW=!0,-1===e.compare(i._maxObject))return new Smart.Utilities.BigNumber(i._maxObject)}else if(!t&&1===e.compare(i._number)&&(i._lockCCW=!0,1===e.compare(i._minObject)))return new Smart.Utilities.BigNumber(i._minObject)}getAngleRangeCoefficient(){const t=this.context,e=Smart.Utilities.BigNumber.ignoreBigIntNativeSupport;Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=!0,t._angleRangeCoefficient=new Smart.Utilities.BigNumber(t._angleDifference).divide(t._range),Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=e}}),Smart.Utilities.Assign("DecimalNumericProcessor",class extends Smart.Utilities.BaseNumericProcessor{constructor(t,e){super(t,e),this.context=t}getPreciseModulo(t,e,i){const r=t>=0?1:-1;if(t=Math.abs(t),e=Math.abs(e),void 0===i){const i=t.toExponential(),a=e.toExponential(),n=parseInt(i.slice(i.indexOf("e")+1),10),l=parseInt(a.slice(a.indexOf("e")+1),10),o=n<0?Math.abs(n):0,s=l<0?Math.abs(l):0,c=Math.max(o,s);if(this.roundCoefficient=c,t<e)return r*t;if(t===e)return 0;if((t<-1||t>1)&&(e<-1||e>1||1===e)){if(t%1==0&&e%1==0)return r*(t%e);{const i=Smart.Utilities.BigNumber.ignoreBigIntNativeSupport;Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=!0;const a=r*parseFloat(new Smart.Utilities.BigNumber(t).mod(e).toString());return Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=i,a}}const m=Math.pow(10,c);return r*(t*m%(e*m)/m)}return r*(Math.round(t*i)%Math.round(e*i))}createDescriptor(t,e,i,r){let a=parseFloat(t);return r&&(a=this.validate(a,this.context._minObject,this.context._maxObject)),a}round(t){return Math.round(t)}validate(t,e,i){let r;return r=t<e?e:t>i?i:t,r}validateMinMax(t,e){const i=this.context,r=void 0!==i._regexSpecial&&i._regexSpecial.inf.test(i.min),a=void 0!==i._regexSpecial&&i._regexSpecial.inf.test(i.max);t&&(null===i.min||r?(i.min=-1/0,i._minObject=-1/0):(i.min=i.min.toString().replace(/\s/g,""),this.regexScientificNotation.test(i.min)&&(i.min=this.scientificToDecimal(i.min)),i._minObject=i._discardDecimalSeparator(i.min))),e&&(null===i.max||a?(i.max=1/0,i._maxObject=1/0):(i.max=i.max.toString().replace(/\s/g,""),this.regexScientificNotation.test(i.max)&&(i.max=this.scientificToDecimal(i.max)),i._maxObject=i._discardDecimalSeparator(i.max))),this.compare(i._minObject,i._maxObject)||(i._maxObject=parseFloat(i._maxObject)+1,i.max=i._maxObject)}valueToPx(t){const e=this.context,i=e._measurements.trackLength/e._range;let r;return r=e._normalLayout?i*(t-e._drawMin):i*(e._drawMax-t),Math.round(r)}pxToValue(t){const e=this.context;let i;if(i=e._normalLayout?(t-e._trackStart)*e._valuePerPx:(e._trackEnd-t)*e._valuePerPx,e.logarithmicScale){const t=i+parseFloat(e._drawMin);return Math.pow(10,t)}return this.validate(i+e._minObject,e._minObject,e._maxObject)}compare(t,e,i){return t=parseFloat(t),e=parseFloat(e),!0!==i?t!==e:t<e?-1:t>e?1:0}incrementDecrement(t,e,i){const r=this.context;let a;if("add"===e){if(a=parseFloat(t)+parseFloat(i),void 0!==r._drawMax)return a>parseFloat(r._drawMax)?r._drawMax:a}else if(a=parseFloat(t)-parseFloat(i),void 0!==r._drawMin)return a<parseFloat(r._drawMin)?r._drawMin:a;return a}render(t){const e=this.context;if(void 0!==e._regexSpecial&&e._regexSpecial.nonNumericValue.test(t))return t;{const i=new Smart.Utilities.NumberRenderer(t);return e.scientificNotation?i.toScientific(e.significantDigits,e.precisionDigits):i.toDigits(e.significantDigits,e.precisionDigits)}}addTicksAndLabels(){const t=this.context,e=t._measurements.trackLength,i=t._normalLayout,r=t._majorTicksInterval,a=Math.round(t._range/parseFloat(r.toString())),n=e/a,l=parseFloat(t._drawMin),o=parseFloat(t._drawMax);let s,c,m,u,g,d,p,h,b,f="",_="";t._tickValues=[],this._longestLabelSize=0,i?(s=l,c=t.logarithmicScale&&l<0&&-1!==l?parseFloat(s-this.getPreciseModulo(s,r)):parseFloat(s-this.getPreciseModulo(s,r)+parseFloat(r)),m=c-s,g=t._formatLabel(l),d=t._tickIntervalHandler.labelsSize.minLabelSize,u=o,p=t._formatLabel(o),h=t._tickIntervalHandler.labelsSize.maxLabelSize):(s=o,c=parseFloat(s-this.getPreciseModulo(s,r)),m=s-c,g=t._formatLabel(o),d=t._tickIntervalHandler.labelsSize.maxLabelSize,u=l,p=t._formatLabel(l),h=t._tickIntervalHandler.labelsSize.minLabelSize),t._labelDummy=this._createMeasureLabel(),b=this._addMajorTickAndLabel(g,d,!0,s),f+=b.tick,_+=b.label;const S=m/r*n;if(c.toString()!==t._drawMax.toString()&&S<e){const e=t._formatLabel(c.toString()),i=d<S;b=this._addMajorTickAndLabel(e,void 0,i,c,!0),f+=b.tick,_+=b.label}b=this.addMiddleMajorTicks(a,n,S,m,i,r),f+=b.tick,_+=b.label,b=this._addMajorTickAndLabel(p,h,!0,u),f+=b.tick,_+=b.label,f+=this.addMinorTicks(i),t._measureLabelScale.removeChild(t._labelDummy),delete t._labelDummy,delete t._measureLabelScale,"smart-tank"===t.nodeName.toLowerCase()&&t._updateScaleWidth(this._longestLabelSize),t._appendTicksAndLabelsToScales(f,_)}addMiddleMajorTicks(t,e,i,r,a,n){const l=this.context;let o="",s="";for(let c=1;c<t;c++){let m,u=c*e+i;if(m=a?parseFloat(l._drawMin)+n*c+r:parseFloat(l._drawMax)-n*c-r,m.toString()!==l._drawMax.toString()){let i=l._formatLabel(m.toString()),r=!0;l._labelDummy.innerHTML=i,u+l._labelDummy[l._settings.size]>=t*e&&(r=!1);const a=this._addMajorTickAndLabel(i,void 0,r,m,!0);o+=a.tick,s+=a.label}}return{tick:o,label:s}}addMinorTicks(t){function e(t){return parseFloat(t.toFixed(o))}function i(t){-1===a.indexOf(t)&&0===r._numericProcessor.getPreciseModulo(t,l,s)&&(d+='<div style="'+c+": "+r._numericProcessor.valueToPx(t)+'px;" class="smart-tick smart-tick-minor"></div>')}const r=this.context,a=r._tickValues,n=r._tickIntervalHandler.nearestPowerOfTen,l=r._minorTicksInterval,o=Math.log10(n)<0?Math.round(Math.abs(Math.log10(n))):0,s=Math.pow(10,o),c=r._settings.leftOrTop;let m,u,g,d="";if(t?(m=a[0],u=a[1],g=a[a.length-1]):(m=a[a.length-1],u=a[a.length-2],g=a[0]),r.logarithmicScale)!function(){let t=r._measurements.trackLength/a.length,e=.1;t<20?e=1:t>=20&&t<40?e=u-m>1?1:.5:t>=40&&t<80&&(e=.2);let i=Math.floor(r._drawMax),n=r._drawMax-i,l=r._drawMax-r._drawMin>a.length;for(let t=r._drawMax;t>r._drawMin-1;t-=1){let i=n>0?Math.pow(10,t-n+1):Math.pow(10,t),a=i*e;for(let t=i;t>0;t-=a)if(t<r.max&&t>r.min){let e=new Smart.Utilities.BigNumber(Math.log10(t));(e%1==0&&l||!l)&&(d+='<div style="'+c+": "+r._numericProcessor.valueToPx(e)+'px;" class="smart-tick smart-tick-minor"></div>')}}}();else{for(let t=u;t>m;t=e(t-n))i(t);for(let t=e(u+n);t<g;t=e(t+n))i(t)}return d}validateCustomTicks(){const t=this.context;let e=[];for(let i=0;i<t.customTicks.length;i++){const r=t.customTicks[i],a=this.createDescriptor(r);a>=t._minObject&&a<=t._maxObject&&e.push(a.toString())}e.sort((function(t,e){return t-e})),e=e.filter((function(t,e,i){return!e||t!==i[e-1]})),t.customTicks=e.slice(0)}addGaugeTicksAndLabels(){const t=this.context,e=this,i=Math.max(t._tickIntervalHandler.labelsSize.minLabelSize,t._tickIntervalHandler.labelsSize.maxLabelSize),r=t._majorTicksInterval,a=t._minorTicksInterval,n={},l=t._distance,o=t._measurements.radius,s=o-l.majorTickDistance,c=o-l.minorTickDistance;let m,u,g,d,p,h;"none"!==t.ticksVisibility&&!1!==t._plotTicks?(m=function(e){t._drawTick(e,s,"major")},u=function(i){t._drawTick(e.getAngleByValue(i,!0),c,"minor")}):(m=function(){},u=function(){}),g="none"!==t.labelsVisibility&&!1!==t._plotLabels?function(e,i,r){t._drawLabel(e,i,l.labelDistance,r)}:function(){},void 0===t.inverted||!t.inverted&&!t.rightToLeft||t.rightToLeft&&t.inverted?(p=t.endAngle,h=t.startAngle):(p=t.startAngle,h=t.endAngle),d=e.getAngleByValue(t._drawMin,!1),m(d),n[t._drawMin]=!0,g(d,t.min,!1);let b,f,_=t._drawMin-e.getPreciseModulo(t._drawMin,r);t._drawMin>=0&&(_+=r);for(let e=_;e>=t._drawMin;e-=a)b=e;for(d=e.getAngleByValue(_,!1),m(d),n[_]=!0,2*Math.PI*t._measurements.innerRadius*(this._getAngleDifference(p,e.getAngleByValue(_,!1,!0))/360)>i&&g(d,this.getActualValue(_),_<t._drawMax),f=_+r;f<t._drawMax-r;f+=r)d=e.getAngleByValue(f,!1),m(d),n[f]=!0,g(d,this.getActualValue(f),!0);if(void 0===n[f]&&f<=t._drawMax&&(d=e.getAngleByValue(f,!1),m(d),n[f]=!0,2*Math.PI*t._measurements.innerRadius*(this._getAngleDifference(h,e.getAngleByValue(f,!1,!0))/360)>=i&&g(d,this.getActualValue(f),!0),t._normalizedStartAngle!==t.endAngle&&(d=e.getAngleByValue(t._drawMax,!1),m(d),n[t._drawMax]=!0,2*Math.PI*t._measurements.innerRadius*(this._getAngleDifference(h,p)/360)>=i&&g(d,t.max,!1))),t.logarithmicScale)this.drawGaugeLogarithmicScaleMinorTicks(n,r,u);else for(let e=b;e<t._drawMax;e+=a)n[e]||u(e)}updateToolTipAndValue(t,e,i){const r=this.context,a=r.logarithmicScale;r._updateTooltipValue(t),a&&(t=parseFloat(Math.pow(10,parseFloat(t)).toFixed(11)));const n=t.toString();r._number=t,r._drawValue=a?Math.log10(n):t,n!==e&&i&&(r.value=r._discardDecimalSeparator(n),r._programmaticValueIsSet||r.$.fireEvent("change",{value:r.value,oldValue:e}),r.$.hiddenInput&&(r.$.hiddenInput.value=r.value),r._setAriaValue("valuenow"))}validateInterval(t){const e=this.context,i=e._maxObject-e._minObject;t<=0&&(t=1),e._validInterval=Math.min(parseFloat(t),i),e.interval=e._validInterval}getCoercedValue(t,e,i){const r=this.context;if(!r.coerce)return t;let a,n,l=!r.logarithmicScale;if(r.customInterval){const n=r.customTicks;if(0===n.length)return t;l=l||i,a=!1!==e?parseFloat(r._drawMin):r._minObject;let o=Math.abs(a-t),s=a;for(let e=0;e<n.length;e++){const i=this.createDescriptor(n[e]),r=l?i:Math.log10(i),a=Math.abs(r-t);a<o&&(o=a,s=r)}return s}!1!==e?(a=parseFloat(r._drawMin),n=parseFloat(r._drawMax)):(a=parseFloat(r.min),n=parseFloat(r.max));let o=t-a,s=this.getPreciseModulo(o,parseFloat(r.interval)),c=this.roundCoefficient;if(0===s)return t;0===this.roundCoefficient&&(c=12);let m=parseFloat((o-s).toFixed(c)),u=m+parseFloat(r.interval);if(r.max-r.min<=parseFloat(r.interval)&&l){let e=a,i=n;return t>=e+(i-e)/2?i:e}if(Math.abs(o-m)<Math.abs(o-u))return m+a;{const t=u+a;return t>n?m+a:t}}updateValue(t){const e=this.context,i=this.validate(t,e._minObject,e._maxObject),r=e.value;t.toString()!==r.toString()||e._scaleTypeChangedFlag?(e.value=t.toString(),e._number=i,e._programmaticValueIsSet||e.$.fireEvent("change",{value:e.value,oldValue:r})):e.value="string"==typeof t?t:t.toString(),e._drawValue=e.logarithmicScale?Math.log10(i).toString():i.toString(),e._moveThumbBasedOnValue(e._drawValue),e.$.hiddenInput&&(e.$.hiddenInput.value=e.value),e._setAriaValue("valuenow")}getValuePerPx(t,e){return parseFloat(t)/e}restrictValue(t){t[1]<t[0]&&(t[1]=t[0])}lockRotation(t,e){const i=this.context;if(t&&e<i._number){if(i._lockCW=!0,e<i._maxObject)return i._maxObject}else if(!t&&e>i._number&&(i._lockCCW=!0,e>i._minObject))return i._minObject}getAngleRangeCoefficient(){const t=this.context;t._angleRangeCoefficient=t._angleDifference/t._range}}),Smart.Utilities.Assign("ComplexNumericProcessor",class extends Smart.Utilities.BaseNumericProcessor{constructor(t,e){super(t,e),this.context=t}createDescriptor(t,e,i,r,a,n){let l;return l=n||(t.constructor===this.complexConstructor?new this.complexConstructor(t.realPart,t.imaginaryPart):new this.complexConstructor(t)),r&&(l=this.validate(l,this.context._minObject,this.context._maxObject)),l}validate(t,e,i){let r=t;return e!==-1/0?-1===this.compareComplexNumbers(t,e)&&(r=new this.complexConstructor(e.realPart,e.imaginaryPart)):i!==1/0&&1===this.compareComplexNumbers(t,i)&&(r=new this.complexConstructor(i.realPart,i.imaginaryPart)),r}compare(t,e,i){return!0!==i?0!==this.compareComplexNumbers(t,e):this.compareComplexNumbers(t,e)}validateMinMax(t,e){const i=this.context;t&&(null===i.min||i._regexSpecial.inf.test(i.min)?(i.min=-1/0,i._minObject=-1/0):i._minObject=new this.complexConstructor(i.min)),e&&(null===i.max||i._regexSpecial.inf.test(i.max)?(i.max=1/0,i._maxObject=1/0):i._maxObject=new this.complexConstructor(i.max))}incrementDecrement(t,e){let i=new this.complexConstructor(t.realPart,t.imaginaryPart),r=this.context._spinButtonsStepObject;return"add"===e?(i.realPart+=r.realPart,i.imaginaryPart+=r.imaginaryPart):(i.realPart-=r.realPart,i.imaginaryPart-=r.imaginaryPart),i}render(t){let e=t;if(!1===this.context._regexSpecial.nonNumericValue.test(t)){let t,i=e.realPart,r=e.imaginaryPart,a=this.context.significantDigits,n=this.context.precisionDigits;r>=0?t="+":(t="-",r=Math.abs(r));const l=new Smart.Utilities.NumberRenderer(i),o=new Smart.Utilities.NumberRenderer(r);this.context.scientificNotation?(i=l.toScientific(a,n),r=o.toScientific(a,n)):(i=l.toDigits(a,n),r=o.toDigits(a,n)),e=`${i} ${t} ${r}i`}return e}compareComplexNumbers(t,e){if(t instanceof this.complexConstructor==0||e instanceof this.complexConstructor==0)return-1;const i=t.realPart,r=e.realPart;if(i<r)return-1;if(i>r)return 1;{const i=t.imaginaryPart,r=e.imaginaryPart;return i<r?-1:i>r?1:0}}}),Smart.Utilities.Assign("NumberRenderer",class{constructor(t){const e=this;e.numericValue=t,e.powersToPrefixes={24:"Y",21:"Z",18:"E",15:"P",12:"T",9:"G",6:"M",3:"k",0:"","-3":"m","-6":"u","-9":"n","-12":"p","-15":"f","-18":"a","-21":"z","-24":"y"},e.localizationObject={currencysymbol:"$",currencysymbolposition:"before",decimalseparator:".",thousandsseparator:",",defaultPrecision:2}}isENotation(t){return new RegExp(/e/i).test(t)}largeExponentialToDecimal(t){let e;void 0===t&&(t=this.numericValue,e=!0);let i=t.toString().toLowerCase(),r=i.indexOf("e"),a=new Smart.Utilities.BigNumber(i.slice(0,r)),n=i.slice(r+1,r+2);"+"!==n&&"-"!==n&&(i=i.slice(0,r)+"e+"+i.slice(r+1),n="+");let l=i.slice(r+2),o=new Smart.Utilities.BigNumber(10).pow(n+(e?Math.min(20,l):l));return a.multiply(o).toString()}bigNumberToExponent(t,e){let i=this.numericValue;i.constructor!==Smart.Utilities.BigNumber&&(i=new Smart.Utilities.BigNumber(i));const r=i._f;let a=i.toString();if(r<=10)return e?parseFloat(a).toExponential(null!==t?t-1:void 0):new Smart.Utilities.NumberRenderer(parseFloat(a)).toDigits(t);if(t>=r&&!e)return a;{let n;!1===i._s?n="":(n="-",a=a.slice(1)),parseFloat(a.slice(t,t+1))>=5&&(a=new Smart.Utilities.BigNumber(a.slice(0,t)).add(1).toString());let l=a.slice(1,t);if(e)t--,l.length>0&&t>l.length?l+="0".repeat(t-l.length):0===l.length&&(l="0".repeat(t));else for(;l.length>0&&"0"===l.charAt(l.length-1);)l=l.slice(0,l.length-1);const o=l.length>0?".":"",s=r-1;return n+a.slice(0,1)+o+l+"E+"+s}}toScientific(){const t=this;let e;if(e=t.numericValue._d?t.bigNumberToExponent(null!==arguments[0]?arguments[0]:arguments[1]+1,!0).toLowerCase():t.numericValue<=-1||t.numericValue>=1?Number(t.toDigits(arguments[0],arguments[1])).toExponential():Number(t.numericValue).toExponential(),isNaN(e))return e;const i=e.indexOf("e");let r=parseInt(e.slice(i+1),10),a=parseFloat(e.slice(0,i)),n=new Smart.Utilities.NumberRenderer(a);if(r<0){let e=n.toDigits(arguments[0],arguments[1]);if(e=parseFloat(e).toExponential(),"0"===e.charAt(e.length-1)){let e=0;for(;r%3!=0;)r--,e++;if(e){const t=Smart.Utilities.BigNumber.ignoreBigIntNativeSupport;Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=!0,a=parseFloat(new Smart.Utilities.BigNumber(a).multiply(Math.pow(10,e)).toString()),Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=t}n.numericValue=a,a=n.toDigits(arguments[0],arguments[1]),n.numericValue=a/1e3;const i=n.toDigits(arguments[0],arguments[1]);return i>=1&&(a=i,r+=3),a+t.powersToPrefixes[r.toString()]}}let l=0;if(l=Math.abs(r)>24?r-r/Math.abs(r)*24:r%3,l>0)for(let t=0;t<l;t++)a*=10;else if(l<0){const t=Smart.Utilities.BigNumber.ignoreBigIntNativeSupport;Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=!0,a=parseFloat(new Smart.Utilities.BigNumber(a).multiply(Math.pow(10,l)).toString()),Smart.Utilities.BigNumber.ignoreBigIntNativeSupport=t}if(r>0){const t=a>=0?0:1,r=e.slice(t,i).length-l-2;r>=0&&(a=a.toFixed(r))}let o=Number(a).toExponential();o=parseFloat(o.charAt(o.length-1)),n.numericValue=a,a=n.toDigits(arguments[0],arguments[1]);let s=Number(a).toExponential(),c=0;s=parseFloat(s.charAt(s.length-1)),s!==o&&s%3==0&&(a=parseFloat(a)/Math.pow(10,s),n.numericValue=a,a=n.toDigits(arguments[0],arguments[1]),c=s);const m=r-l+c;return a+t.powersToPrefixes[m.toString()]}bigNumberToScientific(){const t=this,e=t.numericValue._f-1,i=parseInt(e,10)%3,r=parseInt(e,10)-i;let a,n,l=t.numericValue.toString();if("-"===l.charAt(0)?(a="-",l=l.slice(1)):a="",null!==arguments[0])for(n=l.slice(0,arguments[0]),parseFloat(l.slice(arguments[0],arguments[0]+1))>=5&&(n=new Smart.Utilities.BigNumber(n).add(1).toString());n.length>1+i&&"0"===n.charAt(n.length-1);)n=n.slice(0,n.length-1);else null!==arguments[1]&&(n=l.slice(0,arguments[1]+1),parseFloat(l.slice(arguments[1]+1,arguments[1]+2))>=5&&(n=new Smart.Utilities.BigNumber(n).add(1).toString()),arguments[1]+i>n.length-1&&(n+="0".repeat(arguments[1]+i-n.length+1)));return n.length>1+i&&(n=n.slice(0,1+i)+"."+n.slice(1+i)),a+n+t.powersToPrefixes[r.toString()]}toDigits(t,e){const i=this;let r;return r=null!==t?i.applySignificantDigits(t):null!==e?i.applyPrecisionDigits(e):i.applySignificantDigits(8),r}applySignificantDigits(t){const e=this;function i(t){for(;"0"===t.charAt(t.length-1);)t=t.slice(0,-1);return"."===t.charAt(t.length-1)&&(t=t.slice(0,-1)),t}t=Math.max(1,Math.min(t,21));let r=parseFloat(e.numericValue).toPrecision(t).toUpperCase();if(-1!==r.indexOf("."))if(e.isENotation(r)){const t=r.indexOf("."),e=r.indexOf("E");let a=r.slice(t,e);a=i(a),r=r.slice(0,t)+a+r.slice(e)}else r=i(r);return r}applyPrecisionDigits(t){const e=this;t=Math.max(0,Math.min(t,20));let i=parseFloat(e.numericValue).toFixed(t);return e.isENotation(i)&&(i=e.largeExponentialToDecimal(i)+"."+"0".repeat(t)),i}getLogarithm(t){const e=this.numericValue;let i;if(void 0===t&&(t=10),10===t)try{i=Math.log10(e)}catch(t){i=Math.log(e)/Math.log(10)}else i=Math.log(e)/Math.log(t);return i}applySeparators(t,e){const i=this,r=(t=t.toString()).indexOf(".");if(-1!==r){const a=t.slice(0,r),n=t.slice(r+1);return i.applyThousandsSeparator(a,e)+i.localizationObject.decimalseparator+n}return i.applyThousandsSeparator(t,e)}applyThousandsSeparator(t,e){if(e)return t;let i="";"-"===(t=t.toString()).charAt(0)&&(i="-",t=t.slice(1));let r=t.split("").reverse();for(let t=2;t<r.length-1;t+=3)r[t]=this.localizationObject.thousandsseparator+r[t];return r.reverse(),r=r.join(""),i+r}formatNumber(t,e,i){const r=this;if(void 0===arguments[3]&&delete r._ignoreMinus,delete r._wordLengthNumber,!/^([a-zA-Z]\d*)$/g.test(e))try{return r.applyCustomFormat(t,e)}catch(e){return t.toString()}const a=e.slice(0,1);let n=e.slice(1);if(""!==n&&(isNaN(parseFloat(n))||parseFloat(n)<0||parseFloat(n)>99?n="":parseFloat(n)%1!=0&&(n=Math.round(n))),t._d)r.inputFormat="integer";else{if(t.imaginaryPart)return r.formatComplexNumber(t,e,a,n);r.inputFormat="floatingPoint"}let l,o=new Smart.Utilities.NumericProcessor(r,"inputFormat"),s=o.createDescriptor(t);switch(r._wordLengthNumber=o.getWordLength(i||"int32"),"integer"===r.inputFormat&&(s=o.round(s)),r.numericValue=s,a){case"C":case"c":return""===n&&(n=r.localizationObject.defaultPrecision),n=parseFloat(n),l="floatingPoint"===r.inputFormat?r.applyPrecisionDigits(n):s.toString()+(n>0?"."+"0".repeat(n):""),l=r.applySeparators(l),"before"===r.localizationObject.currencysymbolposition?"-"===l.charAt(0)?"-"+r.localizationObject.currencysymbol+l.slice(1):r.localizationObject.currencysymbol+l:l+" "+r.localizationObject.currencysymbol;case"D":case"d":{if(l=s,"floatingPoint"===r.inputFormat&&(l=Math.round(s)),l=l.toString(),""===n)return l;let t="";"-"===l.charAt(0)&&(t="-",l=l.slice(1));const e=n-l.length;return e>0&&(l="0".repeat(e)+l),t+l}case"E":case"e":case"U":case"u":{""===n&&(n=6),l="floatingPoint"===r.inputFormat?s.toExponential(n):r.bigNumberToExponent(parseFloat(n)+1,!0).toLowerCase();const t=l.indexOf("e"),e=l.slice(t+2).length;return e<3&&(l=l.slice(0,t+2)+"0".repeat(3-e)+l.slice(t+2)),"u"===a.toLowerCase()?r.exponentialToSuperscript(r.applySeparators(l,!0)):("E"===a&&(l=l.toUpperCase()),r.applySeparators(l,!0))}case"F":case"f":case"N":case"n":return""===n&&(n=r.localizationObject.defaultPrecision),n=parseFloat(n),l="floatingPoint"===r.inputFormat?r.applyPrecisionDigits(n):s.toString()+(n>0?"."+"0".repeat(n):""),r.applySeparators(l,"f"===a.toLowerCase());case"G":case"g":{if(""===n||"0"===n)if("floatingPoint"===r.inputFormat)n=15;else switch(i){case"int8":case"uint8":n=3;break;case"int16":case"uint16":n=5;break;case"int64":n=19;break;case"uint64":n=20;break;default:n=10}n=parseFloat(n);let e=r.formatNumber(t,"E"+n,i),l=e.indexOf("E");const o=parseInt(e.slice(l+1),10);if(o>-5&&o<n)return"floatingPoint"===r.inputFormat?r.applySeparators(r.applySignificantDigits(n),!0):s.toString();if(o>-100&&o<100&&(e=e.slice(0,l+2)+e.slice(l+3)),-1!==e.indexOf(r.localizationObject.decimalseparator)){for(;"0"===e.charAt(l-1);)e=e.slice(0,l-1)+e.slice(l),l=e.indexOf("E");e.charAt(l-1)===r.localizationObject.decimalseparator&&(e=e.slice(0,l-1)+e.slice(l))}return"g"===a&&(e=e.toLowerCase()),e}case"P":case"p":return""===n&&(n=r.localizationObject.defaultPrecision),n=parseFloat(n),"floatingPoint"===r.inputFormat?(r.numericValue=100*s,l=r.applyPrecisionDigits(n)):l=s.multiply(100).toString()+(n>0?"."+"0".repeat(n):""),r.applySeparators(l)+" %";case"B":case"b":case"O":case"o":case"X":case"x":{let e;switch("integer"!==r.inputFormat&&(r.inputFormat="integer",o=new Smart.Utilities.NumericProcessor(r,"inputFormat"),s=o.round(o.createDescriptor(t))),a){case"B":case"b":e=2;break;case"O":case"o":e=8;break;default:e=16}if(l=s.toString(e,r._wordLengthNumber),""!==n){const t=parseFloat(n)-l.length;t>0&&(l="0".repeat(t)+l)}return"x"===a&&(l=l.toLowerCase()),l}case"S":case"s":return""===n&&(n=r.localizationObject.defaultPrecision),n=parseFloat(n),r.toScientific(null,n).replace(".",r.localizationObject.decimalseparator);default:return t.toString()}}formatComplexNumber(t,e,i){const r=this;switch(i){case"E":case"e":case"U":case"u":case"F":case"f":case"G":case"g":case"N":case"n":case"S":case"s":return t.imaginaryPart>=0?r.formatNumber(t.realPart,e)+" + "+r.formatNumber(t.imaginaryPart,e)+"i":r.formatNumber(t.realPart,e)+" - "+r.formatNumber(Math.abs(t.imaginaryPart),e)+"i";default:return t.toString()}}toString(t,e,i){return e?this.formatNumber(t,e,i):t.toString()}applyCustomFormat(t,e){const i=this,r=(e=(e=e.replace(/_.|\[\w*\]|\*/g,"")).replace(/\?/g,"#")).split(";");if("string"==typeof t&&isNaN(t))return r[r.length-1].replace(/"/g,"").replace(/@/g,t.toString());if(t._d)i.inputFormat="integer";else{if(t.imaginaryPart)return t.toString();t=parseFloat(t),i.inputFormat="floatingPoint"}let a=new Smart.Utilities.NumericProcessor(i,"inputFormat"),n=a.createDescriptor(t);"integer"===i.inputFormat&&(n=a.round(n)),i.numericProcessor=a;const l=i.getRelevantFormatSection(r,n);if(void 0===l)return t.toString();if(-1!==l.indexOf("@"))return r[r.length-1].replace(/"/g,"").replace(/@/g,t.toString());const o=-1!==l.replace(/".*"/g,"").indexOf("%"),s=i.getTextParts(l);if(-1!==s.main.toLowerCase().indexOf("e"))return i.applyCustomExponentialFormat(n,s,a);if(-1!==s.main.indexOf("/"))return i.applyCustomFractionalFormat(n,s,a);if(o&&("integer"===i.inputFormat?n=n.multiply(100):n*=100),""===s.main){if(!o)return s.suffix;let t=n.toString();return i._ignoreMinus&&"-"===t.charAt(0)&&(t=t.slice(1)),t+s.suffix}let c=s.main.replace(/[^0#,. \/]/g,""),m=c.indexOf(".");for(-1!==m&&(c=c.substring(0,m+1)+c.substring(m+1).replace(/\./g,""),"."===c.charAt(c.length-1)&&(c=c.slice(0,c.length-1)),0===m&&(c="#"+c));","===c.charAt(c.length-1);)c=c.slice(0,c.length-1),"floatingPoint"===i.inputFormat?n/=1e3:n=n.multiply(.001);"integer"===i.inputFormat&&(n=a.round(n));const u=-1!==c.indexOf(",");c=c.replace(/,/g,"");const g=c.split("."),d=g[0];let p=g[1],h="";if(1===g.length)return"floatingPoint"===i.inputFormat&&(n=a.round(n)),h=n.toString(),i.setTextParts(i.formatWholeNumber(h,d,u),s);h=n.toString();let b=h.split("."),f=i.formatWholeNumber(b[0],d,u),_=b[1]||"";if(p.length<=_.length&&(h=parseFloat(n.toFixed(p.length)).toString(),b=h.split("."),f=i.formatWholeNumber(b[0],d,u),_=b[1]||"",_))return i.setTextParts(f+i.localizationObject.decimalseparator+_.slice(0,p.length),s);p=p.slice(_.length-p.length);let S=p.lastIndexOf("0");return-1===S?""===_?i.setTextParts(f,s):i.setTextParts(f+i.localizationObject.decimalseparator+_,s):i.setTextParts(f+i.localizationObject.decimalseparator+_+"0".repeat(S+1),s)}getRelevantFormatSection(t,e){const i=this,r=i.numericProcessor.compare(e,0,!0);if(1===r)return t[0];let a,n;return t.length>=3?(i._ignoreMinus=!0,a=1,n=2):2===t.length?(i._ignoreMinus=!0,n=0,a=1):1===t.length&&(n=0,a=0),0===r?t[n]:-1===r?t[a]:void 0}getTextParts(t){const e=t.replace(/"[^"]*"/g,""),i=t.match(/"[^"]*"/g),r=e.search(/0|#|\./g),a=Math.max(e.lastIndexOf("0"),e.lastIndexOf("#"),e.lastIndexOf("."),e.lastIndexOf(",")),n=e.slice(r,a+1);if(""===n)return{prefix:"",main:"",suffix:t.replace(/"/g,"")};let l=t.indexOf(n),o=l+n.length;if(i)for(let e=0;e<i.length;e++){const r=t.indexOf(i[e]);l>=r&&o<=r+i[e].length&&(l=t.indexOf(n,r+i[e].length),o=l+n.length)}return{prefix:t.slice(0,l).replace(/"/g,""),main:n,suffix:t.slice(o).replace(/"/g,"")}}applyCustomExponentialFormat(t,e,i){const r=this;let a,n=e.main;const l=-1!==n.indexOf(",");n=n.replace(/[^0#.eE+-]/g,"");const o=n.toLowerCase().indexOf("e");n=n.substring(0,o+1)+n.substring(o+1).replace(/[eE\.]/g,"");const s=n.charAt(o),c=n.indexOf(".");-1!==c&&(n=n.substring(0,c+1)+n.substring(c+1).replace(/\./g,"")),"."===n.charAt(n.length-1)&&(n=n.slice(0,n.length-1));const m=n.split(s);let u=m[0];const g=u.split("."),d=g[0],p=g[1],h=m[1];let b=t.toString().split(".")[0].replace(/-/,""),f=0;if("0"===b&&i.compare(t,0)){let e=d.length-1;for(;0===parseInt(t);)f++,t*=10;b=t.toString().split(".")[0].replace(/-/,""),f+=e,t*=Math.pow(10,e)}if(l&&(u=u.slice(0,1)+","+u.slice(1)),b.length<=d.length)a=r.formatNumber(t,u,void 0,!0)+s+r.formatExponent(0-f,h);else{const e=b.length-d.length;let n="floatingPoint"===r.inputFormat?t/Math.pow(10,e):t.divide(Math.pow(10,e));p||(a=r.applyThousandsSeparator(i.round(n).toString(),!l)+s+r.formatExponent(e-f,h));let o=n.toString().split(".")[1]||"";o.length===p.length?a=r.applySeparators(n,!l)+s+r.formatExponent(e-f,h):o.length<p.length?a=r.formatNumber(n,u,void 0,!0)+s+r.formatExponent(e-f,h):(n="floatingPoint"===r.inputFormat?n.toFixed(p.length):n=i.round(t.divide(Math.pow(10,e-p.length))).divide(Math.pow(10,p.length)),a=r.formatNumber(parseFloat(n),u,void 0,!0)+s+r.formatExponent(e-f,h))}return r.setTextParts(a,e)}formatExponent(t,e){let i;return-1!==["+","-"].indexOf(e.charAt(0))&&(i=e.charAt(0),(t>0&&"-"===i||t<0&&"+"===i)&&(i=void 0)),t<0&&(t=Math.abs(t),i="-"),e=e.replace(/[+-]/g,""),(i||"")+(t=this.formatNumber(t,e,void 0,!0))}formatWholeNumber(t,e,i){const r=this;let a="";if("-"===t.charAt(0)&&(r._ignoreMinus||(a="-"),t=t.slice(1)),"0"===t){if(e==="#".repeat(e.length))return a;t=""}if(e.length<=t.length)return a+r.applyThousandsSeparator(t,!i);for(let i=(e=e.slice(0,e.length-t.length)).length-1;i>=0;i--)"0"===e.charAt(i)&&(t="0"+t);return a+r.applyThousandsSeparator(t,!i)}setTextParts(t,e){return e.prefix+t+e.suffix}applyCustomFractionalFormat(t,e,i){const r=this,a=/^([0#,]+[ ]+)?([0#,]+\/[0#,]+)$/;let n,l=e.main.trim();if(!a.test(l))return t.toString();const o=a.exec(l);if(o[2]=o[2].replace(/,/g,""),"integer"===r.inputFormat){const i=o[2].split("/");return void 0===o[1]?n=r.formatNumber(t,i[0],void 0,!0)+"/"+r.formatNumber(1,i[1],void 0,!0):(n=r.formatNumber(t,o[1].trim(),void 0,!0),-1!==o[2].indexOf("0")&&(n+=" "+r.formatNumber(0,i[0],void 0,!0)+"/"+r.formatNumber(1,i[1],void 0,!0))),r.setTextParts(n,e)}if(void 0===o[1])n=(t<0?"-":"")+r.formatAsFraction(Math.abs(t),o[2]);else{const e=o[1].trim(),a=o[2];n=r.formatNumber(parseInt(t,10),e,void 0,!0)+" "+r.formatAsFraction(i.getPreciseModulo(Math.abs(t),1),a)}return r.setTextParts(n.trim(),e)}formatAsFraction(t,e){const i=this,r=e.split("/");if(0===t)return-1===e.indexOf("0")?"":i.formatNumber(0,r[0],void 0,!0)+"/"+i.formatNumber(1,r[1],void 0,!0);if(t%1==0)return i.formatNumber(t,r[0],void 0,!0)+"/"+i.formatNumber(1,r[1],void 0,!0);const a=[];i.approximateFractions(t,a);const n=r[1].length>=2?2:1;let l=[],o=[];a.forEach((function(e,i){const r=e.denominator.toString().length,a=Math.abs(t-e.numerator/e.denominator);if(void 0===l[r])return o[r]=i,void(l[r]=a);a<l[r]&&(o[r]=i,l[r]=a)}));let s=o[n]?a[o[n]]:a[o[1]];return i.formatNumber(s.numerator,r[0],void 0,!0)+"/"+i.formatNumber(s.denominator,r[1],void 0,!0)}approximateFractions(t,e){const i=[0,1],r=[1,0],a=this.getMaxNumerator(t);let n,l=t,o=NaN;for(let s=2;s<1e3;s++){const c=Math.floor(l);if(i[s]=c*i[s-1]+i[s-2],Math.abs(i[s])>a)return;if(r[s]=c*r[s-1]+r[s-2],n=i[s]/r[s],n===o)return;if(e.push({numerator:i[s],denominator:r[s]}),n===t)return;o=n,l=1/(l-c)}}getMaxNumerator(t){let e=null,i=t.toString().indexOf("E");-1===i&&(i=t.toString().indexOf("e")),e=-1===i?t.toString():t.toString().substring(0,i);let r=null;const a=e.toString().indexOf(".");-1===a?r=e:0===a?r=e.substring(1,e.length):a<e.length&&(r=e.substring(0,a)+e.substring(a+1,e.length));let n=r;const l=n.toString().length,o=t;let s=o.toString().length;0===o&&(s=0);const c=l-s;for(let t=c;t>0&&n%2==0;t--)n/=2;for(let t=c;t>0&&n%5==0;t--)n/=5;return n}exponentialToSuperscript(t){const e=t.indexOf("e"),i=t.slice(e+1).replace(/0{1,2}/,"");let r=t.slice(0,e+1);return r=r.replace("e","×10"),r+=this.toSuperscript(i),r=r.replace("+",""),r}toSuperscript(t,e){const i="-0123456789",r="⁻⁰¹²³⁴⁵⁶⁷⁸⁹";let a="";for(let n=0;n<t.length;n++)if(!0===e){const e=r.indexOf(t.charAt(n));a+=-1!==e?i[e]:t[n]}else{const e=i.indexOf(t.charAt(n));a+=-1!==e?r[e]:t[n]}return a}});