{"version":3,"sources":["node_modules/browser-pack/_prelude.js","package.json","node_modules/object-assign/index.js","src/js/calendar.js","src/js/utils.js"],"names":["toObject","val","undefined","TypeError","Object","shouldUseNative","assign","test1","String","getOwnPropertyNames","test2","i","fromCharCode","map","n","join","test3","split","forEach","letter","keys","err","getOwnPropertySymbols","hasOwnProperty","prototype","propIsEnumerable","propertyIsEnumerable","module","exports","target","source","from","symbols","to","s","arguments","length","key","call","eventCalendar","_ref","createDOM","createTable","appendToDOM","el","classList","add","prefix","appendChild","table","createEl","className","thead","tbody","innerHTML","createTableHead","createCaptionWithControls","caption","createControls","captionText","prev","next","textContent","addEventListener","goToPreviousMonth","goToNextMonth","month","value","newMonth","_utils","date","state","currentTime","setState","valueOf","emit","evts","DID_CHANGE_MONTH","api","previous","subtractMonth","following","addMonth","newState","WILL_CHANGE_STATE","_objectAssign2","render","setLocale","str","isString","Error","locale","getElementsByTagName","WILL_RENDER","newTbody","createMonth","currMonth","lastMonth","capitalize","i18n","getMonth","e","replaceChild","DID_RENDER","tag","options","node","document","createElement","rowTmpl","range","getWeekDay","thTmpl","createTableCell","day","events","filter","event","isSameDay","timestamp","sort","event1","event2","Date","getTime","tdTmpl","createTableRow","cell","createMonthArray","days","curr","startMonth","startDate","weekday","getWeekStart","currentDate","_ref22","nextMonth","date2compare","currentMonth","push","dayOfMonth","isOtherMonth","addDay","destroy","callback","firstChild","removeChild","_events","isFunction","cells","substr","eventTmpl","eventTemplate","time","isTwelveHours","name","link","_ref3","tdTemplate","active","passive","links","on","concat","_toConsumableArray","off","cb","data","selector","debug","initLocale","userLang","_ref$i18n","initialState","_ref$state","lang","index","this","weekdays","months","startOfWeek","twelveHourFormat","errors","INVALID_SELECTOR","querySelector","SELECTOR_DID_NOT_MATCH","console","timeEnd","now","INITIALIZED","en","sv","version","_packageJson2","find","array","getPredicate","item","RegExp","test","res","some","mapBy","Array","isArray","reduce","slice","toUpperCase","num","isNumber","isNaN","arr","fn","isUndefined","zeroPad","valiDate","d","toString","getSet","hasValue","method","kronos","year","diff","getDay","twelveHours","h","getHours","postfix","getMinutes","compareDate","every"],"mappings":"AAAA;AEMA,YAMA,SAASA,UAASC,GACjB,GAAY,OAARA,OAAwBC,KAARD,EACnB,KAAM,IAAIE,WAAU,wDAGrB,OAAOC,QAAOH,GAGf,QAASI,mBACR,IACC,IAAKD,OAAOE,OACX,OAAO,CAMR,IAAIC,GAAQ,GAAIC,QAAO,MAEvB,IADAD,EAAM,GAAK,KACkC,MAAzCH,OAAOK,oBAAoBF,GAAO,GACrC,OAAO,CAKR,KAAK,GADDG,MACKC,EAAI,EAAGA,EAAI,GAAIA,IACvBD,EAAM,IAAMF,OAAOI,aAAaD,IAAMA,CAKvC,IAAwB,eAHXP,OAAOK,oBAAoBC,GAAOG,IAAI,SAAUC,GAC5D,MAAOJ,GAAMI,KAEHC,KAAK,IACf,OAAO,CAIR,IAAIC,KAIJ,OAHA,uBAAuBC,MAAM,IAAIC,QAAQ,SAAUC,GAClDH,EAAMG,GAAUA,IAGf,yBADEf,OAAOgB,KAAKhB,OAAOE,UAAWU,IAAQD,KAAK,IAM9C,MAAOM,GAER,OAAO,GApDT,GAAIC,uBAAwBlB,OAAOkB,sBAC/BC,eAAiBnB,OAAOoB,UAAUD,eAClCE,iBAAmBrB,OAAOoB,UAAUE,oBAsDxCC,QAAOC,QAAUvB,kBAAoBD,OAAOE,OAAS,SAAUuB,EAAQC,GAKtE,IAAK,GAJDC,GAEAC,EADAC,EAAKjC,SAAS6B,GAGTK,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAC1CH,EAAO3B,OAAO+B,UAAUD,GAExB,KAAK,GAAIG,KAAON,GACXR,eAAee,KAAKP,EAAMM,KAC7BJ,EAAGI,GAAON,EAAKM,GAIjB,IAAIf,sBAAuB,CAC1BU,EAAUV,sBAAsBS,EAChC,KAAK,GAAIpB,GAAI,EAAGA,EAAIqB,EAAQI,OAAQzB,IAC/Bc,iBAAiBa,KAAKP,EAAMC,EAAQrB,MACvCsB,EAAGD,EAAQrB,IAAMoB,EAAKC,EAAQrB,MAMlC,MAAOsB;;ADxFR;;8NEgCA,QAASM,eAAcC,GA2BrB,QAASC,KACPC,IACAC,IAGF,QAASA,KACPC,EAAGC,UAAUC,IAAIC,OAAS,eAC1BH,EAAGI,YAAYC,GAGjB,QAASP,KACPO,EAAQC,EAAS,SAAWC,UAAWJ,QACvC,IAAMK,GAAQF,EAAS,QACvBG,GAAQH,EAAS,SAEjBE,EAAME,UAAYC,IAClBN,EAAMD,YAAYQ,KAClBP,EAAMD,YAAYI,GAClBH,EAAMD,YAAYK,GAGpB,QAASG,KACP,GAAMC,GAAUP,EAAS,UAQzB,OAPAQ,KACAC,EAAcT,EAAS,OAASC,UAAWJ,OAAS,cAEpDU,EAAQT,YAAYY,GACpBH,EAAQT,YAAYa,GACpBJ,EAAQT,YAAYW,GAEbF,EAGT,QAASC,KACPE,EAAOV,EAAS,UAAYY,YAAa,IAAKX,UAAWJ,OAAS,eAClEc,EAAOX,EAAS,UAAYY,YAAa,IAAKX,UAAWJ,OAAS,eAElEa,EAAKG,iBAAiB,QAASC,GAC/BH,EAAKE,iBAAiB,QAASE,GAGjC,QAASC,GAAMC,GACb,GAAIA,EAAO,CACT,GAAMC,IAAW,EAAAC,OAAAC,MAAKC,EAAMC,aAAaN,MAAMC,EAAQ,EAMvD,OALAM,IACED,YAAaJ,EAASM,YAGxBC,EAAKC,KAAKC,iBAAkBT,EAASF,QAAU,GACxCY,EAGT,OAAO,EAAAT,OAAAC,MAAKC,EAAMC,aAAaN,QAAU,EAG3C,QAASF,KACP,GAAMe,IAAW,EAAAV,OAAAC,MAAKC,EAAMC,aAAaQ,eACzCP,IACED,YAAaO,EAASL,YAExBC,EAAKC,KAAKC,iBAAkBE,EAASb,SAGvC,QAASD,KACP,GAAMgB,IAAY,EAAAZ,OAAAC,MAAKC,EAAMC,aAAaU,UAE1CT,IACED,YAAaS,EAAUP,YAGzBC,EAAKC,KAAKC,iBAAkBI,EAAUf,SAGxC,QAASO,GAASU,GAChBR,EAAKC,KAAKQ,kBAAmBD,GAE7BZ,GAAQ,EAAAc,eAAA,YAAWd,EAAOY,GAC1BG,IAGF,QAASC,GAAUC,GACjB,KAAK,EAAAnB,OAAAoB,UAASD,IAAuB,IAAfA,EAAIpD,OACxB,KAAMsD,OAAM,iEAGdC,GAASH,EACT5C,EAAGgD,qBAAqB,SAAS,GAAGtC,UAAYC,IAChD+B,IAGF,QAASA,KACPX,EAAKC,KAAKiB,YAEV,IAAMC,GAAW5C,EAAS,SAAWI,UAAWyC,MAC1CC,GAAY,EAAA3B,OAAAC,MAAKC,EAAMC,aAAaN,QACpC+B,EAA0B,IAAdD,EAAkB,GAAKA,EAAY,CAGrD,KACEpC,EAAKE,YAAc,MAAO,EAAAO,OAAA6B,YAAWC,EAAKC,SAASH,IACnDtC,EAAYG,aAAc,EAAAO,OAAA6B,YAAWC,EAAKC,SAASJ,IACnDnC,EAAKC,aAAc,EAAAO,OAAA6B,YAAWC,EAAKC,UAAUJ,EAAY,GAAK,KAAO,KACrE,MAAOK,GACP,KAAO,IAAIX,OAAMO,EAAYI,GAG/BpD,EAAMqD,aAAaR,EAAUzC,GAC7BA,EAAQyC,EAERnB,EAAKC,KAAK2B,YAGZ,QAASrD,GAASsD,MAAKC,GAAOtE,UAAAC,QAAA,OAAAlC,KAAAiC,UAAA,MAAKA,UAAA,GAC3BuE,EAAOC,SAASC,cAAcJ,EAIpC,OAHApG,QAAOgB,KAAKqF,GAASvF,QAAQ,SAACmB,GAC5BqE,EAAKrE,GAAOoE,EAAQpE,KAEfqE,EAGT,QAASnD,KAMP,MAAOsD,IALM,EAAAxC,OAAAyC,OAAM,GAChBjG,IAAI,SAACF,UAAM,EAAA0D,OAAA6B,YAAWC,EAAKY,WAAWpG,MACtCE,IAAImG,GACJjG,KAAK,KAKV,QAASkG,GAAgBC,GACvB,GAAMC,GAAS5C,EAAM4C,OAClBC,OAAO,SAACC,GACP,OAAO,EAAAhD,OAAAC,MAAK+C,EAAM/C,MAAMgD,UAAUJ,EAAIK,aAEvCC,KAAK,SAACC,EAAQC,GACb,MAAO,IAAIC,MAAKF,EAAOnD,MAAMsD,UAAY,GAAID,MAAKD,EAAOpD,MAAMsD,WAGnE,OAAOC,IAASX,IAAAA,EAAKC,OAAAA,IAGvB,QAASW,GAAeC,EAAMpH,GAE5B,MAAIA,GAAI,EACCoH,EAGFlB,EAAQkB,GAGjB,QAAShC,KACP,MAAOiC,KACJnH,IAAIoG,GACJpG,IAAIiH,GACJ/G,KAAK,IAGV,QAASiH,KA4BP,IA3BA,GAAMC,MACAC,GAAO,EAAA7D,OAAAC,MAAKC,EAAMC,aAClB2D,EAAaD,EAAKhE,QAClBkE,GAAY,EAAA/D,OAAAC,MAAK4D,GAAM5D,KAAK,GAAG+D,QAAQlC,EAAKmC,gBAC5CC,GAAc,EAAAlE,OAAAC,MAAK8D,KACM,WAC7B,MAAmB,KAAfD,GACM,GAAI,GAEK,KAAfA,GACM,GAAI,IAENA,EAAa,EAAGA,EAAa,4BAPhClC,EAASuC,EAAA,GAAEC,EAASD,EAAA,GAU3B,SAA+BE,GAC7B,GAAMC,GAAeD,EAAaxE,OAElC,OAAIyE,KAAiB1C,GAAa0C,IAAiBR,IAI/CQ,IAAiBF,EACZC,EAAaL,YAAclC,EAAKmC,mBADzC,KAK2BC,IAC3BN,EAAKW,MACHC,WAAYN,EAAYjE,OACxBiD,UAAWgB,EAAY7D,UACvBoE,aAAcP,EAAYrE,UAAYiE,IAExCI,EAAYQ,QAGd,OAAOd,GAGT,QAASe,GAAQC,GACf,GAAIrG,EAAI,CAGN,IADA,GAAIsG,GAAatG,EAAGsG,WACbA,GACLtG,EAAGuG,YAAYD,GACfA,EAAatG,EAAGsG,UAIlB9I,QAAOgB,KAAKgI,GAASlI,QAAQ,SAACmG,GAC5B+B,EAAQ/B,GAAS,OAInBzE,EAAK,KACL2B,EAAQ,KACRtB,EAAQ,KACRU,EAAc,KACdN,EAAQ,KACRO,EAAO,KACPC,EAAO,KACPiB,EAAM,MAGJ,EAAAT,OAAAgF,YAAWJ,IACbA,IAQJ,QAASpC,GAAQyC,GACf,MAAA,OAAcA,EAGhB,QAAStC,GAAOE,GACd,MAAA,cACgBnE,OAAM,qBAChBmE,EAAIqC,OAAO,EAAG,GAAE,sBAAsBrC,EAAIqC,OAAO,EAAG,GAAE,wBAAwBrC,EAAIqC,OAAO,GAAE,6BAInG,QAASC,GAAUnC,GACjB,IAAI,EAAAhD,OAAAgF,YAAWI,GACb,MAAOA,GAAcpC,EAGvB,IAAMvD,IAAiB,EAAAO,OAAAC,MAAK+C,EAAM/C,MAAMoF,KAAKvD,EAAKwD,iBAAgB,IAAItC,EAAMuC,KACtEpD,EAAMa,EAAMwC,KAAO,IAAM,OACzBA,EAAOxC,EAAMwC,KAAO,SAAWxC,EAAMwC,KAAO,IAAM,EAExD,OAAA,IACMrD,EAAG,WAAWzD,OAAM,kBAAkB8G,EAAI,WAAW/F,EAAW,yCACvC,EAAAO,OAAAC,MAAK+C,EAAM/C,MAAMoF,KAAKvD,EAAKwD,iBAAgB,6CAC3CtC,EAAMuC,KAAI,6DAEnCpD,EAAG,IAGX,QAASqB,GAAOiC,MAAE5C,GAAF4C,EAAE5C,IAAKC,EAAP2C,EAAO3C,MACrB,KAAI,EAAA9C,OAAAgF,YAAWU,GACb,MAAOA,IAAa7C,IAAAA,EAAKC,OAAAA,GAG3B,IAAM6C,GAAS7C,EAAO/E,OAASW,OAAS,iBAAmB,GACrDkH,EAAU/C,EAAI4B,aAAe/F,OAAS,kBAAoB,GAC1DmH,EAAQ/C,EAAOtG,IAAI2I,GAAWzI,KAAK,GAEzC,OAAA,cACgBgC,OAAM,UAAUiH,EAAM,IAAIC,EAAO,eAC1CC,EAAK,0BACOnH,OAAM,iBAAiBmE,EAAI2B,WAAU,uBAQ1D,QAASsB,GAAG9C,EAAO4B,GAMjB,MALKG,GAAQ/B,KACX+B,EAAQ/B,OAEV+B,EAAQ/B,MAAM+C,OAAAC,mBAAOjB,EAAQ/B,KAAQ4B,IAE9BnE,EAGT,QAASwF,GAAIjD,EAAO4B,GASlB,MARAG,GAAQ/B,GAAS+B,EAAQ/B,GAAOD,OAAO,SAACmD,GACtC,MAAOA,KAAOtB,IAGc,IAA1BG,EAAQ/B,GAAOjF,cACVgH,GAAQ/B,GAGVvC,EAGT,QAASH,GAAK0C,EAAOmD,GACfpB,EAAQ/B,IACV+B,EAAQ/B,GAAOnG,QAAQ,SAACqJ,SAAOA,GAAGC,QAzUfC,GAAFjI,EAAEiI,SAAUC,EAAZlI,EAAYkI,MAAOX,EAAnBvH,EAAmBuH,WAAYN,EAA/BjH,EAA+BiH,cAAuBkB,EAAtDnI,EAA8CmD,SAA9CnD,EAAkE2D,KAAMyE,MAAQ1K,KAAA2K,KAAKA,IAArFrI,EAAuF+B,MAAOuG,MAAY5K,KAAA6K,KAAKA,EAChInI,MAAE1C,GACFqE,MAAKrE,GACL+C,MAAK/C,GACLyD,MAAWzD,GACXmD,MAAKnD,GACL0D,MAAI1D,GACJ2D,MAAI3D,GACJ4E,MAAG5E,GACHyF,EAASgF,GAAc,KACrBvB,KACAjD,GAAO,EAAAd,eAAA,YAAW2F,KAAMJ,GAC5B7D,WAAU,SAACpG,GACT,GAAMsK,GAAQtK,EAAIuK,KAAK5C,cACvB,OAAO4C,MAAKvF,GAAQwF,SAASF,EAAQ,EAAI,EAAIA,IAE/C7E,SAAQ,SAACzF,GACP,MAAOuK,MAAKvF,GAAQyF,OAAOzK,IAE7B2H,aAAY,WACV,MAAO4C,MAAKvF,GAAQ0F,aAEtB1B,cAAa,WACX,MAAOuB,MAAKvF,GAAQ2F,mBAoWxB,OA1CA,YACE,IAAKb,KAAa,EAAApG,OAAAoB,UAASgF,GACzB,KAAM/E,OAAM6F,OAAOC,iBAKrB,MAFA5I,EAAK+D,SAAS8E,cAAchB,IAG1B,KAAM/E,OAAM6F,OAAOG,uBAGjBhB,KACFP,EAAGvF,KAAKiB,YAAa,WAAQ8F,QAAQjC,KAAK,YAC1CS,EAAGvF,KAAK2B,WAAY,WAAQoF,QAAQC,QAAQ,aAG9CrH,GAAQ,EAAAc,eAAA,aACNb,YAAamD,KAAKkE,MAClB1E,WACC2D,GAEHrI,IACA6C,IACAX,EAAKC,KAAKkH,gBAQZhH,GACEQ,OAAAA,EACAb,SAAAA,EACAc,UAAAA,EACArB,MAAAA,EACAiG,GAAAA,EACAG,IAAAA,EACAtB,QAAAA,EACAI,QAAAA,ugBAxZe,2FACH,wFAC8C,WAExDxE,MACJkH,YAAa,cACbjG,YAAa,cACbU,WAAY,aACZnB,kBAAmB,oBACnBP,iBAAkB,oBAGd9B,OAAS,eACTwI,QACJG,uBAAwB,qCACxBF,iBAAkB,sCAGdR,MACJe,IACEX,OAAQ,wFAAwFnK,MAAM,KACtGkK,SAAU,2DAA2DlK,MAAM,KAC3EoK,YAAa,EACbC,kBAAkB,GAEpBU,IACEZ,OAAQ,wFAAwFnK,MAAM,KACtGkK,SAAU,oDAAoDlK,MAAM,KACpEoK,YAAa,GAkYjB9I,eAAc0J,QAAUC,cAAA,QAAID,wBAEb1J;;YChaR,SAAS4J,MAAKC,EAAOjI,EAAO9B,GAGjC,QAASgK,GAAaC,GACpB,MAAInI,aAAiBoI,QACZlK,EAAM8B,EAAMqI,KAAKF,EAAKjK,IAAQ8B,EAAMqI,KAAKF,GAG7B,kBAAVnI,GACIA,EAAN9B,EAAYiK,EAAKjK,GAAciK,GAGjCjK,EAAMiK,EAAKjK,KAAS8B,EAAQmI,IAASnI,EAX9C,GAAIsI,GAAM,IAsBV,OARAL,GAAMM,KAAK,SAACJ,GAEV,GADkBD,EAAaC,GAG7B,MADAG,GAAMH,GACC,IAIJG,EAGF,QAASE,OAAMP,EAAOhL,GAC3B,MAAIwL,OAAMC,QAAQzL,GACTgL,EAAMvL,IAAI,SAACyL,GAChB,MAAOlL,GAAK0L,OAAO,SAACL,EAAKpK,GAEvB,MADAoK,GAAIpK,GAAOiK,EAAKjK,GACToK,SAKNL,EAAMvL,IAAI,SAACyL,SAASA,GAAKlL,KAG3B,QAAS8E,YAAWV,GACzB,IAAKC,SAASD,GACZ,KAAME,OAAK,2DAA6DF,GAAG,IAE7E,OAAOA,GAAIuH,MAAM,EAAG,GAAGC,cAAgBxH,EAAIuH,MAAM,GAG5C,QAASjG,OAAMmG,GACpB,IAAKC,SAASD,IAAQE,MAAMF,GAC1B,KAAMvH,OAAK,sDAAwDuH,GAAG,IAGxE,IAAItM,GAAI,EACFyM,IACN,IACEA,EAAIxE,KAAKjI,WACAA,EAAIsM,EACf,OAAOG,GAGF,QAAS/D,YAAWgE,GACzB,MAAqB,kBAAPA,GAGT,QAAS5H,UAASD,GACvB,MAAsB,gBAARA,GAGT,QAAS0H,UAASD,GACvB,MAAsB,gBAARA,GAGT,QAASE,OAAMhJ,GACpB,MAAO+I,UAAS/I,IAAWA,IAAUA,EAGhC,QAASmJ,aAAYnJ,GAC1B,WAAwB,KAAVA,EAGhB,QAASoJ,SAAQN,GACf,MAAOA,GAAM,GAAE,IAAOA,EAAG,GAAQA,EAGnC,QAASO,UAASC,GAChB,MAA0C,kBAAtCrN,OAAOoB,UAAUkM,SAASpL,KAAKmL,KAG3BN,MAAMM,EAAE7F,WAGX,QAAStD,MAAKmJ,GAanB,QAASE,GAAOxJ,EAAO9B,GACrB,GAAMuL,IAAYN,YAAYnJ,GACxB0J,EAASD,EAAW,MAAQvL,EAAM,MAAQA,CAEhD,OAAIuL,IACFE,EAAOD,GAAQ1J,GACRW,GAGFgJ,EAAOD,KArBhB,GAAIC,OAAM5N,EAQV,IALE4N,EADe,gBAANL,GACA,GAAI9F,MAAK8F,EAAE7F,WAEX6F,EAAI,GAAI9F,MAAK8F,GAAK,GAAI9F,OAG5B6F,SAASM,GACZ,KAAMpI,OAAK,+BAAgC+H,EAAC,IAgB9C,IAAM3I,IACJJ,QAAO,WACL,MAAOoJ,GAAOlG,WAGhBA,QAAO,WACL,MAAOkG,GAAOlG,WAGhBmG,KAAI,SAAC5J,GACH,MAAOwJ,GAAOxJ,EAAO,aAGvBD,MAAK,SAACC,GACJ,MAAOwJ,GAAOxJ,EAAO,UAGvBG,KAAI,SAACH,GACH,MAAOwJ,GAAOxJ,EAAO,SAGvBkE,QAAO,SAAClE,GACN,IAAKmJ,YAAYnJ,GAAQ,CACvB,GAAM6J,GAAO7J,EAAQW,EAAIuD,SAGzB,OADAvD,GAAIR,KAAKQ,EAAIR,OAAS0J,GACflJ,EAGT,MAAOgJ,GAAOG,UAGhBvE,KAAI,SAACwE,GACH,GAAMC,GAAIL,EAAOM,WACXC,EAAUH,IAAgBC,EAAI,GAAK,KAAO,OAAS,EAIzD,QAHcD,IAAgBC,EAAI,GAAKA,EAAI,GAAKA,IAAMZ,QAAQY,IAG/C,IAFCZ,QAAQO,EAAOQ,cAEFD,GAG/BrJ,cAAa,WACX,MAAOF,GAAIZ,MAAM4J,EAAO1H,WAAa,IAGvClB,SAAQ,WACN,MAAOJ,GAAIZ,MAAM4J,EAAO1H,WAAa,IAGvC2C,OAAM,WACJ,MAAOjE,GAAIR,KAAKQ,EAAIR,OAAS,IAG/BgD,UAAS,SAACC,GACR,GAAMgH,GAAc,GAAI5G,MAAKJ,EAE7B,QAAQ,cAAe,WAAY,WAAWiH,MAAM,SAACnB,GACnD,MAAOkB,GAAYlB,OAAUS,EAAOT,QAK1C,OAAOvI,2TAIPqH,KAAAA,KACAQ,MAAAA,MACAzG,WAAAA,WACAY,MAAAA,MACAuC,WAAAA,WACA5D,SAAAA,SACAyH,SAAAA,SACAC,MAAAA,MACAG,YAAAA,YACAhJ,KAAAA","file":"bundle.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})","module.exports={\"name\":\"event-calendar\",\"version\":\"0.8.1\",\"description\":\"Simple calendar for listing events\",\"repository\":\"https://github.com/hontas/event-calendar.git\",\"main\":\"src/js/calendar.js\",\"keywords\":[\"calendar\",\"events\",\"event\"],\"scripts\":{\"clean\":\"rimraf dist/*\",\"bumb\":\"npm version minor\",\"bumb:patch\":\"npm version patch\",\"bumb:major\":\"npm version major\",\"minor\":\"npm run bumb && npm publish\",\"patch\":\"npm run bumb:patch && npm publish\",\"prepublish\":\"npm run build\",\"postpublish\":\"npm run deploy && git push --tags\",\"prebuild\":\"npm run clean -s\",\"build\":\"npm run build:scripts -s && npm run build:styles -s && npm run build:markup -s\",\"build:scripts\":\"browserify --debug src/js/calendar.js --standalone eventCalendar --transform babelify --plugin [minifyify --map event-calendar.min.map.json --output dist/event-calendar.min.map.json] > dist/event-calendar.min.js\",\"build:styles\":\"stylus src/styles/event-calendar.styl --sourcemap --compress --out dist\",\"build:markup\":\"jade src/views/index.jade --out dist/\",\"lint\":\"eslint src\",\"test\":\"npm run test:unit && npm run test:integration\",\"test:unit\":\"mocha --reporter nyan test/unit\",\"test:integration\":\"karma start --single-run\",\"watch\":\"parallelshell 'npm run watch:build -s' 'npm run watch:lint -s' 'npm run watch:test -s'\",\"watch:lint\":\"nodemon --quiet --watch src/ --ext '.' --exec 'npm run lint'\",\"watch:test\":\"npm run test:unit -- --watch & nodemon --quiet --watch test/integration/ --watch dist/ --exec 'karma start --single-run'\",\"watch:build\":\"nodemon --quiet --watch src/ --ext '.' --exec 'npm run build'\",\"deploy\":\"gh-pages -d dist\",\"serve\":\"http-server -p 3000 dist/\",\"open\":\"opener http://localhost:3000\",\"dev\":\"npm run open -s & parallelshell 'npm run serve -s' 'npm run watch -s'\"},\"author\":\"Pontus Lundin <lundin.pontus@gmail.com> (https://github.com/hontas)\",\"license\":\"ISC\",\"dependencies\":{\"object-assign\":\"^4.0.1\"},\"devDependencies\":{\"babel\":\"^5.8.23\",\"babel-eslint\":\"^4.1.1\",\"babelify\":\"^6.3.0\",\"browserify\":\"^11.0.1\",\"chai\":\"^3.2.0\",\"eslint\":\"^1.3.1\",\"eslint-config-airbnb\":\"0.0.8\",\"eslint-plugin-react\":\"^3.3.1\",\"gh-pages\":\"^0.4.0\",\"http-server\":\"^0.8.0\",\"jade\":\"^1.11.0\",\"karma\":\"^1.7.0\",\"karma-babel-preprocessor\":\"^6.0.1\",\"karma-chai\":\"^0.1.0\",\"karma-mocha\":\"^1.3.0\",\"karma-phantomjs-launcher\":\"^1.0.4\",\"karma-sinon-chai\":\"^1.1.0\",\"minifyify\":\"^7.0.6\",\"mocha\":\"^2.3.2\",\"nodemon\":\"^1.7.0\",\"opener\":\"^1.4.1\",\"parallelshell\":\"^2.0.0\",\"phantomjs\":\"^2.1.17\",\"phantomjs-polyfill\":\"0.0.2\",\"rimraf\":\"^2.4.3\",\"sinon\":\"^1.16.1\",\"sinon-chai\":\"^2.8.0\",\"stylus\":\"^0.52.4\"}}","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","import assign from 'object-assign';\nimport pkg from '../../package.json';\nimport { capitalize, range, isFunction, isString, date } from './utils';\n\nconst evts = {\n  INITIALIZED: 'initialized',\n  WILL_RENDER: 'will-render',\n  DID_RENDER: 'did-render',\n  WILL_CHANGE_STATE: 'will-change-state',\n  DID_CHANGE_MONTH: 'did-change-month'\n};\n\nconst prefix = 'evt-calendar';\nconst errors = {\n  SELECTOR_DID_NOT_MATCH: 'Selector did not match any element',\n  INVALID_SELECTOR: 'Must supply css-selector as string'\n};\n\nconst lang = {\n  en: {\n    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n    startOfWeek: 0,\n    twelveHourFormat: true\n  },\n  sv: {\n    months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\n    weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n    startOfWeek: 1\n  }\n};\n\nfunction eventCalendar({ selector, debug, tdTemplate, eventTemplate, locale: initLocale, i18n: userLang = {}, state: initialState = {} }) {\n  let el;\n  let state;\n  let table;\n  let captionText;\n  let tbody;\n  let prev;\n  let next;\n  let api;\n  let locale = initLocale || 'en';\n  const _events = {};\n  const i18n = assign({}, lang, userLang, {\n    getWeekDay(i) {\n      const index = i + this.getWeekStart();\n      return this[locale].weekdays[index > 6 ? 0 : index];\n    },\n    getMonth(i) {\n      return this[locale].months[i];\n    },\n    getWeekStart() {\n      return this[locale].startOfWeek;\n    },\n    isTwelveHours() {\n      return this[locale].twelveHourFormat;\n    }\n  });\n\n  function createDOM() {\n    createTable();\n    appendToDOM();\n  }\n\n  function appendToDOM() {\n    el.classList.add(prefix + '__container');\n    el.appendChild(table);\n  }\n\n  function createTable() {\n    table = createEl('table', { className: prefix });\n    const thead = createEl('thead');\n    tbody = createEl('tbody');\n\n    thead.innerHTML = createTableHead();\n    table.appendChild(createCaptionWithControls());\n    table.appendChild(thead);\n    table.appendChild(tbody);\n  }\n\n  function createCaptionWithControls() {\n    const caption = createEl('caption');\n    createControls();\n    captionText = createEl('div', { className: prefix + '__caption' });\n\n    caption.appendChild(prev);\n    caption.appendChild(next);\n    caption.appendChild(captionText);\n\n    return caption;\n  }\n\n  function createControls() {\n    prev = createEl('button', { textContent: '<', className: prefix + '__prev-btn' });\n    next = createEl('button', { textContent: '>', className: prefix + '__next-btn' });\n\n    prev.addEventListener('click', goToPreviousMonth);\n    next.addEventListener('click', goToNextMonth);\n  }\n\n  function month(value) {\n    if (value) {\n      const newMonth = date(state.currentTime).month(value - 1);\n      setState({\n        currentTime: newMonth.valueOf()\n      });\n\n      emit(evts.DID_CHANGE_MONTH, newMonth.month() + 1);\n      return api;\n    }\n\n    return date(state.currentTime).month() + 1;\n  }\n\n  function goToPreviousMonth() {\n    const previous = date(state.currentTime).subtractMonth();\n    setState({\n      currentTime: previous.valueOf()\n    });\n    emit(evts.DID_CHANGE_MONTH, previous.month());\n  }\n\n  function goToNextMonth() {\n    const following = date(state.currentTime).addMonth();\n\n    setState({\n      currentTime: following.valueOf()\n    });\n\n    emit(evts.DID_CHANGE_MONTH, following.month());\n  }\n\n  function setState(newState) {\n    emit(evts.WILL_CHANGE_STATE, newState);\n\n    state = assign({}, state, newState);\n    render();\n  }\n\n  function setLocale(str) {\n    if (!isString(str) || str.length === 0) {\n      throw Error('setLocale: Argument must be valid language string, eg en or sv');\n    }\n\n    locale = str;\n    el.getElementsByTagName('thead')[0].innerHTML = createTableHead();\n    render();\n  }\n\n  function render() {\n    emit(evts.WILL_RENDER);\n\n    const newTbody = createEl('tbody', { innerHTML: createMonth() });\n    const currMonth = date(state.currentTime).month();\n    const lastMonth = currMonth === 0 ? 11 : currMonth - 1;\n\n\n    try {\n      prev.textContent = '< ' + capitalize(i18n.getMonth(lastMonth));\n      captionText.textContent = capitalize(i18n.getMonth(currMonth));\n      next.textContent = capitalize(i18n.getMonth((currMonth + 1) % 12)) + ' >';\n    } catch (e) {\n      throw (new Error(lastMonth + e));\n    }\n\n    table.replaceChild(newTbody, tbody);\n    tbody = newTbody;\n\n    emit(evts.DID_RENDER);\n  }\n\n  function createEl(tag, options = {}) {\n    const node = document.createElement(tag);\n    Object.keys(options).forEach((key) => {\n      node[key] = options[key];\n    });\n    return node;\n  }\n\n  function createTableHead() {\n    const days = range(7)\n      .map((i) => capitalize(i18n.getWeekDay(i)))\n      .map(thTmpl)\n      .join('');\n\n    return rowTmpl(days);\n  }\n\n  function createTableCell(day) {\n    const events = state.events\n      .filter((event) => {\n        return date(event.date).isSameDay(day.timestamp);\n      })\n      .sort((event1, event2) => {\n        return new Date(event1.date).getTime() - new Date(event2.date).getTime();\n      });\n\n    return tdTmpl({ day, events });\n  }\n\n  function createTableRow(cell, i) {\n    // insert a row before new week\n    if (i % 7) {\n      return cell;\n    }\n\n    return rowTmpl(cell);\n  }\n\n  function createMonth() {\n    return createMonthArray()\n      .map(createTableCell)\n      .map(createTableRow)\n      .join('');\n  }\n\n  function createMonthArray() {\n    const days = [];\n    const curr = date(state.currentTime);\n    const startMonth = curr.month();\n    const startDate = date(curr).date(1).weekday(i18n.getWeekStart());\n    const currentDate = date(startDate);\n    const [lastMonth, nextMonth] = (function getNearbyMonths() {\n      if (startMonth === 0) {\n        return [11, 1];\n      }\n      if (startMonth === 11) {\n        return [10, 0];\n      }\n      return [startMonth - 1, startMonth + 1];\n    })();\n\n    function isWithinCalendarRange(date2compare) {\n      const currentMonth = date2compare.month();\n\n      if (currentMonth === lastMonth || currentMonth === startMonth) {\n        return true;\n      }\n\n      if (currentMonth === nextMonth) {\n        return date2compare.weekday() !== i18n.getWeekStart();\n      }\n    }\n\n    while (isWithinCalendarRange(currentDate)) {\n      days.push({\n        dayOfMonth: currentDate.date(),\n        timestamp: currentDate.valueOf(),\n        isOtherMonth: currentDate.month() !== startMonth\n      });\n      currentDate.addDay();\n    }\n\n    return days;\n  }\n\n  function destroy(callback) {\n    if (el) {\n      // remove DOM\n      let firstChild = el.firstChild;\n      while (firstChild) {\n        el.removeChild(firstChild);\n        firstChild = el.firstChild;\n      }\n\n      // remove events\n      Object.keys(_events).forEach((event) => {\n        _events[event] = null;\n      });\n\n      // reset variables\n      el = null;\n      state = null;\n      table = null;\n      captionText = null;\n      tbody = null;\n      prev = null;\n      next = null;\n      api = null;\n    }\n\n    if (isFunction(callback)) {\n      callback();\n    }\n  }\n\n  /**\n   * Template functions\n   */\n\n  function rowTmpl(cells) {\n    return `<tr>${cells}`;\n  }\n\n  function thTmpl(day) {\n    return (\n      `<th class=\"${prefix}__head\">\n        ${day.substr(0, 1)}<span class=\"rest\">${day.substr(1, 2)}<span class=\"ending\">${day.substr(3)}</span><span>\n      </th>`);\n  }\n\n  function eventTmpl(event) {\n    if (isFunction(eventTemplate)) {\n      return eventTemplate(event);\n    }\n\n    const textContent = `${date(event.date).time(i18n.isTwelveHours())} ${event.name}`;\n    const tag = event.link ? 'a' : 'span';\n    const link = event.link ? 'href=\"' + event.link + '\"' : '';\n\n    return (\n      `<${tag} class=\"${prefix}__cell__event\" ${link} title=\"${textContent}\">\n        <span class=\"event-time\">${date(event.date).time(i18n.isTwelveHours())}</span>\n        <span class=\"event-name\">${event.name}</span>\n        <span class=\"event-dot\"></span>\n      </${tag}>`);\n  }\n\n  function tdTmpl({ day, events }) {\n    if (isFunction(tdTemplate)) {\n      return tdTemplate({ day, events });\n    }\n\n    const active = events.length ? prefix + '__cell--active' : '';\n    const passive = day.isOtherMonth ? prefix + '__cell--passive' : '';\n    const links = events.map(eventTmpl).join('');\n\n    return (\n      `<td class='${prefix}__cell ${active} ${passive}'>\n        ${ links }\n        <span class='${prefix}__cell__date'>${day.dayOfMonth}</span>\n      </td>`);\n  }\n\n  /**\n   * Events\n   */\n\n  function on(event, callback) {\n    if (!_events[event]) {\n      _events[event] = [];\n    }\n    _events[event] = [..._events[event], callback];\n\n    return api;\n  }\n\n  function off(event, callback) {\n    _events[event] = _events[event].filter((cb) => {\n      return cb !== callback;\n    });\n\n    if (_events[event].length === 0) {\n      delete _events[event];\n    }\n\n    return api;\n  }\n\n  function emit(event, data) {\n    if (_events[event]) {\n      _events[event].forEach((cb) => cb(data));\n    }\n  }\n\n  /**\n   * Init\n   */\n\n  function init() {\n    if (!selector || !isString(selector)) {\n      throw Error(errors.INVALID_SELECTOR);\n    }\n\n    el = document.querySelector(selector);\n\n    if (!el) {\n      throw Error(errors.SELECTOR_DID_NOT_MATCH);\n    }\n\n    if (debug) {\n      on(evts.WILL_RENDER, () => { console.time('render'); }); // eslint-disable-line no-console\n      on(evts.DID_RENDER, () => { console.timeEnd('render'); }); // eslint-disable-line no-console\n    }\n\n    state = assign({}, {\n      currentTime: Date.now(),\n      events: []\n    }, initialState);\n\n    createDOM();\n    render();\n    emit(evts.INITIALIZED);\n  }\n\n  /**\n   * Export Public API\n   */\n\n  init();\n  api = {\n    render,\n    setState,\n    setLocale,\n    month,\n    on,\n    off,\n    destroy,\n    _events\n  };\n\n  return api;\n}\n\neventCalendar.version = pkg.version;\n\nexport default eventCalendar;\n\n","export function find(array, value, key) {\n  let res = null;\n\n  function getPredicate(item) {\n    if (value instanceof RegExp) {\n      return key ? value.test(item[key]) : value.test(item);\n    }\n\n    if (typeof value === 'function') {\n      return key ? value(item[key]) : value(item);\n    }\n\n    return key ? item[key] === value : item === value;\n  }\n\n  array.some((item) => {\n    const predicate = getPredicate(item);\n    if (predicate) {\n      res = item;\n      return true;\n    }\n  });\n\n  return res;\n}\n\nexport function mapBy(array, keys) {\n  if (Array.isArray(keys)) {\n    return array.map((item) => {\n      return keys.reduce((res, key) => {\n        res[key] = item[key];\n        return res;\n      }, {});\n    });\n  }\n\n  return array.map((item) => item[keys]);\n}\n\nexport function capitalize(str) {\n  if (!isString(str)) {\n    throw Error(`capitalize: Argument must be of type String, got '${typeof str}'`);\n  }\n  return str.slice(0, 1).toUpperCase() + str.slice(1);\n}\n\nexport function range(num) {\n  if (!isNumber(num) || isNaN(num)) {\n    throw Error(`range: Argument must be of type number, got '${typeof num}'`);\n  }\n\n  let i = 0;\n  const arr = [];\n  do {\n    arr.push(i);\n  } while (++i < num);\n  return arr;\n}\n\nexport function isFunction(fn) {\n  return typeof fn === 'function';\n}\n\nexport function isString(str) {\n  return typeof str === 'string';\n}\n\nexport function isNumber(num) {\n  return typeof num === 'number';\n}\n\nexport function isNaN(value) {\n  return isNumber(value) && (value !== value);  // eslint-disable-line no-self-compare\n}\n\nexport function isUndefined(value) {\n  return typeof value === 'undefined';\n}\n\nfunction zeroPad(num) {\n  return num < 10 ? `0${num}` : `${num}`;\n}\n\nfunction valiDate(d) {\n  if (Object.prototype.toString.call(d) !== '[object Date]') {\n    return false;\n  }\n  return !isNaN(d.getTime());\n}\n\nexport function date(d) {\n  let kronos;\n\n  if (typeof d === 'object') {\n    kronos = new Date(d.getTime());\n  } else {\n    kronos = d ? new Date(d) : new Date();\n  }\n\n  if (!valiDate(kronos)) {\n    throw Error(`Could not create date from '${d}'`);\n  }\n\n  function getSet(value, key) {\n    const hasValue = !isUndefined(value);\n    const method = hasValue ? 'set' + key : 'get' + key;\n\n    if (hasValue) {\n      kronos[method](value);\n      return api;\n    }\n\n    return kronos[method]();\n  }\n\n  // noinspection UnnecessaryLocalVariableJS\n  const api = {\n    valueOf() {\n      return kronos.getTime();\n    },\n\n    getTime() {\n      return kronos.getTime();\n    },\n\n    year(value) {\n      return getSet(value, 'FullYear');\n    },\n\n    month(value) {\n      return getSet(value, 'Month');\n    },\n\n    date(value) {\n      return getSet(value, 'Date');\n    },\n\n    weekday(value) {\n      if (!isUndefined(value)) {\n        const diff = value - api.weekday();\n\n        api.date(api.date() + diff);\n        return api;\n      }\n\n      return kronos.getDay();\n    },\n\n    time(twelveHours) {\n      const h = kronos.getHours();\n      const postfix = twelveHours && (h > 12 ? 'pm' : 'am') || '';\n      const hours = twelveHours && (h > 12 ? h - 12 : h) || zeroPad(h);\n      const minutes = zeroPad(kronos.getMinutes());\n\n      return `${hours}:${minutes}${postfix}`;\n    },\n\n    subtractMonth() {\n      return api.month(kronos.getMonth() - 1);\n    },\n\n    addMonth() {\n      return api.month(kronos.getMonth() + 1);\n    },\n\n    addDay() {\n      return api.date(api.date() + 1);\n    },\n\n    isSameDay(timestamp) {\n      const compareDate = new Date(timestamp);\n\n      return ['getFullYear', 'getMonth', 'getDate'].every((fn) => {\n        return compareDate[fn]() === kronos[fn]();\n      });\n    }\n  };\n\n  return api;\n}\n\nexport default {\n  find,\n  mapBy,\n  capitalize,\n  range,\n  isFunction,\n  isString,\n  isNumber,\n  isNaN,\n  isUndefined,\n  date\n};\n"]}