adhan-extended
Version:
High precision Islamic prayer time library (extended)
3 lines (2 loc) • 16.5 kB
JavaScript
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).adhan={})}(this,(function(t){"use strict";function e(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function n(t){for(var n=1;n<arguments.length;n++){var a=null!=arguments[n]?arguments[n]:{};n%2?e(Object(a),!0).forEach((function(e){s(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):e(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){for(var n=0;n<e.length;n++){var a=e[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,a.key,a)}}function i(t,e,n){return e&&r(t.prototype,e),n&&r(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function s(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var o={Shafi:"shafi",Hanafi:"hanafi"};var h={MiddleOfTheNight:"middleofthenight",SeventhOfTheNight:"seventhofthenight",TwilightAngle:"twilightangle",recommended:function(t){return t.latitude>48?h.SeventhOfTheNight:h.MiddleOfTheNight}},u=i((function t(e,n){a(this,t),this.latitude=e,this.longitude=n})),l={Nearest:"nearest",Up:"up",None:"none"};function d(t,e){var n=new Date(t.getTime());if(n.setDate(t.getDate()+e),0!==e)for(;n.toDateString()===t.toDateString();)n=new Date(n.valueOf()+e/Math.abs(e)*36e5);return n}function c(t,e){return g(t,60*e)}function g(t,e){return new Date(t.getTime()+1e3*e)}function f(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l.Nearest,n=t.getUTCSeconds(),a=n>=30?60-n:-1*n;return e===l.Up?a=60-n:e===l.None&&(a=0),g(t,a)}function m(t){for(var e=0,n=[31,T.isLeapYear(t.getFullYear())?29:28,31,30,31,30,31,31,30,31,30,31],a=0;a<t.getMonth();a++)e+=n[a];return e+=t.getDate()}function M(t){return t instanceof Date&&!isNaN(t.valueOf())}function v(t){return t*Math.PI/180}function p(t){return 180*t/Math.PI}function b(t,e){return t-e*Math.floor(t/e)}function w(t){return b(t,360)}var A,j={General:"general",Ahmer:"ahmer",Abyad:"abyad"},T={meanSolarLongitude:function(t){var e=t;return w(280.4664567+36000.76983*e+3032e-7*Math.pow(e,2))},meanLunarLongitude:function(t){return w(218.3165+481267.8813*t)},ascendingLunarNodeLongitude:function(t){var e=t;return w(125.04452-1934.136261*e+.0020708*Math.pow(e,2)+Math.pow(e,3)/45e4)},meanSolarAnomaly:function(t){var e=t;return w(357.52911+35999.05029*e-1537e-7*Math.pow(e,2))},solarEquationOfTheCenter:function(t,e){var n=t,a=v(e);return(1.914602-.004817*n-14e-6*Math.pow(n,2))*Math.sin(a)+(.019993-101e-6*n)*Math.sin(2*a)+289e-6*Math.sin(3*a)},apparentSolarLongitude:function(t,e){var n=t,a=125.04-1934.136*n;return w(e+T.solarEquationOfTheCenter(n,T.meanSolarAnomaly(n))-.00569-.00478*Math.sin(v(a)))},meanObliquityOfTheEcliptic:function(t){var e=t;return 23.439291-.013004167*e-1.639e-7*Math.pow(e,2)+5.036e-7*Math.pow(e,3)},apparentObliquityOfTheEcliptic:function(t,e){var n=125.04-1934.136*t;return e+.00256*Math.cos(v(n))},meanSiderealTime:function(t){var e=t;return w(280.46061837+360.98564736629*(36525*e+2451545-2451545)+387933e-9*Math.pow(e,2)-Math.pow(e,3)/3871e4)},nutationInLongitude:function(t,e,n,a){var r=e,i=n,s=a;return-17.2/3600*Math.sin(v(s))-1.32/3600*Math.sin(2*v(r))-.23/3600*Math.sin(2*v(i))+.21/3600*Math.sin(2*v(s))},nutationInObliquity:function(t,e,n,a){var r=e,i=n,s=a;return 9.2/3600*Math.cos(v(s))+.57/3600*Math.cos(2*v(r))+.1/3600*Math.cos(2*v(i))-.09/3600*Math.cos(2*v(s))},altitudeOfCelestialBody:function(t,e,n){var a=t,r=e,i=n,s=Math.sin(v(a))*Math.sin(v(r)),o=Math.cos(v(a))*Math.cos(v(r))*Math.cos(v(i));return p(Math.asin(s+o))},approximateTransit:function(t,e,n){return b((n+-1*t-e)/360,1)},correctedTransit:function(t,e,n,a,r,i){var s,o=t,h=a,u=r,l=i,d=-1*e,c=w(n+360.985647*o),g=w(T.interpolateAngles(h,u,l,o));return 24*(o+((s=c-d-g)>=-180&&s<=180?s:s-360*Math.round(s/360))/-360)},correctedHourAngle:function(t,e,n,a,r,i,s,o,h,u,l){var d=t,c=e,g=r,f=i,m=s,M=o,b=h,A=u,j=l,S=-1*n.longitude,y=Math.sin(v(c))-Math.sin(v(n.latitude))*Math.sin(v(b)),D=Math.cos(v(n.latitude))*Math.cos(v(b)),O=p(Math.acos(y/D)),N=a?d+O/360:d-O/360,P=w(g+360.985647*N),L=w(T.interpolateAngles(f,m,M,N)),C=T.interpolate(b,A,j,N),F=P-S-L;return 24*(N+(T.altitudeOfCelestialBody(n.latitude,C,F)-c)/(360*Math.cos(v(C))*Math.cos(v(n.latitude))*Math.sin(v(F))))},interpolate:function(t,e,n,a){var r=t-e,i=n-t;return t+a/2*(r+i+a*(i-r))},interpolateAngles:function(t,e,n,a){var r=w(t-e),i=w(n-t);return t+a/2*(r+i+a*(i-r))},julianDay:function(t,e,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,r=Math.trunc,i=r(e>2?t:t-1),s=r(e>2?e:e+12),o=n+a/24,h=r(i/100),u=r(2-h+r(h/4)),l=r(365.25*(i+4716)),d=r(30.6001*(s+1));return l+d+o+u-1524.5},julianCentury:function(t){return(t-2451545)/36525},isLeapYear:function(t){return t%4==0&&(t%100!=0||t%400==0)},seasonAdjustedMorningTwilight:function(t,e,n,a){var r,i=75+28.65/55*Math.abs(t),s=75+19.44/55*Math.abs(t),o=75+32.74/55*Math.abs(t),h=75+48.1/55*Math.abs(t),u=(r=T.daysSinceSolstice(e,n,t))<91?i+(s-i)/91*r:r<137?s+(o-s)/46*(r-91):r<183?o+(h-o)/46*(r-137):r<229?h+(o-h)/46*(r-183):r<275?o+(s-o)/46*(r-229):s+(i-s)/91*(r-275);return g(a,Math.round(-60*u))},seasonAdjustedEveningTwilight:function(t,e,n,a,r){var i,s,o,h;r===j.Ahmer?(i=62+17.4/55*Math.abs(t),s=62-7.16/55*Math.abs(t),o=62+5.12/55*Math.abs(t),h=62+19.44/55*Math.abs(t)):r===j.Abyad?(i=75+25.6/55*Math.abs(t),s=75+7.16/55*Math.abs(t),o=75+36.84/55*Math.abs(t),h=75+1.488*Math.abs(t)):(i=75+25.6/55*Math.abs(t),s=75+2.05/55*Math.abs(t),o=75-9.21/55*Math.abs(t),h=75+6.14/55*Math.abs(t));var u,l=(u=T.daysSinceSolstice(e,n,t))<91?i+(s-i)/91*u:u<137?s+(o-s)/46*(u-91):u<183?o+(h-o)/46*(u-137):u<229?h+(o-h)/46*(u-183):u<275?o+(s-o)/46*(u-229):s+(i-s)/91*(u-275);return g(a,Math.round(60*l))},daysSinceSolstice:function(t,e,n){var a=0,r=T.isLeapYear(e)?173:172,i=T.isLeapYear(e)?366:365;return n>=0?(a=t+10,a>=i&&(a-=i)):(a=t-r,a<0&&(a+=i)),a}},S=i((function t(e){a(this,t);var n=T.julianCentury(e),r=T.meanSolarLongitude(n),i=T.meanLunarLongitude(n),s=T.ascendingLunarNodeLongitude(n),o=v(T.apparentSolarLongitude(n,r)),h=T.meanSiderealTime(n),u=T.nutationInLongitude(n,r,i,s),l=T.nutationInObliquity(n,r,i,s),d=T.meanObliquityOfTheEcliptic(n),c=v(T.apparentObliquityOfTheEcliptic(n,d));this.declination=p(Math.asin(Math.sin(c)*Math.sin(o))),this.rightAscension=w(p(Math.atan2(Math.cos(c)*Math.sin(o),Math.cos(o)))),this.apparentSiderealTime=h+3600*u*Math.cos(v(d+l))/3600})),y=function(){function t(e,n){a(this,t);var r=T.julianDay(e.getFullYear(),e.getMonth()+1,e.getDate(),0);this.observer=n,this.solar=new S(r),this.prevSolar=new S(r-1),this.nextSolar=new S(r+1);var i=T.approximateTransit(n.longitude,this.solar.apparentSiderealTime,this.solar.rightAscension),s=-50/60;this.approxTransit=i,this.transit=T.correctedTransit(i,n.longitude,this.solar.apparentSiderealTime,this.solar.rightAscension,this.prevSolar.rightAscension,this.nextSolar.rightAscension),this.sunrise=T.correctedHourAngle(i,s,n,!1,this.solar.apparentSiderealTime,this.solar.rightAscension,this.prevSolar.rightAscension,this.nextSolar.rightAscension,this.solar.declination,this.prevSolar.declination,this.nextSolar.declination),this.sunset=T.correctedHourAngle(i,s,n,!0,this.solar.apparentSiderealTime,this.solar.rightAscension,this.prevSolar.rightAscension,this.nextSolar.rightAscension,this.solar.declination,this.prevSolar.declination,this.nextSolar.declination)}return i(t,[{key:"hourAngle",value:function(t,e){return T.correctedHourAngle(this.approxTransit,t,this.observer,e,this.solar.apparentSiderealTime,this.solar.rightAscension,this.prevSolar.rightAscension,this.nextSolar.rightAscension,this.solar.declination,this.prevSolar.declination,this.nextSolar.declination)}},{key:"afternoon",value:function(t){var e=Math.abs(this.observer.latitude-this.solar.declination),n=t+Math.tan(v(e)),a=p(Math.atan(1/n));return this.hourAngle(a,!0)}}]),t}(),D={AqrabBalad:"AqrabBalad",AqrabYaum:"AqrabYaum",Unresolved:"Unresolved"},O=function(t){return!isNaN(t.sunrise)&&!isNaN(t.sunset)},N=function t(e,n){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;if(a>Math.ceil(182.5))return null;var i=new Date(n.getTime());i.setDate(i.getDate()+r*a);var s=d(i,1),o=new y(i,e),h=new y(s,e);return O(o)&&O(h)?{date:n,tomorrow:s,coordinates:e,solarTime:o,tomorrowSolarTime:h}:t(e,n,a+(r>0?0:1),-r)},P=function t(e,a,r){var i=new y(a,n(n({},e),{},{latitude:r})),s=d(a,1),o=new y(s,n(n({},e),{},{latitude:r}));return O(i)&&O(o)?{date:a,tomorrow:s,coordinates:new u(r,e.longitude),solarTime:i,tomorrowSolarTime:o}:Math.abs(r)>=65?t(e,a,r-.5*Math.sign(r)):null},L=function(t,e,n){var a={date:e,tomorrow:d(e,1),coordinates:n,solarTime:new y(e,n),tomorrowSolarTime:new y(d(e,1),n)};switch(t){case D.AqrabYaum:return N(n,e)||a;case D.AqrabBalad:var r=n.latitude;return P(n,e,r-.5*Math.sign(r))||a;default:return a}},C=function(){function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,u=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;a(this,t),s(this,"madhab",o.Shafi),s(this,"highLatitudeRule",h.MiddleOfTheNight),s(this,"adjustments",{fajr:0,sunrise:0,dhuhr:0,asr:0,maghrib:0,sunset:0,isha:0}),s(this,"methodAdjustments",{fajr:0,sunrise:0,dhuhr:0,asr:0,maghrib:0,sunset:0,isha:0}),s(this,"polarCircleResolution",D.Unresolved),s(this,"rounding",l.Nearest),s(this,"shafaq",j.General),this.method=e,this.fajrAngle=n,this.ishaAngle=r,this.ishaInterval=i,this.maghribAngle=u,null===this.method&&(this.method="Other")}return i(t,[{key:"nightPortions",value:function(){switch(this.highLatitudeRule){case h.MiddleOfTheNight:return{fajr:.5,isha:.5};case h.SeventhOfTheNight:return{fajr:1/7,isha:1/7};case h.TwilightAngle:return{fajr:this.fajrAngle/60,isha:this.ishaAngle/60};default:throw"Invalid high latitude rule found when attempting to compute night portions: ".concat(this.highLatitudeRule)}}}]),t}(),F={MuslimWorldLeague:function(){var t=new C("MuslimWorldLeague",18,17);return t.methodAdjustments.dhuhr=1,t},Egyptian:function(){var t=new C("Egyptian",19.5,17.5);return t.methodAdjustments.dhuhr=1,t},Karachi:function(){var t=new C("Karachi",18,18);return t.methodAdjustments.dhuhr=1,t},UmmAlQura:function(){return new C("UmmAlQura",18.5,0,90)},Dubai:function(){var t=new C("Dubai",18.2,18.2);return t.methodAdjustments=n(n({},t.methodAdjustments),{},{sunrise:-3,dhuhr:3,asr:3,sunset:3,maghrib:3}),t},MoonsightingCommittee:function(){var t=new C("MoonsightingCommittee",18,18);return t.methodAdjustments=n(n({},t.methodAdjustments),{},{dhuhr:5,sunset:3,maghrib:3}),t},NorthAmerica:function(){var t=new C("NorthAmerica",15,15);return t.methodAdjustments.dhuhr=1,t},Kuwait:function(){return new C("Kuwait",18,17.5)},Qatar:function(){return new C("Qatar",18,0,90)},Singapore:function(){var t=new C("Singapore",20,18);return t.methodAdjustments.dhuhr=1,t.rounding=l.Up,t},Tehran:function(){return new C("Tehran",17.7,14,0,4.5)},Turkey:function(){var t=new C("Turkey",18,17);return t.methodAdjustments=n(n({},t.methodAdjustments),{},{sunrise:-7,dhuhr:5,asr:4,sunset:7,maghrib:7}),t},Other:function(){return new C("Other",0,0)}},Y={Fajr:"fajr",Sunrise:"sunrise",Dhuhr:"dhuhr",Asr:"asr",Maghrib:"maghrib",Isha:"isha",None:"none"},q=function(){function t(e){return a(this,t),this.hours=Math.floor(e),this.minutes=Math.floor(60*(e-this.hours)),this.seconds=Math.floor(60*(e-(this.hours+this.minutes/60))*60),this}return i(t,[{key:"utcDate",value:function(t,e,n){return new Date(Date.UTC(t,e,n,this.hours,this.minutes,this.seconds))}}]),t}(),x=function(){function t(e,n,r){a(this,t),this.coordinates=e,this.date=n,this.calculationParameters=r;var i,s,h,u,l,v,p,b=new y(n,e);h=new q(b.transit).utcDate(n.getFullYear(),n.getMonth(),n.getDate()),s=new q(b.sunrise).utcDate(n.getFullYear(),n.getMonth(),n.getDate()),l=new q(b.sunset).utcDate(n.getFullYear(),n.getMonth(),n.getDate());var w=d(n,1),A=new y(w,e),j=r.polarCircleResolution;if((!M(s)||!M(l)||isNaN(A.sunrise))&&j!==D.Unresolved){var S,O,N,P=L(j,n,e);b=P.solarTime,A=P.tomorrowSolarTime;var C=[n.getFullYear(),n.getMonth(),n.getDate()];h=(S=new q(b.transit)).utcDate.apply(S,C),s=(O=new q(b.sunrise)).utcDate.apply(O,C),l=(N=new q(b.sunset)).utcDate.apply(N,C)}u=new q(b.afternoon(function(t){switch(t){case o.Shafi:return 1;case o.Hanafi:return 2;default:throw"Invalid Madhab"}}(r.madhab))).utcDate(n.getFullYear(),n.getMonth(),n.getDate());var F=new q(A.sunrise).utcDate(w.getFullYear(),w.getMonth(),w.getDate()),Y=(Number(F)-Number(l))/1e3;i=new q(b.hourAngle(-1*r.fajrAngle,!1)).utcDate(n.getFullYear(),n.getMonth(),n.getDate()),"MoonsightingCommittee"===r.method&&e.latitude>=55&&(i=g(s,-(Y/7)));var x=function(){if("MoonsightingCommittee"===r.method)return T.seasonAdjustedMorningTwilight(e.latitude,m(n),n.getFullYear(),s);var t=r.nightPortions().fajr;return g(s,-(t*Y))}();if((isNaN(i.getTime())||x>i)&&(i=x),r.ishaInterval>0)p=c(l,r.ishaInterval);else{p=new q(b.hourAngle(-1*r.ishaAngle,!0)).utcDate(n.getFullYear(),n.getMonth(),n.getDate()),"MoonsightingCommittee"===r.method&&e.latitude>=55&&(p=g(l,Y/7));var I=function(){if("MoonsightingCommittee"===r.method)return T.seasonAdjustedEveningTwilight(e.latitude,m(n),n.getFullYear(),l,r.shafaq);var t=r.nightPortions().isha;return g(l,t*Y)}();(isNaN(p.getTime())||I<p)&&(p=I)}if(v=l,r.maghribAngle){var E=new q(b.hourAngle(-1*r.maghribAngle,!0)).utcDate(n.getFullYear(),n.getMonth(),n.getDate());l<E&&p>E&&(v=E)}var k=(r.adjustments.fajr||0)+(r.methodAdjustments.fajr||0),U=(r.adjustments.sunrise||0)+(r.methodAdjustments.sunrise||0),R=(r.adjustments.dhuhr||0)+(r.methodAdjustments.dhuhr||0),H=(r.adjustments.asr||0)+(r.methodAdjustments.asr||0),B=(r.adjustments.maghrib||0)+(r.methodAdjustments.maghrib||0),Q=(r.adjustments.sunset||0)+(r.methodAdjustments.sunset||0),K=(r.adjustments.isha||0)+(r.methodAdjustments.isha||0);this.fajr=f(c(i,k),r.rounding),this.sunrise=f(c(s,U),r.rounding),this.dhuhr=f(c(h,R),r.rounding),this.asr=f(c(u,H),r.rounding),this.sunset=f(c(l,Q),r.rounding),this.maghrib=f(c(v,B),r.rounding),this.isha=f(c(p,K),r.rounding)}return i(t,[{key:"timeForPrayer",value:function(t){return t===Y.Fajr?this.fajr:t===Y.Sunrise?this.sunrise:t===Y.Dhuhr?this.dhuhr:t===Y.Asr?this.asr:t===Y.Maghrib?this.maghrib:t===Y.Isha?this.isha:null}},{key:"currentPrayer",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date;return t>=this.isha?Y.Isha:t>=this.maghrib?Y.Maghrib:t>=this.asr?Y.Asr:t>=this.dhuhr?Y.Dhuhr:t>=this.sunrise?Y.Sunrise:t>=this.fajr?Y.Fajr:Y.None}},{key:"nextPrayer",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date;return t>=this.isha?Y.None:t>=this.maghrib?Y.Isha:t>=this.asr?Y.Maghrib:t>=this.dhuhr?Y.Asr:t>=this.sunrise?Y.Dhuhr:t>=this.fajr?Y.Sunrise:Y.Fajr}}]),t}();t.MidnightMethod=void 0,(A=t.MidnightMethod||(t.MidnightMethod={})).SunsetToSunrise="SunsetToSunrise",A.SunsetToFajr="SunsetToFajr";var I=i((function e(n,r){a(this,e);var i,s=d(n.date,1),o=new x(n.coordinates,s,n.calculationParameters);switch(r){case t.MidnightMethod.SunsetToFajr:i=o.fajr.getTime();break;case t.MidnightMethod.SunsetToSunrise:default:i=o.sunrise.getTime()}this.nightDuration=i-n.sunset.getTime();var h=this.nightDuration/1e3;this.firstThirdOfTheNight=f(g(n.sunset,h*(1/3))),this.middleOfTheNight=f(g(n.sunset,h/2)),this.lastThirdOfTheNight=f(g(n.sunset,h*(2/3)))}));t.CalculationMethod=F,t.CalculationParameters=C,t.Coordinates=u,t.HighLatitudeRule=h,t.Madhab=o,t.PolarCircleResolution=D,t.Prayer=Y,t.PrayerTimes=x,t.Qibla=function(t){var e=new u(21.4225241,39.8261818),n=Math.sin(v(e.longitude)-v(t.longitude)),a=Math.cos(v(t.latitude))*Math.tan(v(e.latitude)),r=Math.sin(v(t.latitude))*Math.cos(v(e.longitude)-v(t.longitude));return w(p(Math.atan2(n,a-r)))},t.Rounding=l,t.Shafaq=j,t.SunnahTimes=I,Object.defineProperty(t,"__esModule",{value:!0})}));
//# sourceMappingURL=adhan.umd.min.js.map