UNPKG

best-holiday

Version:

Holidays and JavaScript, now Customizable and Effortless

2 lines (1 loc) 5.6 kB
"use strict";(()=>{var b=Object.defineProperty,F=Object.defineProperties;var C=Object.getOwnPropertyDescriptors;var m=Object.getOwnPropertySymbols;var v=Object.prototype.hasOwnProperty,U=Object.prototype.propertyIsEnumerable;var w=(e,a,t)=>a in e?b(e,a,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[a]=t,d=(e,a)=>{for(var t in a||(a={}))v.call(a,t)&&w(e,t,a[t]);if(m)for(var t of m(a))U.call(a,t)&&w(e,t,a[t]);return e},D=(e,a)=>F(e,C(a));var E=(e,a)=>{for(var t in a)b(e,t,{get:a[t],enumerable:!0})};var p={};E(p,{addHoliday:()=>Y,getEasterRelatedHoliday:()=>I,getHolidaysForDay:()=>f,getHolidaysInRange:()=>x,removeHoliday:()=>k,searchHolidays:()=>B});var s=[{name:"New Year's Day",date:e=>new Date(e,0,1),type:"public",country:"global"},{name:"Christmas Day",date:e=>new Date(e,11,25),type:"religious",country:"global"},{name:"Valentine's Day",date:e=>new Date(e,1,14),type:"observance",country:"global"},{name:"Independence Day",date:e=>new Date(e,6,4),type:"public",country:"US"},{name:"Halloween",date:e=>new Date(e,9,31),type:"observance",country:"US"},{name:"Boxing Day",date:e=>new Date(e,11,26),type:"public",country:"UK, Canada"},{name:"Canada Day",date:e=>new Date(e,6,1),type:"public",country:"Canada"},{name:"Australia Day",date:e=>new Date(e,0,26),type:"public",country:"Australia"},{name:"Victoria Day",date:e=>{let a=new Date(e,4,25);for(;a.getDay()!==1;)a.setDate(a.getDate()-1);return a},type:"public",country:"Canada"},{name:"Remembrance Day",date:e=>new Date(e,10,11),type:"public",country:"Canada, UK"},{name:"St. Patrick's Day",date:e=>new Date(e,2,17),type:"observance",country:"Ireland"},{name:"Bastille Day",date:e=>new Date(e,6,14),type:"public",country:"France"},{name:"Cinco de Mayo",date:e=>new Date(e,4,5),type:"public",country:"Mexico"},{name:"Groundhog Day",date:e=>new Date(e,1,2),type:"observance",country:"US"}],y=[{name:"Easter Sunday",calculate:e=>{let a=e%19,t=Math.floor(e/100),o=e%100,n=Math.floor(t/4),c=t%4,u=Math.floor((t+8)/25),S=Math.floor((t-u+1)/3),l=(19*a+t-n-S+15)%30,h=Math.floor(o/4),M=o%4,i=(32+2*c+2*h-l-M)%7,g=Math.floor((a+11*l+22*i)/451),H=Math.floor((l+i-7*g+114)/31)-1,A=(l+i-7*g+114)%31+1;return new Date(e,H,A)},type:"religious",country:"global"},{name:"Ash Wednesday",calculate:e=>{let a=y.find(t=>t.name==="Easter Sunday").calculate(e);return r(a,-46)},type:"religious",country:"global"},{name:"Palm Sunday",calculate:e=>{let a=y.find(t=>t.name==="Easter Sunday").calculate(e);return r(a,-7)},type:"religious",country:"global"},{name:"Pentecost",calculate:e=>{let a=y.find(t=>t.name==="Easter Sunday").calculate(e);return r(a,49)},type:"religious",country:"global"},{name:"Ascension Day",calculate:e=>{let a=y.find(t=>t.name==="Easter Sunday").calculate(e);return r(a,39)},type:"religious",country:"global"},{name:"Mother's Day",calculate:e=>{let a=new Date(e,4,1),t=new Date(a.setDate(1+(7-a.getDay())%7));return new Date(t.setDate(t.getDate()+7))},type:"observance",country:"global"},{name:"Father's Day",calculate:e=>{let a=new Date(e,5,1),t=new Date(a.setDate(1+(7-a.getDay())%7));return new Date(t.setDate(t.getDate()+14))},type:"observance",country:"global"},{name:"Thanksgiving",calculate:e=>{let a=new Date(e,10,1);for(;a.getDay()!==4;)a.setDate(a.getDate()+1);return a.setDate(a.getDate()+21),a},type:"public",country:"US"},{name:"Labor Day",calculate:e=>{let a=new Date(e,8,1);for(;a.getDay()!==1;)a.setDate(a.getDate()+1);return a},type:"public",country:"US"},{name:"Memorial Day",calculate:e=>{let a=new Date(e,4,31);for(;a.getDay()!==1;)a.setDate(a.getDate()-1);return a},type:"public",country:"US"},{name:"Veterans Day",calculate:e=>new Date(e,10,11),type:"public",country:"US"},{name:"Martin Luther King Jr. Day",calculate:e=>{let a=new Date(e,0,1);for(;a.getDay()!==1;)a.setDate(a.getDate()+1);return a.setDate(a.getDate()+14),a},type:"public",country:"US"},{name:"Good Friday",calculate:e=>{let a=y.find(t=>t.name==="Easter Sunday").calculate(e);return r(a,-2)},type:"religious",country:"global"}];function r(e,a){let t=new Date(e);return t.setDate(t.getDate()+a),t}function L(e,a){return e.getFullYear()===a.getFullYear()&&e.getMonth()===a.getMonth()&&e.getDate()===a.getDate()}function f(e,a={}){let t=e.getFullYear(),o=[...s,...y];if(a.types){let n=Array.isArray(a.types)?a.types:[a.types];o=o.filter(c=>n.includes(c.type))}if(a.countries){let n=Array.isArray(a.countries)?a.countries:[a.countries];o=o.filter(c=>n.includes(c.country))}return o.filter(n=>{let c=n.calculate?n.calculate(t):typeof n.date=="function"?n.date(t):n.date;return L(c,e)}).map(n=>D(d({},n),{date:n.calculate?n.calculate(t):typeof n.date=="function"?n.date(t):n.date}))}function x(e,a,t={}){let o=[],n=new Date(e);for(;n<=a;){let c=f(n,t);c.length>0&&o.push({date:new Date(n),holidays:c}),n=r(n,1)}return o}function B(e,a,t={}){let o=e.toLowerCase(),n=[...s,...y];if(t.types){let c=Array.isArray(t.types)?t.types:[t.types];n=n.filter(u=>c.includes(u.type))}if(t.countries){let c=Array.isArray(t.countries)?t.countries:[t.countries];n=n.filter(u=>c.includes(u.country))}return n.filter(c=>c.name.toLowerCase().includes(o)||c.type.toLowerCase().includes(o)||c.country.toLowerCase().includes(o)).map(c=>D(d({},c),{date:c.calculate?c.calculate(a):typeof c.date=="function"?c.date(a):c.date}))}function I(e,a=0){let t=y.find(o=>o.name==="Easter Sunday").calculate(e);return r(t,a)}function Y(e){if(typeof e.date=="function"||typeof e.calculate=="function")s.push(e);else throw new Error("Holiday must have a date function or calculate function")}function k(e){let a=s.findIndex(t=>t.name===e);a!==-1&&s.splice(a,1)}window.BestHoliday=p;})();