{"version":3,"file":"theme.min.js","sources":["../../node_modules/timezones-ical-library/dist/mjs/index.js","../../node_modules/add-to-calendar-button/dist/module/index.js","../../node_modules/uikit/dist/js/uikit-core.js","../../node_modules/uikit/src/js/util/lang.js","../../node_modules/uikit/src/js/util/attr.js","../../node_modules/uikit/src/js/util/filter.js","../../node_modules/uikit/src/js/util/selector.js","../../node_modules/uikit/src/js/util/event.js","../../node_modules/uikit/src/js/util/style.js","../../node_modules/uikit/src/js/util/class.js","../../node_modules/uikit/src/js/util/animation.js","../../node_modules/uikit/src/js/util/dom.js","../../node_modules/uikit/src/js/util/dimensions.js","../../node_modules/uikit/src/js/util/env.js","../../node_modules/uikit/src/js/util/fastdom.js","../../node_modules/uikit/src/js/util/observer.js","../../node_modules/uikit/src/js/util/viewport.js","../../node_modules/uikit/src/js/mixin/resize.js","../../node_modules/uikit/src/js/mixin/scroll.js","../../node_modules/uikit/src/js/mixin/media.js","../../node_modules/uikit/src/js/core/svg.js","../../node_modules/uikit/src/js/mixin/parallax.js","../../node_modules/uikit/src/js/components/parallax.js","../../node_modules/uikit/src/js/mixin/class.js","../../node_modules/uikit/src/js/mixin/slider-autoplay.js","../../node_modules/uikit/src/js/mixin/slider-drag.js","../../node_modules/uikit/src/js/mixin/slider-nav.js","../../node_modules/uikit/src/js/mixin/slider.js","../../node_modules/uikit/src/js/mixin/slider-reactive.js","../../node_modules/uikit/src/js/mixin/lazyload.js","../../node_modules/uikit/src/js/mixin/internal/slideshow-animations.js","../../node_modules/uikit/src/js/components/internal/slider-preload.js","../../node_modules/uikit/src/js/components/internal/slider-transitioner.js","../../node_modules/uikit/src/js/components/slider.js","../../node_modules/uikit/src/js/components/slider-parallax.js","../../node_modules/uikit/src/js/mixin/internal/slideshow-transitioner.js","../../node_modules/uikit/src/js/mixin/slideshow.js","../../node_modules/uikit/src/js/components/internal/slideshow-animations.js","../../node_modules/uikit/src/js/components/slideshow.js","../../assets/js/theme/UIKit.js","../../assets/js/theme/slideshow.js","../../assets/js/theme/offCanvasToggle.js","../../assets/js/theme/footer.js","../../assets/js/theme/featuredVideo.js","../../assets/js/theme/menuIcon.js","../../assets/js/theme/headerSearch.js","../../assets/js/theme/maps.js","../../assets/js/theme/SearchFilter.js","../../assets/js/theme/calendarFilter.js","../../assets/js/theme/resourcesFilter.js","../../assets/js/theme/staffBiosFilter.js","../../assets/js/theme/postsFilter.js","../../assets/js/theme/sermonsAndServicesFilter.js","../../assets/js/theme.js","../../assets/js/theme/constants.js"],"sourcesContent":["/*!\n * @preserve\n *\n * ++++++++++++++++++++++++++++++++++++++\n * Add to Calendar TimeZones iCal Library\n * ++++++++++++++++++++++++++++++++++++++\n *\n * Version: 1.6.0\n * Creator: Jens Kuerschner (https://jenskuerschner.de)\n * Project: https://github.com/add2cal/timezones-ical-library\n * License: Apache-2.0\n *\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst tzlibVersion = '1.6.0';\nconst tzlibZonesDB = {\"Africa\":{\"Abidjan\":[\"\",0],\"Accra\":[\"Africa/Abidjan\",0],\"Addis_Ababa\":[\"Africa/Nairobi\",1],\"Algiers\":[\"\",2],\"Asmara\":[\"Africa/Nairobi\",1],\"Asmera\":[\"Africa/Nairobi\",1],\"Bamako\":[\"Africa/Abidjan\",0],\"Bangui\":[\"Africa/Lagos\",3],\"Banjul\":[\"Africa/Abidjan\",0],\"Bissau\":[\"\",0],\"Blantyre\":[\"Africa/Maputo\",4],\"Brazzaville\":[\"Africa/Lagos\",3],\"Bujumbura\":[\"Africa/Maputo\",4],\"Cairo\":[\"\",5],\"Casablanca\":[\"\",6],\"Ceuta\":[\"\",7],\"Conakry\":[\"Africa/Abidjan\",0],\"Dakar\":[\"Africa/Abidjan\",0],\"Dar_es_Salaam\":[\"Africa/Nairobi\",1],\"Djibouti\":[\"Africa/Nairobi\",1],\"Douala\":[\"Africa/Lagos\",3],\"El_Aaiun\":[\"\",6],\"Freetown\":[\"Africa/Abidjan\",0],\"Gaborone\":[\"Africa/Maputo\",4],\"Harare\":[\"Africa/Maputo\",4],\"Johannesburg\":[\"\",8],\"Juba\":[\"\",4],\"Kampala\":[\"Africa/Nairobi\",1],\"Khartoum\":[\"\",4],\"Kigali\":[\"Africa/Maputo\",4],\"Kinshasa\":[\"Africa/Lagos\",3],\"Lagos\":[\"\",3],\"Libreville\":[\"Africa/Lagos\",3],\"Lome\":[\"Africa/Abidjan\",0],\"Luanda\":[\"Africa/Lagos\",3],\"Lubumbashi\":[\"Africa/Maputo\",4],\"Lusaka\":[\"Africa/Maputo\",4],\"Malabo\":[\"Africa/Lagos\",3],\"Maputo\":[\"\",4],\"Maseru\":[\"Africa/Johannesburg\",8],\"Mbabane\":[\"Africa/Johannesburg\",8],\"Mogadishu\":[\"Africa/Nairobi\",1],\"Monrovia\":[\"\",0],\"Nairobi\":[\"\",1],\"Ndjamena\":[\"\",3],\"Niamey\":[\"Africa/Lagos\",3],\"Nouakchott\":[\"Africa/Abidjan\",0],\"Ouagadougou\":[\"Africa/Abidjan\",0],\"Porto-Novo\":[\"Africa/Lagos\",3],\"Sao_Tome\":[\"\",0],\"Timbuktu\":[\"Africa/Abidjan\",0],\"Tripoli\":[\"\",5],\"Tunis\":[\"\",2],\"Windhoek\":[\"\",4]},\"America\":{\"Adak\":[\"\",9],\"Anchorage\":[\"\",10],\"Anguilla\":[\"America/Puerto_Rico\",11],\"Antigua\":[\"America/Puerto_Rico\",11],\"Araguaina\":[\"\",12],\"Argentina\":{\"Buenos_Aires\":[\"\",12],\"Catamarca\":[\"\",12],\"ComodRivadavia\":[\"America/Argentina/Catamarca\",12],\"Cordoba\":[\"\",12],\"Jujuy\":[\"\",12],\"La_Rioja\":[\"\",12],\"Mendoza\":[\"\",12],\"Rio_Gallegos\":[\"\",12],\"Salta\":[\"\",12],\"San_Juan\":[\"\",12],\"San_Luis\":[\"\",12],\"Tucuman\":[\"\",12],\"Ushuaia\":[\"\",12]},\"Aruba\":[\"America/Puerto_Rico\",11],\"Asuncion\":[\"\",13],\"Atikokan\":[\"America/Panama\",14],\"Atka\":[\"America/Adak\",9],\"Bahia_Banderas\":[\"\",15],\"Bahia\":[\"\",12],\"Barbados\":[\"\",11],\"Belem\":[\"\",12],\"Belize\":[\"\",15],\"Blanc-Sablon\":[\"America/Puerto_Rico\",11],\"Boa_Vista\":[\"\",16],\"Bogota\":[\"\",17],\"Boise\":[\"\",18],\"Buenos_Aires\":[\"America/Argentina/Buenos_Aires\",12],\"Cambridge_Bay\":[\"\",18],\"Campo_Grande\":[\"\",16],\"Cancun\":[\"\",14],\"Caracas\":[\"\",16],\"Catamarca\":[\"America/Argentina/Catamarca\",12],\"Cayenne\":[\"\",12],\"Cayman\":[\"America/Panama\",14],\"Chicago\":[\"\",19],\"Chihuahua\":[\"\",15],\"Ciudad_Juarez\":[\"\",18],\"Coral_Harbour\":[\"America/Panama\",14],\"Cordoba\":[\"America/Argentina/Cordoba\",12],\"Costa_Rica\":[\"\",15],\"Creston\":[\"America/Phoenix\",20],\"Cuiaba\":[\"\",16],\"Curacao\":[\"America/Puerto_Rico\",11],\"Danmarkshavn\":[\"\",0],\"Dawson_Creek\":[\"\",20],\"Dawson\":[\"\",20],\"Denver\":[\"\",18],\"Detroit\":[\"\",21],\"Dominica\":[\"America/Puerto_Rico\",11],\"Edmonton\":[\"\",18],\"Eirunepe\":[\"\",17],\"El_Salvador\":[\"\",15],\"Ensenada\":[\"America/Tijuana\",22],\"Fort_Nelson\":[\"\",20],\"Fort_Wayne\":[\"America/Indiana/Indianapolis\",21],\"Fortaleza\":[\"\",12],\"Glace_Bay\":[\"\",23],\"Godthab\":[\"America/Nuuk\",24],\"Goose_Bay\":[\"\",25],\"Grand_Turk\":[\"\",26],\"Grenada\":[\"America/Puerto_Rico\",11],\"Guadeloupe\":[\"America/Puerto_Rico\",11],\"Guatemala\":[\"\",15],\"Guayaquil\":[\"\",17],\"Guyana\":[\"\",16],\"Halifax\":[\"\",23],\"Havana\":[\"\",27],\"Hermosillo\":[\"\",20],\"Indiana\":{\"Indianapolis\":[\"\",21],\"Knox\":[\"\",19],\"Marengo\":[\"\",21],\"Petersburg\":[\"\",21],\"Tell_City\":[\"\",19],\"Vevay\":[\"\",21],\"Vincennes\":[\"\",21],\"Winamac\":[\"\",26]},\"Indianapolis\":[\"America/Indiana/Indianapolis\",21],\"Inuvik\":[\"\",18],\"Iqaluit\":[\"\",21],\"Jamaica\":[\"\",14],\"Jujuy\":[\"America/Argentina/Jujuy\",12],\"Juneau\":[\"\",10],\"Kentucky\":{\"Louisville\":[\"\",21],\"Monticello\":[\"\",21]},\"Knox_IN\":[\"America/Indiana/Knox\",19],\"Kralendijk\":[\"America/Puerto_Rico\",11],\"La_Paz\":[\"\",16],\"Lima\":[\"\",17],\"Los_Angeles\":[\"\",22],\"Louisville\":[\"America/Kentucky/Louisville\",21],\"Lower_Princes\":[\"America/Puerto_Rico\",11],\"Maceio\":[\"\",12],\"Managua\":[\"\",15],\"Manaus\":[\"\",16],\"Marigot\":[\"America/Puerto_Rico\",11],\"Martinique\":[\"\",11],\"Matamoros\":[\"\",19],\"Mazatlan\":[\"\",20],\"Mendoza\":[\"America/Argentina/Mendoza\",12],\"Menominee\":[\"\",19],\"Merida\":[\"\",15],\"Metlakatla\":[\"\",10],\"Mexico_City\":[\"\",15],\"Miquelon\":[\"\",28],\"Moncton\":[\"\",23],\"Monterrey\":[\"\",15],\"Montevideo\":[\"\",12],\"Montreal\":[\"America/Toronto\",21],\"Montserrat\":[\"America/Puerto_Rico\",11],\"Nassau\":[\"America/Toronto\",21],\"New_York\":[\"\",21],\"Nipigon\":[\"America/Toronto\",21],\"Nome\":[\"\",10],\"Noronha\":[\"\",24],\"North_Dakota\":{\"Beulah\":[\"\",19],\"Center\":[\"\",19],\"New_Salem\":[\"\",19]},\"Nuuk\":[\"\",24],\"Ojinaga\":[\"\",19],\"Panama\":[\"\",14],\"Pangnirtung\":[\"America/Iqaluit\",21],\"Paramaribo\":[\"\",12],\"Phoenix\":[\"\",20],\"Port_of_Spain\":[\"America/Puerto_Rico\",11],\"Port-au-Prince\":[\"\",21],\"Porto_Acre\":[\"America/Rio_Branco\",17],\"Porto_Velho\":[\"\",16],\"Puerto_Rico\":[\"\",11],\"Punta_Arenas\":[\"\",12],\"Rainy_River\":[\"America/Winnipeg\",19],\"Rankin_Inlet\":[\"\",19],\"Recife\":[\"\",12],\"Regina\":[\"\",15],\"Resolute\":[\"\",29],\"Rio_Branco\":[\"\",17],\"Rosario\":[\"America/Argentina/Cordoba\",12],\"Santa_Isabel\":[\"America/Tijuana\",22],\"Santarem\":[\"\",12],\"Santiago\":[\"\",30],\"Santo_Domingo\":[\"\",11],\"Sao_Paulo\":[\"\",12],\"Scoresbysund\":[\"\",31],\"Shiprock\":[\"America/Denver\",18],\"Sitka\":[\"\",10],\"St_Barthelemy\":[\"America/Puerto_Rico\",11],\"St_Johns\":[\"\",32],\"St_Kitts\":[\"America/Puerto_Rico\",11],\"St_Lucia\":[\"America/Puerto_Rico\",11],\"St_Thomas\":[\"America/Puerto_Rico\",11],\"St_Vincent\":[\"America/Puerto_Rico\",11],\"Swift_Current\":[\"\",15],\"Tegucigalpa\":[\"\",15],\"Thule\":[\"\",23],\"Thunder_Bay\":[\"America/Toronto\",21],\"Tijuana\":[\"\",22],\"Toronto\":[\"\",21],\"Tortola\":[\"America/Puerto_Rico\",11],\"Vancouver\":[\"\",22],\"Virgin\":[\"America/Puerto_Rico\",11],\"Whitehorse\":[\"\",20],\"Winnipeg\":[\"\",19],\"Yakutat\":[\"\",10],\"Yellowknife\":[\"\",18]},\"Antarctica\":{\"Casey\":[\"\",33],\"Davis\":[\"\",34],\"DumontDUrville\":[\"Pacific/Port_Moresby\",35],\"Macquarie\":[\"\",36],\"Mawson\":[\"\",37],\"McMurdo\":[\"Pacific/Auckland\",38],\"Palmer\":[\"\",12],\"Rothera\":[\"\",12],\"South_Pole\":[\"Pacific/Auckland\",38],\"Syowa\":[\"Asia/Riyadh\",39],\"Troll\":[\"\",40],\"Vostok\":[\"Asia/Urumqi\",41]},\"Arctic\":{\"Longyearbyen\":[\"Europe/Berlin\",7]},\"Asia\":{\"Aden\":[\"Asia/Riyadh\",39],\"Almaty\":[\"\",41],\"Amman\":[\"\",39],\"Anadyr\":[\"\",42],\"Aqtau\":[\"\",37],\"Aqtobe\":[\"\",37],\"Ashgabat\":[\"\",37],\"Ashkhabad\":[\"Asia/Ashgabat\",37],\"Atyrau\":[\"\",37],\"Baghdad\":[\"\",39],\"Bahrain\":[\"Asia/Qatar\",39],\"Baku\":[\"\",43],\"Bangkok\":[\"\",34],\"Barnaul\":[\"\",34],\"Beirut\":[\"\",44],\"Bishkek\":[\"\",41],\"Brunei\":[\"Asia/Kuching\",45],\"Calcutta\":[\"Asia/Kolkata\",46],\"Chita\":[\"\",47],\"Choibalsan\":[\"\",45],\"Chongqing\":[\"Asia/Shanghai\",48],\"Chungking\":[\"Asia/Shanghai\",48],\"Colombo\":[\"\",49],\"Dacca\":[\"Asia/Dhaka\",41],\"Damascus\":[\"\",39],\"Dhaka\":[\"\",41],\"Dili\":[\"\",47],\"Dubai\":[\"\",43],\"Dushanbe\":[\"\",37],\"Famagusta\":[\"\",50],\"Gaza\":[\"\",51],\"Harbin\":[\"Asia/Shanghai\",48],\"Hebron\":[\"\",51],\"Ho_Chi_Minh\":[\"\",34],\"Hong_Kong\":[\"\",52],\"Hovd\":[\"\",34],\"Irkutsk\":[\"\",45],\"Istanbul\":[\"Europe/Istanbul\",39],\"Jakarta\":[\"\",53],\"Jayapura\":[\"\",54],\"Jerusalem\":[\"\",55],\"Kabul\":[\"\",56],\"Kamchatka\":[\"\",42],\"Karachi\":[\"\",57],\"Kashgar\":[\"Asia/Urumqi\",41],\"Kathmandu\":[\"\",58],\"Katmandu\":[\"Asia/Kathmandu\",58],\"Khandyga\":[\"\",47],\"Kolkata\":[\"\",46],\"Krasnoyarsk\":[\"\",34],\"Kuala_Lumpur\":[\"Asia/Singapore\",45],\"Kuching\":[\"\",45],\"Kuwait\":[\"Asia/Riyadh\",39],\"Macao\":[\"Asia/Macau\",48],\"Macau\":[\"\",48],\"Magadan\":[\"\",33],\"Makassar\":[\"\",59],\"Manila\":[\"\",60],\"Muscat\":[\"Asia/Dubai\",43],\"Nicosia\":[\"\",61],\"Novokuznetsk\":[\"\",34],\"Novosibirsk\":[\"\",34],\"Omsk\":[\"\",41],\"Oral\":[\"\",37],\"Phnom_Penh\":[\"Asia/Bangkok\",34],\"Pontianak\":[\"\",53],\"Pyongyang\":[\"\",62],\"Qatar\":[\"\",39],\"Qostanay\":[\"\",41],\"Qyzylorda\":[\"\",37],\"Rangoon\":[\"Asia/Yangon\",63],\"Riyadh\":[\"\",39],\"Saigon\":[\"Asia/Ho_Chi_Minh\",34],\"Sakhalin\":[\"\",33],\"Samarkand\":[\"\",37],\"Seoul\":[\"\",62],\"Shanghai\":[\"\",48],\"Singapore\":[\"\",45],\"Srednekolymsk\":[\"\",33],\"Taipei\":[\"\",48],\"Tashkent\":[\"\",37],\"Tbilisi\":[\"\",43],\"Tehran\":[\"\",64],\"Tel_Aviv\":[\"Asia/Jerusalem\",55],\"Thimbu\":[\"Asia/Thimphu\",41],\"Thimphu\":[\"\",41],\"Tokyo\":[\"\",65],\"Tomsk\":[\"\",34],\"Ujung_Pandang\":[\"Asia/Makassar\",59],\"Ulaanbaatar\":[\"\",45],\"Ulan_Bator\":[\"Asia/Ulaanbaatar\",45],\"Urumqi\":[\"\",41],\"Ust-Nera\":[\"\",35],\"Vientiane\":[\"Asia/Bangkok\",34],\"Vladivostok\":[\"\",35],\"Yakutsk\":[\"\",47],\"Yangon\":[\"\",63],\"Yekaterinburg\":[\"\",37],\"Yerevan\":[\"\",43]},\"Atlantic\":{\"Azores\":[\"\",31],\"Bermuda\":[\"\",23],\"Canary\":[\"\",66],\"Cape_Verde\":[\"\",67],\"Faeroe\":[\"Atlantic/Faroe\",66],\"Faroe\":[\"\",66],\"Jan_Mayen\":[\"Europe/Berlin\",7],\"Madeira\":[\"\",66],\"Reykjavik\":[\"Africa/Abidjan\",0],\"South_Georgia\":[\"\",24],\"St_Helena\":[\"Africa/Abidjan\",0],\"Stanley\":[\"\",12]},\"Australia\":{\"ACT\":[\"Australia/Sydney\",36],\"Adelaide\":[\"\",68],\"Brisbane\":[\"\",69],\"Broken_Hill\":[\"\",68],\"Canberra\":[\"Australia/Sydney\",36],\"Currie\":[\"Australia/Hobart\",70],\"Darwin\":[\"\",71],\"Eucla\":[\"\",72],\"Hobart\":[\"\",70],\"LHI\":[\"Australia/Lord_Howe\",73],\"Lindeman\":[\"\",69],\"Lord_Howe\":[\"\",73],\"Melbourne\":[\"\",36],\"North\":[\"Australia/Darwin\",71],\"NSW\":[\"Australia/Sydney\",36],\"Perth\":[\"\",74],\"Queensland\":[\"Australia/Brisbane\",69],\"South\":[\"Australia/Adelaide\",68],\"Sydney\":[\"\",36],\"Tasmania\":[\"Australia/Hobart\",70],\"Victoria\":[\"Australia/Melbourne\",36],\"West\":[\"Australia/Perth\",74],\"Yancowinna\":[\"Australia/Broken_Hill\",68]},\"Brazil\":{\"Acre\":[\"America/Rio_Branco\",17],\"DeNoronha\":[\"America/Noronha\",24],\"East\":[\"America/Sao_Paulo\",12],\"West\":[\"America/Manaus\",16]},\"Canada\":{\"Atlantic\":[\"America/Halifax\",23],\"Central\":[\"America/Winnipeg\",19],\"Eastern\":[\"America/Toronto\",21],\"Mountain\":[\"America/Edmonton\",18],\"Newfoundland\":[\"America/St_Johns\",32],\"Pacific\":[\"America/Vancouver\",22],\"Saskatchewan\":[\"America/Regina\",15],\"Yukon\":[\"America/Whitehorse\",20]},\"CET\":[\"\",7],\"Chile\":{\"Continental\":[\"America/Santiago\",30],\"EasterIsland\":[\"Pacific/Easter\",75]},\"CST6CDT\":[\"\",19],\"Cuba\":[\"America/Havana\",27],\"EET\":[\"\",50],\"Egypt\":[\"Africa/Cairo\",5],\"Eire\":[\"Europe/Dublin\",76],\"EST\":[\"\",14],\"EST5EDT\":[\"\",21],\"Etc\":{\"GMT-0\":[\"Etc/GMT\",0],\"GMT-1\":[\"\",6],\"GMT-10\":[\"\",35],\"GMT-11\":[\"\",33],\"GMT-12\":[\"\",42],\"GMT-13\":[\"\",77],\"GMT-14\":[\"\",78],\"GMT-2\":[\"\",79],\"GMT-3\":[\"\",39],\"GMT-4\":[\"\",43],\"GMT-5\":[\"\",37],\"GMT-6\":[\"\",41],\"GMT-7\":[\"\",34],\"GMT-8\":[\"\",45],\"GMT-9\":[\"\",47],\"GMT\":[\"\",0],\"GMT+0\":[\"Etc/GMT\",0],\"GMT+1\":[\"\",67],\"GMT+10\":[\"\",80],\"GMT+11\":[\"\",81],\"GMT+12\":[\"\",82],\"GMT+2\":[\"\",24],\"GMT+3\":[\"\",12],\"GMT+4\":[\"\",16],\"GMT+5\":[\"\",17],\"GMT+6\":[\"\",83],\"GMT+7\":[\"\",84],\"GMT+8\":[\"\",85],\"GMT+9\":[\"\",86],\"GMT0\":[\"Etc/GMT\",0],\"Greenwich\":[\"Etc/GMT\",0],\"UCT\":[\"Etc/UTC\",87],\"Universal\":[\"Etc/UTC\",87],\"UTC\":[\"\",87],\"Zulu\":[\"Etc/UTC\",87]},\"Europe\":{\"Amsterdam\":[\"Europe/Brussels\",7],\"Andorra\":[\"\",7],\"Astrakhan\":[\"\",43],\"Athens\":[\"\",50],\"Belfast\":[\"Europe/London\",88],\"Belgrade\":[\"\",7],\"Berlin\":[\"\",7],\"Bratislava\":[\"Europe/Prague\",7],\"Brussels\":[\"\",7],\"Bucharest\":[\"\",50],\"Budapest\":[\"\",7],\"Busingen\":[\"Europe/Zurich\",7],\"Chisinau\":[\"\",89],\"Copenhagen\":[\"Europe/Berlin\",7],\"Dublin\":[\"\",76],\"Gibraltar\":[\"\",7],\"Guernsey\":[\"Europe/London\",88],\"Helsinki\":[\"\",50],\"Isle_of_Man\":[\"Europe/London\",88],\"Istanbul\":[\"\",39],\"Jersey\":[\"Europe/London\",88],\"Kaliningrad\":[\"\",5],\"Kiev\":[\"Europe/Kyiv\",61],\"Kirov\":[\"\",39],\"Kyiv\":[\"\",61],\"Lisbon\":[\"\",90],\"Ljubljana\":[\"Europe/Belgrade\",7],\"London\":[\"\",88],\"Luxembourg\":[\"Europe/Brussels\",7],\"Madrid\":[\"\",7],\"Malta\":[\"\",7],\"Mariehamn\":[\"Europe/Helsinki\",50],\"Minsk\":[\"\",39],\"Monaco\":[\"Europe/Paris\",7],\"Moscow\":[\"\",91],\"Nicosia\":[\"Asia/Nicosia\",61],\"Oslo\":[\"Europe/Berlin\",7],\"Paris\":[\"\",7],\"Podgorica\":[\"Europe/Belgrade\",7],\"Prague\":[\"\",7],\"Riga\":[\"\",50],\"Rome\":[\"\",7],\"Samara\":[\"\",43],\"San_Marino\":[\"Europe/Rome\",7],\"Sarajevo\":[\"Europe/Belgrade\",7],\"Saratov\":[\"\",43],\"Simferopol\":[\"\",91],\"Skopje\":[\"Europe/Belgrade\",7],\"Sofia\":[\"\",50],\"Stockholm\":[\"Europe/Berlin\",7],\"Tallinn\":[\"\",50],\"Tirane\":[\"\",7],\"Tiraspol\":[\"Europe/Chisinau\",89],\"Ulyanovsk\":[\"\",43],\"Uzhgorod\":[\"Europe/Kyiv\",61],\"Vaduz\":[\"Europe/Zurich\",7],\"Vatican\":[\"Europe/Rome\",7],\"Vienna\":[\"\",7],\"Vilnius\":[\"\",50],\"Volgograd\":[\"\",39],\"Warsaw\":[\"\",7],\"Zagreb\":[\"Europe/Belgrade\",7],\"Zaporozhye\":[\"Europe/Kyiv\",61],\"Zurich\":[\"\",7]},\"GB-Eire\":[\"Europe/London\",88],\"GB\":[\"Europe/London\",88],\"GMT-0\":[\"Etc/GMT\",0],\"GMT\":[\"Etc/GMT\",0],\"GMT+0\":[\"Etc/GMT\",0],\"GMT0\":[\"Etc/GMT\",0],\"Greenwich\":[\"Etc/GMT\",0],\"Hongkong\":[\"Asia/Hong_Kong\",52],\"HST\":[\"\",92],\"Iceland\":[\"Africa/Abidjan\",0],\"Indian\":{\"Antananarivo\":[\"Africa/Nairobi\",1],\"Chagos\":[\"\",41],\"Christmas\":[\"Asia/Bangkok\",34],\"Cocos\":[\"Asia/Yangon\",63],\"Comoro\":[\"Africa/Nairobi\",1],\"Kerguelen\":[\"Indian/Maldives\",37],\"Mahe\":[\"Asia/Dubai\",43],\"Maldives\":[\"\",37],\"Mauritius\":[\"\",43],\"Mayotte\":[\"Africa/Nairobi\",1],\"Reunion\":[\"Asia/Dubai\",43]},\"Iran\":[\"Asia/Tehran\",64],\"Israel\":[\"Asia/Jerusalem\",55],\"Jamaica\":[\"America/Jamaica\",14],\"Japan\":[\"Asia/Tokyo\",65],\"Kwajalein\":[\"Pacific/Kwajalein\",42],\"Libya\":[\"Africa/Tripoli\",5],\"MET\":[\"\",93],\"Mexico\":{\"BajaNorte\":[\"America/Tijuana\",22],\"BajaSur\":[\"America/Mazatlan\",20],\"General\":[\"America/Mexico_City\",15]},\"MST\":[\"\",20],\"MST7MDT\":[\"\",18],\"Navajo\":[\"America/Denver\",18],\"NZ-CHAT\":[\"Pacific/Chatham\",94],\"NZ\":[\"Pacific/Auckland\",38],\"Pacific\":{\"Apia\":[\"\",77],\"Auckland\":[\"\",38],\"Bougainville\":[\"\",33],\"Chatham\":[\"\",94],\"Chuuk\":[\"Pacific/Port_Moresby\",35],\"Easter\":[\"\",75],\"Efate\":[\"\",33],\"Enderbury\":[\"Pacific/Kanton\",77],\"Fakaofo\":[\"\",77],\"Fiji\":[\"\",42],\"Funafuti\":[\"Pacific/Tarawa\",42],\"Galapagos\":[\"\",83],\"Gambier\":[\"\",86],\"Guadalcanal\":[\"\",33],\"Guam\":[\"\",95],\"Honolulu\":[\"\",92],\"Johnston\":[\"Pacific/Honolulu\",92],\"Kanton\":[\"\",77],\"Kiritimati\":[\"\",78],\"Kosrae\":[\"\",33],\"Kwajalein\":[\"\",42],\"Majuro\":[\"Pacific/Tarawa\",42],\"Marquesas\":[\"\",96],\"Midway\":[\"Pacific/Pago_Pago\",97],\"Nauru\":[\"\",42],\"Niue\":[\"\",81],\"Norfolk\":[\"\",98],\"Noumea\":[\"\",33],\"Pago_Pago\":[\"\",97],\"Palau\":[\"\",47],\"Pitcairn\":[\"\",85],\"Pohnpei\":[\"Pacific/Guadalcanal\",33],\"Ponape\":[\"Pacific/Guadalcanal\",33],\"Port_Moresby\":[\"\",35],\"Rarotonga\":[\"\",80],\"Saipan\":[\"Pacific/Guam\",95],\"Samoa\":[\"Pacific/Pago_Pago\",97],\"Tahiti\":[\"\",80],\"Tarawa\":[\"\",42],\"Tongatapu\":[\"\",77],\"Truk\":[\"Pacific/Port_Moresby\",35],\"Wake\":[\"Pacific/Tarawa\",42],\"Wallis\":[\"Pacific/Tarawa\",42],\"Yap\":[\"Pacific/Port_Moresby\",35]},\"Poland\":[\"Europe/Warsaw\",7],\"Portugal\":[\"Europe/Lisbon\",90],\"PRC\":[\"Asia/Shanghai\",48],\"PST8PDT\":[\"\",22],\"ROC\":[\"Asia/Taipei\",48],\"ROK\":[\"Asia/Seoul\",62],\"Singapore\":[\"Asia/Singapore\",45],\"Turkey\":[\"Europe/Istanbul\",39],\"UCT\":[\"Etc/UTC\",87],\"Universal\":[\"Etc/UTC\",87],\"US\":{\"Alaska\":[\"America/Anchorage\",10],\"Aleutian\":[\"America/Adak\",9],\"Arizona\":[\"America/Phoenix\",20],\"Central\":[\"America/Chicago\",19],\"East-Indiana\":[\"America/Indiana/Indianapolis\",21],\"Eastern\":[\"America/New_York\",21],\"Hawaii\":[\"Pacific/Honolulu\",92],\"Indiana-Starke\":[\"America/Indiana/Knox\",19],\"Michigan\":[\"America/Detroit\",21],\"Mountain\":[\"America/Denver\",18],\"Pacific\":[\"America/Los_Angeles\",22],\"Samoa\":[\"Pacific/Pago_Pago\",97]},\"UTC\":[\"Etc/UTC\",87],\"W-SU\":[\"Europe/Moscow\",91],\"WET\":[\"\",66],\"Zulu\":[\"Etc/UTC\",87]};\nconst tzlibZonesDetailsDB = [\"20230103T195358ZGMT+0000+000019700101T000000\",\"20230103T195358ZEAT+0300+030019700101T000000\",\"20230103T195358ZCET+0100+010019700101T000000\",\"20230103T195358ZWAT+0100+010019700101T000000\",\"20230103T195358ZCAT+0200+020019700101T000000\",\"20230103T195358ZEET+0200+020019700101T000000\",\"20230103T195358Z+01+0100+010019700101T000000\",\"20230103T195358ZCEST+0100+020019700329T020000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SUCET+0200+010019701025T030000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\",\"20230103T195358ZSAST+0200+020019700101T000000\",\"20230103T195358ZHDT-1000-090019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SUHST-0900-100019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\",\"20230103T195358ZAKDT-0900-080019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SUAKST-0800-090019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\",\"20230103T195358ZAST-0400-040019700101T000000\",\"20230103T195358Z-03-0300-030019700101T000000\",\"20230103T195358Z-03-0400-030019701004T000000FREQ=YEARLY;BYMONTH=10;BYDAY=1SU-04-0300-040019700322T000000FREQ=YEARLY;BYMONTH=3;BYDAY=4SU\",\"20230103T195358ZEST-0500-050019700101T000000\",\"20230103T195358ZCST-0600-060019700101T000000\",\"20230103T195358Z-04-0400-040019700101T000000\",\"20230103T195358Z-05-0500-050019700101T000000\",\"20230103T195358ZMDT-0700-060019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SUMST-0600-070019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\",\"20230103T195358ZCDT-0600-050019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SUCST-0500-060019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\",\"20230103T195358ZMST-0700-070019700101T000000\",\"20230103T195358ZEDT-0500-040019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SUEST-0400-050019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\",\"20230103T195358ZPDT-0800-070019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SUPST-0700-080019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\",\"20230103T195358ZADT-0400-030019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SUAST-0300-040019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\",\"20230103T195358Z-02-0200-020019700101T000000\",\"20230103T195358ZAST-0300-040019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SUADT-0400-030019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\",\"20230103T195358ZEST-0400-050019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SUEDT-0500-040019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\",\"20230103T195358ZCST-0400-050019701101T010000FREQ=YEARLY;BYMONTH=11;BYDAY=1SUCDT-0500-040019700308T000000FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\",\"20230103T195358Z-02-0300-020019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SU-03-0200-030019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\",\"20230103T195358ZCST-0500-060019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SUCDT-0600-050019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\",\"20230103T195358Z-04-0300-040019700405T000000FREQ=YEARLY;BYMONTH=4;BYDAY=1SU-03-0400-030019700906T000000FREQ=YEARLY;BYMONTH=9;BYDAY=1SU\",\"20230103T195358Z+00-0100+000019700329T000000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU-01+0000-010019701025T010000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\",\"20230103T195358ZNST-0230-033019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SUNDT-0330-023019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\",\"20230103T195358Z+11+1100+110019700101T000000\",\"20230103T195358Z+07+0700+070019700101T000000\",\"20230103T195358Z+10+1000+100019700101T000000\",\"20230103T195358ZAEST+1100+100019700405T030000FREQ=YEARLY;BYMONTH=4;BYDAY=1SUAEDT+1000+110019701004T020000FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\",\"20230103T195358Z+05+0500+050019700101T000000\",\"20230103T195358ZNZDT+1200+130019700927T020000FREQ=YEARLY;BYMONTH=9;BYDAY=-1SUNZST+1300+120019700405T030000FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\",\"20230103T195358Z+03+0300+030019700101T000000\",\"20230103T195358Z+02+0000+020019700329T010000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU+00+0200+000019701025T030000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\",\"20230103T195358Z+06+0600+060019700101T000000\",\"20230103T195358Z+12+1200+120019700101T000000\",\"20230103T195358Z+04+0400+040019700101T000000\",\"20230103T195358ZEEST+0200+030019700329T000000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SUEET+0300+020019701025T000000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\",\"20230103T195358Z+08+0800+080019700101T000000\",\"20230103T195358ZIST+0530+053019700101T000000\",\"20230103T195358Z+09+0900+090019700101T000000\",\"20230103T195358ZCST+0800+080019700101T000000\",\"20230103T195358Z+0530+0530+053019700101T000000\",\"20230103T195358ZEEST+0200+030019700329T030000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SUEET+0300+020019701025T040000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\",\"20230103T195358ZEET+0300+020019701024T020000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SAEEST+0200+030019700328T020000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA\",\"20230103T195358ZHKT+0800+080019700101T000000\",\"20230103T195358ZWIB+0700+070019700101T000000\",\"20230103T195358ZWIT+0900+090019700101T000000\",\"20230103T195358ZIDT+0200+030019700327T020000FREQ=YEARLY;BYMONTH=3;BYDAY=-1FRIST+0300+020019701025T020000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\",\"20230103T195358Z+0430+0430+043019700101T000000\",\"20230103T195358ZPKT+0500+050019700101T000000\",\"20230103T195358Z+0545+0545+054519700101T000000\",\"20230103T195358ZWITA+0800+080019700101T000000\",\"20230103T195358ZPST+0800+080019700101T000000\",\"20230103T195358ZEET+0300+020019701025T040000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SUEEST+0200+030019700329T030000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\",\"20230103T195358ZKST+0900+090019700101T000000\",\"20230103T195358Z+0630+0630+063019700101T000000\",\"20230103T195358Z+0330+0330+033019700101T000000\",\"20230103T195358ZJST+0900+090019700101T000000\",\"20230103T195358ZWEST+0000+010019700329T010000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SUWET+0100+000019701025T020000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\",\"20230103T195358Z-01-0100-010019700101T000000\",\"20230103T195358ZACST+1030+093019700405T030000FREQ=YEARLY;BYMONTH=4;BYDAY=1SUACDT+0930+103019701004T020000FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\",\"20230103T195358ZAEST+1000+100019700101T000000\",\"20230103T195358ZAEDT+1000+110019701004T020000FREQ=YEARLY;BYMONTH=10;BYDAY=1SUAEST+1100+100019700405T030000FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\",\"20230103T195358ZACST+0930+093019700101T000000\",\"20230103T195358Z+0845+0845+084519700101T000000\",\"20230103T195358Z+1030+1100+103019700405T020000FREQ=YEARLY;BYMONTH=4;BYDAY=1SU+11+1030+110019701004T020000FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\",\"20230103T195358ZAWST+0800+080019700101T000000\",\"20230103T195358Z-06-0500-060019700404T220000FREQ=YEARLY;BYMONTH=4;BYDAY=1SA-05-0600-050019700905T220000FREQ=YEARLY;BYMONTH=9;BYDAY=1SA\",\"20230103T195358ZIST+0000+010019700329T010000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SUGMT+0100+000019701025T020000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\",\"20230103T195358Z+13+1300+130019700101T000000\",\"20230103T195358Z+14+1400+140019700101T000000\",\"20230103T195358Z+02+0200+020019700101T000000\",\"20230103T195358Z-10-1000-100019700101T000000\",\"20230103T195358Z-11-1100-110019700101T000000\",\"20230103T195358Z-12-1200-120019700101T000000\",\"20230103T195358Z-06-0600-060019700101T000000\",\"20230103T195358Z-07-0700-070019700101T000000\",\"20230103T195358Z-08-0800-080019700101T000000\",\"20230103T195358Z-09-0900-090019700101T000000\",\"20230103T195358ZUTC+0000+000019700101T000000\",\"20230103T195358ZBST+0000+010019700329T010000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SUGMT+0100+000019701025T020000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\",\"20230103T195358ZEEST+0200+030019700329T020000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SUEET+0300+020019701025T030000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\",\"20230103T195358ZWET+0100+000019701025T020000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SUWEST+0000+010019700329T010000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\",\"20230103T195358ZMSK+0300+030019700101T000000\",\"20230103T195358ZHST-1000-100019700101T000000\",\"20230103T195358ZMEST+0100+020019700329T020000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SUMET+0200+010019701025T030000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\",\"20230103T195358Z+1345+1245+134519700927T024500FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU+1245+1345+124519700405T034500FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\",\"20230103T195358ZChST+1000+100019700101T000000\",\"20230103T195358Z-0930-0930-093019700101T000000\",\"20230103T195358ZSST-1100-110019700101T000000\",\"20230103T195358Z+12+1100+120019701004T020000FREQ=YEARLY;BYMONTH=10;BYDAY=1SU+11+1200+110019700405T030000FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\"];\nfunction tzlib_get_content(tzName) {\n const nameParts = tzName.split('/');\n if (\n (nameParts.length === 3 &&\n (!tzlibZonesDB[`${nameParts[0]}`] ||\n !tzlibZonesDB[`${nameParts[0]}`][`${nameParts[1]}`] ||\n !tzlibZonesDB[`${nameParts[0]}`][`${nameParts[1]}`][`${nameParts[2]}`])) ||\n (nameParts.length === 2 &&\n (!tzlibZonesDB[`${nameParts[0]}`] || !tzlibZonesDB[`${nameParts[0]}`][`${nameParts[1]}`])) ||\n (nameParts.length === 1 && !tzlibZonesDB[`${nameParts[0]}`])\n ) {\n console.error('Given timezone not valid.');\n return '';\n }\n if (nameParts.length === 3) {\n return [\n tzlibZonesDB[`${nameParts[0]}`][`${nameParts[1]}`][`${nameParts[2]}`][0],\n tzlib_enrich_data(\n tzlibZonesDetailsDB[tzlibZonesDB[`${nameParts[0]}`][`${nameParts[1]}`][`${nameParts[2]}`][1]]\n ),\n ];\n }\n if (nameParts.length === 2) {\n return [\n tzlibZonesDB[`${nameParts[0]}`][`${nameParts[1]}`][0],\n tzlib_enrich_data(tzlibZonesDetailsDB[tzlibZonesDB[`${nameParts[0]}`][`${nameParts[1]}`][1]]),\n ];\n }\n return [\n tzlibZonesDB[`${nameParts[0]}`][0],\n tzlib_enrich_data(tzlibZonesDetailsDB[tzlibZonesDB[`${nameParts[0]}`][1]]),\n ];\n}\nfunction tzlib_enrich_data(string) {\n const shortenerMap = {\n '
': '',\n 'TZNAME:': '',\n 'TZOFFSETFROM:': '',\n 'TZOFFSETTO:': '',\n 'DTSTART:': '',\n 'RRULE:': '',\n 'BEGIN:DAYLIGHT': '',\n 'END:DAYLIGHT': '',\n 'BEGIN:STANDARD': '',\n 'END:STANDARD': '',\n };\n for (const [key, value] of Object.entries(shortenerMap)) {\n string = string.replaceAll(value, key);\n }\n return string;\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction tzlib_get_ical_block(tzName, jsonType = false) {\n const tzBlock = tzlib_get_content(tzName);\n if (tzBlock[1] == null || tzBlock[1] == '') {\n return '';\n }\n const location = (function () {\n if (tzBlock[0] == '') {\n return tzName;\n } else {\n return tzBlock[0];\n }\n })();\n const tzidLine = 'TZID=' + location;\n const output = [\n 'BEGIN:VTIMEZONE\\r\\nTZID:' +\n location +\n '\\r\\nX-LIC-LOCATION:' +\n location +\n '\\r\\nLAST-MODIFIED:' +\n tzBlock[1].replace(/[^\\w_\\-:,;=+/
]/g, '').replace(/
/g, '\\r\\n') +\n 'END:VTIMEZONE',\n tzidLine,\n ];\n if (jsonType) {\n return JSON.stringify(output);\n }\n return output;\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction tzlib_get_offset(tzName, isoDate, isoTime) {\n const tzBlock = tzlib_get_content(tzName);\n if (tzBlock[1] == null || tzBlock[1] == '') {\n return '';\n }\n if (!isoDate.match(/^\\d{4}-\\d{2}-\\d{2}$/)) {\n console.error('offset calculation failed: date misspelled [-> YYYY-MM-DD]');\n return '';\n }\n if (!isoTime.match(/^\\d{2}:\\d{2}$/)) {\n console.error('offset calculation failed: time misspelled [-> hh:mm]');\n return '';\n }\n if (!tzBlock[1].match(/BEGIN:DAYLIGHT/i)) {\n return tzBlock[1].match(/TZOFFSETTO:([+|-]\\d{4})/i)[1];\n }\n const dateString = isoDate + 'T' + isoTime + ':00';\n const date = new Date(dateString);\n const dateYear = date.getFullYear();\n const dateMonth = date.getMonth() + 1;\n const dateDay = date.getDate();\n const dateHour = date.getHours();\n const timezoneData = tzBlock[1].replace(/[^\\w_\\-:,;=+/
]/g, '').split('
');\n const tzBreakpoints = { 1: {}, 2: {} };\n let breakpointCount = 0;\n for (let i = 0; i < timezoneData.length; i++) {\n if (timezoneData[`${i}`].startsWith('TZOFFSETTO')) {\n breakpointCount++;\n tzBreakpoints[`${breakpointCount}`].offset = timezoneData[`${i}`].split(':')[1];\n }\n if (timezoneData[`${i}`].startsWith('DTSTART')) {\n tzBreakpoints[`${breakpointCount}`].hour = parseInt(timezoneData[`${i}`].substr(17, 2));\n }\n if (timezoneData[`${i}`].startsWith('RRULE')) {\n let rruleParts = timezoneData[`${i}`].split(';');\n let rruleMonth = parseInt(rruleParts[1].split('=')[1]);\n tzBreakpoints[`${breakpointCount}`].month = parseInt(rruleMonth);\n tzBreakpoints[`${breakpointCount}`].day = rruleParts[2].split('=')[1];\n }\n }\n if (tzBreakpoints[1].month > tzBreakpoints[2].month) {\n [tzBreakpoints[1], tzBreakpoints[2]] = [tzBreakpoints[2], tzBreakpoints[1]];\n }\n if (dateMonth != tzBreakpoints[1].month && dateMonth != tzBreakpoints[2].month) {\n if (dateMonth < tzBreakpoints[1].month || dateMonth > tzBreakpoints[2].month) {\n return tzBreakpoints[2].offset;\n } else {\n return tzBreakpoints[1].offset;\n }\n }\n const theCase = (function () {\n return Object.keys(tzBreakpoints).find((key) => tzBreakpoints[`${key}`].month == dateMonth);\n })();\n const helperArrayWeekdays = ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'];\n const numberDays = new Date(dateYear, dateMonth, 0).getDate();\n let weekdayCount = new Date(dateYear, dateMonth - 1, 1).getDay();\n const weekdays = { SU: {}, MO: {}, TU: {}, WE: {}, TH: {}, FR: {}, SA: {} };\n for (let d = 1; d <= numberDays; d++) {\n const occurence = Object.keys(weekdays[helperArrayWeekdays[`${weekdayCount}`]]).length + 1;\n weekdays[helperArrayWeekdays[`${weekdayCount}`]][`${occurence}`] = d;\n weekdayCount++;\n if (weekdayCount == 7) {\n weekdayCount = 0;\n }\n }\n const actualDay = (function () {\n if (tzBreakpoints[`${theCase}`].day[0] == '-') {\n const breakpointWeekday = tzBreakpoints[`${theCase}`].day.substr(2, 2);\n const dayIndex =\n Object.keys(weekdays[`${breakpointWeekday}`]).length +\n 1 -\n parseInt(tzBreakpoints[`${theCase}`].day[1]);\n return weekdays[`${breakpointWeekday}`][`${dayIndex}`];\n } else {\n const breakpointWeekday = tzBreakpoints[`${theCase}`].day.substr(1, 2);\n return weekdays[`${breakpointWeekday}`][tzBreakpoints[`${theCase}`].day[0]];\n }\n })();\n if (dateDay > actualDay || (dateDay == actualDay && dateHour >= tzBreakpoints[`${theCase}`].hour)) {\n return tzBreakpoints[`${theCase}`].offset;\n }\n const fallbackCase = (function () {\n if (theCase == 1) {\n return 2;\n } else {\n return 1;\n }\n })();\n return tzBreakpoints[`${fallbackCase}`].offset;\n}\nlet tzlibZoneNames = [];\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction tzlib_get_timezones(jsonType = false) {\n if (tzlibZoneNames.length == 0) {\n tzlibZoneNames = (function () {\n let namesArr = [];\n for (const [key, value] of Object.entries(tzlibZonesDB)) {\n if (typeof value === 'object' && !Array.isArray(value)) {\n for (const [key2, value2] of Object.entries(value)) {\n if (typeof value2 === 'object' && !Array.isArray(value2)) {\n for (const [key3] of Object.entries(value2)) {\n namesArr.push(key + '/' + key2 + '/' + key3);\n }\n } else {\n namesArr.push(key + '/' + key2);\n }\n }\n } else {\n namesArr.push(key);\n }\n }\n return namesArr;\n })();\n }\n if (jsonType) {\n return JSON.stringify(tzlibZoneNames);\n }\n return tzlibZoneNames;\n}\nexport { tzlib_get_ical_block, tzlib_get_offset, tzlib_get_timezones };\n","import { tzlib_get_ical_block, tzlib_get_offset, tzlib_get_timezones } from 'timezones-ical-library';\n/*!\n * @preserve\n *\n * ++++++++++++++++++++++\n * Add to Calendar Button\n * ++++++++++++++++++++++\n *\n * Version: 2.1.1\n * Creator: Jens Kuerschner (https://jenskuerschner.de)\n * Project: https://github.com/add2cal/add-to-calendar-button\n * License: Elastic License 2.0 (ELv2) (https://github.com/add2cal/add-to-calendar-button/blob/main/LICENSE.txt)\n * Note: DO NOT REMOVE THE COPYRIGHT NOTICE ABOVE!\n *\n */\nconst atcbVersion = '2.1.1';\nconst atcbCssTemplate = {\r\"default\": \":host{width:fit-content;--base-font-size-l:16px;--base-font-size-m:16px;--base-font-size-s:16px;--font:arial,helvetica,sans-serif;--keyboard-focus:#1e90ff;--btn-background:#f5f5f5;--btn-background-hover:#fff;--btn-border:#d2d2d2;--btn-text:#333;--btn-text-hover:#000;--btn-shadow:rgba(0 0 0 / 20%) 2px 5px 18px -1px,rgba(0 0 0 / 15%) 2px 2px 10px -3px;--btn-shadow-hover:rgba(0 0 0 / 35%) 2px 5px 18px -1px,rgba(0 0 0 / 30%) 2px 2px 10px -3px;--btn-shadow-active:rgba(0 0 0 / 50%) 2px 5px 18px -1px,rgba(0 0 0 / 45%) 2px 2px 10px -3px;--list-background:#f5f5f5;--list-background-hover:#fff;--list-text:#333;--list-text-hover:#000;--list-close-background:#e5e5e5;--list-close-text:#777;--list-shadow:rgba(0 0 0 / 20%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 2px 2px 10px -3px;--list-shadow-modal:rgba(0 0 0 / 60%) 3px 6px 40px -5px,rgba(0 0 0 / 60%) 3px 3px 15px -4px;--modal-text:#000;--modal-background:#f5f5f5;--modal-btn-bar:#c6c8cd;--modal-btn-background:#f5f5f5;--modal-btn-secondary-background:#e2e1e6;--modal-btn-background-hover:#fff;--modal-btn-text:#2e2e2e;--modal-btn-text-hover:#161616;--modal-btn-secondary-text:#666567;--modal-shadow:drop-shadow(5px 8px 30px rgba(0 0 0 / 70%));--modal-shadow-btn:rgba(0 0 0 / 10%) 2px 3px 10px -3px,rgba(0 0 0 / 25%) 1px 1px 8px -4px;--modal-shadow-btn-hover:rgba(0 0 0 / 35%) 3px 5px 15px -2px,rgba(0 0 0 / 20%) 2px 4px 25px -6px;--date-btn-text:#1d1d1e;--date-btn-text-secondary:#3a3a3f;--date-btn-cal-day-text:#fff;--date-btn-cal-month-text:#d3d2d7;--date-btn-cal-background:#313132;--date-btn-background:#eae9ed;--date-btn-background-hover:#fff;--date-btn-shadow:rgba(0 0 0 / 40%) 1px 3px 15px -4px,rgba(0 0 0 / 20%) 1px 1px 8px -4px;--date-btn-shadow-hover:rgba(0 0 0 / 40%) 4px 6px 18px -1px,rgba(0 0 0 / 35%) 4px 5px 25px -2px;--checkmark-background:radial-gradient(circle,#fff 0,rgba(255 255 255 / 80%) 40%,rgba(255 255 255 / 0%) 70%);--overlay-background:rgba(20 20 20 / 25%);--overlay-cursor:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23777' width='16' height='16' viewBox='0 0 122.878 122.88'%3E%3Cpath d='M1.426 8.313a4.87 4.87 0 0 1 0-6.886 4.87 4.87 0 0 1 6.886 0l53.127 53.127 53.127-53.127a4.87 4.87 0 0 1 6.887 0 4.87 4.87 0 0 1 0 6.886L68.324 61.439l53.128 53.128a4.87 4.87 0 0 1-6.887 6.886L61.438 68.326 8.312 121.453a4.87 4.87 0 0 1-6.886 0 4.87 4.87 0 0 1 0-6.886l53.127-53.128L1.426 8.313h0z'/%3E%3C/svg%3E\\\") 16 16,crosshair;--icon-ms365-color:#ea3e23;--icon-yahoo-color:#5f01d1;--icon-filter:none}:host(.atcb-dark){--btn-background:#2e2e2e;--btn-background-hover:#373737;--btn-border:#4d4d4d;--btn-text:#dedede;--btn-text-hover:#f1f1f1;--btn-shadow:rgba(255 255 255 / 5%) -12px -5px 20px -8px,rgba(255 255 255 / 6%) -7px -5px 15px -3px,rgba(0 0 0 / 50%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 3px 3px 20px -3px;--btn-shadow-hover:rgba(255 255 255 / 6%) -12px -5px 23px -8px,rgba(255 255 255 / 7%) -7px -5px 18px -3px,rgba(0 0 0 / 60%) 2px 5px 19px -1px,rgba(0 0 0 / 50%) 3px 3px 22px -3px;--btn-shadow-active:rgba(255 255 255 / 7%) -12px -5px 23px -8px,rgba(255 255 255 / 8%) -7px -5px 18px -3px,rgba(0 0 0 / 70%) 2px 5px 19px -1px,rgba(0 0 0 / 60%) 3px 3px 22px -3px;--list-background:#2e2e2e;--list-background-hover:#373737;--list-text:#dedede;--list-text-hover:#f1f1f1;--list-close-background:#282828;--list-shadow:rgba(255 255 255 / 5%) -12px -5px 20px -8px,rgba(255 255 255 / 6%) -7px -5px 15px -3px,rgba(0 0 0 / 50%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 3px 3px 20px -3px;--list-shadow-modal:rgba(255 255 255 / 8%) -12px -5px 30px -8px,rgba(255 255 255 / 8%) -7px -5px 15px -3px,rgba(0 0 0 / 60%) 4px 6px 50px -4px,rgba(0 0 0 / 90%) 8px 12px 40px -2px;--modal-text:#f1f1f1;--modal-background:#242424;--modal-btn-bar:#38383a;--modal-btn-background:#181819;--modal-btn-secondary-background:#2e2d30;--modal-btn-background-hover:#434246;--modal-btn-text:#dbdbdb;--modal-btn-text-hover:#fff;--modal-btn-secondary-text:#b8b8b8;--modal-shadow:drop-shadow(5px 8px 30px rgba(0 0 0 / 90%));--modal-shadow-btn:rgba(255 255 255 / 5%) -2px -2px 10px,rgba(0 0 0 / 30%) 1px 2px 8px -1px;--date-btn-text:#ebebf0;--date-btn-text-secondary:#b5b5bd;--date-btn-cal-day-text:#101010;--date-btn-cal-month-text:#3e3e3f;--date-btn-cal-background:#c7c7cd;--date-btn-background:#363636;--date-btn-background-hover:#474747;--date-btn-shadow:rgba(255 255 255 / 10%) -8px -6px 20px,rgba(0 0 0 / 50%) 1px 3px 25px -8px,rgba(0 0 0 / 50%) 1px 1px 10px -3px;--checkmark-background:radial-gradient(circle,rgba(0 0 0 / 50%) 0,rgba(0 0 0 / 30%) 40%,rgba(0 0 0 / 0%) 70%);--overlay-background:rgba(20 20 20 / 60%);--icon-ms365-color:#ea3e23;--icon-yahoo-color:#bebebe;--icon-filter:grayscale(.2)}.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-l)}@media (max-width:991px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-m)}}@media (max-width:575px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-s)}}.atcb-button-wrapper{display:block;padding:5px;position:relative}.atcb-button{align-items:center;background-color:var(--btn-background);border:1px solid var(--btn-border);border-radius:6px;box-shadow:var(--btn-shadow);color:var(--btn-text);cursor:pointer;display:flex;font-family:var(--font);font-size:1em;font-weight:600;justify-content:center;line-height:1.5em;margin:.13em;max-width:350px;min-width:10em;padding:.65em 1em;position:relative;text-align:center;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;width:auto;z-index:1}.atcb-button.atcb-no-text{min-width:0}.atcb-rtl .atcb-button{direction:rtl;text-align:right}.atcb-button:focus,.atcb-button:hover{background-color:var(--btn-background-hover);box-shadow:var(--btn-shadow-hover)}.atcb-button:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay){z-index:15000000}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay),.atcb-button.atcb-single:focus,.atcb-button.atcb-single:hover{background-color:var(--btn-background-hover);box-shadow:var(--btn-shadow-active);margin:0;padding:.78em 1.13em}.atcb-button.atcb-active.atcb-dropoverlay{z-index:14000090}.atcb-icon{height:1em;margin-bottom:.3em;margin-right:.8em;flex-grow:0;flex-shrink:0}.atcb-rtl .atcb-icon{margin-right:0;margin-left:.8em}.atcb-no-text .atcb-icon{margin-right:0;margin-left:0}.atcb-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-text{overflow-wrap:anywhere}.atcb-dropdown-anchor{bottom:4px;height:1px;width:100%;opacity:0;position:absolute}.atcb-list-wrapper{box-sizing:border-box;padding:0 4px;position:absolute;z-index:14000090}.atcb-list-wrapper.atcb-dropoverlay{z-index:15000000;max-width:max-content}.atcb-list{border-radius:0 0 6px 6px;box-sizing:border-box;box-shadow:var(--list-shadow);color:var(--list-text);display:block;font-family:var(--font);min-width:100%;position:relative;user-select:none;-webkit-user-select:none;width:fit-content}.atcb-list-item{align-items:center;background-color:var(--list-background);box-sizing:border-box;cursor:pointer;display:flex;font-size:1em;line-height:1.75em;padding:.8em;text-align:left;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.atcb-rtl .atcb-list-item{direction:rtl;text-align:right}.atcb-list-item:hover{background-color:var(--list-background-hover);color:var(--list-text-hover)}.atcb-list-item:focus-visible{background-color:var(--list-background-hover);color:var(--keyboard-focus);font-weight:600;outline:0}.atcb-list-item:last-child{border-radius:0 0 6px 6px}.atcb-dropup .atcb-list-item:last-child{border-radius:0;padding-bottom:1.25em}.atcb-dropoverlay .atcb-list .atcb-list-item:first-child,.atcb-dropup .atcb-list,.atcb-dropup .atcb-list-item:first-child,.atcb-list.atcb-modal .atcb-list-item:first-child{border-radius:6px 6px 0 0}.atcb-dropoverlay .atcb-list .atcb-list-item:only-child,.atcb-list.atcb-modal .atcb-list-item:only-child{border-radius:6px}.atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child{padding-top:1.25em}.atcb-dropoverlay .atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child,.atcb-dropup .atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child{padding-top:.8em}.atcb-dropoverlay .atcb-list,.atcb-list.atcb-modal{border-radius:6px}.atcb-list.atcb-modal{box-shadow:var(--list-shadow-modal)}.atcb-list-item .atcb-icon{margin-bottom:.5em;margin-right:.6em;width:1.125em}.atcb-rtl .atcb-list-item .atcb-icon{margin-right:0;margin-left:.6em}.atcb-no-text .atcb-list-item .atcb-icon{margin:0 auto}.atcb-list-item-close{background-color:var(--list-close-background)}.atcb-list-item.atcb-list-item-close:not(:focus-visible){color:var(--list-close-text)}.atcb-list-item-close svg{fill:currentcolor}.atcb-modal{display:block;margin:auto;min-width:250px;width:auto;position:relative;z-index:14000090}.atcb-modal-box{filter:var(--modal-shadow);color:var(--modal-text);cursor:default;box-sizing:border-box;font-family:var(--font);line-height:1.5em;text-align:left;user-select:none;-webkit-user-select:none;touch-action:manipulation;width:100%;margin-bottom:20px;max-width:32em;-webkit-tap-highlight-color:transparent}.atcb-modal-box.atcb-rtl{text-align:right;direction:rtl;padding:1.25em 1em 1.25em 2em}.atcb-modal-icon{height:2.5em;width:2.5em;border-radius:100%;background-color:var(--modal-background);padding:1.75em;margin:auto}.atcb-modal-icon svg{height:auto;fill:currentcolor;width:100%}.atcb-modal-headline{background-color:var(--modal-background);border-radius:6px 6px 0 0;font-size:1.3em;font-weight:600;line-height:1.5em;padding:1.8em 2em 1.3em;text-transform:uppercase;text-align:center}.atcb-modal-icon+.atcb-modal-headline{margin-top:-2.6em;padding-top:2.6em}.atcb-modal-content{background-color:var(--modal-background);font-size:1em;padding:.3em 2.5em 2.25em}@media (max-width:575px){.atcb-modal-headline{padding:1.8em 1em 1em}.atcb-modal-content{padding:.3em 1em 2em}}.atcb-modal-buttons{background-color:var(--modal-btn-bar);border-radius:0 0 6px 6px;box-sizing:border-box;padding:.8em 1em;text-align:center;width:100%;display:flex;justify-content:center;flex-flow:row-reverse wrap;align-items:center}a.atcb-modal-btn,button.atcb-modal-btn{background-color:var(--modal-btn-secondary-background);border:0;border-radius:6px;box-shadow:var(--modal-shadow-btn);color:var(--modal-btn-secondary-text);cursor:pointer;display:inline-block;font-family:var(--font);font-size:.9em;font-weight:600;line-height:1.5em;margin:.625em;padding:.625em 1.25em;position:relative;text-align:center;text-decoration:none;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;text-transform:uppercase}a.atcb-modal-btn.atcb-modal-btn-primary,button.atcb-modal-btn.atcb-modal-btn-primary{background-color:var(--modal-btn-background);color:var(--modal-btn-text)}a.atcb-modal-btn:hover,button.atcb-modal-btn:hover{background-color:var(--modal-btn-background-hover);box-shadow:var(--modal-shadow-btn-hover);color:var(--modal-btn-text-hover);text-decoration:none}a.atcb-modal-btn:focus-visible,button.atcb-modal-btn:focus-visible{background-color:var(--modal-btn-background-hover);outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn{display:flex;align-items:flex-start;cursor:pointer;font-family:var(--font);font-size:1em;box-shadow:var(--date-btn-shadow);background-color:var(--date-btn-background);border:0;border-radius:6px;padding:0;margin:0;touch-action:manipulation;position:relative;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.atcb-subevent-btn:hover{align-items:center}.atcb-subevent-btn:focus,.atcb-subevent-btn:hover{background-color:var(--date-btn-background-hover);box-shadow:var(--date-btn-shadow-hover)}.atcb-subevent-btn:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn+.atcb-subevent-btn{margin-top:30px}.atcb-date-btn-left{border-radius:4px 0 0 4px;align-self:stretch;background-color:var(--date-btn-cal-background);color:var(--date-btn-background-hover);padding:.7em .8em .8em;width:2.7em;align-items:center;display:flex;flex-direction:column}.atcb-rtl .atcb-date-btn-left{border-radius:0 4px 4px 0}.atcb-subevent-btn:hover .atcb-date-btn-left{opacity:.8}.atcb-date-btn-day{color:var(--date-btn-cal-day-text);font-weight:300;font-size:2em;word-break:keep-all;padding-bottom:.1em}.atcb-initialized[lang=ja] .atcb-date-btn-day,.atcb-initialized[lang=ko] .atcb-date-btn-day,.atcb-initialized[lang=zh] .atcb-date-btn-day{font-size:1.3em}.atcb-date-btn-month{color:var(--date-btn-cal-month-text);font-weight:600;font-size:1em}.atcb-date-btn-right{position:relative;color:var(--date-btn-text);min-width:12.5em;overflow-wrap:anywhere}.atcb-date-btn-details{opacity:1;padding:.7em .8em;text-align:left}.atcb-rtl .atcb-date-btn-details{text-align:right}.atcb-date-btn-hover{position:absolute;top:0;left:0;width:100%;opacity:0;height:100%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:1em}.atcb-subevent-btn:hover .atcb-date-btn-details{opacity:0}.atcb-subevent-btn:hover .atcb-date-btn-hover{opacity:1}.atcb-date-btn-headline{font-weight:600;font-size:.9em;margin-bottom:.5em;overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.atcb-date-btn-content{display:flex;align-items:center;font-size:.8em;color:var(--date-btn-text-secondary)}.atcb-date-btn-content-location{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-all}.atcb-date-btn-content-icon{display:inline-block;margin-top:-.3em;height:.8em;width:1.3em;flex:0 0 1.3em}.atcb-rtl .atcb-date-btn-content-icon{margin-right:0;margin-left:.5em}.atcb-initialized[lang=ja] .atcb-date-btn-content-icon,.atcb-initialized[lang=ko] .atcb-date-btn-content-icon,.atcb-initialized[lang=zh] .atcb-date-btn-content-icon{margin-top:-.2em}.atcb-date-btn-content-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-date-btn-content+.atcb-date-btn-content{margin-top:.3em}.atcb-date-btn-content-recurr-icon{padding-left:.3em}.atcb-checkmark{display:none}.atcb-saved .atcb-checkmark{box-sizing:content-box;color:var(--btn-text);display:block;position:absolute;top:-1.2em;right:-.3em;padding:.5em;background:var(--checkmark-background);border-radius:100%;height:2em}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay) .atcb-checkmark,.atcb-button.atcb-single:focus .atcb-checkmark,.atcb-button.atcb-single:hover .atcb-checkmark{top:-1.07em;right:-.17em}.atcb-checkmark svg{height:100%;fill:currentcolor;width:auto}#atcb-bgoverlay{animation:atcb-bgoverlay-animate .1s ease 0s 1 normal forwards;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);background-color:var(--overlay-background);border:0;box-sizing:border-box;display:flex;height:calc(100vh + 100px);inset-inline:0;left:0;right:0;top:0;min-height:100%;min-width:100%;opacity:0;overflow-y:auto;padding:20px 20px 130px;position:fixed;width:100vw;z-index:14000000}#atcb-bgoverlay.atcb-no-bg{animation:none;backdrop-filter:none;-webkit-backdrop-filter:none;opacity:1;background-color:transparent}@keyframes atcb-bgoverlay-animate{0%{opacity:0}100%{opacity:1}}#atcb-bgoverlay.atcb-click:hover{cursor:var(--overlay-cursor)}.atcb-icon .atcb-icon-apple svg{fill:currentcolor}.atcb-icon .atcb-icon-ical svg{fill:currentcolor}.atcb-icon .atcb-icon-ms365 svg{fill:var(--icon-ms365-color)}.atcb-icon .atcb-icon-yahoo svg{fill:var(--icon-yahoo-color)}.atcb-icon .atcb-icon-google svg,.atcb-icon .atcb-icon-msteams svg,.atcb-icon .atcb-icon-outlookcom svg{filter:var(--icon-filter)}\",\r\"3d\": \":host{width:fit-content;--base-font-size-l:16px;--base-font-size-m:16px;--base-font-size-s:16px;--font:arial,helvetica,sans-serif;--keyboard-focus:#1e90ff;--btn-background:#f5f5f5;--btn-background-hover:#fff;--btn-border:#d2d2d2;--btn-text:#333;--btn-text-hover:#000;--btn-shadow:rgba(0 0 0 / 20%) 2px 5px 18px -1px,rgba(0 0 0 / 15%) 2px 2px 10px -3px;--btn-shadow-hover:rgba(0 0 0 / 35%) 2px 5px 18px -1px,rgba(0 0 0 / 30%) 2px 2px 10px -3px;--btn-shadow-active:rgba(0 0 0 / 50%) 2px 10px 20px -2px,rgba(0 0 0 / 45%) 2px 4px 12px -3px;--btn-shadow-active-up:rgba(0 0 0 / 40%) 2px -8px 15px -2px,rgba(0 0 0 / 50%) 2px 4px 12px -3px;--list-background:#f5f5f5;--list-background-hover:#fff;--list-text:#333;--list-text-hover:#000;--list-close-background:#e5e5e5;--list-close-text:#777;--list-shadow:rgba(0 0 0 / 20%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 2px 2px 10px -3px;--list-shadow-modal:rgba(0 0 0 / 60%) 3px 6px 40px -5px,rgba(0 0 0 / 60%) 3px 3px 15px -4px;--modal-text:#000;--modal-background:#f5f5f5;--modal-btn-bar:#c6c8cd;--modal-btn-background:#f5f5f5;--modal-btn-secondary-background:#e2e1e6;--modal-btn-background-hover:#fff;--modal-btn-text:#2e2e2e;--modal-btn-text-hover:#161616;--modal-btn-secondary-text:#666567;--modal-shadow:drop-shadow(5px 8px 30px rgba(0 0 0 / 70%));--modal-shadow-btn:rgba(0 0 0 / 10%) 2px 3px 10px -3px,rgba(0 0 0 / 25%) 1px 1px 8px -4px;--modal-shadow-btn-hover:rgba(0 0 0 / 35%) 3px 5px 15px -2px,rgba(0 0 0 / 20%) 2px 4px 25px -6px;--date-btn-text:#1d1d1e;--date-btn-text-secondary:#3a3a3f;--date-btn-cal-day-text:#fff;--date-btn-cal-month-text:#d3d2d7;--date-btn-cal-background:#313132;--date-btn-background:#eae9ed;--date-btn-background-hover:#fff;--date-btn-shadow:rgba(0 0 0 / 40%) 1px 3px 15px -4px,rgba(0 0 0 / 20%) 1px 1px 8px -4px;--date-btn-shadow-hover:rgba(0 0 0 / 40%) 4px 6px 18px -1px,rgba(0 0 0 / 35%) 4px 5px 25px -2px;--checkmark-background:radial-gradient(circle,#fff 0,rgba(255 255 255 / 80%) 40%,rgba(255 255 255 / 0%) 70%);--overlay-background:rgba(20 20 20 / 25%);--overlay-cursor:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23777' width='16' height='16' viewBox='0 0 122.878 122.88'%3E%3Cpath d='M1.426 8.313a4.87 4.87 0 0 1 0-6.886 4.87 4.87 0 0 1 6.886 0l53.127 53.127 53.127-53.127a4.87 4.87 0 0 1 6.887 0 4.87 4.87 0 0 1 0 6.886L68.324 61.439l53.128 53.128a4.87 4.87 0 0 1-6.887 6.886L61.438 68.326 8.312 121.453a4.87 4.87 0 0 1-6.886 0 4.87 4.87 0 0 1 0-6.886l53.127-53.128L1.426 8.313h0z'/%3E%3C/svg%3E\\\") 16 16,crosshair;--icon-ms365-color:#ea3e23;--icon-yahoo-color:#5f01d1;--icon-filter:none}:host(.atcb-dark){--btn-background:#2e2e2e;--btn-background-hover:#373737;--btn-border:#4d4d4d;--btn-text:#dedede;--btn-text-hover:#f1f1f1;--btn-shadow:rgba(255 255 255 / 5%) -12px -5px 20px -8px,rgba(255 255 255 / 6%) -7px -5px 15px -3px,rgba(0 0 0 / 50%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 3px 3px 20px -3px;--btn-shadow-hover:rgba(255 255 255 / 6%) -12px -5px 23px -8px,rgba(255 255 255 / 7%) -7px -5px 18px -3px,rgba(0 0 0 / 60%) 2px 5px 19px -1px,rgba(0 0 0 / 50%) 3px 3px 22px -3px;--btn-shadow-active:rgba(255 255 255 / 7%) -12px -5px 23px -8px,rgba(255 255 255 / 8%) -7px -5px 18px -3px,rgba(0 0 0 / 70%) 2px 10px 20px -1px,rgba(0 0 0 / 60%) 3px 5px 25px -3px;--btn-shadow-active-up:rgba(255 255 255 / 7%) -12px 5px 23px -8px,rgba(255 255 255 / 8%) -7px 5px 18px -3px,rgba(0 0 0 / 60%) 2px -8px 15px -1px,rgba(0 0 0 / 60%) 3px 5px 25px -3px;--list-background:#2e2e2e;--list-background-hover:#373737;--list-text:#dedede;--list-text-hover:#f1f1f1;--list-close-background:#282828;--list-shadow:rgba(255 255 255 / 5%) -12px -5px 20px -8px,rgba(255 255 255 / 6%) -7px -5px 15px -3px,rgba(0 0 0 / 50%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 3px 3px 20px -3px;--list-shadow-modal:rgba(255 255 255 / 8%) -12px -5px 30px -8px,rgba(255 255 255 / 8%) -7px -5px 15px -3px,rgba(0 0 0 / 60%) 4px 6px 50px -4px,rgba(0 0 0 / 90%) 8px 12px 40px -2px;--modal-text:#f1f1f1;--modal-background:#242424;--modal-btn-bar:#38383a;--modal-btn-background:#181819;--modal-btn-secondary-background:#2e2d30;--modal-btn-background-hover:#434246;--modal-btn-text:#dbdbdb;--modal-btn-text-hover:#fff;--modal-btn-secondary-text:#b8b8b8;--modal-shadow:drop-shadow(5px 8px 30px rgba(0 0 0 / 90%));--modal-shadow-btn:rgba(255 255 255 / 5%) -2px -2px 10px,rgba(0 0 0 / 30%) 1px 2px 8px -1px;--date-btn-text:#ebebf0;--date-btn-text-secondary:#b5b5bd;--date-btn-cal-day-text:#101010;--date-btn-cal-month-text:#3e3e3f;--date-btn-cal-background:#c7c7cd;--date-btn-background:#363636;--date-btn-background-hover:#474747;--date-btn-shadow:rgba(255 255 255 / 10%) -8px -6px 20px,rgba(0 0 0 / 50%) 1px 3px 25px -8px,rgba(0 0 0 / 50%) 1px 1px 10px -3px;--checkmark-background:radial-gradient(circle,rgba(0 0 0 / 50%) 0,rgba(0 0 0 / 30%) 40%,rgba(0 0 0 / 0%) 70%);--overlay-background:rgba(20 20 20 / 60%);--icon-ms365-color:#ea3e23;--icon-yahoo-color:#bebebe;--icon-filter:grayscale(.2)}.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-l)}@media (max-width:991px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-m)}}@media (max-width:575px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-s)}}.atcb-button-wrapper{display:block;padding:5px;position:relative}.atcb-button{align-items:center;background-color:var(--btn-background);border:1px solid var(--btn-border);border-radius:6px;box-shadow:var(--btn-shadow);color:var(--btn-text);cursor:pointer;display:flex;font-family:var(--font);font-size:1em;font-weight:600;justify-content:center;line-height:1.5em;margin:0;max-width:350px;min-width:10em;padding:.65em 1em;position:relative;text-align:center;touch-action:manipulation;transform:translate3d(0,0,-12px);user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;width:auto;z-index:1}.atcb-button.atcb-no-text{min-width:0}.atcb-rtl .atcb-button{direction:rtl;text-align:right}.atcb-button:focus,.atcb-button:hover{background-color:var(--btn-background-hover);box-shadow:var(--btn-shadow-hover)}.atcb-button:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay){background-color:var(--btn-background-hover);z-index:15000000}.atcb-button.atcb-single:focus,.atcb-button.atcb-single:hover{background-color:var(--btn-background-hover);box-shadow:var(--btn-shadow-active);margin:-.13em;padding:.78em 1.13em}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropup,.atcb-dropoverlay){box-shadow:var(--btn-shadow-active);transform:perspective(100px) rotateX(12deg) translate3d(0,0,2px);transition:transform .1s linear}.atcb-button.atcb-active.atcb-dropup:not(.atcb-modal-style,.atcb-dropoverlay){box-shadow:var(--btn-shadow-active-up);transform:perspective(100px) rotateX(348deg) translate3d(0,0,2px);transition:transform .1s linear}.atcb-button.atcb-active.atcb-dropoverlay{transform:translate3d(0,0,0);z-index:14000090}.atcb-icon{height:1em;margin-bottom:.3em;margin-right:.8em;flex-grow:0;flex-shrink:0}.atcb-rtl .atcb-icon{margin-right:0;margin-left:.8em}.atcb-no-text .atcb-icon{margin-right:0;margin-left:0}.atcb-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-text{overflow-wrap:anywhere}.atcb-dropdown-anchor{bottom:6px;height:1px;width:100%;opacity:0;position:absolute}.atcb-list-wrapper{box-sizing:border-box;padding:0 4px;position:absolute;transform:translate3d(0,0,0);z-index:14000090}.atcb-list{background-color:var(--list-background);border-radius:0 0 6px 6px;box-sizing:border-box;box-shadow:var(--list-shadow);color:var(--list-text);display:block;font-family:var(--font);min-width:100%;position:relative;user-select:none;-webkit-user-select:none;width:fit-content}.atcb-list-wrapper.atcb-dropdown:not(.atcb-dropup,.atcb-dropoverlay){animation:atcb-list-slide-down .4s ease 50ms 1 normal both;opacity:0}.atcb-list-wrapper.atcb-dropup:not(.atcb-dropoverlay){animation:atcb-list-slide-up .4s ease 50ms 1 normal both;opacity:0}.atcb-list-wrapper.atcb-dropoverlay{transform:translate3d(0,0,2px);z-index:15000000;animation:atcb-list-slide-center .3s ease 0s 1 normal both;opacity:0}@keyframes atcb-list-slide-down{0%{opacity:0;transform:rotateX(70deg);transform-origin:top}100%{opacity:1;transform:rotateX(0);transform-origin:top}}@keyframes atcb-list-slide-up{0%{opacity:0;transform:rotateX(70deg);transform-origin:bottom}100%{opacity:1;transform:rotateX(0);transform-origin:bottom}}@keyframes atcb-list-slide-center{0%{opacity:0;transform:scaleY(1)}1%{opacity:1;transform:scaleY(0)}100%{opacity:1;transform:scaleY(1)}}.atcb-list-item{align-items:center;background-color:var(--list-background);box-sizing:border-box;cursor:pointer;display:flex;font-size:1em;line-height:1.75em;padding:.8em;text-align:left;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.atcb-rtl .atcb-list-item{direction:rtl;text-align:right}.atcb-list-item:hover{background-color:var(--list-background-hover);color:var(--list-text-hover)}.atcb-list-item:focus-visible{background-color:var(--list-background-hover);color:var(--keyboard-focus);font-weight:600;outline:0}.atcb-list-item:last-child{border-radius:0 0 6px 6px}.atcb-dropup .atcb-list-item:last-child{border-radius:0;padding-bottom:1.5em}.atcb-dropoverlay .atcb-list .atcb-list-item:first-child,.atcb-dropup .atcb-list,.atcb-dropup .atcb-list-item:first-child,.atcb-list.atcb-modal .atcb-list-item:first-child{border-radius:6px 6px 0 0}.atcb-dropoverlay .atcb-list .atcb-list-item:only-child,.atcb-list.atcb-modal .atcb-list-item:only-child{border-radius:6px}.atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child{padding-top:1.5em}.atcb-dropoverlay .atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child,.atcb-dropup .atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child{padding-top:.8em}.atcb-dropoverlay .atcb-list,.atcb-list.atcb-modal{border-radius:6px}.atcb-list.atcb-modal{box-shadow:var(--list-shadow-modal)}.atcb-list-item .atcb-icon{margin-bottom:.5em;margin-right:.6em;width:1.125em}.atcb-rtl .atcb-list-item .atcb-icon{margin-right:0;margin-left:.6em}.atcb-no-text .atcb-list-item .atcb-icon{margin:0 auto}.atcb-list-item-close{background-color:var(--list-close-background)}.atcb-list-item.atcb-list-item-close:not(:focus-visible){color:var(--list-close-text)}.atcb-list-item-close svg{fill:currentcolor}.atcb-modal{display:block;margin:auto;min-width:250px;width:auto;position:relative;z-index:14000090}.atcb-modal-box{filter:var(--modal-shadow);color:var(--modal-text);cursor:default;box-sizing:border-box;font-family:var(--font);line-height:1.5em;text-align:left;user-select:none;-webkit-user-select:none;touch-action:manipulation;width:100%;margin-bottom:20px;max-width:32em;-webkit-tap-highlight-color:transparent}.atcb-modal-box.atcb-rtl{text-align:right;direction:rtl;padding:1.25em 1em 1.25em 2em}.atcb-modal-icon{height:2.5em;width:2.5em;border-radius:100%;background-color:var(--modal-background);padding:1.75em;margin:auto}.atcb-modal-icon svg{height:auto;fill:currentcolor;width:100%}.atcb-modal-headline{background-color:var(--modal-background);border-radius:6px 6px 0 0;font-size:1.3em;font-weight:600;line-height:1.5em;padding:1.8em 2em 1.3em;text-transform:uppercase;text-align:center}.atcb-modal-icon+.atcb-modal-headline{margin-top:-2.6em;padding-top:2.6em}.atcb-modal-content{background-color:var(--modal-background);font-size:1em;padding:.3em 2.5em 2.25em}@media (max-width:575px){.atcb-modal-headline{padding:1.8em 1em 1em}.atcb-modal-content{padding:.3em 1em 2em}}.atcb-modal-buttons{background-color:var(--modal-btn-bar);border-radius:0 0 6px 6px;box-sizing:border-box;padding:.8em 1em;text-align:center;width:100%;display:flex;justify-content:center;flex-flow:row-reverse wrap;align-items:center}a.atcb-modal-btn,button.atcb-modal-btn{background-color:var(--modal-btn-secondary-background);border:0;border-radius:6px;box-shadow:var(--modal-shadow-btn);color:var(--modal-btn-secondary-text);cursor:pointer;display:inline-block;font-family:var(--font);font-size:.9em;font-weight:600;line-height:1.5em;margin:.625em;padding:.625em 1.25em;position:relative;text-align:center;text-decoration:none;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;text-transform:uppercase}a.atcb-modal-btn.atcb-modal-btn-primary,button.atcb-modal-btn.atcb-modal-btn-primary{background-color:var(--modal-btn-background);color:var(--modal-btn-text)}a.atcb-modal-btn:hover,button.atcb-modal-btn:hover{background-color:var(--modal-btn-background-hover);box-shadow:var(--modal-shadow-btn-hover);color:var(--modal-btn-text-hover);text-decoration:none}a.atcb-modal-btn:focus-visible,button.atcb-modal-btn:focus-visible{background-color:var(--modal-btn-background-hover);outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn{display:flex;align-items:flex-start;cursor:pointer;font-family:var(--font);font-size:1em;box-shadow:var(--date-btn-shadow);background-color:var(--date-btn-background);border:0;border-radius:6px;padding:0;margin:0;touch-action:manipulation;position:relative;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.atcb-subevent-btn:hover{align-items:center}.atcb-subevent-btn:focus,.atcb-subevent-btn:hover{background-color:var(--date-btn-background-hover);box-shadow:var(--date-btn-shadow-hover)}.atcb-subevent-btn:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn+.atcb-subevent-btn{margin-top:30px}.atcb-date-btn-left{border-radius:4px 0 0 4px;align-self:stretch;background-color:var(--date-btn-cal-background);color:var(--date-btn-background-hover);padding:.7em .8em .8em;width:2.7em;align-items:center;display:flex;flex-direction:column}.atcb-rtl .atcb-date-btn-left{border-radius:0 4px 4px 0}.atcb-subevent-btn:hover .atcb-date-btn-left{opacity:.8}.atcb-date-btn-day{color:var(--date-btn-cal-day-text);font-weight:300;font-size:2em;word-break:keep-all;padding-bottom:.1em}.atcb-initialized[lang=ja] .atcb-date-btn-day,.atcb-initialized[lang=ko] .atcb-date-btn-day,.atcb-initialized[lang=zh] .atcb-date-btn-day{font-size:1.3em}.atcb-date-btn-month{color:var(--date-btn-cal-month-text);font-weight:600;font-size:1em}.atcb-date-btn-right{position:relative;color:var(--date-btn-text);min-width:12.5em;overflow-wrap:anywhere}.atcb-date-btn-details{opacity:1;padding:.7em .8em;text-align:left}.atcb-rtl .atcb-date-btn-details{text-align:right}.atcb-date-btn-hover{position:absolute;top:0;left:0;width:100%;opacity:0;height:100%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:1em}.atcb-subevent-btn:hover .atcb-date-btn-details{opacity:0}.atcb-subevent-btn:hover .atcb-date-btn-hover{opacity:1}.atcb-date-btn-headline{font-weight:600;font-size:.9em;margin-bottom:.5em;overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.atcb-date-btn-content{display:flex;align-items:center;font-size:.8em;color:var(--date-btn-text-secondary)}.atcb-date-btn-content-location{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-all}.atcb-date-btn-content-icon{display:inline-block;margin-top:-.3em;height:.8em;width:1.3em;flex:0 0 1.3em}.atcb-rtl .atcb-date-btn-content-icon{margin-right:0;margin-left:.5em}.atcb-initialized[lang=ja] .atcb-date-btn-content-icon,.atcb-initialized[lang=ko] .atcb-date-btn-content-icon,.atcb-initialized[lang=zh] .atcb-date-btn-content-icon{margin-top:-.2em}.atcb-date-btn-content-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-date-btn-content+.atcb-date-btn-content{margin-top:.3em}.atcb-date-btn-content-recurr-icon{padding-left:.3em}.atcb-checkmark{display:none}.atcb-saved .atcb-checkmark{box-sizing:content-box;color:var(--btn-text);display:block;position:absolute;top:-1.2em;right:-.3em;padding:.5em;background:var(--checkmark-background);border-radius:100%;height:2em}.atcb-checkmark svg{height:100%;fill:currentcolor;width:auto}#atcb-bgoverlay{animation:atcb-bgoverlay-animate .1s ease 0s 1 normal forwards;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);background-color:var(--overlay-background);border:0;box-sizing:border-box;display:flex;height:calc(100vh + 100px);inset-inline:0;left:0;right:0;top:0;min-height:100%;min-width:100%;opacity:0;overflow-y:auto;padding:20px 20px 130px;position:fixed;width:100vw;z-index:14000000}#atcb-bgoverlay.atcb-no-bg{animation:none;backdrop-filter:none;-webkit-backdrop-filter:none;opacity:1;background-color:transparent}@keyframes atcb-bgoverlay-animate{0%{opacity:0}100%{opacity:1}}#atcb-bgoverlay.atcb-click:hover{cursor:var(--overlay-cursor)}.atcb-icon .atcb-icon-apple svg{fill:currentcolor}.atcb-icon .atcb-icon-ical svg{fill:currentcolor}.atcb-icon .atcb-icon-ms365 svg{fill:var(--icon-ms365-color)}.atcb-icon .atcb-icon-yahoo svg{fill:var(--icon-yahoo-color)}.atcb-icon .atcb-icon-google svg,.atcb-icon .atcb-icon-msteams svg,.atcb-icon .atcb-icon-outlookcom svg{filter:var(--icon-filter)}\",\r\"flat\": \":host{width:fit-content;--base-font-size-l:16px;--base-font-size-m:16px;--base-font-size-s:16px;--font:arial,helvetica,sans-serif;--keyboard-focus:#1e90ff;--btn-background:#f5f5f5;--btn-background-hover:#fff;--btn-border:#545454;--btn-shadow:#333;--btn-text:#333;--btn-text-hover:#000;--list-background:#f5f5f5;--list-background-hover:#fff;--list-border:#545454;--list-text:#333;--list-text-hover:#000;--list-close-background:#545454;--list-close-text:#b0b0b0;--list-close-text-hover:#777;--modal-text:#000;--modal-background:#f5f5f5;--modal-btn-bar:#bababa;--modal-btn-background:#f5f5f5;--modal-btn-secondary-background:#e2e1e6;--modal-btn-background-hover:#fff;--modal-btn-text:#2e2e2e;--modal-btn-text-hover:#161616;--modal-btn-secondary-text:#676767;--date-btn-text:#1d1d1e;--date-btn-text-secondary:#414141;--date-btn-cal-day-text:#fff;--date-btn-cal-month-text:#d3d2d7;--date-btn-cal-background:#313132;--date-btn-background:#eae9ed;--date-btn-background-hover:#fff;--checkmark-background:radial-gradient(circle,#fff 0,rgba(255 255 255 / 80%) 40%,rgba(255 255 255 / 0%) 70%);--overlay-background:rgba(20 20 20 / 40%);--overlay-cursor:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23777' width='16' height='16' viewBox='0 0 122.878 122.88'%3E%3Cpath d='M1.426 8.313a4.87 4.87 0 0 1 0-6.886 4.87 4.87 0 0 1 6.886 0l53.127 53.127 53.127-53.127a4.87 4.87 0 0 1 6.887 0 4.87 4.87 0 0 1 0 6.886L68.324 61.439l53.128 53.128a4.87 4.87 0 0 1-6.887 6.886L61.438 68.326 8.312 121.453a4.87 4.87 0 0 1-6.886 0 4.87 4.87 0 0 1 0-6.886l53.127-53.128L1.426 8.313h0z'/%3E%3C/svg%3E\\\") 16 16,crosshair;--icon-ms365-color:#ea3e23;--icon-yahoo-color:#5f01d1;--icon-filter:none}:host(.atcb-dark){--btn-background:#222;--btn-background-hover:#373737;--btn-border:#515151;--btn-shadow:#000;--btn-text:#dedede;--btn-text-hover:#f1f1f1;--list-background:#222;--list-background-hover:#373737;--list-border:#515151;--list-text:#dedede;--list-text-hover:#f1f1f1;--list-close-background:#111;--list-close-text:#777;--list-close-text-hover:#f1f1f1;--modal-text:#f1f1f1;--modal-background:#242424;--modal-btn-bar:#313131;--modal-btn-background:#181819;--modal-btn-secondary-background:#2e2d30;--modal-btn-background-hover:#434246;--modal-btn-text:#dbdbdb;--modal-btn-text-hover:#fff;--modal-btn-secondary-text:#b8b8b8;--date-btn-text:#ebebf0;--date-btn-text-secondary:#b5b5bd;--date-btn-cal-day-text:#101010;--date-btn-cal-month-text:#414141;--date-btn-cal-background:#c7c7cd;--date-btn-background:#2d2d2d;--date-btn-background-hover:#474747;--checkmark-background:radial-gradient(circle,rgba(0 0 0 / 50%) 0,rgba(0 0 0 / 30%) 40%,rgba(0 0 0 / 0%) 70%);--overlay-background:rgba(20 20 20 / 75%);--icon-ms365-color:#ea3e23;--icon-yahoo-color:#bebebe;--icon-filter:grayscale(0.2)}.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-l)}@media (max-width:991px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-m)}}@media (max-width:575px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-s)}}.atcb-button-wrapper{display:block;padding:5px;position:relative}.atcb-button{align-items:center;background-color:var(--btn-background);border:.2em solid var(--btn-border);color:var(--btn-text);cursor:pointer;display:flex;font-family:var(--font);font-size:1em;font-weight:600;justify-content:center;line-height:1.5em;margin:0;max-width:350px;min-width:10em;padding:.8em 1.2em;top:0;left:0;box-shadow:0 0 0 0 var(--btn-shadow);position:relative;text-align:center;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;width:auto;z-index:1}.atcb-button.atcb-no-text{min-width:0}.atcb-button.atcb-click{top:-3px;left:-3px;box-shadow:3px 3px 0 0 var(--btn-shadow)}.atcb-rtl .atcb-button{direction:rtl;text-align:right}.atcb-button:focus,.atcb-button:hover{background-color:var(--btn-background-hover);top:0;left:0;box-shadow:0 0 0 0 var(--btn-shadow)}.atcb-button:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay){z-index:15000000}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay),.atcb-button.atcb-single:focus,.atcb-button.atcb-single:hover{background-color:var(--btn-background-hover);top:-5px;left:-5px;box-shadow:5px 5px 0 0 var(--btn-shadow)}.atcb-button.atcb-active.atcb-dropoverlay{z-index:14000090}.atcb-icon{height:1em;margin-right:1em;line-height:1em;flex-grow:0;flex-shrink:0}.atcb-rtl .atcb-icon{margin-right:0;margin-left:1em}.atcb-no-text .atcb-icon{margin-right:0;margin-left:0}.atcb-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-icon-trigger svg{display:none}.atcb-button .atcb-icon-trigger::after{content:\\\"+\\\";font-size:1.5em}.atcb-text{overflow-wrap:anywhere}.atcb-dropdown-anchor{bottom:0;height:0;width:100%;opacity:0;position:absolute}.atcb-list-wrapper{box-sizing:border-box;padding:0 2px 0 6px;position:absolute;z-index:16000090}.atcb-list-wrapper.atcb-dropoverlay{z-index:15000000}.atcb-list{background:var(--list-close-background);box-sizing:border-box;border:.15em solid var(--list-border);color:var(--list-text);display:block;font-family:var(--font);min-width:100%;position:relative;user-select:none;-webkit-user-select:none;width:fit-content}.atcb-list-item{align-items:center;background-color:var(--list-background);box-sizing:border-box;cursor:pointer;display:flex;font-size:1em;line-height:1.75em;padding:.8em;text-align:left;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.atcb-rtl .atcb-list-item{direction:rtl;text-align:right}.atcb-list-item:hover{background-color:var(--list-background-hover);color:var(--list-text-hover)}.atcb-list-item:focus-visible{background-color:var(--list-background-hover);color:var(--keyboard-focus);font-weight:600;outline:0}.atcb-dropup .atcb-list-item:last-child{border-bottom-width:0}.atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child{border-top-width:0}.atcb-dropoverlay .atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child,.atcb-dropup .atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child{border-top-width:.15em}.atcb-list-item .atcb-icon{margin-bottom:.1em;margin-right:.6em;width:1.125em}.atcb-rtl .atcb-list-item .atcb-icon{margin-right:0;margin-left:.6em}.atcb-no-text .atcb-list-item .atcb-icon{margin:0 auto}.atcb-list-item-close{background-color:var(--list-close-background)}.atcb-list-item.atcb-list-item-close:not(:focus-visible){color:var(--list-close-text)}.atcb-list-item.atcb-list-item-close:hover{color:var(--list-close-text-hover)}.atcb-list-item-close svg{fill:currentcolor}.atcb-modal{display:block;margin:auto;min-width:250px;width:auto;position:relative;z-index:14000090}.atcb-modal-box{border:.15em solid var(--btn-border);background-color:var(--modal-background);color:var(--modal-text);cursor:default;box-sizing:border-box;font-family:var(--font);line-height:1.5em;text-align:left;user-select:none;-webkit-user-select:none;touch-action:manipulation;width:100%;margin-bottom:20px;max-width:32em;-webkit-tap-highlight-color:transparent}.atcb-modal-box.atcb-rtl{text-align:right;direction:rtl;padding:1.25em 1em 1.25em 2em}.atcb-modal-icon{height:2.5em;width:2.5em;padding:1.75em;margin:auto}.atcb-modal-icon svg{height:auto;fill:currentcolor;width:100%}.atcb-modal-headline{font-size:1.3em;font-weight:600;line-height:1.5em;padding:1.8em 2em 1.3em;text-transform:uppercase;text-align:center}.atcb-modal-icon+.atcb-modal-headline{padding-top:0}.atcb-modal-content{padding:.3em 2.5em 2.25em;font-size:1em}@media (max-width:575px){.atcb-modal-headline{padding:1.8em 1em 1em}.atcb-modal-content{padding:.3em 1em 2em}}.atcb-modal-buttons{background-color:var(--modal-btn-bar);box-sizing:border-box;padding:.8em 1em;text-align:center;width:100%;display:flex;justify-content:center;flex-flow:row-reverse wrap;align-items:center}a.atcb-modal-btn,button.atcb-modal-btn{border:.2em solid var(--btn-border);background-color:var(--modal-btn-secondary-background);color:var(--modal-btn-secondary-text);cursor:pointer;display:inline-block;font-family:var(--font);font-size:.9em;font-weight:600;line-height:1.5em;margin:.625em;padding:.625em 1.25em;position:relative;text-align:center;text-decoration:none;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;text-transform:uppercase;top:0;left:0;box-shadow:0 0 0 0 var(--btn-shadow)}a.atcb-modal-btn.atcb-modal-btn-primary,button.atcb-modal-btn.atcb-modal-btn-primary{background-color:var(--modal-btn-background);color:var(--modal-btn-text)}a.atcb-modal-btn:hover,button.atcb-modal-btn:hover{background-color:var(--modal-btn-background-hover);color:var(--modal-btn-text-hover);text-decoration:none;top:-3px;left:-3px;box-shadow:3px 3px 0 0 var(--btn-shadow)}a.atcb-modal-btn:focus-visible,button.atcb-modal-btn:focus-visible{background-color:var(--modal-btn-background-hover);outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn{border:.15em solid var(--btn-border);display:flex;align-items:flex-start;cursor:pointer;font-family:var(--font);font-size:1em;background-color:var(--date-btn-background);padding:0;margin:0;touch-action:manipulation;position:relative;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;top:0;left:0;box-shadow:0 0 0 0 var(--btn-shadow)}.atcb-subevent-btn:hover{align-items:center;top:-3px;left:-3px;box-shadow:3px 3px 0 0 var(--btn-shadow)}.atcb-subevent-btn:focus,.atcb-subevent-btn:hover{background-color:var(--date-btn-background-hover)}.atcb-subevent-btn:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn+.atcb-subevent-btn{margin-top:30px}.atcb-date-btn-left{align-self:stretch;background-color:var(--date-btn-cal-background);color:var(--date-btn-background-hover);padding:.7em .8em .8em;width:2.7em;align-items:center;display:flex;flex-direction:column}.atcb-subevent-btn:hover .atcb-date-btn-left{opacity:.8}.atcb-date-btn-day{color:var(--date-btn-cal-day-text);font-weight:300;font-size:2em;word-break:keep-all;padding-bottom:.1em}.atcb-initialized[lang=ja] .atcb-date-btn-day,.atcb-initialized[lang=ko] .atcb-date-btn-day,.atcb-initialized[lang=zh] .atcb-date-btn-day{font-size:1.3em}.atcb-date-btn-month{color:var(--date-btn-cal-month-text);font-weight:600;font-size:1em}.atcb-date-btn-right{position:relative;color:var(--date-btn-text);min-width:12.5em;overflow-wrap:anywhere}.atcb-date-btn-details{opacity:1;padding:.7em .8em;text-align:left}.atcb-rtl .atcb-date-btn-details{text-align:right}.atcb-date-btn-hover{position:absolute;top:0;left:0;width:100%;opacity:0;height:100%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:1em}.atcb-subevent-btn:hover .atcb-date-btn-details{opacity:0}.atcb-subevent-btn:hover .atcb-date-btn-hover{opacity:1}.atcb-date-btn-headline{font-weight:600;font-size:.9em;margin-bottom:.5em;overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.atcb-date-btn-content{display:flex;align-items:center;font-size:.8em;color:var(--date-btn-text-secondary)}.atcb-date-btn-content-location{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-all}.atcb-date-btn-content-icon{display:inline-block;margin-top:-.3em;height:.8em;width:1.3em;flex:0 0 1.3em}.atcb-rtl .atcb-date-btn-content-icon{margin-right:0;margin-left:.5em}.atcb-initialized[lang=ja] .atcb-date-btn-content-icon,.atcb-initialized[lang=ko] .atcb-date-btn-content-icon,.atcb-initialized[lang=zh] .atcb-date-btn-content-icon{margin-top:-.2em}.atcb-date-btn-content-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-date-btn-content+.atcb-date-btn-content{margin-top:.3em}.atcb-date-btn-content-recurr-icon{padding-left:.3em}.atcb-checkmark{display:none}.atcb-saved .atcb-checkmark{box-sizing:content-box;color:var(--btn-text);display:block;position:absolute;top:-1.2em;right:-.3em;padding:.5em;background:var(--checkmark-background);border-radius:100%;height:2em}.atcb-checkmark svg{height:100%;fill:currentcolor;width:auto}#atcb-bgoverlay{animation:atcb-bgoverlay-animate .1s ease 0s 1 normal forwards;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);background-color:var(--overlay-background);border:0;box-sizing:border-box;display:flex;height:calc(100vh + 100px);inset-inline:0;left:0;right:0;top:0;min-height:100%;min-width:100%;opacity:0;overflow-y:auto;padding:20px 20px 130px;position:fixed;width:100vw;z-index:14000000}#atcb-bgoverlay.atcb-no-bg{animation:none;backdrop-filter:none;-webkit-backdrop-filter:none;opacity:1;background-color:transparent}@keyframes atcb-bgoverlay-animate{0%{opacity:0}100%{opacity:1}}#atcb-bgoverlay.atcb-click:hover{cursor:var(--overlay-cursor)}.atcb-icon .atcb-icon-apple svg{fill:currentcolor}.atcb-icon .atcb-icon-ical svg{fill:currentcolor}.atcb-icon .atcb-icon-ms365 svg{fill:var(--icon-ms365-color)}.atcb-icon .atcb-icon-yahoo svg{fill:var(--icon-yahoo-color)}.atcb-icon .atcb-icon-google svg,.atcb-icon .atcb-icon-msteams svg,.atcb-icon .atcb-icon-outlookcom svg{filter:var(--icon-filter)}\",\r\"round\": \":host{width:fit-content;--base-font-size-l:16px;--base-font-size-m:16px;--base-font-size-s:16px;--font:arial,helvetica,sans-serif;--keyboard-focus:#1e90ff;--btn-background:#f5f5f5;--btn-background-hover:#fff;--btn-border:#d2d2d2;--btn-text:#333;--btn-text-hover:#000;--btn-shadow:rgba(0 0 0 / 20%) 2px 5px 18px -1px,rgba(0 0 0 / 15%) 2px 2px 10px -3px;--btn-shadow-hover:rgba(0 0 0 / 35%) 2px 5px 18px -1px,rgba(0 0 0 / 30%) 2px 2px 10px -3px;--btn-shadow-active:rgba(0 0 0 / 50%) 2px 5px 18px -1px,rgba(0 0 0 / 45%) 2px 2px 10px -3px;--list-background:#f5f5f5;--list-background-hover:#fff;--list-text:#333;--list-text-hover:#000;--list-close-background:#e5e5e5;--list-close-text:#777;--list-shadow:rgba(0 0 0 / 20%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 2px 2px 10px -3px;--list-shadow-modal:rgba(0 0 0 / 60%) 3px 6px 40px -5px,rgba(0 0 0 / 60%) 3px 3px 15px -4px;--modal-text:#000;--modal-background:#f5f5f5;--modal-btn-bar:#c6c8cd;--modal-btn-background:#f5f5f5;--modal-btn-secondary-background:#e2e1e6;--modal-btn-background-hover:#fff;--modal-btn-text:#2e2e2e;--modal-btn-text-hover:#161616;--modal-btn-secondary-text:#666567;--modal-shadow:drop-shadow(5px 8px 30px rgba(0 0 0 / 70%));--modal-shadow-btn:rgba(0 0 0 / 10%) 2px 3px 10px -3px,rgba(0 0 0 / 25%) 1px 1px 8px -4px;--modal-shadow-btn-hover:rgba(0 0 0 / 35%) 3px 5px 15px -2px,rgba(0 0 0 / 20%) 2px 4px 25px -6px;--date-btn-text:#1d1d1e;--date-btn-text-secondary:#3a3a3f;--date-btn-cal-day-text:#fff;--date-btn-cal-month-text:#d3d2d7;--date-btn-cal-background:#313132;--date-btn-background:#eae9ed;--date-btn-background-hover:#fff;--date-btn-shadow:rgba(0 0 0 / 40%) 1px 3px 15px -4px,rgba(0 0 0 / 20%) 1px 1px 8px -4px;--date-btn-shadow-hover:rgba(0 0 0 / 40%) 4px 6px 18px -1px,rgba(0 0 0 / 35%) 4px 5px 25px -2px;--checkmark-background:radial-gradient(circle,#fff 0,rgba(255 255 255 / 80%) 40%,rgba(255 255 255 / 0%) 70%);--overlay-background:rgba(20 20 20 / 25%);--overlay-cursor:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23777' width='16' height='16' viewBox='0 0 122.878 122.88'%3E%3Cpath d='M1.426 8.313a4.87 4.87 0 0 1 0-6.886 4.87 4.87 0 0 1 6.886 0l53.127 53.127 53.127-53.127a4.87 4.87 0 0 1 6.887 0 4.87 4.87 0 0 1 0 6.886L68.324 61.439l53.128 53.128a4.87 4.87 0 0 1-6.887 6.886L61.438 68.326 8.312 121.453a4.87 4.87 0 0 1-6.886 0 4.87 4.87 0 0 1 0-6.886l53.127-53.128L1.426 8.313h0z'/%3E%3C/svg%3E\\\") 16 16,crosshair;--icon-ms365-color:#ea3e23;--icon-yahoo-color:#5f01d1;--icon-filter:none}:host(.atcb-dark){--btn-background:#2e2e2e;--btn-background-hover:#373737;--btn-border:#4d4d4d;--btn-text:#dedede;--btn-text-hover:#f1f1f1;--btn-shadow:rgba(255 255 255 / 5%) -12px -5px 20px -8px,rgba(255 255 255 / 6%) -7px -5px 15px -3px,rgba(0 0 0 / 50%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 3px 3px 20px -3px;--btn-shadow-hover:rgba(255 255 255 / 6%) -12px -5px 23px -8px,rgba(255 255 255 / 7%) -7px -5px 18px -3px,rgba(0 0 0 / 60%) 2px 5px 19px -1px,rgba(0 0 0 / 50%) 3px 3px 22px -3px;--btn-shadow-active:rgba(255 255 255 / 7%) -12px -5px 23px -8px,rgba(255 255 255 / 8%) -7px -5px 18px -3px,rgba(0 0 0 / 70%) 2px 5px 19px -1px,rgba(0 0 0 / 60%) 3px 3px 22px -3px;--list-background:#2e2e2e;--list-background-hover:#373737;--list-text:#dedede;--list-text-hover:#f1f1f1;--list-close-background:#282828;--list-shadow:rgba(255 255 255 / 5%) -12px -5px 20px -8px,rgba(255 255 255 / 6%) -7px -5px 15px -3px,rgba(0 0 0 / 50%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 3px 3px 20px -3px;--list-shadow-modal:rgba(255 255 255 / 8%) -12px -5px 30px -8px,rgba(255 255 255 / 8%) -7px -5px 15px -3px,rgba(0 0 0 / 60%) 4px 6px 50px -4px,rgba(0 0 0 / 90%) 8px 12px 40px -2px;--modal-text:#f1f1f1;--modal-background:#242424;--modal-btn-bar:#38383a;--modal-btn-background:#181819;--modal-btn-secondary-background:#2e2d30;--modal-btn-background-hover:#434246;--modal-btn-text:#dbdbdb;--modal-btn-text-hover:#fff;--modal-btn-secondary-text:#b8b8b8;--modal-shadow:drop-shadow(5px 8px 30px rgba(0 0 0 / 90%));--modal-shadow-btn:rgba(255 255 255 / 5%) -2px -2px 10px,rgba(0 0 0 / 30%) 1px 2px 8px -1px;--date-btn-text:#ebebf0;--date-btn-text-secondary:#b5b5bd;--date-btn-cal-day-text:#101010;--date-btn-cal-month-text:#3e3e3f;--date-btn-cal-background:#c7c7cd;--date-btn-background:#363636;--date-btn-background-hover:#474747;--date-btn-shadow:rgba(255 255 255 / 10%) -8px -6px 20px,rgba(0 0 0 / 50%) 1px 3px 25px -8px,rgba(0 0 0 / 50%) 1px 1px 10px -3px;--checkmark-background:radial-gradient(circle,rgba(0 0 0 / 50%) 0,rgba(0 0 0 / 30%) 40%,rgba(0 0 0 / 0%) 70%);--overlay-background:rgba(20 20 20 / 60%);--icon-ms365-color:#ea3e23;--icon-yahoo-color:#bebebe;--icon-filter:grayscale(.2)}.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-l)}@media (max-width:991px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-m)}}@media (max-width:575px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-s)}}.atcb-button-wrapper{display:block;padding:5px;position:relative}.atcb-button{align-items:center;background-color:var(--btn-background);border:1px solid var(--btn-border);border-radius:500px;box-shadow:var(--btn-shadow);color:var(--btn-text);cursor:pointer;display:flex;font-family:var(--font);font-size:1em;font-weight:600;justify-content:center;line-height:1.5em;margin:.13em;max-width:350px;min-width:10em;padding:.65em 1.3em;position:relative;text-align:center;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;width:auto;z-index:1}.atcb-button.atcb-no-text{min-width:0;border-radius:100%;display:flex;align-content:center;justify-content:center;align-items:center;height:3em;width:3em;padding:0}.atcb-rtl .atcb-button{direction:rtl;text-align:right}.atcb-button:focus,.atcb-button:hover{background-color:var(--btn-background-hover);box-shadow:var(--btn-shadow-hover);margin:0;padding:.78em 1.43em}.atcb-button.atcb-no-text:focus,.atcb-button.atcb-no-text:hover{height:3.26em;width:3.26em;padding:0}.atcb-button:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay){z-index:15000000}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay,.atcb-no-text),.atcb-button.atcb-single:not(.atcb-no-text):focus,.atcb-button.atcb-single:not(.atcb-no-text):hover{background-color:var(--btn-background-hover);box-shadow:var(--btn-shadow-active);margin:0;padding:.78em 1.43em}.atcb-button.atcb-active.atcb-no-text:not(.atcb-modal-style,.atcb-dropoverlay),.atcb-button.atcb-single.atcb-no-text:focus,.atcb-button.atcb-single.atcb-no-text:hover{background-color:var(--btn-background-hover);box-shadow:var(--btn-shadow-active);margin:0;padding:.93em 1.43em}.atcb-button.atcb-active.atcb-dropup::after,.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay,.atcb-dropup,.atcb-no-text)::before{content:\\\"\\\";width:0;height:0;position:absolute;left:0;right:0;margin:0 auto}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay,.atcb-dropup,.atcb-no-text)::before{top:100%;border:.35em solid transparent;border-bottom:none;border-top-color:var(--btn-background-hover)}.atcb-button.atcb-active.atcb-dropup::after{bottom:100%;border:.35em solid transparent;border-top:none;border-bottom-color:var(--btn-background-hover)}.atcb-button.atcb-active.atcb-dropoverlay{z-index:14000090}.atcb-icon{height:1em;margin-bottom:.3em;margin-right:.8em;flex-grow:0;flex-shrink:0}.atcb-rtl .atcb-icon{margin-right:0;margin-left:.8em}.atcb-no-text .atcb-icon{margin-right:0;margin-left:0}.atcb-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-text{overflow-wrap:anywhere}.atcb-dropdown-anchor{bottom:-15px;height:0;width:100%;opacity:0;position:absolute}.atcb-list-wrapper{box-sizing:border-box;position:absolute;z-index:14000090;min-width:12.5em;width:auto}.atcb-list-wrapper:not(.atcb-dropup,.atcb-dropoverlay){animation:list-entrance-bottom .2s ease 0s 1 normal forwards}.atcb-list-wrapper.atcb-dropup{animation:list-entrance-top .2s ease 0s 1 normal forwards}.atcb-list-wrapper.atcb-dropoverlay{animation:list-entrance-center .2s ease 0s 1 normal forwards;z-index:15000000}@keyframes list-entrance-bottom{0%{opacity:0;transform:translateY(250px)}100%{opacity:1;transform:translateY(0)}}@keyframes list-entrance-top{0%{opacity:0;transform:translateY(-250px)}100%{opacity:1;transform:translateY(0)}}@keyframes list-entrance-center{0%{opacity:0;transform:scaleY(1)}1%{opacity:1;transform:scaleY(0)}100%{opacity:1;transform:scaleY(1)}}.atcb-list{border-radius:11px;box-sizing:border-box;box-shadow:var(--list-shadow);color:var(--list-text);display:block;font-family:var(--font);min-width:100%;position:relative;user-select:none;-webkit-user-select:none;width:fit-content}.atcb-list-item{align-items:center;background-color:var(--list-background);box-sizing:border-box;cursor:pointer;display:flex;font-size:1em;line-height:1.75em;padding:.8em;text-align:left;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.atcb-rtl .atcb-list-item{direction:rtl;text-align:right}.atcb-list-item:hover{background-color:var(--list-background-hover);color:var(--list-text-hover)}.atcb-list-item:focus-visible{background-color:var(--list-background-hover);color:var(--keyboard-focus);font-weight:600;outline:0}.atcb-list-item:last-child{border-radius:0 0 11px 11px}.atcb-list-item:first-child{border-radius:11px 11px 0 0}.atcb-list-item:only-child{border-radius:11px}.atcb-list.atcb-modal{box-shadow:var(--list-shadow-modal)}.atcb-list-item .atcb-icon{margin-bottom:.5em;margin-right:.6em;width:1.125em}.atcb-rtl .atcb-list-item .atcb-icon{margin-right:0;margin-left:.6em}.atcb-no-text .atcb-list-item .atcb-icon{margin:0 auto}.atcb-list-item-close{background-color:var(--list-close-background)}.atcb-list-item.atcb-list-item-close:not(:focus-visible){color:var(--list-close-text)}.atcb-list-item-close svg{fill:currentcolor}.atcb-modal{display:block;margin:auto;min-width:250px;width:auto;position:relative;z-index:14000090}.atcb-modal-box{filter:var(--modal-shadow);color:var(--modal-text);cursor:default;box-sizing:border-box;font-family:var(--font);line-height:1.5em;text-align:left;user-select:none;-webkit-user-select:none;touch-action:manipulation;width:100%;margin-bottom:20px;max-width:32em;-webkit-tap-highlight-color:transparent}.atcb-modal-box.atcb-rtl{text-align:right;direction:rtl;padding:1.25em 1em 1.25em 2em}.atcb-modal-icon{height:2.5em;width:2.5em;border-radius:100%;background-color:var(--modal-background);padding:1.75em;margin:auto}.atcb-modal-icon svg{height:auto;fill:currentcolor;width:100%}.atcb-modal-headline{background-color:var(--modal-background);border-radius:9px 9px 0 0;font-size:1.3em;font-weight:600;line-height:1.5em;padding:1.8em 2em 1.3em;text-transform:uppercase;text-align:center}.atcb-modal-icon+.atcb-modal-headline{margin-top:-2.6em;padding-top:2.6em}.atcb-modal-content{background-color:var(--modal-background);font-size:1em;padding:.3em 2.5em 2.25em}@media (max-width:575px){.atcb-modal-headline{padding:1.8em 1em 1em}.atcb-modal-content{padding:.3em 1em 2em}}.atcb-modal-buttons{background-color:var(--modal-btn-bar);border-radius:0 0 9px 9px;box-sizing:border-box;padding:.8em 1em;text-align:center;width:100%;display:flex;justify-content:center;flex-flow:row-reverse wrap;align-items:center}a.atcb-modal-btn,button.atcb-modal-btn{background-color:var(--modal-btn-secondary-background);border:0;border-radius:500px;box-shadow:var(--modal-shadow-btn);color:var(--modal-btn-secondary-text);cursor:pointer;display:inline-block;font-family:var(--font);font-size:.9em;font-weight:600;line-height:1.5em;margin:.625em;padding:.625em 1.25em;position:relative;text-align:center;text-decoration:none;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;text-transform:uppercase}a.atcb-modal-btn.atcb-modal-btn-primary,button.atcb-modal-btn.atcb-modal-btn-primary{background-color:var(--modal-btn-background);color:var(--modal-btn-text)}a.atcb-modal-btn:hover,button.atcb-modal-btn:hover{background-color:var(--modal-btn-background-hover);box-shadow:var(--modal-shadow-btn-hover);color:var(--modal-btn-text-hover);text-decoration:none}a.atcb-modal-btn:focus-visible,button.atcb-modal-btn:focus-visible{background-color:var(--modal-btn-background-hover);outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn{display:flex;align-items:flex-start;cursor:pointer;font-family:var(--font);font-size:1em;box-shadow:var(--date-btn-shadow);background-color:var(--date-btn-background);border:0;border-radius:6px;padding:0;margin:0;touch-action:manipulation;position:relative;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.atcb-subevent-btn:hover{align-items:center}.atcb-subevent-btn:focus,.atcb-subevent-btn:hover{background-color:var(--date-btn-background-hover);box-shadow:var(--date-btn-shadow-hover)}.atcb-subevent-btn:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn+.atcb-subevent-btn{margin-top:30px}.atcb-date-btn-left{border-radius:4px 0 0 4px;align-self:stretch;background-color:var(--date-btn-cal-background);color:var(--date-btn-background-hover);padding:.7em .8em .8em;width:2.7em;align-items:center;display:flex;flex-direction:column}.atcb-rtl .atcb-date-btn-left{border-radius:0 4px 4px 0}.atcb-subevent-btn:hover .atcb-date-btn-left{opacity:.8}.atcb-date-btn-day{color:var(--date-btn-cal-day-text);font-weight:300;font-size:2em;word-break:keep-all;padding-bottom:.1em}.atcb-initialized[lang=ja] .atcb-date-btn-day,.atcb-initialized[lang=ko] .atcb-date-btn-day,.atcb-initialized[lang=zh] .atcb-date-btn-day{font-size:1.3em}.atcb-date-btn-month{color:var(--date-btn-cal-month-text);font-weight:600;font-size:1em}.atcb-date-btn-right{position:relative;color:var(--date-btn-text);min-width:12.5em;overflow-wrap:anywhere}.atcb-date-btn-details{opacity:1;padding:.7em .8em;text-align:left}.atcb-rtl .atcb-date-btn-details{text-align:right}.atcb-date-btn-hover{position:absolute;top:0;left:0;width:100%;opacity:0;height:100%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:1em}.atcb-subevent-btn:hover .atcb-date-btn-details{opacity:0}.atcb-subevent-btn:hover .atcb-date-btn-hover{opacity:1}.atcb-date-btn-headline{font-weight:600;font-size:.9em;margin-bottom:.5em;overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.atcb-date-btn-content{display:flex;align-items:center;font-size:.8em;color:var(--date-btn-text-secondary)}.atcb-date-btn-content-location{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-all}.atcb-date-btn-content-icon{display:inline-block;margin-top:-.3em;height:.8em;width:1.3em;flex:0 0 1.3em}.atcb-rtl .atcb-date-btn-content-icon{margin-right:0;margin-left:.5em}.atcb-initialized[lang=ja] .atcb-date-btn-content-icon,.atcb-initialized[lang=ko] .atcb-date-btn-content-icon,.atcb-initialized[lang=zh] .atcb-date-btn-content-icon{margin-top:-.2em}.atcb-date-btn-content-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-date-btn-content+.atcb-date-btn-content{margin-top:.3em}.atcb-date-btn-content-recurr-icon{padding-left:.3em}.atcb-checkmark{display:none}.atcb-saved .atcb-checkmark{box-sizing:content-box;color:var(--btn-text);display:block;position:absolute;top:-1.2em;right:-.3em;padding:.5em;background:var(--checkmark-background);border-radius:100%;height:2em}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay) .atcb-checkmark,.atcb-button:focus .atcb-checkmark,.atcb-button:hover .atcb-checkmark{top:-1.07em;right:-.17em}.atcb-checkmark svg{height:100%;fill:currentcolor;width:auto}#atcb-bgoverlay{animation:atcb-bgoverlay-animate .1s ease 0s 1 normal forwards;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);background-color:var(--overlay-background);border:0;box-sizing:border-box;display:flex;height:calc(100vh + 100px);inset-inline:0;left:0;right:0;top:0;min-height:100%;min-width:100%;opacity:0;overflow-y:auto;padding:20px 20px 130px;position:fixed;width:100vw;z-index:14000000}#atcb-bgoverlay.atcb-no-bg{animation:none;backdrop-filter:none;-webkit-backdrop-filter:none;opacity:1;background-color:transparent}@keyframes atcb-bgoverlay-animate{0%{opacity:0}100%{opacity:1}}#atcb-bgoverlay.atcb-click:hover{cursor:var(--overlay-cursor)}.atcb-icon .atcb-icon-apple svg{fill:currentcolor}.atcb-icon .atcb-icon-ical svg{fill:currentcolor}.atcb-icon .atcb-icon-ms365 svg{fill:var(--icon-ms365-color)}.atcb-icon .atcb-icon-yahoo svg{fill:var(--icon-yahoo-color)}.atcb-icon .atcb-icon-google svg,.atcb-icon .atcb-icon-msteams svg,.atcb-icon .atcb-icon-outlookcom svg{filter:var(--icon-filter)}\",\r\"neumorphism\": \":host{width:fit-content;--base-font-size-l:16px;--base-font-size-m:16px;--base-font-size-s:16px;--font:arial,helvetica,sans-serif;--keyboard-focus:#1e90ff;--btn-background:#f5f5f5;--btn-background-hover:#fff;--btn-text:#444;--btn-text-hover:#111;--btn-shadow:rgba(40 40 40 / 30%) 0.3em 0.3em 0.6em,rgba(255 255 255 / 60%) -0.2em -0.2em 0.4em;--btn-shadow-hover:rgba(40 40 40 / 50%) 0.4em 0.4em 0.8em,rgba(255 255 255 / 90%) -0.3em -0.3em 0.6em;--btn-shadow-active:inset rgba(40 40 40 / 40%) 0.15em 0.15em 0.3em,inset rgba(255 255 255 / 90%) -0.2em -0.2em 0.5em;--list-background:#f5f5f5;--list-background-hover:#fff;--list-text:#444;--list-text-hover:#111;--list-close-background:#e5e5e5;--list-close-text:#777;--list-shadow:rgba(40 40 40 / 30%) 0.4em 0.4em 0.8em,rgba(255 255 255 / 90%) -0.4em -0.4em 0.9em;--modal-text:#111;--modal-background:#f5f5f5;--modal-btn-bar:#c6c8cd;--modal-btn-background:#f5f5f5;--modal-btn-secondary-background:#e2e1e6;--modal-btn-background-hover:#fff;--modal-btn-text:#2e2e2e;--modal-btn-text-hover:#222;--modal-btn-secondary-text:#666567;--modal-shadow:drop-shadow(5px 8px 30px rgba(0 0 0 / 70%));--modal-shadow-btn:rgba(40 40 40 / 15%) 0.2em 0.2em 0.4em,rgba(255 255 255 / 30%) -0.1em -0.1em 0.3em;--modal-shadow-btn-hover:rgba(40 40 40 / 40%) 0.4em 0.4em 0.7em,rgba(255 255 255 / 70%) -0.2em -0.2em 0.5em;--date-btn-text:#1d1d1e;--date-btn-text-secondary:#3a3a3f;--date-btn-cal-day-text:#fff;--date-btn-cal-month-text:#d3d2d7;--date-btn-cal-background:#313132;--date-btn-background:#e3e5ea;--date-btn-background-hover:#fff;--date-btn-shadow:rgba(40 40 40 / 40%) 0.2em 0.2em 0.8em,rgba(255 255 255 / 80%) -0.2em -0.2em 0.4em;--date-btn-shadow-hover:rgba(40 40 40 / 50%) 0.3em 0.4em 1em,rgba(255 255 255) -0.3em -0.3em 0.7em;--checkmark-background:radial-gradient(circle, #fff 0, rgba(255 255 255 / 80%) 40%, rgba(255 255 255 / 0%) 70%);--overlay-background:#dcdcdc;--overlay-cursor:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23777' width='16' height='16' viewBox='0 0 122.878 122.88'%3E%3Cpath d='M1.426 8.313a4.87 4.87 0 0 1 0-6.886 4.87 4.87 0 0 1 6.886 0l53.127 53.127 53.127-53.127a4.87 4.87 0 0 1 6.887 0 4.87 4.87 0 0 1 0 6.886L68.324 61.439l53.128 53.128a4.87 4.87 0 0 1-6.887 6.886L61.438 68.326 8.312 121.453a4.87 4.87 0 0 1-6.886 0 4.87 4.87 0 0 1 0-6.886l53.127-53.128L1.426 8.313h0z'/%3E%3C/svg%3E\\\") 16 16,crosshair;--icon-ms365-color:#ea3e23;--icon-yahoo-color:#5f01d1;--icon-filter:none}:host(.atcb-dark){--btn-background:#2e2e2e;--btn-background-hover:#373737;--btn-text:#dedede;--btn-text-hover:#f1f1f1;--btn-shadow:rgba(0 0 0 / 70%) 0.3em 0.3em 0.6em,rgba(230 230 230 / 15%) -0.1em -0.1em 0.5em;--btn-shadow-hover:rgba(0 0 0 / 80%) 0.4em 0.4em 0.9em,rgba(230 230 230 / 15%) -0.2em -0.2em 0.5em;--btn-shadow-active:inset rgba(0 0 0 / 80%) 0.15em 0.15em 0.25em,inset rgba(230 230 230 / 15%) -0.2em -0.2em 0.6em;--list-background:#2e2e2e;--list-background-hover:#373737;--list-text:#dedede;--list-text-hover:#f1f1f1;--list-close-background:#282828;--list-shadow:rgba(0 0 0) 0.3em 0.3em 1em,rgba(230 230 230 / 15%) -0.1em -0.1em 0.8em;--modal-text:#f1f1f1;--modal-background:#242424;--modal-btn-bar:#38383a;--modal-btn-background:#181819;--modal-btn-secondary-background:#2e2d30;--modal-btn-background-hover:#434246;--modal-btn-text:#dbdbdb;--modal-btn-text-hover:#fff;--modal-btn-secondary-text:#b8b8b8;--modal-shadow:drop-shadow(5px 8px 35px rgba(0 0 0 / 90%));--modal-shadow-btn:rgba(0 0 0 / 60%) 0.2em 0.2em 0.6em,rgba(230 230 230 / 15%) -0.1em -0.1em 0.4em;--modal-shadow-btn-hover:rgba(0 0 0 / 80%) 0.3em 0.3em 0.8em,rgba(230 230 230 / 15%) -0.1em -0.1em 0.6em;--date-btn-text:#ebebf0;--date-btn-text-secondary:#b5b5bd;--date-btn-cal-day-text:#101010;--date-btn-cal-month-text:#3e3e3f;--date-btn-cal-background:#c7c7cd;--date-btn-background:#363636;--date-btn-background-hover:#474747;--date-btn-shadow:rgba(0 0 0 / 70%) 0.2em 0.2em 0.8em,rgba(230 230 230 / 15%) -0.1em -0.1em 0.5em;--date-btn-shadow-hover:rgba(0 0 0) 0.3em 0.4em 1em,rgba(230 230 230 / 15%) -0.2em -0.2em 0.8em;--checkmark-background:radial-gradient(circle, rgba(0 0 0 / 50%) 0, rgba(0 0 0 / 30%) 40%, rgba(0 0 0 / 0%) 70%);--overlay-background:#141414;--icon-ms365-color:#ea3e23;--icon-yahoo-color:#bebebe;--icon-filter:grayscale(0.2)}.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-l)}@media (max-width:991px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-m)}}@media (max-width:575px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-s)}}.atcb-button-wrapper{display:block;padding:5px;position:relative}.atcb-button{align-items:center;background-color:var(--btn-background);border:0;border-radius:15px;box-shadow:var(--btn-shadow);color:var(--btn-text);cursor:pointer;display:flex;font-family:var(--font);font-size:1em;font-weight:600;justify-content:center;line-height:1.5em;margin:0;max-width:350px;min-width:10em;padding:1em 1.2em;position:relative;text-align:center;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;width:auto;transition:box-shadow .1s ease-in-out;z-index:1}.atcb-button.atcb-no-text{min-width:0;border-radius:100%;display:flex;align-content:center;justify-content:center;align-items:center;height:3em;width:3em;padding:0}.atcb-rtl .atcb-button{direction:rtl;text-align:right}.atcb-button:focus,.atcb-button:hover{background-color:var(--btn-background-hover);box-shadow:var(--btn-shadow-hover)}.atcb-button:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay){z-index:15000000}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay),.atcb-button.atcb-single:focus,.atcb-button.atcb-single:hover{background-color:var(--btn-background-hover);box-shadow:var(--btn-shadow-active)}.atcb-button.atcb-active.atcb-dropoverlay{z-index:14000090}.atcb-icon{height:1em;margin-bottom:.3em;margin-right:.8em;flex-grow:0;flex-shrink:0}.atcb-rtl .atcb-icon{margin-right:0;margin-left:.8em}.atcb-no-text .atcb-icon{margin-right:0;margin-left:0}.atcb-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-text{overflow-wrap:anywhere}.atcb-dropdown-anchor{bottom:-30px;height:0;width:100%;opacity:0;position:absolute}.atcb-list-wrapper{box-sizing:border-box;position:absolute;min-width:12.5em;width:auto;animation:list-entrance .6s ease 0s 1 normal forwards;z-index:15000000}@keyframes list-entrance{0%{opacity:0}100%{opacity:1}}.atcb-list{border-radius:11px;box-sizing:border-box;box-shadow:var(--list-shadow);color:var(--list-text);display:block;font-family:var(--font);min-width:100%;position:relative;user-select:none;-webkit-user-select:none;width:fit-content}.atcb-list-item{box-shadow:none;align-items:center;background-color:var(--list-background);box-sizing:border-box;cursor:pointer;display:flex;font-size:1em;line-height:1.75em;padding:1em;text-align:left;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:box-shadow .1s ease-in-out,padding .1s ease-in-out,margin .1s ease-in-out}.atcb-rtl .atcb-list-item{direction:rtl;text-align:right}.atcb-list-item:hover{box-shadow:var(--btn-shadow);background-color:var(--list-background-hover);color:var(--list-text-hover);padding:1.2em;margin:-.2em;position:relative;z-index:15000010}.atcb-list-item:focus-visible{box-shadow:var(--btn-shadow);background-color:var(--list-background-hover);color:var(--keyboard-focus);padding:1.2em;margin:-.2em;position:relative;z-index:15000010;font-weight:600;outline:0}.atcb-list-item:last-child{border-radius:0 0 11px 11px}.atcb-list-item:first-child{border-radius:11px 11px 0 0}.atcb-list-item:only-child{border-radius:11px}.atcb-list-item .atcb-icon{margin-bottom:.5em;margin-right:.6em;width:1.125em}.atcb-rtl .atcb-list-item .atcb-icon{margin-right:0;margin-left:.6em}.atcb-no-text .atcb-list-item .atcb-icon{margin:0 auto}.atcb-list-item-close{background-color:var(--list-close-background)}.atcb-list-item.atcb-list-item-close:not(:focus-visible){color:var(--list-close-text)}.atcb-list-item-close svg{fill:currentcolor}.atcb-modal{display:block;margin:auto;min-width:250px;width:auto;position:relative;z-index:14000090}.atcb-modal-box{animation:list-entrance .6s ease 0s 1 normal forwards;filter:var(--modal-shadow);color:var(--modal-text);cursor:default;box-sizing:border-box;font-family:var(--font);line-height:1.5em;text-align:left;user-select:none;-webkit-user-select:none;touch-action:manipulation;width:100%;margin-bottom:20px;max-width:32em;-webkit-tap-highlight-color:transparent}.atcb-modal-box.atcb-rtl{text-align:right;direction:rtl;padding:1.25em 1em 1.25em 2em}.atcb-modal-icon{height:2.5em;width:2.5em;border-radius:100%;background-color:var(--modal-background);padding:1.75em;margin:auto}.atcb-modal-icon svg{height:auto;fill:currentcolor;width:100%}.atcb-modal-headline{background-color:var(--modal-background);border-radius:9px 9px 0 0;font-size:1.3em;font-weight:600;line-height:1.5em;padding:1.8em 2em 1.3em;text-transform:uppercase;text-align:center}.atcb-modal-icon+.atcb-modal-headline{margin-top:-2.6em;padding-top:2.6em}.atcb-modal-content{background-color:var(--modal-background);font-size:1em;padding:.3em 2.5em 2.25em}@media (max-width:575px){.atcb-modal-headline{padding:1.8em 1em 1em}.atcb-modal-content{padding:.3em 1em 2em}}.atcb-modal-buttons{background-color:var(--modal-btn-bar);border-radius:0 0 9px 9px;box-sizing:border-box;padding:.8em 1em;text-align:center;width:100%;display:flex;justify-content:center;flex-flow:row-reverse wrap;align-items:center}a.atcb-modal-btn,button.atcb-modal-btn{background-color:var(--modal-btn-secondary-background);border:0;border-radius:13px;box-shadow:var(--modal-shadow-btn);color:var(--modal-btn-secondary-text);cursor:pointer;display:inline-block;font-family:var(--font);font-size:.9em;font-weight:600;line-height:1.5em;margin:.625em;padding:.625em 1.25em;position:relative;text-align:center;text-decoration:none;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;text-transform:uppercase}a.atcb-modal-btn.atcb-modal-btn-primary,button.atcb-modal-btn.atcb-modal-btn-primary{background-color:var(--modal-btn-background);color:var(--modal-btn-text)}a.atcb-modal-btn:hover,button.atcb-modal-btn:hover{background-color:var(--modal-btn-background-hover);box-shadow:var(--modal-shadow-btn-hover);color:var(--modal-btn-text-hover);text-decoration:none}a.atcb-modal-btn:focus-visible,button.atcb-modal-btn:focus-visible{background-color:var(--modal-btn-background-hover);outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn{display:flex;align-items:flex-start;cursor:pointer;font-family:var(--font);font-size:1em;box-shadow:var(--date-btn-shadow);background-color:var(--date-btn-background);border:0;border-radius:6px;padding:0;margin:0;touch-action:manipulation;position:relative;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.atcb-subevent-btn:hover{align-items:center}.atcb-subevent-btn:focus,.atcb-subevent-btn:hover{background-color:var(--date-btn-background-hover);box-shadow:var(--date-btn-shadow-hover)}.atcb-subevent-btn:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn+.atcb-subevent-btn{margin-top:30px}.atcb-date-btn-left{border-radius:4px 0 0 4px;align-self:stretch;background-color:var(--date-btn-cal-background);color:var(--date-btn-background-hover);padding:.7em .8em .8em;width:2.7em;align-items:center;display:flex;flex-direction:column}.atcb-rtl .atcb-date-btn-left{border-radius:0 4px 4px 0}.atcb-subevent-btn:hover .atcb-date-btn-left{opacity:.8}.atcb-date-btn-day{color:var(--date-btn-cal-day-text);font-weight:300;font-size:2em;word-break:keep-all;padding-bottom:.1em}.atcb-initialized[lang=ja] .atcb-date-btn-day,.atcb-initialized[lang=ko] .atcb-date-btn-day,.atcb-initialized[lang=zh] .atcb-date-btn-day{font-size:1.3em}.atcb-date-btn-month{color:var(--date-btn-cal-month-text);font-weight:600;font-size:1em}.atcb-date-btn-right{position:relative;color:var(--date-btn-text);min-width:12.5em;overflow-wrap:anywhere}.atcb-date-btn-details{opacity:1;padding:.7em .8em;text-align:left}.atcb-rtl .atcb-date-btn-details{text-align:right}.atcb-date-btn-hover{position:absolute;top:0;left:0;width:100%;opacity:0;height:100%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:1em}.atcb-subevent-btn:hover .atcb-date-btn-details{opacity:0}.atcb-subevent-btn:hover .atcb-date-btn-hover{opacity:1}.atcb-date-btn-headline{font-weight:600;font-size:.9em;margin-bottom:.5em;overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.atcb-date-btn-content{display:flex;align-items:center;font-size:.8em;color:var(--date-btn-text-secondary)}.atcb-date-btn-content-location{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-all}.atcb-date-btn-content-icon{display:inline-block;margin-top:-.3em;height:.8em;width:1.3em;flex:0 0 1.3em}.atcb-rtl .atcb-date-btn-content-icon{margin-right:0;margin-left:.5em}.atcb-initialized[lang=ja] .atcb-date-btn-content-icon,.atcb-initialized[lang=ko] .atcb-date-btn-content-icon,.atcb-initialized[lang=zh] .atcb-date-btn-content-icon{margin-top:-.2em}.atcb-date-btn-content-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-date-btn-content+.atcb-date-btn-content{margin-top:.3em}.atcb-date-btn-content-recurr-icon{padding-left:.3em}.atcb-checkmark{display:none}.atcb-saved .atcb-checkmark{box-sizing:content-box;color:var(--btn-text);display:block;position:absolute;top:-1.2em;right:-.3em;padding:.5em;background:var(--checkmark-background);border-radius:100%;height:2em}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay) .atcb-checkmark,.atcb-button.atcb-single:focus .atcb-checkmark,.atcb-button.atcb-single:hover .atcb-checkmark{top:-1.07em;right:-.17em}.atcb-checkmark svg{height:100%;fill:currentcolor;width:auto}#atcb-bgoverlay{animation:atcb-bgoverlay-animate .1s ease 0s 1 normal forwards;background-color:var(--overlay-background);border:0;box-sizing:border-box;display:flex;height:calc(100vh + 100px);inset-inline:0;left:0;right:0;top:0;min-height:100%;min-width:100%;opacity:0;overflow-y:auto;padding:20px 20px 130px;position:fixed;width:100vw;z-index:14000000}#atcb-bgoverlay.atcb-no-bg{animation:none;backdrop-filter:none;-webkit-backdrop-filter:none;opacity:1;background-color:transparent}@keyframes atcb-bgoverlay-animate{0%{opacity:0}100%{opacity:1}}#atcb-bgoverlay.atcb-click:hover{cursor:var(--overlay-cursor)}.atcb-icon .atcb-icon-apple svg{fill:currentcolor}.atcb-icon .atcb-icon-ical svg{fill:currentcolor}.atcb-icon .atcb-icon-ms365 svg{fill:var(--icon-ms365-color)}.atcb-icon .atcb-icon-yahoo svg{fill:var(--icon-yahoo-color)}.atcb-icon .atcb-icon-google svg,.atcb-icon .atcb-icon-msteams svg,.atcb-icon .atcb-icon-outlookcom svg{filter:var(--icon-filter)}\",\r\"text\": \":host{width:fit-content;--base-font-size-l:16px;--base-font-size-m:16px;--base-font-size-s:16px;--font:arial,helvetica,sans-serif;--keyboard-focus:#1e90ff;--btn-underline:#a9ceff;--btn-border:#a8a8a8;--btn-background:#f5f5f5;--btn-background-hover:#fff;--btn-text:#333;--btn-text-hover:#000;--btn-text-shadow:#fff;--list-background:#f5f5f5;--list-background-hover:#fff;--list-text:#333;--list-text-hover:#000;--list-close-background:#e5e5e5;--list-close-text:#777;--list-shadow:rgba(0 0 0 / 20%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 2px 2px 10px -3px;--list-shadow-modal:rgba(0 0 0 / 60%) 3px 6px 40px -5px,rgba(0 0 0 / 60%) 3px 3px 15px -4px;--modal-text:#000;--modal-background:#f5f5f5;--modal-btn-bar:#c6c8cd;--modal-btn-background:#f5f5f5;--modal-btn-secondary-background:#e2e1e6;--modal-btn-background-hover:#fff;--modal-btn-text:#2e2e2e;--modal-btn-text-hover:#161616;--modal-btn-secondary-text:#666567;--modal-shadow:drop-shadow(5px 8px 30px rgba(0 0 0 / 70%));--modal-shadow-btn:rgba(0 0 0 / 10%) 2px 3px 10px -3px,rgba(0 0 0 / 25%) 1px 1px 8px -4px;--modal-shadow-btn-hover:rgba(0 0 0 / 35%) 3px 5px 15px -2px,rgba(0 0 0 / 20%) 2px 4px 25px -6px;--date-btn-text:#1d1d1e;--date-btn-text-secondary:#3a3a3f;--date-btn-cal-day-text:#fff;--date-btn-cal-month-text:#d3d2d7;--date-btn-cal-background:#313132;--date-btn-background:#eae9ed;--date-btn-background-hover:#fff;--date-btn-shadow:rgba(0 0 0 / 40%) 1px 3px 15px -4px,rgba(0 0 0 / 20%) 1px 1px 8px -4px;--date-btn-shadow-hover:rgba(0 0 0 / 40%) 4px 6px 18px -1px,rgba(0 0 0 / 35%) 4px 5px 25px -2px;--checkmark-background:radial-gradient(circle,rgba(255 255 255 / 80%) 0,rgba(255 255 255 / 60%) 40%,rgba(255 255 255 / 0%) 70%);--overlay-background:rgba(200 200 200 / 25%);--overlay-cursor:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23777' width='16' height='16' viewBox='0 0 122.878 122.88'%3E%3Cpath d='M1.426 8.313a4.87 4.87 0 0 1 0-6.886 4.87 4.87 0 0 1 6.886 0l53.127 53.127 53.127-53.127a4.87 4.87 0 0 1 6.887 0 4.87 4.87 0 0 1 0 6.886L68.324 61.439l53.128 53.128a4.87 4.87 0 0 1-6.887 6.886L61.438 68.326 8.312 121.453a4.87 4.87 0 0 1-6.886 0 4.87 4.87 0 0 1 0-6.886l53.127-53.128L1.426 8.313h0z'/%3E%3C/svg%3E\\\") 16 16,crosshair;--icon-ms365-color:#ea3e23;--icon-yahoo-color:#5f01d1;--icon-filter:none}:host(.atcb-dark){--btn-underline:#336db9;--btn-border:#888;--btn-background:#2e2e2e;--btn-background-hover:#373737;--btn-text:#dedede;--btn-text-hover:#fff;--btn-text-shadow:#000;--list-background:#2e2e2e;--list-background-hover:#373737;--list-text:#dedede;--list-text-hover:#fff;--list-close-background:#282828;--list-shadow:rgba(255 255 255 / 5%) -12px -5px 20px -8px,rgba(255 255 255 / 6%) -7px -5px 15px -3px,rgba(0 0 0 / 50%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 3px 3px 20px -3px;--list-shadow-modal:rgba(255 255 255 / 8%) -12px -5px 30px -8px,rgba(255 255 255 / 8%) -7px -5px 15px -3px,rgba(0 0 0 / 60%) 4px 6px 50px -4px,rgba(0 0 0 / 90%) 8px 12px 40px -2px;--modal-text:#f1f1f1;--modal-background:#242424;--modal-btn-bar:#38383a;--modal-btn-background:#181819;--modal-btn-secondary-background:#2e2d30;--modal-btn-background-hover:#434246;--modal-btn-text:#dbdbdb;--modal-btn-text-hover:#fff;--modal-btn-secondary-text:#b8b8b8;--modal-shadow:drop-shadow(5px 8px 30px rgba(0 0 0 / 90%));--modal-shadow-btn:rgba(255 255 255 / 5%) -2px -2px 10px,rgba(0 0 0 / 30%) 1px 2px 8px -1px;--date-btn-text:#ebebf0;--date-btn-text-secondary:#b5b5bd;--date-btn-cal-day-text:#101010;--date-btn-cal-month-text:#3e3e3f;--date-btn-cal-background:#c7c7cd;--date-btn-background:#363636;--date-btn-background-hover:#474747;--date-btn-shadow:rgba(255 255 255 / 10%) -8px -6px 20px,rgba(0 0 0 / 50%) 1px 3px 25px -8px,rgba(0 0 0 / 50%) 1px 1px 10px -3px;--checkmark-background:radial-gradient(circle,rgba(0 0 0 / 40%) 0,rgba(0 0 0 / 20%) 40%,rgba(0 0 0 / 0%) 70%);--overlay-background:rgba(20 20 20 / 60%);--icon-ms365-color:#ea3e23;--icon-yahoo-color:#bebebe;--icon-filter:grayscale(0.2)}.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-l)}@media (max-width:991px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-m)}}@media (max-width:575px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-s)}}.atcb-button-wrapper{display:block;padding:5px;position:relative}.atcb-button{background-image:linear-gradient(120deg,var(--btn-underline) 0,var(--btn-underline) 100%);background-repeat:no-repeat;background-size:100% 10%;background-position:0 100%;background-color:transparent;border:0;border-radius:0;transition:background-size .1s ease-in,border-radius .2s ease-in;align-items:center;color:var(--btn-text);cursor:pointer;display:flex;font-family:var(--font);font-size:1em;font-weight:600;justify-content:center;line-height:1.2em;margin:0 .2em;padding:.75em;position:relative;text-align:left;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;width:auto;z-index:1}.atcb-button.atcb-no-text{min-width:0}.atcb-rtl .atcb-button{direction:rtl;text-align:right}.atcb-button:focus,.atcb-button:hover{background-size:100% 100%;color:var(--btn-text-hover);text-shadow:0 0 .7em var(--btn-text-shadow);border-radius:21px}.atcb-button:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay){z-index:15000000}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay),.atcb-button.atcb-single:focus,.atcb-button.atcb-single:hover{background-size:100% 10%;border-radius:3px 3px 11px 11px;background-position:0 0;background-color:var(--btn-background);color:var(--btn-text);text-shadow:none}.atcb-button.atcb-active.atcb-dropup{background-position:0 100%;border-radius:11px 11px 3px 3px}.atcb-button.atcb-active.atcb-dropup::after,.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay,.atcb-dropup)::before{content:\\\"\\\";width:0;height:0;position:absolute;left:0;right:0;margin:0 auto}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay,.atcb-dropup)::before{top:100%;border:.35em solid transparent;border-bottom:none;border-top-color:var(--btn-background)}.atcb-button.atcb-active.atcb-dropup::after{bottom:100%;border:.35em solid transparent;border-top:none;border-bottom-color:var(--btn-background)}.atcb-button.atcb-active.atcb-dropoverlay{z-index:14000090}.atcb-icon{height:1em;margin-right:1em;line-height:1em;flex-grow:0;flex-shrink:0}.atcb-rtl .atcb-icon{margin-right:0;margin-left:1em}.atcb-no-text .atcb-icon{margin-right:0;margin-left:0}.atcb-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-icon-trigger svg{display:none}.atcb-button .atcb-icon-trigger::after{content:\\\"+\\\";font-size:1.5em}.atcb-text{overflow-wrap:anywhere}.atcb-dropdown-anchor{bottom:-15px;height:0;width:100%;opacity:0;position:absolute}.atcb-list-wrapper{box-sizing:border-box;position:absolute;z-index:14000090;min-width:12.5em;width:auto}.atcb-list-wrapper:not(.atcb-dropup,.atcb-dropoverlay){animation:list-entrance-bottom .2s ease 0s 1 normal forwards}.atcb-list-wrapper.atcb-dropup{animation:list-entrance-top .2s ease 0s 1 normal forwards}.atcb-list-wrapper.atcb-dropoverlay{animation:list-entrance-center .2s ease 0s 1 normal forwards;z-index:15000000}@keyframes list-entrance-bottom{0%{opacity:0;transform:translateY(250px)}100%{opacity:1;transform:translateY(0)}}@keyframes list-entrance-top{0%{opacity:0;transform:translateY(-250px)}100%{opacity:1;transform:translateY(0)}}@keyframes list-entrance-center{0%{opacity:0;transform:scaleY(1)}1%{opacity:1;transform:scaleY(0)}100%{opacity:1;transform:scaleY(1)}}.atcb-list{border-radius:11px;box-sizing:border-box;box-shadow:var(--list-shadow);color:var(--list-text);display:block;font-family:var(--font);min-width:100%;position:relative;user-select:none;-webkit-user-select:none;width:fit-content}.atcb-list-item{align-items:center;background-color:var(--list-background);box-sizing:border-box;cursor:pointer;display:flex;font-size:1em;line-height:1.75em;padding:.8em 1em;text-align:left;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.atcb-rtl .atcb-list-item{direction:rtl;text-align:right}.atcb-list-item:hover{background-color:var(--list-background-hover);color:var(--list-text-hover)}.atcb-list-item:focus-visible{background-color:var(--list-background-hover);color:var(--keyboard-focus);font-weight:600;outline:0}.atcb-list-item:last-child{border-radius:0 0 11px 11px}.atcb-list-item:first-child{border-radius:11px 11px 0 0}.atcb-list-item:only-child{border-radius:11px}.atcb-list.atcb-modal{box-shadow:var(--list-shadow-modal)}.atcb-list-item .atcb-icon{margin-bottom:.1em;margin-right:.7em;width:1.125em}.atcb-rtl .atcb-list-item .atcb-icon{margin-right:0;margin-left:.7em}.atcb-no-text .atcb-list-item .atcb-icon{margin:0 auto}.atcb-list-item-close{background-color:var(--list-close-background)}.atcb-list-item.atcb-list-item-close:not(:focus-visible){color:var(--list-close-text)}.atcb-list-item-close svg{fill:currentcolor}.atcb-modal{display:block;margin:auto;min-width:250px;width:auto;position:relative;z-index:14000090}.atcb-modal-box{filter:var(--modal-shadow);color:var(--modal-text);cursor:default;box-sizing:border-box;font-family:var(--font);line-height:1.5em;text-align:left;user-select:none;-webkit-user-select:none;touch-action:manipulation;width:100%;margin-bottom:20px;max-width:32em;-webkit-tap-highlight-color:transparent}.atcb-modal-box.atcb-rtl{text-align:right;direction:rtl;padding:1.25em 1em 1.25em 2em}.atcb-modal-icon{height:2.5em;width:2.5em;border-radius:100%;background-color:var(--modal-background);padding:1.75em;margin:auto}.atcb-modal-icon svg{height:auto;fill:currentcolor;width:100%}.atcb-modal-headline{background-color:var(--modal-background);border-radius:9px 9px 0 0;font-size:1.3em;font-weight:600;line-height:1.5em;padding:1.8em 2em 1.3em;text-transform:uppercase;text-align:center}.atcb-modal-icon+.atcb-modal-headline{margin-top:-2.6em;padding-top:2.6em}.atcb-modal-content{background-color:var(--modal-background);font-size:1em;padding:.3em 2.5em 2.25em}@media (max-width:575px){.atcb-modal-headline{padding:1.8em 1em 1em}.atcb-modal-content{padding:.3em 1em 2em}}.atcb-modal-buttons{background-color:var(--modal-btn-bar);border-radius:0 0 9px 9px;box-sizing:border-box;padding:.8em 1em;text-align:center;width:100%;display:flex;justify-content:center;flex-flow:row-reverse wrap;align-items:center}a.atcb-modal-btn,button.atcb-modal-btn{background-color:var(--modal-btn-secondary-background);border:0;border-radius:21px;box-shadow:var(--modal-shadow-btn);color:var(--modal-btn-secondary-text);cursor:pointer;display:inline-block;font-family:var(--font);font-size:.9em;font-weight:600;line-height:1.5em;margin:.625em;padding:.625em 1.25em;position:relative;text-align:center;text-decoration:none;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;text-transform:uppercase}a.atcb-modal-btn.atcb-modal-btn-primary,button.atcb-modal-btn.atcb-modal-btn-primary{background-color:var(--modal-btn-background);color:var(--modal-btn-text)}a.atcb-modal-btn:hover,button.atcb-modal-btn:hover{background-color:var(--modal-btn-background-hover);box-shadow:var(--modal-shadow-btn-hover);color:var(--modal-btn-text-hover);text-decoration:none}a.atcb-modal-btn:focus-visible,button.atcb-modal-btn:focus-visible{background-color:var(--modal-btn-background-hover);outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn{display:flex;align-items:flex-start;cursor:pointer;font-family:var(--font);font-size:1em;box-shadow:var(--date-btn-shadow);background-color:var(--date-btn-background);border:0;border-radius:6px;padding:0;margin:0;touch-action:manipulation;position:relative;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.atcb-subevent-btn:hover{align-items:center}.atcb-subevent-btn:focus,.atcb-subevent-btn:hover{background-color:var(--date-btn-background-hover);box-shadow:var(--date-btn-shadow-hover)}.atcb-subevent-btn:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn+.atcb-subevent-btn{margin-top:30px}.atcb-date-btn-left{border-radius:4px 0 0 4px;align-self:stretch;background-color:var(--date-btn-cal-background);color:var(--date-btn-background-hover);padding:.7em .8em .8em;width:2.7em;align-items:center;display:flex;flex-direction:column}.atcb-rtl .atcb-date-btn-left{border-radius:0 4px 4px 0}.atcb-subevent-btn:hover .atcb-date-btn-left{opacity:.8}.atcb-date-btn-day{color:var(--date-btn-cal-day-text);font-weight:300;font-size:2em;word-break:keep-all;padding-bottom:.1em}.atcb-initialized[lang=ja] .atcb-date-btn-day,.atcb-initialized[lang=ko] .atcb-date-btn-day,.atcb-initialized[lang=zh] .atcb-date-btn-day{font-size:1.3em}.atcb-date-btn-month{color:var(--date-btn-cal-month-text);font-weight:600;font-size:1em}.atcb-date-btn-right{position:relative;color:var(--date-btn-text);min-width:12.5em;overflow-wrap:anywhere}.atcb-date-btn-details{opacity:1;padding:.7em .8em;text-align:left}.atcb-rtl .atcb-date-btn-details{text-align:right}.atcb-date-btn-hover{position:absolute;top:0;left:0;width:100%;opacity:0;height:100%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:1em}.atcb-subevent-btn:hover .atcb-date-btn-details{opacity:0}.atcb-subevent-btn:hover .atcb-date-btn-hover{opacity:1}.atcb-date-btn-headline{font-weight:600;font-size:.9em;margin-bottom:.5em;overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.atcb-date-btn-content{display:flex;align-items:center;font-size:.8em;color:var(--date-btn-text-secondary)}.atcb-date-btn-content-location{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-all}.atcb-date-btn-content-icon{display:inline-block;margin-top:-.3em;height:.8em;width:1.3em;flex:0 0 1.3em}.atcb-rtl .atcb-date-btn-content-icon{margin-right:0;margin-left:.5em}.atcb-initialized[lang=ja] .atcb-date-btn-content-icon,.atcb-initialized[lang=ko] .atcb-date-btn-content-icon,.atcb-initialized[lang=zh] .atcb-date-btn-content-icon{margin-top:-.2em}.atcb-date-btn-content-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-date-btn-content+.atcb-date-btn-content{margin-top:.3em}.atcb-date-btn-content-recurr-icon{padding-left:.3em}.atcb-checkmark{display:none}.atcb-saved .atcb-checkmark{box-sizing:content-box;color:var(--btn-text);display:block;position:absolute;top:-1.2em;right:-.3em;padding:.5em;background:var(--checkmark-background);border-radius:100%;height:2em}.atcb-checkmark svg{height:100%;fill:currentcolor;width:auto}#atcb-bgoverlay{animation:atcb-bgoverlay-animate .1s ease 0s 1 normal forwards;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);background-color:var(--overlay-background);border:0;box-sizing:border-box;display:flex;height:calc(100vh + 100px);inset-inline:0;left:0;right:0;top:0;min-height:100%;min-width:100%;opacity:0;overflow-y:auto;padding:20px 20px 130px;position:fixed;width:100vw;z-index:14000000}#atcb-bgoverlay.atcb-no-bg{animation:none;backdrop-filter:none;-webkit-backdrop-filter:none;opacity:1;background-color:transparent}@keyframes atcb-bgoverlay-animate{0%{opacity:0}100%{opacity:1}}#atcb-bgoverlay.atcb-click:hover{cursor:var(--overlay-cursor)}.atcb-icon .atcb-icon-apple svg{fill:var(--btn-text)}.atcb-icon .atcb-icon-ical svg{fill:var(--btn-text)}.atcb-icon .atcb-icon-ms365 svg{fill:var(--icon-ms365-color)}.atcb-icon .atcb-icon-yahoo svg{fill:var(--icon-yahoo-color)}.atcb-icon .atcb-icon-google svg,.atcb-icon .atcb-icon-msteams svg,.atcb-icon .atcb-icon-outlookcom svg{filter:var(--icon-filter)}\",\r\"date\": \":host{width:fit-content;--base-font-size-l:16px;--base-font-size-m:16px;--base-font-size-s:16px;--font:arial,helvetica,sans-serif;--keyboard-focus:#1e90ff;--btn-background:#f5f5f5;--btn-background-hover:#fff;--btn-border:#d2d2d2;--btn-text:#333;--btn-text-hover:#000;--btn-shadow:rgba(0 0 0 / 20%) 2px 5px 18px -1px,rgba(0 0 0 / 15%) 2px 2px 10px -3px;--btn-shadow-hover:rgba(0 0 0 / 30%) 2px 5px 18px -1px,rgba(0 0 0 / 25%) 2px 2px 10px -3px;--list-background:#f5f5f5;--list-background-hover:#fff;--list-text:#333;--list-text-hover:#000;--list-close-background:#e5e5e5;--list-close-text:#777;--list-shadow:rgba(0 0 0 / 20%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 2px 2px 10px -3px;--list-shadow-modal:rgba(0 0 0 / 60%) 3px 6px 40px -5px,rgba(0 0 0 / 60%) 3px 3px 15px -4px;--modal-text:#000;--modal-background:#f5f5f5;--modal-btn-bar:#c6c8cd;--modal-btn-background:#f5f5f5;--modal-btn-secondary-background:#e2e1e6;--modal-btn-background-hover:#fff;--modal-btn-text:#2e2e2e;--modal-btn-text-hover:#161616;--modal-btn-secondary-text:#666567;--modal-shadow:drop-shadow(5px 8px 30px rgba(0 0 0 / 70%));--modal-shadow-btn:rgba(0 0 0 / 10%) 2px 3px 10px -3px,rgba(0 0 0 / 25%) 1px 1px 8px -4px;--modal-shadow-btn-hover:rgba(0 0 0 / 35%) 3px 5px 15px -2px,rgba(0 0 0 / 20%) 2px 4px 25px -6px;--date-btn-text:#1d1d1e;--date-btn-text-secondary:#3a3a3f;--date-btn-cal-day-text:#fff;--date-btn-cal-month-text:#d3d2d7;--date-btn-cal-background:#313132;--date-btn-background:#eae9ed;--date-btn-background-hover:#fff;--date-btn-shadow:rgba(0 0 0 / 40%) 1px 3px 15px -4px,rgba(0 0 0 / 20%) 1px 1px 8px -4px;--date-btn-shadow-hover:rgba(0 0 0 / 40%) 4px 6px 18px -1px,rgba(0 0 0 / 35%) 4px 5px 25px -2px;--checkmark-background:radial-gradient(circle,#fff 0,rgba(255 255 255 / 80%) 40%,rgba(255 255 255 / 0%) 70%);--overlay-background:rgba(20 20 20 / 25%);--overlay-cursor:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23777' width='16' height='16' viewBox='0 0 122.878 122.88'%3E%3Cpath d='M1.426 8.313a4.87 4.87 0 0 1 0-6.886 4.87 4.87 0 0 1 6.886 0l53.127 53.127 53.127-53.127a4.87 4.87 0 0 1 6.887 0 4.87 4.87 0 0 1 0 6.886L68.324 61.439l53.128 53.128a4.87 4.87 0 0 1-6.887 6.886L61.438 68.326 8.312 121.453a4.87 4.87 0 0 1-6.886 0 4.87 4.87 0 0 1 0-6.886l53.127-53.128L1.426 8.313h0z'/%3E%3C/svg%3E\\\") 16 16,crosshair;--icon-ms365-color:#ea3e23;--icon-yahoo-color:#5f01d1;--icon-filter:none}:host(.atcb-dark){--btn-background:#2e2e2e;--btn-background-hover:#474747;--btn-border:#4d4d4d;--btn-text:#dedede;--btn-text-hover:#f1f1f1;--btn-shadow:rgba(255 255 255 / 5%) -12px -5px 20px -8px,rgba(255 255 255 / 6%) -7px -5px 15px -3px,rgba(0 0 0 / 50%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 3px 3px 20px -3px;--btn-shadow-hover:rgba(255 255 255 / 6%) -12px -5px 23px -8px,rgba(255 255 255 / 7%) -7px -5px 18px -3px,rgba(0 0 0 / 60%) 2px 5px 19px -1px,rgba(0 0 0 / 50%) 3px 3px 22px -3px;--list-background:#2e2e2e;--list-background-hover:#474747;--list-text:#dedede;--list-text-hover:#f1f1f1;--list-close-background:#282828;--list-shadow:rgba(255 255 255 / 5%) -12px -5px 20px -8px,rgba(255 255 255 / 6%) -7px -5px 15px -3px,rgba(0 0 0 / 50%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 3px 3px 20px -3px;--list-shadow-modal:rgba(255 255 255 / 8%) -12px -5px 30px -8px,rgba(255 255 255 / 8%) -7px -5px 15px -3px,rgba(0 0 0 / 60%) 4px 6px 50px -4px,rgba(0 0 0 / 90%) 8px 12px 40px -2px;--modal-text:#f1f1f1;--modal-background:#242424;--modal-btn-bar:#38383a;--modal-btn-background:#181819;--modal-btn-secondary-background:#2e2d30;--modal-btn-background-hover:#434246;--modal-btn-text:#dbdbdb;--modal-btn-text-hover:#fff;--modal-btn-secondary-text:#b8b8b8;--modal-shadow:drop-shadow(5px 8px 30px rgba(0 0 0 / 90%));--modal-shadow-btn:rgba(255 255 255 / 5%) -2px -2px 10px,rgba(0 0 0 / 30%) 1px 2px 8px -1px;--date-btn-text:#ebebf0;--date-btn-text-secondary:#b5b5bd;--date-btn-cal-day-text:#101010;--date-btn-cal-month-text:#3e3e3f;--date-btn-cal-background:#c7c7cd;--date-btn-background:#363636;--date-btn-background-hover:#474747;--date-btn-shadow:rgba(255 255 255 / 10%) -8px -6px 20px,rgba(0 0 0 / 50%) 1px 3px 25px -8px,rgba(0 0 0 / 50%) 1px 1px 10px -3px;--checkmark-background:radial-gradient(circle,rgba(0 0 0 / 50%) 0,rgba(0 0 0 / 30%) 40%,rgba(0 0 0 / 0%) 70%);--overlay-background:rgba(20 20 20 / 60%);--icon-ms365-color:#ea3e23;--icon-yahoo-color:#bebebe;--icon-filter:grayscale(.2)}.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-l)}@media (max-width:991px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-m)}}@media (max-width:575px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-s)}}.atcb-button-wrapper{display:block;padding:5px;position:relative}.atcb-button,.atcb-subevent-btn{display:flex;align-items:flex-start;cursor:pointer;font-family:var(--font);font-size:1em;box-shadow:var(--date-btn-shadow);background-color:var(--date-btn-background);border:0;border-radius:6px;padding:0;margin:0;touch-action:manipulation;position:relative;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.atcb-button{box-shadow:var(--btn-shadow);min-width:17.5em;max-width:16em;position:relative;z-index:1}.atcb-rtl .atcb-button{direction:rtl;text-align:right}.atcb-button:hover,.atcb-subevent-btn:hover{align-items:center}.atcb-subevent-btn:focus,.atcb-subevent-btn:hover{background-color:var(--date-btn-background-hover);box-shadow:var(--date-btn-shadow-hover)}.atcb-button:focus,.atcb-button:hover{background-color:var(--btn-background-hover);box-shadow:var(--btn-shadow-hover)}.atcb-button:focus-visible,.atcb-subevent-btn:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-button.atcb-active.atcb-dropoverlay{z-index:14000090}.atcb-subevent-btn+.atcb-subevent-btn{margin-top:30px}.atcb-date-btn-left{border-radius:4px 0 0 4px;align-self:stretch;background-color:var(--date-btn-cal-background);color:var(--date-btn-background-hover);padding:.7em .8em .8em;width:2.7em;align-items:center;display:flex;flex-direction:column}.atcb-rtl .atcb-date-btn-left{border-radius:0 4px 4px 0}.atcb-button:hover .atcb-date-btn-left,.atcb-subevent-btn:hover .atcb-date-btn-left{opacity:.8}.atcb-date-btn-day{color:var(--date-btn-cal-day-text);font-weight:300;font-size:2em;word-break:keep-all;padding-bottom:.1em}.atcb-initialized[lang=ja] .atcb-date-btn-day,.atcb-initialized[lang=ko] .atcb-date-btn-day,.atcb-initialized[lang=zh] .atcb-date-btn-day{font-size:1.3em}.atcb-date-btn-month{color:var(--date-btn-cal-month-text);font-weight:600;font-size:1em}.atcb-date-btn-right{position:relative;color:var(--date-btn-text);min-width:12.5em;overflow-wrap:anywhere}.atcb-date-btn-details{opacity:1;padding:.7em .8em;text-align:left}.atcb-rtl .atcb-date-btn-details{text-align:right}.atcb-date-btn-hover{position:absolute;top:0;left:0;width:100%;opacity:0;height:100%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:1em}.atcb-button:hover .atcb-date-btn-details,.atcb-subevent-btn:hover .atcb-date-btn-details{opacity:0}.atcb-button:hover .atcb-date-btn-hover,.atcb-subevent-btn:hover .atcb-date-btn-hover{opacity:1}.atcb-date-btn-headline{font-weight:600;font-size:.9em;margin-bottom:.5em;overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.atcb-date-btn-content{display:flex;align-items:center;font-size:.8em;color:var(--date-btn-text-secondary)}.atcb-date-btn-content-location{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-all}.atcb-date-btn-content-icon{display:inline-block;margin-top:-.3em;height:.8em;width:1.3em;flex:0 0 1.3em}.atcb-rtl .atcb-date-btn-content-icon{margin-right:0;margin-left:.5em}.atcb-initialized[lang=ja] .atcb-date-btn-content-icon,.atcb-initialized[lang=ko] .atcb-date-btn-content-icon,.atcb-initialized[lang=zh] .atcb-date-btn-content-icon{margin-top:-.2em}.atcb-date-btn-content-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-date-btn-content+.atcb-date-btn-content{margin-top:.3em}.atcb-date-btn-content-recurr-icon{padding-left:.3em}.atcb-icon{height:1em;margin-bottom:.3em;margin-right:.8em;flex-grow:0;flex-shrink:0}.atcb-rtl .atcb-icon{margin-right:0;margin-left:.8em}.atcb-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-text{overflow-wrap:anywhere}.atcb-dropdown-anchor{bottom:4px;height:1px;width:100%;opacity:0;position:absolute}.atcb-list-wrapper{box-sizing:border-box;padding:0 4px;position:absolute;z-index:14000090}.atcb-list-wrapper.atcb-dropoverlay{z-index:15000000}.atcb-list{border-radius:0 0 6px 6px;box-sizing:border-box;box-shadow:var(--list-shadow);color:var(--list-text);display:block;font-family:var(--font);min-width:100%;position:relative;user-select:none;-webkit-user-select:none;width:fit-content}.atcb-list-item{align-items:center;background-color:var(--list-background);box-sizing:border-box;cursor:pointer;display:flex;font-size:1em;line-height:1.75em;padding:.8em;text-align:left;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.atcb-rtl .atcb-list-item{direction:rtl;text-align:right}.atcb-list-item:hover{background-color:var(--list-background-hover);color:var(--list-text-hover)}.atcb-list-item:focus-visible{background-color:var(--list-background-hover);color:var(--keyboard-focus);font-weight:600;outline:0}.atcb-list-item:last-child{border-radius:0 0 6px 6px}.atcb-dropup .atcb-list-item:last-child{border-radius:0;padding-bottom:1.25em}.atcb-dropoverlay .atcb-list .atcb-list-item:first-child,.atcb-dropup .atcb-list-item:first-child,.atcb-list.atcb-modal .atcb-list-item:first-child{border-radius:6px 6px 0 0}.atcb-dropoverlay .atcb-list .atcb-list-item:only-child,.atcb-list.atcb-modal .atcb-list-item:only-child{border-radius:6px}.atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child{padding-top:1.25em}.atcb-dropoverlay .atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child,.atcb-dropup .atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child{padding-top:.8em}.atcb-dropoverlay .atcb-list,.atcb-list.atcb-modal{border-radius:6px}.atcb-list.atcb-modal{box-shadow:var(--list-shadow-modal)}.atcb-list-item .atcb-icon{margin-bottom:.5em;margin-right:.6em;width:1.125em}.atcb-rtl .atcb-list-item .atcb-icon{margin-right:0;margin-left:.6em}.atcb-no-text .atcb-list-item .atcb-icon{margin:0 auto}.atcb-list-item-close{background-color:var(--list-close-background)}.atcb-list-item.atcb-list-item-close:not(:focus-visible){color:var(--list-close-text)}.atcb-list-item-close svg{fill:currentcolor}.atcb-modal{display:block;margin:auto;min-width:250px;width:auto;position:relative;z-index:14000090}.atcb-modal-box{filter:var(--modal-shadow);color:var(--modal-text);cursor:default;box-sizing:border-box;font-family:var(--font);line-height:1.5em;text-align:left;user-select:none;-webkit-user-select:none;touch-action:manipulation;width:100%;margin-bottom:20px;max-width:32em;-webkit-tap-highlight-color:transparent}.atcb-modal-box.atcb-rtl{text-align:right;direction:rtl;padding:1.25em 1em 1.25em 2em}.atcb-modal-icon{height:2.5em;width:2.5em;border-radius:100%;background-color:var(--modal-background);padding:1.75em;margin:auto}.atcb-modal-icon svg{height:auto;fill:currentcolor;width:100%}.atcb-modal-headline{background-color:var(--modal-background);border-radius:6px 6px 0 0;font-size:1.3em;font-weight:600;line-height:1.5em;padding:1.8em 2em 1.3em;text-transform:uppercase;text-align:center}.atcb-modal-icon+.atcb-modal-headline{margin-top:-2.6em;padding-top:2.6em}.atcb-modal-content{background-color:var(--modal-background);font-size:1em;padding:.3em 2.5em 2.25em}@media (max-width:575px){.atcb-modal-headline{padding:1.8em 1em 1em}.atcb-modal-content{padding:.3em 1em 2em}}.atcb-modal-buttons{background-color:var(--modal-btn-bar);border-radius:0 0 6px 6px;box-sizing:border-box;padding:.8em 1em;text-align:center;width:100%;display:flex;justify-content:center;flex-flow:row-reverse wrap;align-items:center}a.atcb-modal-btn,button.atcb-modal-btn{background-color:var(--modal-btn-secondary-background);border:0;border-radius:6px;box-shadow:var(--modal-shadow-btn);color:var(--modal-btn-secondary-text);cursor:pointer;display:inline-block;font-family:var(--font);font-size:.9em;font-weight:600;line-height:1.5em;margin:.625em;padding:.625em 1.25em;position:relative;text-align:center;text-decoration:none;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;text-transform:uppercase}a.atcb-modal-btn.atcb-modal-btn-primary,button.atcb-modal-btn.atcb-modal-btn-primary{background-color:var(--modal-btn-background);color:var(--modal-btn-text)}a.atcb-modal-btn:hover,button.atcb-modal-btn:hover{background-color:var(--modal-btn-background-hover);box-shadow:var(--modal-shadow-btn-hover);color:var(--modal-btn-text-hover);text-decoration:none}a.atcb-modal-btn:focus-visible,button.atcb-modal-btn:focus-visible{background-color:var(--modal-btn-background-hover);outline:2px solid var(--keyboard-focus)}.atcb-checkmark{display:none}.atcb-saved .atcb-checkmark{box-sizing:content-box;color:var(--btn-text);display:block;position:absolute;top:-1.2em;right:-.3em;padding:.5em;background:var(--checkmark-background);border-radius:100%;height:2em}.atcb-checkmark svg{height:100%;fill:currentcolor;width:auto}#atcb-bgoverlay{animation:atcb-bgoverlay-animate .1s ease 0s 1 normal forwards;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);background-color:var(--overlay-background);border:0;box-sizing:border-box;display:flex;height:calc(100vh + 100px);inset-inline:0;left:0;right:0;top:0;min-height:100%;min-width:100%;opacity:0;overflow-y:auto;padding:20px 20px 130px;position:fixed;width:100vw;z-index:14000000}#atcb-bgoverlay.atcb-no-bg{animation:none;backdrop-filter:none;-webkit-backdrop-filter:none;opacity:1;background-color:transparent}@keyframes atcb-bgoverlay-animate{0%{opacity:0}100%{opacity:1}}#atcb-bgoverlay.atcb-click:hover{cursor:var(--overlay-cursor)}.atcb-icon .atcb-icon-apple svg{fill:currentcolor}.atcb-icon .atcb-icon-ical svg{fill:currentcolor}.atcb-icon .atcb-icon-ms365 svg{fill:var(--icon-ms365-color)}.atcb-icon .atcb-icon-yahoo svg{fill:var(--icon-yahoo-color)}.atcb-icon .atcb-icon-google svg,.atcb-icon .atcb-icon-msteams svg,.atcb-icon .atcb-icon-outlookcom svg{filter:var(--icon-filter)}\",\r};\rconst isBrowser = () => {\n if (typeof window === 'undefined') {\n return false;\n } else {\n return true;\n }\n};\nconst isiOS = isBrowser()\n ? () => {\n if ((/iPad|iPhone|iPod/i.test(navigator.userAgent || navigator.vendor || window.opera) && !window.MSStream) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) {\n return true;\n } else {\n return false;\n }\n }\n : () => {\n return false;\n };\nconst isAndroid = isBrowser()\n ? () => {\n if (/android/i.test(navigator.userAgent || navigator.vendor || window.opera) && !window.MSStream) {\n return true;\n } else {\n return false;\n }\n }\n : () => {\n return false;\n };\nconst isChrome = isBrowser()\n ? () => {\n if (/chrome|chromium|crios|google inc/i.test(navigator.userAgent || navigator.vendor)) {\n return true;\n } else {\n return false;\n }\n }\n : () => {\n return false;\n };\nconst isMobile = () => {\n if (isAndroid() || isiOS()) {\n return true;\n } else {\n return false;\n }\n};\nconst isWebView = isBrowser()\n ? () => {\n if (/(; ?wv|(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari))/i.test(navigator.userAgent || navigator.vendor)) {\n return true;\n } else {\n return false;\n }\n }\n : () => {\n return false;\n };\nconst isProblematicWebView = isBrowser()\n ? () => {\n if (/(Instagram)/i.test(navigator.userAgent || navigator.vendor || window.opera)) {\n return true;\n } else {\n return false;\n }\n }\n : () => {\n return false;\n };\nconst atcbDefaultTarget = isWebView() ? '_system' : '_blank';\nconst atcbOptions = ['apple', 'google', 'ical', 'ms365', 'outlookcom', 'msteams', 'yahoo'];\nconst atcbValidRecurrOptions = ['apple', 'google', 'ical'];\nconst atcbInvalidSubscribeOptions = ['msteams'];\nconst atcbiOSInvalidOptions = ['ical'];\nconst atcbStates = [];\nconst atcbWcParams = [\n 'debug',\n 'name',\n 'dates',\n 'description',\n 'startDate',\n 'startTime',\n 'endDate',\n 'endTime',\n 'timeZone',\n 'location',\n 'status',\n 'sequence',\n 'uid',\n 'organizer',\n 'icsFile',\n 'images',\n 'recurrence',\n 'recurrence_interval',\n 'recurrence_until',\n 'recurrence_count',\n 'recurrence_byDay',\n 'recurrence_byMonth',\n 'recurrence_byMonthDay',\n 'recurrence_weekstart',\n 'availability',\n 'created',\n 'updated',\n 'subscribe',\n 'options',\n 'iCalFileName',\n 'listStyle',\n 'buttonStyle',\n 'trigger',\n 'hideIconButton',\n 'hideIconList',\n 'hideIconModal',\n 'hideTextLabelButton',\n 'hideTextLabelList',\n 'buttonsList',\n 'hideBackground',\n 'hideCheckmark',\n 'hideBranding',\n 'size',\n 'label',\n 'ty',\n 'rsvp',\n 'inline',\n 'inlineRsvp',\n 'customLabels',\n 'customCss',\n 'lightMode',\n 'language',\n 'hideRichData',\n 'bypassWebViewCheck',\n 'blockInteraction',\n];\nconst atcbWcBooleanParams = ['debug', 'hideIconButton', 'hideIconList', 'hideIconModal', 'hideTextLabelButton', 'hideTextLabelList', 'subscribe', 'hideBackground', 'hideCheckmark', 'hideBranding', 'inlineRsvp', 'hideRichData', 'buttonsList', 'inline', 'bypassWebViewCheck', 'blockInteraction'];\nconst atcbWcObjectParams = ['dates', 'customLabels', 'ty', 'rsvp'];\nconst atcbWcArrayParams = ['images', 'options'];\nconst atcbIcon = {\n trigger:\n '',\n apple:\n '',\n google:\n '',\n ical: '',\n msteams:\n '',\n ms365:\n '',\n outlookcom:\n '',\n yahoo:\n '',\n atcb: '',\n close:\n '',\n location:\n '',\n warning:\n '',\n checkmark:\n '',\n};\n\n\nfunction atcb_decorate_data(data) {\n data = atcb_decorate_data_boolean(data);\n data = atcb_decorate_data_rrule(data);\n data = atcb_decorate_data_options(data);\n data = atcb_decorate_data_style(data);\n data.sizes = atcb_decorate_sizes(data.size);\n data.lightMode = atcb_decorate_light_mode(data.lightMode);\n data = atcb_decorate_data_i18n(data);\n data = atcb_decorate_data_dates(data);\n data = atcb_decorate_data_meta(data);\n data = atcb_decorate_data_extend(data);\n return data;\n}\nfunction atcb_decorate_data_boolean(data) {\n for (let i = 0; i < atcbWcBooleanParams.length; i++) {\n const attr = atcbWcBooleanParams[`${i}`];\n if (data[`${attr}`] != null && (data[`${attr}`] === 'true' || data[`${attr}`] === true)) {\n data[`${attr}`] = true;\n } else {\n data[`${attr}`] = false;\n }\n }\n return data;\n}\nfunction atcb_decorate_data_rrule(data) {\n if (data.recurrence != null && data.recurrence != '') {\n data.recurrence = data.recurrence.replace(/\\s+/g, '').toUpperCase();\n if (!/^(RRULE:[\\w=;,:+-/\\\\]+|daily|weekly|monthly|yearly)$/im.test(data.recurrence)) {\n data.recurrence = '!wrong rrule format!';\n } else {\n if (/^RRULE:/i.test(data.recurrence)) {\n data.recurrence_simplyfied = false;\n const rruleParts = data.recurrence.substr(6).split(';');\n const rruleObj = new Object();\n rruleParts.forEach(function (rule) {\n rruleObj[rule.split('=')[0]] = rule.split('=')[1];\n });\n data.recurrence_until = rruleObj.UNTIL ? rruleObj.UNTIL : '';\n data.recurrence_count = rruleObj.COUNT ? rruleObj.COUNT : '';\n data.recurrence_byDay = rruleObj.BYDAY ? rruleObj.BYDAY : '';\n data.recurrence_byMonth = rruleObj.BYMONTH ? rruleObj.BYMONTH : '';\n data.recurrence_byMonthDay = rruleObj.BYMONTHDAY ? rruleObj.BYMONTHDAY : '';\n data.recurrence_interval = rruleObj.INTERVAL ? rruleObj.INTERVAL : 1;\n data.recurrence_frequency = rruleObj.FREQ ? rruleObj.FREQ : '';\n } else {\n data.recurrence_simplyfied = true;\n if (data.recurrence_interval == null || data.recurrence_interval == '') {\n data.recurrence_interval = 1;\n }\n if (data.recurrence_weekstart == null || (data.recurrence_weekstart == '') | (data.recurrence_weekstart.length > 2)) {\n data.recurrence_weekstart = 'MO';\n }\n data.recurrence_frequency = data.recurrence;\n data.recurrence = 'RRULE:FREQ=' + data.recurrence + ';WKST=' + data.recurrence_weekstart + ';INTERVAL=' + data.recurrence_interval;\n if (data.recurrence_until != null && data.recurrence_until != '') {\n if (data.endTime != null && data.endTime != '') {\n data.recurrence = data.recurrence + ';UNTIL=' + data.recurrence_until.replace(/-/g, '').slice(0, 8) + 'T' + data.endTime.replace(':', '') + '00';\n } else {\n data.recurrence = data.recurrence + ';UNTIL=' + data.recurrence_until.replace(/-/g, '').slice(0, 8);\n }\n }\n if (data.recurrence_count != null && data.recurrence_count != '') {\n data.recurrence = data.recurrence + ';COUNT=' + data.recurrence_count;\n }\n if (data.recurrence_byDay != null && data.recurrence_byDay != '') {\n data.recurrence = data.recurrence + ';BYDAY=' + data.recurrence_byDay;\n }\n if (data.recurrence_byMonth != null && data.recurrence_byMonth != '') {\n data.recurrence = data.recurrence + ';BYMONTH=' + data.recurrence_byMonth;\n }\n if (data.recurrence_byMonthDay != null && data.recurrence_byMonthDay != '') {\n data.recurrence = data.recurrence + ';BYMONTHDAY=' + data.recurrence_byMonthDay;\n }\n }\n }\n }\n return data;\n}\nfunction atcb_decorate_data_options(data) {\n const newOptions = [];\n data.optionLabels = [];\n let iCalGiven = false;\n let appleGiven = false;\n for (let i = 0; i < data.options.length; i++) {\n const cleanOption = data.options[`${i}`].split('|');\n const optionName = cleanOption[0].toLowerCase().replace('microsoft', 'ms').replace(/\\./, '');\n const optionLabel = (function () {\n if (cleanOption[1] != null) {\n return cleanOption[1];\n }\n return '';\n })();\n if (optionName === 'apple') {\n appleGiven = true;\n }\n if (optionName === 'ical') {\n iCalGiven = true;\n }\n if (\n (isiOS() && atcbiOSInvalidOptions.includes(optionName)) ||\n (data.recurrence != null && data.recurrence != '' && (!atcbValidRecurrOptions.includes(optionName) || (data.recurrence_until != null && data.recurrence_until != '' && (optionName == 'apple' || optionName == 'ical')))) ||\n (data.subscribe && atcbInvalidSubscribeOptions.includes(optionName))\n ) {\n continue;\n }\n newOptions.push(optionName);\n data.optionLabels.push(optionLabel);\n }\n if (isiOS() && iCalGiven && !appleGiven) {\n newOptions.push('apple');\n }\n data.options = newOptions;\n return data;\n}\nfunction atcb_decorate_data_style(data) {\n if (data.listStyle == null || data.listStyle == '') {\n data.listStyle = 'dropdown';\n }\n if (data.listStyle === 'modal') {\n data.trigger = 'click';\n }\n if (data.buttonStyle != null && data.buttonStyle != '' && data.buttonStyle != 'default') {\n if (data.buttonStyle == 'round' || data.buttonStyle == 'text' || data.buttonStyle == 'date' || data.buttonStyle == 'neumorphism') {\n data.trigger = 'click';\n }\n if (data.buttonStyle == 'date' && data.listStyle == 'dropdown') {\n data.listStyle = 'overlay';\n }\n } else {\n data.buttonStyle = 'default';\n }\n if ((data.buttonStyle == 'default' || data.buttonStyle == '3d' || data.buttonStyle == 'flat') && data.listStyle == 'dropdown' && !data.hideTextLabelList && data.hideTextLabelButton) {\n data.listStyle = 'overlay';\n }\n return data;\n}\nfunction atcb_decorate_sizes(size) {\n const sizes = [];\n sizes['l'] = sizes['m'] = sizes['s'] = 16;\n if (size != null && size != '') {\n const sizeParts = size.split('|');\n for (let i = 0; i < sizeParts.length; i++) {\n sizeParts[`${i}`] = parseInt(sizeParts[`${i}`]);\n }\n if (sizeParts[0] >= 0 && sizeParts[0] < 11) {\n sizes['l'] = sizes['m'] = sizes['s'] = 10 + sizeParts[0];\n }\n if (sizeParts.length > 2) {\n if (sizeParts[1] >= 0 && sizeParts[1] < 11) {\n sizes['m'] = 10 + sizeParts[1];\n }\n if (sizeParts[2] >= 0 && sizeParts[2] < 11) {\n sizes['s'] = 10 + sizeParts[2];\n }\n } else if (sizeParts.length == 2) {\n if (sizeParts[1] >= 0 && sizeParts[1] < 11) {\n sizes['m'] = sizes['s'] = 10 + sizeParts[1];\n }\n }\n }\n return sizes;\n}\nfunction atcb_decorate_light_mode(lightMode = '') {\n if (lightMode == 'system') {\n const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)');\n return prefersDarkScheme.matches ? 'dark' : 'light';\n }\n if (lightMode != 'bodyScheme' && lightMode != 'dark') {\n return 'light';\n }\n return lightMode;\n}\nfunction atcb_decorate_data_i18n(data) {\n if (data.language == null || data.language == '' || !availableLanguages.includes(data.language)) {\n data.language = 'en';\n }\n if (data.language.length > 2) {\n data.language = data.language.substr(0, 2);\n }\n if (rtlLanguages.includes(data.language)) {\n data.rtl = true;\n } else {\n data.rtl = false;\n }\n return data;\n}\nfunction atcb_decorate_data_dates(data) {\n if (data.dates != null && data.dates.length > 0) {\n for (let i = 0; i < data.dates.length; i++) {\n if (data.dates[`${i}`].timeZone == null && data.timeZone != null) {\n data.dates[`${i}`].timeZone = data.timeZone;\n }\n const cleanedUpDates = atcb_date_cleanup(data.dates[`${i}`]);\n data.dates[`${i}`].startTime = cleanedUpDates.startTime;\n data.dates[`${i}`].endTime = cleanedUpDates.endTime;\n data.dates[`${i}`].timeZone = cleanedUpDates.timeZone;\n data.dates[`${i}`].timestamp = cleanedUpDates.startTimestamp;\n data.dates[`${i}`].startDate = atcb_date_calculation(cleanedUpDates.startDate);\n data.dates[`${i}`].endDate = atcb_date_calculation(cleanedUpDates.endDate);\n }\n } else {\n const cleanedUpDates = atcb_date_cleanup(data);\n data.dates = [];\n data.dates[0] = new Object();\n data.startTime = data.dates[0].startTime = cleanedUpDates.startTime;\n data.endTime = data.dates[0].endTime = cleanedUpDates.endTime;\n data.timeZone = data.dates[0].timeZone = cleanedUpDates.timeZone;\n data.startDate = data.dates[0].startDate = atcb_date_calculation(cleanedUpDates.startDate);\n data.endDate = data.dates[0].endDate = atcb_date_calculation(cleanedUpDates.endDate);\n }\n const now = new Date();\n if (data.created == null || data.created == '') {\n data.created = atcb_format_datetime(now, 'clean', true);\n }\n if (data.updated == null || data.updated == '') {\n data.updated = atcb_format_datetime(now, 'clean', true);\n }\n return data;\n}\nfunction atcb_decorate_data_meta(data) {\n if (data.status == null || data.status == '') {\n data.status = 'CONFIRMED';\n }\n if (data.sequence == null || data.sequence == '') {\n data.sequence = 0;\n }\n return data;\n}\nfunction atcb_decorate_data_description(data, i) {\n if (data.dates[`${i}`].description != null && data.dates[`${i}`].description != '') {\n data.dates[`${i}`].descriptionHtmlFree = atcb_rewrite_html_elements(data.dates[`${i}`].description, true);\n data.dates[`${i}`].description = atcb_rewrite_html_elements(data.dates[`${i}`].description);\n } else {\n if (data.dates[`${i}`].description == null && data.description != null && data.description != '') {\n data.dates[`${i}`].descriptionHtmlFree = atcb_rewrite_html_elements(data.description, true);\n data.dates[`${i}`].description = atcb_rewrite_html_elements(data.description);\n } else {\n data.dates[`${i}`].descriptionHtmlFree = data.dates[`${i}`].description = '';\n }\n }\n return data;\n}\nfunction atcb_decorate_data_extend(data) {\n for (let i = 0; i < data.dates.length; i++) {\n data = atcb_decorate_data_description(data, i);\n if (data.dates[`${i}`].name == null || data.dates[`${i}`].name == '') {\n data.dates[`${i}`].name = data.name;\n }\n if (data.dates[`${i}`].status == null) {\n data.dates[`${i}`].status = data.status.toUpperCase();\n } else {\n data.dates[`${i}`].status = data.dates[`${i}`].status.toUpperCase();\n }\n if (data.dates[`${i}`].sequence == null) {\n data.dates[`${i}`].sequence = data.sequence;\n }\n if (data.dates[`${i}`].location == null && data.location != null) {\n data.dates[`${i}`].location = data.location;\n }\n if (data.dates[`${i}`].organizer == null && data.organizer != null) {\n data.dates[`${i}`].organizer = data.organizer;\n }\n if (data.dates[`${i}`].availability == null && data.availability != null) {\n data.dates[`${i}`].availability = data.availability.toLowerCase();\n } else if (data.dates[`${i}`].availability != null) {\n data.dates[`${i}`].availability = data.dates[`${i}`].availability.toLowerCase();\n }\n if (data.dates[`${i}`].uid == null) {\n if (i == 0 && data.uid != null && data.uid != '') {\n data.dates[0].uid = data.uid;\n } else {\n data.dates[`${i}`].uid = atcb_generate_uuid();\n }\n }\n }\n if (data.recurrence != null && data.recurrence != '') {\n data.dates[0].recurrence = data.recurrence;\n }\n if (data.dates.length > 1) {\n data.dates.sort((a, b) => a.timestamp - b.timestamp);\n }\n return data;\n}\nfunction atcb_date_cleanup(dateTimeData) {\n if (dateTimeData.endDate == null || dateTimeData.endDate == '') {\n dateTimeData.endDate = dateTimeData.startDate;\n }\n const endpoints = ['start', 'end'];\n endpoints.forEach(function (point) {\n if (dateTimeData[point + 'Date'] != null) {\n dateTimeData[point + 'Date'] = dateTimeData[point + 'Date'].replace(/\\.\\d{3}/, '').replace('Z', '');\n const tmpSplitStartDate = dateTimeData[point + 'Date'].split('T');\n if (tmpSplitStartDate[1] != null) {\n dateTimeData[point + 'Date'] = tmpSplitStartDate[0];\n dateTimeData[point + 'Time'] = tmpSplitStartDate[1];\n }\n }\n if (dateTimeData[point + 'Time'] != null && dateTimeData[point + 'Time'].length === 8) {\n const timeStr = dateTimeData[point + 'Time'];\n dateTimeData[point + 'Time'] = timeStr.substring(0, timeStr.length - 3);\n }\n if (dateTimeData.timeZone == 'currentBrowser') {\n dateTimeData.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n let tmpDate;\n if (dateTimeData[point + 'Time'] != null) {\n tmpDate = new Date(dateTimeData[point + 'Date'] + ' ' + dateTimeData[point + 'Time']);\n } else {\n tmpDate = new Date(dateTimeData[point + 'Date']);\n }\n dateTimeData[point + 'Timestamp'] = tmpDate.getTime();\n });\n return dateTimeData;\n}\nfunction atcb_date_calculation(dateString) {\n const today = new Date();\n const todayString = today.getUTCFullYear() + '-' + (today.getUTCMonth() + 1) + '-' + today.getUTCDate();\n dateString = dateString.replace(/today/gi, todayString);\n const dateStringParts = dateString.split('+');\n const dateParts = dateStringParts[0].split('-');\n let newDate = (function () {\n if (dateParts[0].length < 4) {\n return new Date(Date.UTC(dateParts[2], dateParts[0] - 1, dateParts[1]));\n }\n return new Date(Date.UTC(dateParts[0], dateParts[1] - 1, dateParts[2]));\n })();\n if (dateStringParts[1] != null && dateStringParts[1] > 0) {\n newDate.setDate(newDate.getDate() + parseInt(dateStringParts[1]));\n }\n return newDate.toISOString().replace(/T(\\d{2}:\\d{2}:\\d{2}\\.\\d{3})Z/g, '');\n}\n\n\nfunction atcb_check_required(data, throwError = true) {\n if (data.options == null || data.options.length < 1) {\n if (throwError) {\n throw new Error('Add to Calendar Button generation failed: no valid options set');\n }\n return false;\n }\n if (data.name == null || data.name == '') {\n if (throwError) {\n throw new Error('Add to Calendar Button generation failed: required name information missing');\n }\n return false;\n }\n if (data.dates != null && data.dates.length > 0) {\n const requiredMultiField = ['name', 'startDate'];\n const requiredMultiFieldFlex = ['name'];\n return requiredMultiField.every(function (field) {\n for (let i = 0; i < data.dates.length; i++) {\n if (\n (!requiredMultiFieldFlex.includes(`${field}`) && (data.dates[`${i}`][`${field}`] == null || data.dates[`${i}`][`${field}`] == '')) ||\n (requiredMultiFieldFlex.includes(`${field}`) && (data.dates[`${i}`][`${field}`] == null || data.dates[`${i}`][`${field}`] == '') && (data[`${field}`] == null || data[`${field}`] == ''))\n ) {\n if (throwError) {\n throw new Error('Add to Calendar Button generation failed: required setting missing [dates array object #' + (i + 1) + '/' + data.dates.length + '] => [' + field + ']');\n }\n return false;\n }\n }\n return true;\n });\n } else {\n const requiredSingleField = ['startDate'];\n return requiredSingleField.every(function (field) {\n if (data[`${field}`] == null || data[`${field}`] == '') {\n if (throwError) {\n throw new Error('Add to Calendar Button generation failed: required setting missing [' + field + ']');\n }\n return false;\n }\n return true;\n });\n }\n}\nfunction atcb_validate(data) {\n const msgPrefix = 'Add to Calendar Button generation (' + data.identifier + ')';\n if (!atcb_validate_icsFile(data, msgPrefix)) return false;\n if (!atcb_validate_buttonStyle(data, msgPrefix)) return false;\n if (!atcb_validate_subscribe(data, msgPrefix)) return false;\n if (!atcb_validate_created(data, msgPrefix)) return false;\n if (!atcb_validate_updated(data, msgPrefix)) return false;\n if (!atcb_validate_options(data, msgPrefix)) return false;\n if (!atcb_validate_date_blocks(data, msgPrefix)) return false;\n if (!atcb_validate_rrule(data, msgPrefix)) return false;\n if (data.recurrence_simplyfied) {\n if (!atcb_validate_rrule_simplyfied(data, msgPrefix)) return false;\n }\n return true;\n}\nfunction atcb_validate_icsFile(data, msgPrefix, i = '', msgSuffix = '') {\n const icsFileStr = (function () {\n if (i != '' && data.dates[`${i}`].icsFile != null) {\n return data.dates[`${i}`].icsFile;\n }\n if (i == '' && data.icsFile != null) {\n return data.icsFile;\n }\n return '';\n })();\n if (icsFileStr != '') {\n if (!atcb_secure_url(icsFileStr, false) || !data.icsFile.startsWith('https://')) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: explicit ics file path not valid' + msgSuffix);\n }\n return false;\n }\n }\n return true;\n}\nfunction atcb_validate_buttonStyle(data, msgPrefix) {\n const availableStyles = ['default', '3d', 'flat', 'round', 'neumorphism', 'text', 'date', 'custom', 'none'];\n if (!availableStyles.includes(data.buttonStyle)) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: provided buttonStyle invalid');\n }\n return false;\n }\n if (data.customCss != null && data.customCss != '' && (!atcb_secure_url(data.customCss, false) || !/\\.css$/m.test(data.customCss))) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: customCss provided, but no valid url');\n }\n return false;\n }\n if ((data.customCss == null || data.customCss == '') && data.buttonStyle == 'custom') {\n if (data.debug) {\n console.error(msgPrefix + ' failed: buttonStyle \"custom\" selected, but no customCss file provided');\n }\n return false;\n }\n return true;\n}\nfunction atcb_validate_subscribe(data, msgPrefix) {\n if (data.subscribe == true && (data.icsFile == null || data.icsFile == '')) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: a subscription calendar requires a valid explicit ics file as well');\n }\n return false;\n }\n return true;\n}\nfunction atcb_validate_created(data, msgPrefix) {\n if (!/^\\d{8}T\\d{6}Z$/.test(data.created)) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: created date format not valid. Needs to be a full ISO-8601 UTC date and time string, formatted YYYYMMDDTHHMMSSZ');\n }\n return false;\n }\n return true;\n}\nfunction atcb_validate_updated(data, msgPrefix) {\n if (!/^\\d{8}T\\d{6}Z$/.test(data.updated)) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: updated date format not valid. Needs to be a full ISO-8601 UTC date and time string, formatted YYYYMMDDTHHMMSSZ');\n }\n return false;\n }\n return true;\n}\nfunction atcb_validate_options(data, msgPrefix) {\n if (\n !data.options.every(function (option) {\n if (!atcbOptions.includes(option)) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: invalid option [' + option + ']');\n }\n return false;\n }\n return true;\n })\n ) {\n return false;\n }\n return true;\n}\nfunction atcb_validate_date_blocks(data, msgPrefix) {\n for (let i = 0; i < data.dates.length; i++) {\n const msgSuffix = (function () {\n if (data.dates.length == 1) {\n return '';\n } else {\n return ' [dates array object #' + (i + 1) + '/' + data.dates.length + '] ';\n }\n })();\n if (!atcb_validate_icsFile(data, msgPrefix, i, msgSuffix)) return false;\n if (!atcb_validate_status(data, msgPrefix, i, msgSuffix)) return false;\n if (!atcb_validate_availability(data, msgPrefix, i, msgSuffix)) return false;\n if (!atcb_validate_organizer(data, msgPrefix, i, msgSuffix)) return false;\n if (!atcb_validate_uid(data, msgPrefix, i, msgSuffix)) return false;\n if (!atcb_validate_sequence(data, msgPrefix, i, msgSuffix)) return false;\n if (!atcb_validate_timezone(data, msgPrefix, i, msgSuffix)) return false;\n if (!atcb_validate_datetime(data, msgPrefix, i, msgSuffix)) return false;\n }\n return true;\n}\nfunction atcb_validate_status(data, msgPrefix, i, msgSuffix) {\n if (data.dates[`${i}`].status != 'TENTATIVE' && data.dates[`${i}`].status != 'CONFIRMED' && data.dates[`${i}`].status != 'CANCELLED') {\n if (data.debug) {\n console.error(msgPrefix + ' failed: event status needs to be TENTATIVE, CONFIRMED, or CANCELLED' + msgSuffix);\n }\n return false;\n }\n return true;\n}\nfunction atcb_validate_availability(data, msgPrefix, i, msgSuffix) {\n if (data.dates[`${i}`].availability != null && data.dates[`${i}`].availability != '' && data.dates[`${i}`].availability != 'free' && data.dates[`${i}`].availability != 'busy') {\n if (data.debug) {\n console.error(msgPrefix + ' failed: event availability needs to be \"free\" or \"busy\"' + msgSuffix);\n }\n return false;\n }\n return true;\n}\nfunction atcb_validate_organizer(data, msgPrefix, i, msgSuffix) {\n if (data.dates[`${i}`].organizer != null && data.dates[`${i}`].organizer != '') {\n const organizerParts = data.dates[`${i}`].organizer.split('|');\n if (organizerParts.length != 2 || organizerParts[0].length > 50 || organizerParts[1].length > 80 || !atcb_validEmail(organizerParts[1])) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: organizer needs to match the schema \"NAME|EMAIL\" with a valid email address' + msgSuffix);\n }\n return false;\n }\n }\n return true;\n}\nfunction atcb_validate_uid(data, msgPrefix, i, msgSuffix) {\n if (!/^(\\w|-){1,254}$/.test(data.dates[`${i}`].uid)) {\n if (data.debug) {\n console.warn(msgPrefix + ': UID not valid. May only contain alpha, digits, and dashes; and be less than 255 characters. Falling back to an automated value!' + msgSuffix);\n }\n data.dates[`${i}`].uid = atcb_generate_uuid();\n }\n if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(data.dates[`${i}`].uid) && data.debug) {\n console.warn(msgPrefix + ': UID is highly recommended to be a hex-encoded random Universally Unique Identifier (UUID)!' + msgSuffix);\n }\n return true;\n}\nfunction atcb_validate_sequence(data, msgPrefix, i, msgSuffix) {\n if (!/^\\d+$/.test(data.dates[`${i}`].sequence)) {\n if (data.debug) {\n console.log(msgPrefix + ': sequence needs to be a number. Used the default 0 instead' + msgSuffix);\n }\n data.dates[`${i}`].sequence = 0;\n }\n return true;\n}\nfunction atcb_validate_timezone(data, msgPrefix, i, msgSuffix) {\n if (data.dates[`${i}`].timeZone != null && data.dates[`${i}`].timeZone != '') {\n const validTimeZones = tzlib_get_timezones();\n if (!validTimeZones.includes(data.dates[`${i}`].timeZone)) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: invalid time zone given' + msgSuffix);\n }\n return false;\n }\n }\n return true;\n}\nfunction atcb_validate_datetime(data, msgPrefix, i, msgSuffix) {\n const dates = ['startDate', 'endDate'];\n const newDate = dates;\n if (\n !dates.every(function (date) {\n if (data.dates[`${i}`][`${date}`].length !== 10) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: date misspelled [-> YYYY-MM-DD]' + msgSuffix);\n }\n return false;\n }\n const dateParts = data.dates[`${i}`][`${date}`].split('-');\n if (dateParts.length < 3 || dateParts.length > 3) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: date misspelled [' + date + ': ' + data.dates[`${i}`][`${date}`] + ']' + msgSuffix);\n }\n return false;\n }\n newDate[`${date}`] = new Date(dateParts[0], dateParts[1] - 1, dateParts[2]);\n return true;\n })\n ) {\n return false;\n }\n const times = ['startTime', 'endTime'];\n if (\n !times.every(function (time) {\n if (data.dates[`${i}`][`${time}`] != null) {\n if (data.dates[`${i}`][`${time}`].length !== 5) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: time misspelled [-> HH:MM]' + msgSuffix);\n }\n return false;\n }\n const timeParts = data.dates[`${i}`][`${time}`].split(':');\n if (timeParts.length < 2 || timeParts.length > 2) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: time misspelled [' + time + ': ' + data.dates[`${i}`][`${time}`] + ']' + msgSuffix);\n }\n return false;\n }\n if (timeParts[0] > 23) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: time misspelled - hours number too high [' + time + ': ' + timeParts[0] + ']' + msgSuffix);\n }\n return false;\n }\n if (timeParts[1] > 59) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: time misspelled - minutes number too high [' + time + ': ' + timeParts[1] + ']' + msgSuffix);\n }\n return false;\n }\n if (time == 'startTime') {\n newDate.startDate = new Date(newDate.startDate.getTime() + timeParts[0] * 3600000 + timeParts[1] * 60000);\n }\n if (time == 'endTime') {\n newDate.endDate = new Date(newDate.endDate.getTime() + timeParts[0] * 3600000 + timeParts[1] * 60000);\n }\n }\n return true;\n })\n ) {\n return false;\n }\n if ((data.dates[`${i}`].startTime != null && data.dates[`${i}`].endTime == null) || (data.dates[`${i}`].startTime == null && data.dates[`${i}`].endTime != null)) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: if you set a starting or end time, the respective other one also needs to be defined' + msgSuffix);\n }\n return false;\n }\n if (newDate.endDate < newDate.startDate) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: end date before start date' + msgSuffix);\n }\n return false;\n }\n return true;\n}\nfunction atcb_validate_rrule(data, msgPrefix) {\n if (data.recurrence != null && data.recurrence != '' && data.dates.length > 1) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: RRULE and multi-date set at the same time');\n }\n return false;\n }\n if (data.recurrence != null && data.recurrence != '' && !/^RRULE:[\\w=;,:+-/\\\\]+$/i.test(data.recurrence)) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: RRULE data misspelled');\n }\n return false;\n }\n return true;\n}\nfunction atcb_validate_rrule_simplyfied(data, msgPrefix) {\n if (data.recurrence_interval != null && data.recurrence_interval != '' && !/^\\d+$/.test(data.recurrence_interval)) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: recurrence data (interval) misspelled');\n }\n return false;\n }\n if (data.recurrence_until != null && data.recurrence_until != '' && !/^(\\d|-|:)+$/i.test(data.recurrence_until)) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: recurrence data (until) misspelled');\n }\n return false;\n }\n if (data.recurrence_count != null && data.recurrence_count != '' && !/^\\d+$/.test(data.recurrence_count)) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: recurrence data (interval) misspelled');\n }\n return false;\n }\n if (data.recurrence_byMonth != null && data.recurrence_byMonth != '' && !/^(\\d|,)+$/.test(data.recurrence_byMonth)) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: recurrence data (byMonth) misspelled');\n }\n return false;\n }\n if (data.recurrence_byMonthDay != null && data.recurrence_byMonthDay != '' && !/^(\\d|,)+$/.test(data.recurrence_byMonthDay)) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: recurrence data (byMonthDay) misspelled');\n }\n return false;\n }\n if (data.recurrence_byDay != null && data.recurrence_byDay != '' && !/^(\\d|-|MO|TU|WE|TH|FR|SA|SU|,)+$/im.test(data.recurrence_byDay)) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: recurrence data (byDay) misspelled');\n }\n return false;\n }\n if (data.recurrence_weekstart != null && data.recurrence_weekstart != '' && !/^(MO|TU|WE|TH|FR|SA|SU)$/im.test(data.recurrence_weekstart)) {\n if (data.debug) {\n console.error(msgPrefix + ' failed: recurrence data (weekstart) misspelled');\n }\n return false;\n }\n return true;\n}\n\n\nfunction atcb_toggle(host, action, data = '', button = null, keyboardTrigger = false, generatedButton = false) {\n if (action == 'open') {\n atcb_open(host, data, button, keyboardTrigger, generatedButton);\n } else if (action == 'close' || button.classList.contains('atcb-active') || host.querySelector('.atcb-active-modal')) {\n atcb_close(host, keyboardTrigger);\n } else {\n atcb_open(host, data, button, keyboardTrigger, generatedButton);\n }\n}\nfunction atcb_open(host, data, button = null, keyboardTrigger = false, generatedButton = false) {\n if (host.querySelector('.atcb-list') || host.querySelector('.atcb-modal')) return;\n atcb_log_event('openList', data.identifier, data.identifier);\n atcbStates['active'] = data.identifier;\n const list = atcb_generate_dropdown_list(host, data);\n const listWrapper = document.createElement('div');\n listWrapper.classList.add('atcb-list-wrapper');\n if (data.hideTextLabelList) {\n listWrapper.classList.add('atcb-no-text');\n }\n if (button) {\n button.classList.add('atcb-active');\n if (data.listStyle === 'modal') {\n button.classList.add('atcb-modal-style');\n list.classList.add('atcb-modal');\n } else {\n listWrapper.append(list);\n listWrapper.classList.add('atcb-dropdown');\n if (data.listStyle === 'overlay') {\n listWrapper.classList.add('atcb-dropoverlay');\n }\n }\n if (generatedButton) {\n list.classList.add('atcb-generated-button'); \n }\n } else {\n list.classList.add('atcb-modal');\n }\n if (data.listStyle === 'modal') {\n const bgOverlay = atcb_generate_bg_overlay(host, data.trigger, true, !data.hideBackground);\n const modalHost = atcb_generate_modal_host(host, data);\n modalHost.append(bgOverlay);\n bgOverlay.append(list);\n if (!data.hideBranding) {\n atcb_create_atcbl(modalHost, false);\n }\n atcb_set_sizes(list, data.sizes);\n atcb_manage_body_scroll(modalHost);\n atcb_set_fullsize(bgOverlay);\n } else {\n const bgOverlay = atcb_generate_bg_overlay(host, data.trigger, false, !data.hideBackground);\n host.querySelector('.atcb-initialized').append(listWrapper);\n listWrapper.append(list);\n if (data.buttonStyle != 'default') {\n listWrapper.classList.add('atcb-style-' + data.buttonStyle);\n }\n if (!data.hideBranding) {\n atcb_create_atcbl(host);\n }\n host.append(bgOverlay);\n atcb_set_sizes(list, data.sizes);\n listWrapper.style.display = 'none';\n setTimeout(function () {\n listWrapper.style.display = 'block';\n if (data.listStyle === 'dropdown-static') {\n atcb_position_list(host, button, listWrapper, true);\n } else {\n atcb_position_list(host, button, listWrapper);\n }\n }, 5);\n atcb_set_fullsize(bgOverlay);\n }\n const focusEl = (function () {\n const hostEl = host.querySelector('.atcb-list-item');\n if (hostEl) {\n return hostEl;\n }\n const modalHost = document.getElementById(data.identifier + '-modal-host');\n return modalHost?.shadowRoot?.querySelector('.atcb-list-item');\n })();\n if (focusEl) {\n if (keyboardTrigger) {\n focusEl.focus();\n } else {\n focusEl.focus({ preventScroll: true });\n focusEl.blur();\n }\n }\n}\nfunction atcb_close(host, keyboardTrigger = false) {\n const existingModalHost = document.getElementById(host.host.getAttribute('atcb-button-id') + '-modal-host');\n const allModals = existingModalHost?.shadowRoot?.querySelectorAll('.atcb-modal[data-modal-nr]');\n if (allModals?.length > 1) {\n existingModalHost.shadowRoot.querySelectorAll('.atcb-modal[data-modal-nr=\"' + allModals.length + '\"]')[0].remove();\n const nextModal = existingModalHost.shadowRoot.querySelectorAll('.atcb-modal[data-modal-nr=\"' + (allModals.length - 1) + '\"]')[0];\n nextModal.style.display = 'block';\n let focusEl = nextModal;\n const availableButtons = nextModal.getElementsByTagName('button');\n if (availableButtons.length > 0) {\n focusEl = availableButtons[0];\n }\n focusEl.focus();\n if (!keyboardTrigger) {\n focusEl.blur();\n }\n } else {\n const newFocusEl = (function () {\n const hostEl = host.querySelector('.atcb-active, .atcb-active-modal');\n if (hostEl) {\n return hostEl;\n }\n return document.querySelector('.atcb-active, .atcb-active-modal');\n })();\n if (newFocusEl) {\n newFocusEl.focus({ preventScroll: true });\n if (!keyboardTrigger) {\n newFocusEl.blur();\n }\n }\n Array.from(host.querySelectorAll('.atcb-active')).forEach((button) => {\n button.classList.remove('atcb-active');\n });\n Array.from(host.querySelectorAll('.atcb-active-modal')).forEach((modal) => {\n modal.classList.remove('atcb-active-modal');\n });\n Array.from(document.querySelectorAll('.atcb-active')).forEach((button) => {\n button.classList.remove('atcb-active');\n });\n Array.from(document.querySelectorAll('.atcb-active-modal')).forEach((modal) => {\n modal.classList.remove('atcb-active-modal');\n });\n existingModalHost?.remove();\n document.body.classList.remove('atcb-modal-no-scroll');\n document.documentElement.classList.remove('atcb-modal-no-scroll');\n Array.from(host.querySelectorAll('.atcb-list-wrapper'))\n .concat(Array.from(host.querySelectorAll('.atcb-list')))\n .concat(Array.from(host.querySelectorAll('#add-to-calendar-button-reference')))\n .concat(Array.from(host.querySelectorAll('#atcb-bgoverlay')))\n .forEach((el) => el.remove());\n atcbStates['active'] = '';\n }\n}\n\n\nfunction atcb_generate_label(host, data, parent, type, icon = false, text = '', oneOption = false) {\n switch (type) {\n case 'trigger':\n default:\n parent.id = data.identifier;\n if (!data.blockInteraction) {\n parent.addEventListener('keyup', function (event) {\n if (event.key == 'Enter') {\n event.preventDefault();\n atcb_toggle(host, 'auto', data, parent, true, true);\n }\n });\n parent.addEventListener(\n 'touchend',\n atcb_debounce_leading((event) => {\n event.preventDefault();\n atcb_toggle(host, 'auto', data, parent, false, true);\n })\n );\n if (data.trigger === 'click') {\n parent.addEventListener(\n 'mouseup',\n atcb_debounce_leading((event) => {\n event.preventDefault();\n atcb_toggle(host, 'auto', data, parent, false, true);\n })\n );\n } else {\n parent.addEventListener(\n 'mouseenter',\n atcb_debounce_leading((event) => {\n event.preventDefault();\n atcb_toggle(host, 'open', data, parent, false, true);\n })\n );\n }\n }\n break;\n case 'apple':\n case 'google':\n case 'ical':\n case 'msteams':\n case 'ms365':\n case 'outlookcom':\n case 'yahoo':\n parent.id = data.identifier + '-' + type;\n parent.addEventListener(\n 'click',\n atcb_debounce_leading(() => {\n if (oneOption) {\n host.querySelector('#' + parent.id).blur();\n atcb_log_event('openSingletonLink', parent.id, data.identifier);\n } else {\n atcb_toggle(host, 'close');\n atcb_log_event('openCalendarLink', parent.id, data.identifier);\n }\n atcb_generate_links(host, type, data);\n })\n );\n parent.addEventListener('keyup', function (event) {\n if (event.key == 'Enter') {\n event.preventDefault();\n if (oneOption) {\n host.querySelector('#' + parent.id).blur();\n atcb_log_event('openSingletonLink', parent.id, data.identifier);\n } else {\n atcb_toggle(host, 'close');\n atcb_log_event('openCalendarLink', parent.id, data.identifier);\n }\n atcb_generate_links(host, type, data, 'all', true);\n }\n });\n break;\n case 'close':\n parent.id = data.identifier + '-close';\n parent.addEventListener(\n 'click',\n atcb_debounce(() => {\n atcb_log_event('closeList', 'List Close Button', atcbStates['active']);\n atcb_toggle(host, 'close');\n })\n );\n parent.addEventListener('keyup', function (event) {\n if (event.key == 'Enter') {\n event.preventDefault();\n atcb_log_event('closeList', 'List Close Button', atcbStates['active']);\n atcb_toggle(host, 'close', data, 'all', true);\n }\n });\n break;\n }\n atcb_generate_label_content(data, parent, type, icon, text, oneOption);\n}\nfunction atcb_generate_label_content(data, parent, type, icon, text, oneOption) {\n const defaultTriggerText = atcb_translate_hook('label.addtocalendar', data);\n if (oneOption && text == '') {\n text = defaultTriggerText;\n }\n const labelText = {\n trigger: text || defaultTriggerText,\n apple: text || 'Apple',\n google: text || 'Google',\n ical: text || atcb_translate_hook('label.icalfile', data),\n msteams: text || 'Microsoft Teams',\n ms365: text || 'Microsoft 365',\n outlookcom: text || 'Outlook.com',\n yahoo: text || 'Yahoo',\n close: atcb_translate_hook('close', data),\n };\n text = labelText[`${type}`];\n if (data.buttonStyle == 'date' && (type == 'trigger' || oneOption)) {\n return;\n }\n if (icon) {\n const iconEl = document.createElement('span');\n iconEl.classList.add('atcb-icon');\n iconEl.innerHTML = atcbIcon[`${type}`];\n parent.append(iconEl);\n }\n if (((type == 'trigger' || oneOption) && !data.hideTextLabelButton) || (!oneOption && type != 'trigger' && !data.hideTextLabelList)) {\n const textEl = document.createElement('span');\n textEl.classList.add('atcb-text');\n textEl.textContent = text;\n parent.append(textEl);\n }\n parent.setAttribute('aria-label', text);\n}\nfunction atcb_generate_button(host, button, data, debug = false) {\n const oneOption = (function () {\n if (data.options.length === 1 || (data.buttonsList && data.buttonStyle != 'date')) {\n return true;\n }\n return false;\n })();\n const optionSplit = oneOption ? data.options : ['default'];\n optionSplit.forEach(function (option) {\n const buttonTriggerWrapper = document.createElement('div');\n buttonTriggerWrapper.classList.add('atcb-button-wrapper');\n if (data.rtl) {\n buttonTriggerWrapper.classList.add('atcb-rtl');\n }\n button.append(buttonTriggerWrapper);\n atcb_set_sizes(buttonTriggerWrapper, data.sizes);\n const buttonTrigger = document.createElement('button');\n buttonTrigger.classList.add('atcb-button');\n if (data.hideTextLabelButton) {\n buttonTrigger.classList.add('atcb-no-text');\n }\n if (data.trigger === 'click') {\n buttonTrigger.classList.add('atcb-click');\n }\n if (data.listStyle === 'overlay') {\n buttonTrigger.classList.add('atcb-dropoverlay');\n }\n buttonTrigger.type = 'button';\n buttonTriggerWrapper.append(buttonTrigger);\n if (data.buttonStyle == 'date') {\n atcb_generate_date_button(data, buttonTrigger);\n }\n if (oneOption) {\n buttonTrigger.classList.add('atcb-single');\n atcb_generate_label(host, data, buttonTrigger, option, !data.hideIconButton, data.label, true);\n buttonTrigger.id = data.identifier;\n if (data.buttonsList) {\n buttonTrigger.id = data.identifier + '-' + option;\n }\n } else {\n atcb_generate_label(host, data, buttonTrigger, 'trigger', !data.hideIconButton, data.label);\n const buttonDropdownAnchor = document.createElement('div');\n buttonDropdownAnchor.classList.add('atcb-dropdown-anchor');\n buttonTrigger.append(buttonDropdownAnchor);\n }\n if (!data.hideCheckmark && !data.hideTextLabelButton && !data.buttonsList) {\n const btnCheck = document.createElement('div');\n btnCheck.classList.add('atcb-checkmark');\n btnCheck.innerHTML = atcbIcon['checkmark'];\n buttonTrigger.append(btnCheck);\n }\n });\n if (debug) {\n console.log('Add to Calendar Button \"' + data.identifier + '\" created');\n }\n}\nfunction atcb_generate_dropdown_list(host, data) {\n const optionsList = document.createElement('div');\n optionsList.classList.add('atcb-list');\n optionsList.role = 'list';\n if (data.rtl) {\n optionsList.classList.add('atcb-rtl');\n }\n let listCount = 0;\n data.options.forEach(function (option) {\n const optionItem = document.createElement('div');\n optionItem.classList.add('atcb-list-item');\n optionItem.role = 'link';\n optionItem.tabIndex = 0;\n listCount++;\n optionItem.dataset.optionNumber = listCount;\n optionsList.append(optionItem);\n atcb_generate_label(host, data, optionItem, option, !data.hideIconList, data.optionLabels[listCount - 1]);\n });\n if (data.listStyle === 'modal') {\n const optionItem = document.createElement('div');\n optionItem.classList.add('atcb-list-item', 'atcb-list-item-close');\n optionItem.role = 'button';\n optionItem.tabIndex = 0;\n listCount++;\n optionItem.dataset.optionNumber = listCount;\n optionsList.append(optionItem);\n atcb_generate_label(host, data, optionItem, 'close', !data.hideIconList);\n }\n return optionsList;\n}\nfunction atcb_generate_bg_overlay(host, trigger = '', modal = false, darken = true) {\n const bgOverlay = (function () {\n if (modal) {\n return document.createElement('dialog');\n }\n return document.createElement('div');\n })();\n if (modal) {\n bgOverlay.setAttribute('open', true);\n }\n bgOverlay.id = 'atcb-bgoverlay';\n if (!darken) {\n bgOverlay.classList.add('atcb-no-bg');\n }\n bgOverlay.role = 'button';\n bgOverlay.tabIndex = 0;\n bgOverlay.addEventListener(\n 'mouseup',\n atcb_debounce_leading((e) => {\n if (e.target !== e.currentTarget) return;\n atcb_log_event('closeList', 'Background Hit', atcbStates['active']);\n atcb_toggle(host, 'close');\n })\n );\n let fingerMoved = false;\n bgOverlay.addEventListener(\n 'touchstart',\n atcb_debounce_leading(() => (fingerMoved = false)),\n { passive: true }\n );\n bgOverlay.addEventListener(\n 'touchmove',\n atcb_debounce_leading(() => (fingerMoved = true)),\n { passive: true }\n );\n bgOverlay.addEventListener(\n 'touchend',\n atcb_debounce((e) => {\n if (fingerMoved !== false || e.target !== e.currentTarget) return;\n atcb_log_event('closeList', 'Background Hit', atcbStates['active']);\n atcb_toggle(host, 'close');\n }),\n { passive: true }\n );\n if (trigger !== 'click') {\n bgOverlay.addEventListener(\n 'mousemove',\n atcb_debounce_leading((e) => {\n if (e.target !== e.currentTarget) return;\n atcb_log_event('closeList', 'Background Hit', atcbStates['active']);\n atcb_toggle(host, 'close');\n })\n );\n } else {\n bgOverlay.classList.add('atcb-click');\n }\n return bgOverlay;\n}\nfunction atcb_create_atcbl(host, atList = true) {\n const atcbL = document.createElement('div');\n atcbL.id = 'add-to-calendar-button-reference';\n atcbL.style.cssText = 'width: 130px; padding: 5px; height: auto; opacity: .8; transform: translate3d(0, 0, 0); z-index: 15000000;';\n setTimeout(() => {\n atcbL.innerHTML = '' + atcbIcon['atcb'] + '';\n }, 500);\n if (atList) {\n host.querySelector('.atcb-initialized .atcb-list-wrapper').append(atcbL);\n } else {\n if (window.innerHeight > 1000 || window.innerWidth > 1000) {\n host.append(atcbL);\n atcbL.style.cssText += 'position: fixed; bottom: 15px; right: 30px;';\n }\n }\n}\nfunction atcb_create_modal(host, data, icon = '', headline, content = '', buttons = [], subEvents = [], keyboardTrigger = false) {\n atcbStates['active'] = data.identifier;\n const modalHost = atcb_generate_modal_host(host, data, false);\n const bgOverlay = (function () {\n const el = modalHost.getElementById('atcb-bgoverlay');\n if (!el) {\n const newOverlay = atcb_generate_bg_overlay(host, 'click', true, !data.hideBackground);\n modalHost.append(newOverlay);\n return newOverlay;\n }\n return el;\n })();\n const modalWrapper = document.createElement('div');\n modalWrapper.classList.add('atcb-modal');\n bgOverlay.append(modalWrapper);\n const modalCount = modalHost.querySelectorAll('.atcb-modal').length;\n modalWrapper.dataset.modalNr = modalCount;\n modalWrapper.tabIndex = 0;\n modalWrapper.focus({ preventScroll: true });\n modalWrapper.blur();\n const parentButton = (function () {\n const hostEl = host.getElementById(data.identifier);\n if (hostEl) {\n return hostEl;\n }\n return document.getElementById(data.identifier);\n })();\n if (parentButton) {\n parentButton.classList.add('atcb-active-modal');\n }\n const modal = document.createElement('div');\n modal.classList.add('atcb-modal-box');\n if (data.rtl) {\n modal.classList.add('atcb-rtl');\n }\n modalWrapper.append(modal);\n atcb_set_sizes(modal, data.sizes);\n atcb_set_fullsize(bgOverlay);\n if (icon != '' && !data.hideIconModal) {\n const modalIcon = document.createElement('div');\n modalIcon.classList.add('atcb-modal-icon');\n modalIcon.innerHTML = atcbIcon[`${icon}`];\n modal.append(modalIcon);\n }\n const modalHeadline = document.createElement('div');\n modalHeadline.classList.add('atcb-modal-headline');\n modalHeadline.textContent = headline;\n modal.append(modalHeadline);\n if (content != '') {\n const modalContent = document.createElement('div');\n modalContent.classList.add('atcb-modal-content');\n modalContent.innerHTML = content;\n modal.append(modalContent);\n }\n if (subEvents.length > 1) {\n if (!data.hideBranding) {\n atcb_create_atcbl(modalHost, false);\n }\n const modalsubEventsContent = document.createElement('div');\n modalsubEventsContent.classList.add('atcb-modal-content');\n modal.append(modalsubEventsContent);\n for (let i = 1; i < subEvents.length; i++) {\n const modalSubEventButton = document.createElement('button');\n modalSubEventButton.type = 'button';\n modalSubEventButton.id = data.identifier + '-' + subEvents[0] + '-' + i;\n if (atcbStates[`${data.identifier}`][`${subEvents[0]}`][i - 1] > 0) {\n modalSubEventButton.classList.add('atcb-saved');\n }\n modalSubEventButton.classList.add('atcb-subevent-btn');\n modalsubEventsContent.append(modalSubEventButton);\n atcb_generate_date_button(data, modalSubEventButton, i);\n if (i == 1 && keyboardTrigger) {\n modalSubEventButton.focus();\n }\n modalSubEventButton.addEventListener(\n 'click',\n atcb_debounce(() => {\n atcb_log_event('openSubEventLink', modalSubEventButton.id, data.identifier);\n atcb_generate_links(host, subEvents[0], data, subEvents[`${i}`], keyboardTrigger, true);\n })\n );\n }\n }\n if (buttons.length == 0) {\n buttons.push({ type: 'close', label: atcb_translate_hook('close', data) });\n }\n const modalButtons = document.createElement('div');\n modalButtons.classList.add('atcb-modal-buttons');\n modal.append(modalButtons);\n buttons.forEach((button, index) => {\n let modalButton;\n if (button.href != null && button.href != '') {\n modalButton = document.createElement('a');\n modalButton.setAttribute('target', atcbDefaultTarget);\n modalButton.setAttribute('href', button.href);\n modalButton.setAttribute('rel', 'noopener');\n } else {\n modalButton = document.createElement('button');\n modalButton.type = 'button';\n }\n modalButton.classList.add('atcb-modal-btn');\n if (button.primary) {\n modalButton.classList.add('atcb-modal-btn-primary');\n }\n if (button.label == null || button.label == '') {\n button.label = atcb_translate_hook('modal.button.default', data);\n }\n modalButton.textContent = button.label;\n modalButtons.append(modalButton);\n if (index == 0 && subEvents.length < 2 && keyboardTrigger) {\n modalButton.focus();\n }\n switch (button.type) {\n default:\n case 'close':\n modalButton.addEventListener(\n 'click',\n atcb_debounce(() => {\n atcb_log_event('closeList', 'Modal Close Button', atcbStates['active']);\n atcb_close(host);\n })\n );\n modalButton.addEventListener('keyup', function (event) {\n if (event.key == 'Enter') {\n atcb_log_event('closeList', 'Modal Close Button', atcbStates['active']);\n atcb_toggle(host, 'close', '', '', true);\n }\n });\n break;\n case 'yahoo2nd':\n modalButton.addEventListener(\n 'click',\n atcb_debounce(() => {\n atcb_close(host);\n atcb_subscribe_yahoo_modal_switch(host, data);\n })\n );\n modalButton.addEventListener('keyup', function (event) {\n if (event.key == 'Enter') {\n atcb_toggle(host, 'close', '', '', true);\n atcb_subscribe_yahoo_modal_switch(host, data, keyboardTrigger);\n }\n });\n break;\n case 'none':\n break;\n }\n });\n if (modalCount > 1) {\n const prevModal = modalHost.querySelector('.atcb-modal[data-modal-nr=\"' + (modalCount - 1) + '\"]');\n prevModal.style.display = 'none';\n }\n atcb_manage_body_scroll(modalHost, modalWrapper);\n}\nfunction atcb_subscribe_yahoo_modal_switch(host, data, keyboardTrigger) {\n atcb_set_fully_successful(host, data);\n atcb_generate_links(host, 'yahoo2nd', data, 'all', keyboardTrigger);\n}\nfunction atcb_generate_date_button(data, parent, subEvent = 'all') {\n if (subEvent != 'all') {\n subEvent = parseInt(subEvent) - 1;\n } else if (data.dates.length == 1) {\n subEvent = 0;\n }\n const fullTimeInfo = (function () {\n let startDateInfo, endDateInfo, timeZoneInfoStart, timeZoneInfoEnd;\n let formattedTimeStart = {};\n let formattedTimeEnd = {};\n if (subEvent == 'all') {\n formattedTimeStart = atcb_generate_time(data.dates[0]);\n formattedTimeEnd = atcb_generate_time(data.dates[data.dates.length - 1]);\n timeZoneInfoStart = data.dates[0].timeZone;\n timeZoneInfoEnd = data.dates[data.dates.length - 1].timeZone;\n } else {\n formattedTimeStart = atcb_generate_time(data.dates[`${subEvent}`]);\n formattedTimeEnd = formattedTimeStart;\n timeZoneInfoStart = data.dates[`${subEvent}`].timeZone;\n timeZoneInfoEnd = timeZoneInfoStart;\n }\n startDateInfo = new Date(formattedTimeStart.start);\n endDateInfo = new Date(formattedTimeEnd.end);\n if (timeZoneInfoStart == undefined || timeZoneInfoStart == '' || formattedTimeStart.allday) {\n timeZoneInfoStart = 'UTC';\n }\n if (timeZoneInfoEnd == undefined || timeZoneInfoEnd == '' || formattedTimeEnd.allday) {\n timeZoneInfoEnd = 'UTC';\n }\n let timeString = '';\n let timeZoneInfoStringStart = '';\n let timeZoneInfoStringEnd = '';\n if (!formattedTimeStart.allday && Intl.DateTimeFormat().resolvedOptions().timeZone != timeZoneInfoStart && timeZoneInfoStart != timeZoneInfoEnd) {\n timeZoneInfoStringStart = ' (' + timeZoneInfoStart + ')';\n }\n if ((!formattedTimeEnd.allday && Intl.DateTimeFormat().resolvedOptions().timeZone != timeZoneInfoEnd) || timeZoneInfoStart != timeZoneInfoEnd) {\n timeZoneInfoStringEnd = ' (' + timeZoneInfoEnd + ')';\n }\n const formatOptionsStart = get_format_options(timeZoneInfoStart);\n const formatOptionsEnd = get_format_options(timeZoneInfoEnd);\n if (startDateInfo.toLocaleDateString(data.language, formatOptionsEnd.DateLong) === endDateInfo.toLocaleDateString(data.language, formatOptionsEnd.DateLong)) {\n if (formattedTimeStart.allday) {\n timeString = startDateInfo.toLocaleDateString(data.language, formatOptionsStart.DateShort);\n } else {\n timeString = startDateInfo.toLocaleString(data.language, formatOptionsStart.DateTimeShort) + timeZoneInfoStringStart + ' - ' + endDateInfo.toLocaleTimeString(data.language, formatOptionsEnd.Time) + timeZoneInfoStringEnd;\n }\n } else {\n if (formattedTimeStart.allday) {\n timeString = startDateInfo.toLocaleDateString(data.language, formatOptionsStart.DateShort);\n } else {\n timeString = startDateInfo.toLocaleString(data.language, formatOptionsStart.DateTimeShort);\n }\n timeString += timeZoneInfoStringStart + ' - ';\n if (formattedTimeEnd.allday) {\n timeString += endDateInfo.toLocaleDateString(data.language, formatOptionsEnd.DateLong);\n } else {\n timeString += endDateInfo.toLocaleString(data.language, formatOptionsEnd.DateTimeLong);\n }\n timeString += timeZoneInfoStringEnd;\n }\n return timeString;\n })();\n const hoverText = (function () {\n if (subEvent != 'all' && data.dates[`${subEvent}`].status == 'CANCELLED') {\n return atcb_translate_hook('date.status.cancelled', data) + '
' + atcb_translate_hook('date.status.cancelled.cta', data);\n }\n return '+ ' + atcb_translate_hook('label.addtocalendar', data);\n })();\n const cancelledInfo = (function () {\n if (subEvent != 'all' && data.dates[`${subEvent}`].status == 'CANCELLED') {\n return atcb_translate_hook('date.status.cancelled', data);\n }\n return '';\n })();\n if (subEvent == 'all') {\n subEvent = 0;\n }\n const startDate = new Date(atcb_generate_time(data.dates[`${subEvent}`]).start);\n const timeZone = (function () {\n if (data.dates[`${subEvent}`].timeZone != null && data.dates[`${subEvent}`].timeZone != '') {\n return data.dates[`${subEvent}`].timeZone;\n } else {\n return 'UTC';\n }\n })();\n const btnLeft = document.createElement('div');\n btnLeft.classList.add('atcb-date-btn-left');\n parent.append(btnLeft);\n const btnDay = document.createElement('div');\n btnDay.classList.add('atcb-date-btn-day');\n btnLeft.append(btnDay);\n const btnMonth = document.createElement('div');\n btnMonth.classList.add('atcb-date-btn-month');\n btnDay.textContent = startDate.toLocaleString(data.language, {\n day: 'numeric',\n timeZone: timeZone,\n });\n btnMonth.textContent = startDate.toLocaleString(data.language, {\n month: 'short',\n timeZone: timeZone,\n });\n btnLeft.append(btnMonth);\n const btnRight = document.createElement('div');\n btnRight.classList.add('atcb-date-btn-right');\n parent.append(btnRight);\n const btnDetails = document.createElement('div');\n btnDetails.classList.add('atcb-date-btn-details');\n btnRight.append(btnDetails);\n const btnHeadline = document.createElement('div');\n btnHeadline.classList.add('atcb-date-btn-headline');\n btnHeadline.textContent = data.dates[`${subEvent}`].name;\n btnDetails.append(btnHeadline);\n if ((data.location != null && data.location != '') || cancelledInfo != '') {\n const btnLocation = document.createElement('div');\n btnLocation.classList.add('atcb-date-btn-content');\n btnDetails.append(btnLocation);\n if (cancelledInfo != '') {\n btnLocation.textContent = cancelledInfo;\n btnLocation.style.fontWeight = '600';\n btnLocation.style.color = '#9c1a23';\n } else {\n btnLocation.classList.add('atcb-date-btn-content-location');\n const btnLocationIcon = document.createElement('span');\n btnLocationIcon.classList.add('atcb-date-btn-content-icon');\n btnLocationIcon.innerHTML = atcbIcon['location'];\n btnLocation.append(btnLocationIcon);\n const btnLocationText = document.createElement('span');\n btnLocationText.textContent = data.location;\n btnLocation.append(btnLocationText);\n }\n } else {\n btnHeadline.style.cssText = '-webkit-line-clamp: 2';\n }\n const btnDateTime = document.createElement('div');\n btnDateTime.classList.add('atcb-date-btn-content');\n btnDetails.append(btnDateTime);\n const btnDateTimeIcon = document.createElement('span');\n btnDateTimeIcon.classList.add('atcb-date-btn-content-icon');\n btnDateTimeIcon.innerHTML = atcbIcon['ical'];\n btnDateTime.append(btnDateTimeIcon);\n const btnDateTimeText = document.createElement('span');\n btnDateTimeText.textContent = fullTimeInfo;\n btnDateTime.append(btnDateTimeText);\n if (data.recurrence != null && data.recurrence != '') {\n const recurSign = document.createElement('span');\n recurSign.classList.add('atcb-date-btn-content-recurr-icon');\n btnDateTime.append(recurSign);\n recurSign.innerHTML = '⟳';\n }\n const btnHover = document.createElement('div');\n btnHover.classList.add('atcb-date-btn-hover');\n btnHover.innerHTML = hoverText;\n btnRight.append(btnHover);\n if (!data.hideCheckmark) {\n const btnCheck = document.createElement('div');\n btnCheck.classList.add('atcb-checkmark');\n btnCheck.innerHTML = atcbIcon['checkmark'];\n parent.append(btnCheck);\n }\n}\nfunction get_format_options(timeZoneInfo) {\n return {\n DateShort: {\n timeZone: timeZoneInfo,\n year: 'numeric',\n },\n DateLong: {\n timeZone: timeZoneInfo,\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n },\n DateTimeShort: {\n timeZone: timeZoneInfo,\n year: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n hourCycle: 'h23',\n },\n DateTimeLong: {\n timeZone: timeZoneInfo,\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n hourCycle: 'h23',\n },\n Time: {\n timeZone: timeZoneInfo,\n hour: 'numeric',\n minute: '2-digit',\n hourCycle: 'h23',\n },\n };\n}\nfunction atcb_generate_modal_host(host, data, reset = true) {\n const existingModalHost = document.getElementById(data.identifier + '-modal-host');\n if (!reset && existingModalHost) {\n return existingModalHost.shadowRoot;\n }\n existingModalHost?.remove();\n let newModalHost = document.createElement('div');\n newModalHost.id = data.identifier + '-modal-host';\n if (host.host?.hasAttribute('styleLight')) {\n newModalHost.setAttribute('styleLight', host.host.getAttribute('styleLight'));\n }\n if (host.host?.hasAttribute('styleDark')) {\n newModalHost.setAttribute('styleDark', host.host.getAttribute('styleDark'));\n }\n newModalHost.setAttribute('atcb-button-id', data.identifier);\n document.body.append(newModalHost);\n newModalHost.attachShadow({ mode: 'open', delegateFocus: true });\n const elem = document.createElement('template');\n elem.innerHTML = '
';\n newModalHost.shadowRoot.append(elem.content.cloneNode(true));\n atcb_set_light_mode(newModalHost.shadowRoot, data);\n atcb_load_css(newModalHost.shadowRoot, null, data.buttonStyle, false, false, data.customCss);\n return newModalHost.shadowRoot;\n}\n\n\nfunction atcb_generate_rich_data(data, parent) {\n const schemaEl = document.createElement('script');\n schemaEl.type = 'application/ld+json';\n const schemaContentMulti = [];\n if (data.dates.length > 1) {\n const parts = [];\n parts.push('\"@context\":\"https://schema.org\"');\n parts.push('\"@type\":\"EventSeries\"');\n parts.push('\"@id\":\"' + data.name.replace(/\\s/g, '') + '\"');\n parts.push('\"name\":\"' + data.name + '\",');\n schemaContentMulti.push('{\\r\\n' + parts.join(',\\r\\n') + '\\r\\n');\n }\n const schemaContentFull = [];\n for (let i = 0; i < data.dates.length; i++) {\n const schemaContent = [];\n schemaContent.push('\"@context\":\"https://schema.org\"');\n schemaContent.push('\"@type\":\"Event\"');\n if (data.dates.length > 1) {\n schemaContent.push('\"@id\":\"' + data.name.replace(/\\s/g, '') + '-' + (i + 1) + '\"');\n }\n if (data.dates[`${i}`].status == 'CANCELLED') {\n schemaContent.push('\"eventStatus\":\"https://schema.org/EventCancelled\"');\n }\n schemaContent.push('\"name\":\"' + data.dates[`${i}`].name + '\"');\n if (data.dates[`${i}`].descriptionHtmlFree) {\n schemaContent.push('\"description\":\"' + data.dates[`${i}`].descriptionHtmlFree + '\"');\n }\n const formattedDate = atcb_generate_time(data.dates[`${i}`], 'delimiters', 'general', true);\n schemaContent.push('\"startDate\":\"' + formattedDate.start + '\"');\n if (formattedDate.duration != null) {\n schemaContent.push('\"duration\":\"' + formattedDate.duration + '\"');\n }\n schemaContent.push(data.dates[`${i}`].location.startsWith('http') ? '\"eventAttendanceMode\":\"https://schema.org/OnlineEventAttendanceMode\",\\r\\n\"location\": {\\r\\n\"@type\":\"VirtualLocation\",\\r\\n\"url\":\"' + data.dates[`${i}`].location + '\"\\r\\n}' : '\"location\":\"' + data.dates[`${i}`].location + '\"');\n if (data.recurrence != null && data.recurrence != '') {\n schemaContent.push(...atcb_generate_rich_data_recurrence(data, formattedDate));\n } else {\n schemaContent.push('\"endDate\":\"' + formattedDate.end + '\"');\n }\n if (data.dates[`${i}`].organizer != null && data.dates[`${i}`].organizer != '') {\n const organizerParts = data.dates[`${i}`].organizer.split('|');\n schemaContent.push('\"organizer\":{\\r\\n\"@type\":\"Person\",\\r\\n\"name\":\"' + organizerParts[0] + '\",\\r\\n\"email\":\"' + organizerParts[1] + '\"\\r\\n}');\n }\n const imageData = [];\n if (data.images != null) {\n if (Array.isArray(data.images)) {\n for (let i = 0; i < data.images.length; i++) {\n if (atcb_secure_url(data.images[`${i}`], data.debug) && data.images[`${i}`].startsWith('http')) {\n imageData.push('\"' + data.images[`${i}`] + '\"');\n }\n }\n }\n } else {\n imageData.push('\"https://add-to-calendar-button.com/demo_assets/img/1x1.png\"');\n imageData.push('\"https://add-to-calendar-button.com/demo_assets/img/4x3.png\"');\n imageData.push('\"https://add-to-calendar-button.com/demo_assets/img/16x9.png\"');\n }\n if (imageData.length > 0) {\n schemaContent.push('\"image\":[\\r\\n' + imageData.join(',\\r\\n') + ']');\n }\n schemaContentFull.push('{\\r\\n' + schemaContent.join(',\\r\\n') + '\\r\\n}');\n }\n if (data.dates.length > 1) {\n schemaEl.textContent = schemaContentMulti.join(',\\r\\n') + '\"subEvents\":[\\r\\n' + schemaContentFull.join(',\\r\\n') + '\\r\\n]\\r\\n}';\n } else {\n schemaEl.textContent = schemaContentFull[0];\n }\n parent.parentNode.insertBefore(schemaEl, parent);\n}\nfunction atcb_generate_rich_data_recurrence(data, formattedDate) {\n const schemaRecurrenceContent = [];\n schemaRecurrenceContent.push('\"eventSchedule\": { \"@type\": \"Schedule\"');\n if (data.dates[0].timeZone != null && data.dates[0].timeZone != '') {\n schemaRecurrenceContent.push('\"scheduleTimezone\":\"' + data.dates[0].timeZone + '\"');\n }\n const repeatFrequency = 'P' + data.recurrence_interval + data.recurrence_frequency.substr(0, 1);\n schemaRecurrenceContent.push('\"repeatFrequency\":\"' + repeatFrequency + '\"');\n if (data.recurrence_byDay != null && data.recurrence_byDay != '') {\n const byDayString = (function () {\n if (/\\d/.test(data.recurrence_byDay)) {\n return '\"' + data.recurrence_byDay + '\"';\n } else {\n const byDays = data.recurrence_byDay.split(',');\n const helperMap = {\n MO: 'https://schema.org/Monday',\n TU: 'https://schema.org/Tuesday',\n WE: 'https://schema.org/Wednesday',\n TH: 'https://schema.org/Thursday',\n FR: 'https://schema.org/Friday',\n SA: 'https://schema.org/Saturday',\n SU: 'https://schema.org/Sunday',\n };\n const output = [];\n for (let i = 0; i < byDays.length; i++) {\n output.push('\"' + helperMap[byDays[`${i}`]] + '\"');\n }\n return '[' + output.join(',') + ']';\n }\n })();\n schemaRecurrenceContent.push('\"byDay\":' + byDayString);\n }\n if (data.recurrence_byMonth != null && data.recurrence_byMonth != '') {\n const byMonthString = data.recurrence_byMonth.includes(',') ? '[' + data.recurrence_byMonth + ']' : data.recurrence_byMonth;\n schemaRecurrenceContent.push('\"byMonth\":\"' + byMonthString + '\"');\n }\n if (data.recurrence_byMonthDay != null && data.recurrence_byMonthDay != '') {\n const byMonthDayString = data.recurrence_byMonthDay.includes(',') ? '[' + data.recurrence_byMonthDay + ']' : data.recurrence_byMonthDay;\n schemaRecurrenceContent.push('\"byMonthDay\":\"' + byMonthDayString + '\"');\n }\n if (data.recurrence_count != null && data.recurrence_count != '') {\n schemaRecurrenceContent.push('\"repeatCount\":\"' + data.recurrence_count + '\"');\n }\n if (data.recurrence_until != null && data.recurrence_until != '') {\n schemaRecurrenceContent.push('\"endDate\":\"' + data.recurrence_until + '\"');\n }\n if (data.startTime != null && data.startTime != '' && data.endTime != null && data.endTime != '') {\n schemaRecurrenceContent.push('\"startTime\":\"' + data.startTime + ':00\"');\n schemaRecurrenceContent.push('\"endTime\":\"' + data.endTime + ':00\"');\n schemaRecurrenceContent.push('\"duration\":\"' + formattedDate.duration + '\"');\n }\n schemaRecurrenceContent.push('\"startDate\":\"' + data.startDate + '\" }');\n return schemaRecurrenceContent;\n}\n\n\nfunction atcb_generate_links(host, type, data, subEvent = 'all', keyboardTrigger = false, multiDateModal = false) {\n if (subEvent != 'all') {\n subEvent = parseInt(subEvent) - 1;\n } else if (data.dates.length == 1) {\n subEvent = 0;\n }\n if (data.subscribe) {\n atcb_generate_subscribe_links(host, type, data, keyboardTrigger);\n return;\n }\n if (isMobile() && (type == 'msteams' || type == 'ms365' || type == 'outlookcom')) {\n type = 'ical';\n }\n if (subEvent != 'all') {\n if (data.dates[`${subEvent}`].status == 'CANCELLED' && type != 'apple' && type != 'ical') {\n atcb_create_modal(host, data, 'warning', atcb_translate_hook('date.status.cancelled', data), atcb_translate_hook('date.status.cancelled.cta', data), [], [], keyboardTrigger);\n } else {\n switch (type) {\n case 'apple':\n case 'ical':\n atcb_generate_ical(host, data, subEvent, keyboardTrigger);\n break;\n case 'google':\n atcb_generate_google(data.dates[`${subEvent}`]);\n break;\n case 'msteams':\n atcb_generate_msteams(data.dates[`${subEvent}`]);\n break;\n case 'ms365':\n atcb_generate_microsoft(data.dates[`${subEvent}`]);\n break;\n case 'outlookcom':\n atcb_generate_microsoft(data.dates[`${subEvent}`], 'outlook');\n break;\n case 'yahoo':\n atcb_generate_yahoo(data.dates[`${subEvent}`]);\n break;\n }\n }\n const modalHost = document.getElementById(data.identifier + '-modal-host');\n if (modalHost) {\n const subEventButton = modalHost.shadowRoot.getElementById(data.identifier + '-' + type + '-' + (subEvent + 1));\n if (subEventButton) {\n subEventButton.classList.add('atcb-saved');\n }\n }\n atcbStates[`${data.identifier}`][`${type}`][`${subEvent}`]++;\n const filteredStates = atcbStates[`${data.identifier}`][`${type}`].filter(function (value) {\n return value < 1;\n });\n if (filteredStates.length == 0) {\n atcb_set_fully_successful(host, data, multiDateModal);\n }\n return;\n }\n atcb_generate_multidate_links(host, type, data, keyboardTrigger, multiDateModal);\n}\nfunction atcb_generate_multidate_links(host, type, data, keyboardTrigger, multiDateModal) {\n if (\n (type == 'ical' || type == 'apple') &&\n data.dates.every(function (theSubEvent) {\n if (theSubEvent.status == 'CANCELLED' || (theSubEvent.organizer != null && theSubEvent.organizer != '')) {\n return false;\n }\n return true;\n })\n ) {\n atcb_generate_ical(host, data, 'all', keyboardTrigger);\n for (let i = 0; i < atcbStates[`${data.identifier}`][`${type}`].length; i++) {\n atcbStates[`${data.identifier}`][`${type}`][`${i}`]++;\n }\n atcb_set_fully_successful(host, data, multiDateModal);\n return;\n }\n if (!multiDateModal) {\n const individualButtons = [type];\n for (let i = 0; i < data.dates.length; i++) {\n individualButtons.push(i + 1);\n }\n atcb_create_modal(host, data, type, atcb_translate_hook('modal.multidate.h', data), atcb_translate_hook('modal.multidate.text', data), [], individualButtons, keyboardTrigger);\n }\n}\nfunction atcb_generate_subscribe_links(host, type, data, keyboardTrigger) {\n const adjustedFileUrl = data.icsFile.replace('https://', 'webcal://');\n switch (type) {\n case 'apple':\n case 'ical':\n atcb_subscribe_ical(adjustedFileUrl);\n break;\n case 'google':\n atcb_subscribe_google(adjustedFileUrl);\n break;\n case 'ms365':\n atcb_subscribe_microsoft(adjustedFileUrl, data.name);\n break;\n case 'outlookcom':\n atcb_subscribe_microsoft(adjustedFileUrl, data.name, 'outlook');\n break;\n case 'yahoo':\n atcb_copy_to_clipboard(data.icsFile);\n atcb_create_modal(\n host,\n data,\n 'yahoo',\n atcb_translate_hook('modal.subscribe.yahoo.h', data),\n atcb_translate_hook('modal.clipboard.text', data) + '
' + atcb_translate_hook('modal.subscribe.yahoo.text', data),\n [\n {\n label: atcb_translate_hook('Open Yahoo Calendar', data),\n primary: true,\n type: 'yahoo2nd',\n href: 'https://www.yahoo.com/calendar',\n },\n { label: atcb_translate_hook('cancel', data) },\n ],\n [],\n keyboardTrigger\n );\n return;\n case 'yahoo2nd':\n atcb_copy_to_clipboard(data.icsFile);\n atcb_create_modal(\n host,\n data,\n 'yahoo',\n atcb_translate_hook('modal.subscribe.yahoo.h', data),\n atcb_translate_hook('modal.clipboard.text', data) + '
' + atcb_translate_hook('modal.subscribe.yahoo.text', data),\n [\n {\n label: atcb_translate_hook('Open Yahoo Calendar', data),\n type: 'none',\n href: 'https://www.yahoo.com/calendar',\n },\n { label: atcb_translate_hook('cancel', data) },\n ],\n [],\n keyboardTrigger\n );\n return;\n }\n atcb_set_fully_successful(host, data);\n}\nfunction atcb_set_fully_successful(host, data, multiDateModal = false) {\n const trigger = host.getElementById(data.identifier);\n if (trigger) {\n trigger.classList.add('atcb-saved');\n }\n atcb_saved_hook(host, data);\n if (multiDateModal && host.querySelectorAll('.atcb-modal[data-modal-nr]').length < 2) {\n atcb_toggle(host, 'close');\n }\n}\nfunction atcb_subscribe_ical(fileUrl) {\n atcb_open_cal_url(fileUrl);\n}\nfunction atcb_subscribe_google(fileUrl) {\n const baseUrl = 'https://calendar.google.com/calendar/r?cid=';\n const newFileUrl = (function () {\n if (fileUrl.startsWith('https://calendar.google.com/') || fileUrl.startsWith('webcal://calendar.google.com/') || fileUrl.startsWith('http://calendar.google.com/') || fileUrl.startsWith('//calendar.google.com/')) {\n return fileUrl.replace(/^(.)*\\?cid=/, '');\n }\n return encodeURIComponent(fileUrl);\n })();\n atcb_open_cal_url(baseUrl + newFileUrl);\n}\nfunction atcb_subscribe_microsoft(fileUrl, calName, type = '365') {\n const urlParts = [];\n const baseUrl = (function () {\n if (type == 'outlook') {\n return 'https://outlook.live.com/calendar/0/addfromweb/?';\n } else {\n return 'https://outlook.office.com/calendar/0/addfromweb/?';\n }\n })();\n urlParts.push('url=' + encodeURIComponent(fileUrl));\n urlParts.push('name=' + encodeURIComponent(calName));\n atcb_open_cal_url(baseUrl + urlParts.join('&'));\n}\nfunction atcb_generate_google(data) {\n const urlParts = [];\n urlParts.push('https://calendar.google.com/calendar/render?action=TEMPLATE');\n const formattedDate = atcb_generate_time(data, 'clean', 'google');\n urlParts.push('dates=' + encodeURIComponent(formattedDate.start) + '%2F' + encodeURIComponent(formattedDate.end));\n if (data.timeZone != null && data.timeZone != '' && !/(GMT[+|-]\\d{1,2}|Etc\\/U|Etc\\/Zulu|CET|CST6CDT|EET|EST|EST5EDT|MET|MST|MST7MDT|PST8PDT|WET)/i.test(data.timeZone)) {\n urlParts.push('ctz=' + data.timeZone);\n }\n if (data.name != null && data.name != '') {\n urlParts.push('text=' + encodeURIComponent(data.name));\n }\n const tmpDataDescription = [];\n if (data.description != null && data.description != '') {\n tmpDataDescription.push(data.description);\n }\n if (data.location != null && data.location != '') {\n urlParts.push('location=' + encodeURIComponent(data.location));\n if (isiOS()) {\n if (tmpDataDescription.length > 0) {\n tmpDataDescription.push('

');\n }\n tmpDataDescription.push('📍: ' + data.location);\n }\n }\n if (tmpDataDescription.length > 0) {\n urlParts.push('details=' + encodeURIComponent(tmpDataDescription.join()));\n }\n if (data.recurrence != null && data.recurrence != '') {\n urlParts.push('recur=' + encodeURIComponent(data.recurrence));\n }\n if (data.availability != null && data.availability != '') {\n const availabilityPart = (function () {\n if (data.availability == 'free') {\n return 'crm=AVAILABLE&trp=false';\n }\n return 'crm=BUSY&trp=true';\n })();\n urlParts.push(availabilityPart);\n }\n urlParts.push('uid=' + encodeURIComponent(data.uid));\n atcb_open_cal_url(urlParts.join('&'));\n}\nfunction atcb_generate_yahoo(data) {\n const urlParts = [];\n urlParts.push('https://calendar.yahoo.com/?v=60');\n const formattedDate = atcb_generate_time(data, 'clean');\n urlParts.push('st=' + encodeURIComponent(formattedDate.start) + '&et=' + encodeURIComponent(formattedDate.end));\n if (formattedDate.allday) {\n urlParts.push('dur=allday');\n }\n if (data.name != null && data.name != '') {\n urlParts.push('title=' + encodeURIComponent(data.name));\n }\n if (data.location != null && data.location != '') {\n urlParts.push('in_loc=' + encodeURIComponent(data.location));\n }\n if (data.descriptionHtmlFree != null && data.descriptionHtmlFree != '') {\n urlParts.push('desc=' + encodeURIComponent(data.descriptionHtmlFree));\n }\n atcb_open_cal_url(urlParts.join('&'));\n}\nfunction atcb_generate_microsoft(data, type = '365') {\n const urlParts = [];\n const basePath = '/calendar/0/deeplink/compose?path=%2Fcalendar%2Faction%2Fcompose&rru=addevent';\n const baseUrl = (function () {\n if (type == 'outlook') {\n return 'https://outlook.live.com' + basePath;\n } else {\n return 'https://outlook.office.com' + basePath;\n }\n })();\n urlParts.push(baseUrl);\n const formattedDate = atcb_generate_time(data, 'delimiters', 'microsoft');\n urlParts.push('startdt=' + encodeURIComponent(formattedDate.start));\n urlParts.push('enddt=' + encodeURIComponent(formattedDate.end));\n if (formattedDate.allday) {\n urlParts.push('allday=true');\n }\n if (data.name != null && data.name != '') {\n urlParts.push('subject=' + encodeURIComponent(data.name));\n }\n if (data.location != null && data.location != '') {\n urlParts.push('location=' + encodeURIComponent(data.location));\n }\n if (data.description != null && data.description != '') {\n urlParts.push('body=' + encodeURIComponent(data.description.replace(/\\n/g, '
')));\n }\n urlParts.push('uid=' + encodeURIComponent(data.uid));\n atcb_open_cal_url(urlParts.join('&'));\n}\nfunction atcb_generate_msteams(data) {\n const urlParts = [];\n const baseUrl = 'https://teams.microsoft.com/l/meeting/new?';\n const formattedDate = atcb_generate_time(data, 'delimiters', 'microsoft');\n urlParts.push('startTime=' + encodeURIComponent(formattedDate.start));\n urlParts.push('endTime=' + encodeURIComponent(formattedDate.end));\n if (data.name != null && data.name != '') {\n urlParts.push('subject=' + encodeURIComponent(data.name));\n }\n let locationString = '';\n if (data.location != null && data.location != '') {\n locationString = encodeURIComponent(data.location);\n urlParts.push('location=' + locationString);\n locationString += ' // '; \n }\n if (data.descriptionHtmlFree != null && data.descriptionHtmlFree != '') {\n urlParts.push('content=' + locationString + encodeURIComponent(data.descriptionHtmlFree));\n }\n urlParts.push('uid=' + encodeURIComponent(data.uid));\n atcb_open_cal_url(baseUrl + urlParts.join('&'));\n}\nfunction atcb_open_cal_url(url, target = '') {\n if (target == '') {\n target = atcbDefaultTarget;\n }\n if (atcb_secure_url(url)) {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n window.open(url, target).focus();\n }\n}\nfunction atcb_generate_ical(host, data, subEvent = 'all', keyboardTrigger = false) {\n if (subEvent != 'all') {\n subEvent = parseInt(subEvent);\n }\n const filename = atcb_determine_ical_filename(data, subEvent);\n const givenIcsFile = (function () {\n if (subEvent != 'all' && data.dates[`${subEvent}`].icsFile != null && data.dates[`${subEvent}`].icsFile != '') {\n return data.dates[`${subEvent}`].icsFile;\n }\n if (data.icsFile != null && data.icsFile != '') {\n return data.icsFile;\n }\n return '';\n })();\n if (givenIcsFile != '' && (!isiOS() || !isWebView() || data.bypassWebViewCheck == true)) {\n atcb_save_file(givenIcsFile, filename);\n return;\n }\n const now = new Date();\n const ics_lines = ['BEGIN:VCALENDAR', 'VERSION:2.0'];\n ics_lines.push('PRODID:-// https://add-to-calendar-pro.com // button v' + atcbVersion + ' //EN');\n ics_lines.push('CALSCALE:GREGORIAN');\n if (subEvent == 'all') {\n ics_lines.push('METHOD:PUBLISH');\n } else {\n if (data.dates[`${subEvent}`].status != null && data.dates[`${subEvent}`].status == 'CANCELLED') {\n ics_lines.push('METHOD:CANCEL');\n } else {\n if (data.dates[`${subEvent}`].organizer != null && data.dates[`${subEvent}`].organizer != '') {\n ics_lines.push('METHOD:REQUEST');\n } else {\n ics_lines.push('METHOD:PUBLISH');\n }\n }\n }\n const usedTimeZones = [];\n const loopStart = (function () {\n if (subEvent != 'all') {\n return subEvent;\n }\n return 0;\n })();\n const loopEnd = (function () {\n if (subEvent != 'all') {\n return subEvent;\n }\n return data.dates.length - 1;\n })();\n for (let i = loopStart; i <= loopEnd; i++) {\n const formattedDate = atcb_generate_time(data.dates[`${i}`], 'clean', 'ical');\n const timeAddon = (function () {\n if (formattedDate.allday) {\n return ';VALUE=DATE';\n }\n if (data.dates[`${i}`].timeZone != null && data.dates[`${i}`].timeZone != '') {\n const timeZoneBlock = tzlib_get_ical_block(data.dates[`${i}`].timeZone);\n if (!usedTimeZones.includes(data.dates[`${i}`].timeZone)) {\n ics_lines.push(timeZoneBlock[0]);\n }\n usedTimeZones.push(data.dates[`${i}`].timeZone);\n return ';' + timeZoneBlock[1];\n }\n })();\n ics_lines.push('BEGIN:VEVENT');\n ics_lines.push('UID:' + data.dates[`${i}`].uid);\n ics_lines.push('DTSTAMP:' + atcb_format_datetime(now, 'clean', true));\n ics_lines.push('DTSTART' + timeAddon + ':' + formattedDate.start);\n ics_lines.push('DTEND' + timeAddon + ':' + formattedDate.end);\n ics_lines.push('SUMMARY:' + data.dates[`${i}`].name.replace(/.{65}/g, '$&' + '\\r\\n ')); \n if (data.dates[`${i}`].descriptionHtmlFree != null && data.dates[`${i}`].descriptionHtmlFree != '') {\n ics_lines.push(\n 'DESCRIPTION:' + data.dates[`${i}`].descriptionHtmlFree.replace(/\\n/g, '\\\\n').replace(/.{60}/g, '$&' + '\\r\\n ') // adjusting for intended line breaks + making sure it does not exceed 75 characters per line\n );\n }\n if (data.dates[`${i}`].description != null && data.dates[`${i}`].description != '') {\n ics_lines.push('X-ALT-DESC;FMTTYPE=text/html:\\r\\n \\r\\n \\r\\n ' + data.dates[`${i}`].description.replace(/\\n/g, '
').replace(/.{60}/g, '$&' + '\\r\\n ') + '\\r\\n ');\n }\n if (data.dates[`${i}`].location != null && data.dates[`${i}`].location != '') {\n ics_lines.push('LOCATION:' + data.dates[`${i}`].location);\n }\n if (data.dates[`${i}`].organizer != null && data.dates[`${i}`].organizer != '') {\n const organizerParts = data.dates[`${i}`].organizer.split('|');\n ics_lines.push('ORGANIZER;CN=' + organizerParts[0] + ':MAILTO:' + organizerParts[1]);\n }\n if (data.recurrence != null && data.recurrence != '') {\n ics_lines.push(data.recurrence);\n }\n if (data.dates[`${i}`].availability != null && data.dates[`${i}`].availability != '') {\n const transpVal = (function () {\n if (data.dates[`${i}`].availability == 'free') {\n return 'TRANSPARENT';\n }\n return 'OPAQUE';\n })();\n ics_lines.push('TRANSP:' + transpVal);\n }\n ics_lines.push('SEQUENCE:' + data.dates[`${i}`].sequence);\n ics_lines.push('STATUS:' + data.dates[`${i}`].status);\n ics_lines.push('CREATED:' + data.created);\n ics_lines.push('LAST-MODIFIED:' + data.updated);\n ics_lines.push('END:VEVENT');\n }\n ics_lines.push('END:VCALENDAR');\n const dataUrl = (function () {\n if (givenIcsFile != '') {\n return givenIcsFile;\n }\n return 'data:text/calendar;charset=utf-8,' + encodeURIComponent(ics_lines.join('\\r\\n'));\n })();\n if ((isiOS() && isChrome()) || (isWebView() && (isiOS() || (isAndroid() && isProblematicWebView())))) {\n atcb_ical_copy_note(host, dataUrl, data, keyboardTrigger);\n return;\n }\n atcb_save_file(dataUrl, filename);\n}\nfunction atcb_determine_ical_filename(data, subEvent) {\n const filenameSuffix = (function () {\n if (subEvent != 'all' && subEvent != 0) {\n return '-' + parseInt(subEvent) + 1;\n }\n return '';\n })();\n if (data.iCalFileName != null && data.iCalFileName != '') {\n return data.iCalFileName + filenameSuffix;\n }\n if (data.icsFile != null && data.icsFile != '') {\n const filenamePart = data.icsFile.split('/').pop().split('.')[0];\n if (filenamePart != '') {\n return filenamePart + filenameSuffix;\n }\n }\n return 'event-to-save-in-my-calendar' + filenameSuffix;\n}\nfunction atcb_ical_copy_note(host, dataUrl, data, keyboardTrigger) {\n atcb_copy_to_clipboard(dataUrl);\n if (isiOS() && isChrome()) {\n atcb_create_modal(host, data, 'warning', atcb_translate_hook('modal.crios.ical.h', data), atcb_translate_hook('modal.crios.ical.text', data) + '
' + atcb_translate_hook('modal.clipboard.text', data) + '
' + atcb_translate_hook('modal.crios.ical.steps', data), [], [], keyboardTrigger);\n return;\n }\n atcb_create_modal(host, data, 'warning', atcb_translate_hook('modal.webview.ical.h', data), atcb_translate_hook('modal.webview.ical.text', data) + '
' + atcb_translate_hook('modal.clipboard.text', data) + '
' + atcb_translate_hook('modal.webview.ical.steps', data), [], [], keyboardTrigger);\n}\n\n\nfunction atcb_saved_hook(host, data) {\n atcb_log_event('success', data.identifier, data.identifier);\n if (data.proKey == null || data.proKey == '') {\n return;\n }\n}\nfunction atcb_save_file(file, filename) {\n try {\n const save = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n save.rel = 'noopener';\n save.href = file;\n if (isMobile()) {\n save.target = '_self';\n } else {\n save.target = '_blank';\n }\n save.download = filename + '.ics';\n const evt = new MouseEvent('click', {\n view: window,\n button: 0,\n bubbles: true,\n cancelable: false,\n });\n save.dispatchEvent(evt);\n (window.URL || window.webkitURL).revokeObjectURL(save.href);\n } catch (e) {\n console.error(e);\n }\n}\nfunction atcb_generate_time(data, style = 'delimiters', targetCal = 'general', addTimeZoneOffset = false) {\n if (data.startTime != null && data.startTime != '' && data.endTime != null && data.endTime != '') {\n const newStartDate = new Date(data.startDate + 'T' + data.startTime + ':00.000+00:00');\n const newEndDate = new Date(data.endDate + 'T' + data.endTime + ':00.000+00:00');\n const durationMS = newEndDate - newStartDate;\n const durationHours = Math.floor(durationMS / 1000 / 60 / 60);\n const durationMinutes = Math.floor(((durationMS - durationHours * 60 * 60 * 1000) / 1000 / 60) % 60);\n const durationString = (function () {\n if (durationHours < 10) {\n return '0' + durationHours + ':' + ('0' + durationMinutes).slice(-2);\n }\n return durationHours + ':' + ('0' + durationMinutes).slice(-2);\n })();\n if ((data.timeZone == null || (data.timeZone != null && data.timeZone == '')) && addTimeZoneOffset) {\n return {\n start: newStartDate.toISOString().replace('.000Z', '+00:00'),\n end: newEndDate.toISOString().replace('.000Z', '+00:00'),\n duration: durationString,\n allday: false,\n };\n }\n if (data.timeZone != null && data.timeZone != '') {\n if (targetCal == 'ical' || (targetCal == 'google' && !/(GMT[+|-]\\d{1,2}|Etc\\/U|Etc\\/Zulu|CET|CST6CDT|EET|EST|EST5EDT|MET|MST|MST7MDT|PST8PDT|WET)/i.test(data.timeZone))) {\n return {\n start: atcb_format_datetime(newStartDate, 'clean', true, true),\n end: atcb_format_datetime(newEndDate, 'clean', true, true),\n duration: durationString,\n allday: false,\n };\n }\n const offsetStart = tzlib_get_offset(data.timeZone, data.startDate, data.startTime);\n const offsetEnd = tzlib_get_offset(data.timeZone, data.endDate, data.endTime);\n if (addTimeZoneOffset) {\n const formattedOffsetStart = offsetStart.slice(0, 3) + ':' + offsetStart.slice(3);\n const formattedOffsetEnd = offsetEnd.slice(0, 3) + ':' + offsetEnd.slice(3);\n return {\n start: newStartDate.toISOString().replace('.000Z', formattedOffsetStart),\n end: newEndDate.toISOString().replace('.000Z', formattedOffsetEnd),\n duration: durationString,\n allday: false,\n };\n }\n const calcOffsetStart = parseInt(offsetStart[0] + 1) * -1 * ((parseInt(offsetStart.substr(1, 2)) * 60 + parseInt(offsetStart.substr(3, 2))) * 60 * 1000);\n const calcOffsetEnd = parseInt(offsetEnd[0] + 1) * -1 * ((parseInt(offsetEnd.substr(1, 2)) * 60 + parseInt(offsetEnd.substr(3, 2))) * 60 * 1000);\n newStartDate.setTime(newStartDate.getTime() + calcOffsetStart);\n newEndDate.setTime(newEndDate.getTime() + calcOffsetEnd);\n }\n return {\n start: atcb_format_datetime(newStartDate, style),\n end: atcb_format_datetime(newEndDate, style),\n duration: durationString,\n allday: false,\n };\n } else {\n const startDate = data.startDate.split('-');\n const endDate = data.endDate.split('-');\n const newStartDate = new Date(Date.UTC(startDate[0], startDate[1] - 1, startDate[2], 12, 0, 0));\n const newEndDate = new Date(Date.UTC(endDate[0], endDate[1] - 1, endDate[2], 12, 0, 0));\n if (targetCal == 'google' || targetCal == 'microsoft' || targetCal == 'ical') {\n newEndDate.setDate(newEndDate.getDate() + 1);\n }\n return {\n start: atcb_format_datetime(newStartDate, style, false),\n end: atcb_format_datetime(newEndDate, style, false),\n allday: true,\n };\n }\n}\nfunction atcb_format_datetime(datetime, style = 'delimiters', includeTime = true, removeZ = false) {\n const regex = (function () {\n if (includeTime) {\n if (style == 'clean') {\n return /(-|:|(\\.\\d{3}))/g;\n }\n return /(\\.\\d{3})/g;\n }\n if (style == 'clean') {\n return /(-|T(\\d{2}:\\d{2}:\\d{2}\\.\\d{3})Z)/g;\n }\n return /T(\\d{2}:\\d{2}:\\d{2}\\.\\d{3})Z/g;\n })();\n const output = removeZ ? datetime.toISOString().replace(regex, '').replace('Z', '') : datetime.toISOString().replace(regex, '');\n return output;\n}\nfunction atcb_secure_content(data, isJSON = true) {\n const toClean = isJSON ? JSON.stringify(data) : data;\n const cleanedUp = toClean.replace(/(<(?!br)([^>]+)>)/gi, '');\n if (isJSON) {\n return JSON.parse(cleanedUp);\n } else {\n return cleanedUp;\n }\n}\nfunction atcb_secure_url(url, throwError = true) {\n if (url.match(/((\\.\\.\\/)|(\\.\\.\\\\)|(%2e%2e%2f)|(%252e%252e%252f)|(%2e%2e\\/)|(%252e%252e\\/)|(\\.\\.%2f)|(\\.\\.%252f)|(%2e%2e%5c)|(%252e%252e%255c)|(%2e%2e\\\\)|(%252e%252e\\\\)|(\\.\\.%5c)|(\\.\\.%255c)|(\\.\\.%c0%af)|(\\.\\.%25c0%25af)|(\\.\\.%c1%9c)|(\\.\\.%25c1%259c))/gi)) {\n if (throwError) {\n console.error('Seems like the generated URL includes at least one security issue and got blocked. Please check the calendar button parameters!');\n }\n return false;\n } else {\n return true;\n }\n}\nfunction atcb_validEmail(email, mx = false) {\n if (!/^.{0,70}@.{1,30}\\.[\\w.]{2,9}$/.test(email)) {\n return false;\n }\n if (mx) {\n console.log('Testing for MX records not yet available');\n }\n return true;\n}\nfunction atcb_rewrite_html_elements(content, clear = false) {\n content = content.replace(//gi, '\\n');\n if (clear) {\n content = content.replace(/\\[(|\\/)(url|br|hr|p|b|strong|u|i|em|li|ul|ol|h\\d)\\]|((\\|.*)\\[\\/url\\])/gi, '');\n } else {\n content = content.replace(/\\[(\\/|)(br|hr|p|b|strong|u|i|em|li|ul|ol|h\\d)\\]/gi, '<$1$2>');\n content = content.replace(/\\[url\\]([\\w&$+.,:;=~!*'?@^%#|\\s\\-()/]*)\\[\\/url\\]/gi, function (match, p1) {\n const urlText = p1.split('|');\n const text = (function () {\n if (urlText.length > 1 && urlText[1] != '') {\n return urlText[1];\n } else {\n return urlText[0];\n }\n })();\n return '' + text + '';\n });\n }\n return content;\n}\nfunction atcb_position_list(host, trigger, list, blockUpwards = false, resize = false) {\n let anchorSet = false;\n const originalTrigger = trigger;\n if (trigger.querySelector('.atcb-dropdown-anchor') !== null) {\n trigger = trigger.querySelector('.atcb-dropdown-anchor');\n anchorSet = true;\n }\n list.style.position = 'relative';\n list.style.display = 'inline-block';\n let triggerDim = trigger.getBoundingClientRect();\n const btnDim = originalTrigger.getBoundingClientRect();\n const btnParentDim = originalTrigger.parentNode.getBoundingClientRect();\n const viewportHeight = document.documentElement.clientHeight;\n if (anchorSet === true && !list.classList.contains('atcb-dropoverlay')) {\n let listDim = list.getBoundingClientRect();\n list.style.width = listDim.width + 'px';\n if ((list.classList.contains('atcb-dropup') && resize) || (!blockUpwards && !resize && triggerDim.top + listDim.height > viewportHeight - 20 && 2 * btnDim.top + btnDim.height - triggerDim.top - listDim.height > 20)) {\n originalTrigger.classList.add('atcb-dropup');\n list.classList.add('atcb-dropup');\n list.style.bottom = btnParentDim.bottom - btnDim.bottom + (triggerDim.top - btnDim.top) + 'px';\n } else {\n list.style.top = btnDim.top - btnParentDim.top + (triggerDim.top - btnDim.top) + 'px';\n if (originalTrigger.classList.contains('atcb-dropup')) {\n originalTrigger.classList.remove('atcb-dropup');\n }\n }\n triggerDim = trigger.getBoundingClientRect();\n list.style.minWidth = triggerDim.width + 'px';\n if ((list.classList.contains('atcb-dropdown') && !list.classList.contains('atcb-style-round')) || list.classList.contains('atcb-style-text') || list.classList.contains('atcb-style-neumorphism')) {\n list.style.maxWidth = triggerDim.width + 'px';\n }\n listDim = list.getBoundingClientRect();\n list.style.left = Math.round(triggerDim.left - btnParentDim.left - (listDim.width - triggerDim.width) / 2) + 'px';\n } else {\n list.style.minWidth = btnDim.width + 20 + 'px';\n const listDim = list.getBoundingClientRect();\n list.style.width = listDim.width + 'px';\n const sideMargin = Math.round((btnDim.width - listDim.width) / 4);\n list.style.margin = -Math.round((listDim.height + btnDim.height) / 2) + 'px ' + sideMargin + 'px 0 ' + sideMargin + 'px';\n }\n list.style.position = 'absolute';\n list.style.display = 'block';\n const atcbL = host.querySelector('#add-to-calendar-button-reference');\n if (atcbL) {\n if (originalTrigger.classList.contains('atcb-dropup')) {\n originalTrigger.parentNode.parentNode.after(atcbL);\n atcbL.style.padding = '5px 15px';\n atcbL.style.position = 'absolute';\n atcbL.style.left = btnDim.left + 'px';\n }\n }\n}\nfunction atcb_manage_body_scroll(host, modalObj = null) {\n const modal = (function () {\n if (modalObj != null) {\n return modalObj;\n } else {\n const allModals = host.querySelectorAll('.atcb-modal');\n if (allModals.length == 0) {\n return null;\n }\n return allModals[allModals.length - 1];\n }\n })();\n if (modal == null) {\n return;\n }\n const modalDim = modal.getBoundingClientRect();\n if (modalDim.height + 100 > window.innerHeight) {\n document.body.classList.add('atcb-modal-no-scroll');\n document.documentElement.classList.add('atcb-modal-no-scroll');\n } else {\n document.body.classList.remove('atcb-modal-no-scroll');\n document.documentElement.classList.remove('atcb-modal-no-scroll');\n }\n}\nfunction atcb_set_fullsize(el) {\n el.style.width = window.innerWidth + 'px';\n el.style.height = window.innerHeight + 100 + 'px';\n}\nfunction atcb_set_sizes(el, sizes) {\n el.style.setProperty('--base-font-size-l', sizes['l'] + 'px');\n el.style.setProperty('--base-font-size-m', sizes['m'] + 'px');\n el.style.setProperty('--base-font-size-s', sizes['s'] + 'px');\n}\nfunction atcb_generate_uuid() {\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) => (c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16));\n}\nfunction atcb_copy_to_clipboard(dataString) {\n const tmpInput = document.createElement('input');\n document.body.append(tmpInput);\n const editable = tmpInput.contentEditable;\n const readOnly = tmpInput.readOnly;\n tmpInput.value = dataString;\n tmpInput.contentEditable = true;\n tmpInput.readOnly = false;\n if (isiOS()) {\n var range = document.createRange();\n range.selectNodeContents(tmpInput);\n var selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n tmpInput.setSelectionRange(0, 999999);\n } else {\n navigator.clipboard.writeText(dataString);\n tmpInput.select();\n }\n tmpInput.contentEditable = editable;\n tmpInput.readOnly = readOnly;\n document.execCommand('copy');\n tmpInput.remove();\n}\nfunction atcb_debounce(func, timeout = 200) {\n let timer;\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n func.apply(this, args);\n }, timeout);\n };\n}\nfunction atcb_debounce_leading(func, timeout = 300) {\n let timer;\n return (...args) => {\n if (!timer) {\n func.apply(this, args);\n }\n clearTimeout(timer);\n timer = setTimeout(() => {\n timer = undefined;\n }, timeout);\n };\n}\n\n\nfunction atcb_log_event(event, trigger, identifier) {\n const parentEl = (function () {\n const customTrigger = document.getElementById(identifier);\n if (customTrigger) {\n return customTrigger;\n }\n return document.querySelector('[atcb-button-id=\"' + identifier + '\"]');\n })();\n if (parentEl) {\n parentEl.setAttribute('atcb-last-event', event + ':' + trigger);\n }\n atcb_push_to_data_layer(event, trigger);\n}\nfunction atcb_push_to_data_layer(event, trigger) {\n let action = '';\n switch (event) {\n case 'initialization':\n action = 'Initialized';\n break;\n case 'openList':\n action = 'Opened';\n break;\n case 'closeList':\n action = 'Closed';\n break;\n case 'openCalendarLink':\n action = 'Opened';\n break;\n case 'openSingletonLink':\n action = 'Opened';\n break;\n case 'openSubEventLink':\n action = 'Opened';\n break;\n case 'success':\n action = 'Saved';\n break;\n }\n const atcbDataLayer = (window.dataLayer = window.dataLayer || []);\n atcbDataLayer.push({\n eventCategory: 'Add-to-Calendar-Button',\n eventAction: action,\n eventLabel: trigger,\n event: event,\n });\n}\n\n\n/* How to add new languages:\n * 1. Duplicate the \"en\" block at the following \"i18nStrings\" object.\n * 2. Change the key to the ISO 639-1 code of your language (https://www.w3schools.com/tags/ref_language_codes.asp).\n * 3. Translate the labels.\n * 4. Add the language to the \"rtlLanguages\" array below, if it write from right to left.\n * 4. Update the \"language\" part at the configuration page of the demo page - add the new lagnuages to the \"Options\" info (/demo/src/views/ConfigView.vue).\n * 5. Also update the language.ts file at the demo page, so the language appears at the demo playground (/demo/src/components/models/language.ts).\n */\nconst rtlLanguages = ['ar'];\nconst i18nStrings = {\n en: {\n 'label.addtocalendar': 'Add to Calendar',\n 'label.icalfile': 'iCal File',\n close: 'Close',\n 'modal.button.default': 'Click me',\n 'modal.webview.ical.h': 'Open your browser',\n 'modal.webview.ical.text': 'Unfortunately, in-app browsers have problems with the way we generate the calendar file.',\n 'modal.clipboard.text': 'We automatically copied a magical URL into your clipboard.',\n 'modal.webview.ical.steps': '
  1. Open another browser on your phone, ...
  2. Paste the clipboard content and go.
',\n 'modal.crios.ical.h': 'Open Safari',\n 'modal.crios.ical.text': 'Unfortunately, Chrome on iOS has problems with the way we generate the calendar file.',\n 'modal.crios.ical.steps': '
  1. Open Safari, ...
  2. Paste the clipboard content and go.
',\n 'modal.multidate.h': 'This is an event series',\n 'modal.multidate.text': 'Add the individual events one by one:',\n 'date.status.cancelled': 'This date got cancelled.',\n 'date.status.cancelled.cta': 'Please update your calendar!',\n 'modal.subscribe.yahoo.h': 'Add Calendar to Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Open now the Yahoo Calendar.
  2. Click the \"Actions\" tab.
  3. Hit \"Follow Other Calendars\".
  4. Set a name and past the clipboard content into the url field.
',\n cancel: 'Cancel',\n },\n de: {\n 'label.addtocalendar': 'Im Kalender speichern',\n 'label.icalfile': 'iCal-Datei',\n close: 'Schließen',\n 'modal.button.default': 'Klick mich',\n 'modal.webview.ical.h': 'Öffne deinen Browser',\n 'modal.webview.ical.text': 'Leider haben In-App-Browser Probleme mit der Art, wie wir Kalender-Dateien erzeugen.',\n 'modal.clipboard.text': 'Wir haben automatisch eine magische URL in deine Zwischenablage kopiert.',\n 'modal.webview.ical.steps': '
  1. Öffne einen anderen Browser auf deinem Smartphone, ...
  2. Nutze die Einfügen-Funktion, um fortzufahren.
',\n 'modal.crios.ical.h': 'Öffne Safari',\n 'modal.crios.ical.text': 'Leider hat Chrome unter iOS Probleme mit der Art, wie wir Kalender-Dateien erzeugen.',\n 'modal.crios.ical.steps': '
  1. Öffne Safari, ...
  2. Nutze die Einfügen-Funktion, um fortzufahren.
',\n 'modal.multidate.h': 'Dies ist eine Termin-Reihe',\n 'modal.multidate.text': 'Füge die einzelnen Termine der Reihe nach deinem Kalender hinzu:',\n 'date.status.cancelled': 'Dieser Termin wurde abgesagt.',\n 'date.status.cancelled.cta': 'Bitte aktualisiere deinen Kalender!',\n 'modal.subscribe.yahoo.h': 'Kalender zu Yahoo hinzufügen',\n 'modal.subscribe.yahoo.text': '
  1. Öffne den Yahoo Kalender.
  2. Klicke auf den \"Aktionen\" Tab.
  3. Wähle \"Weiteren Kalendern folgen\".
  4. Wähle einen Namen und füge die URL aus deiner Zwischenablage in das URL-Feld ein.
',\n cancel: 'Abbrechen',\n },\n es: {\n 'label.addtocalendar': 'Añadir al Calendario',\n 'label.icalfile': 'iCal Ficha',\n close: 'Ciérralo',\n 'modal.button.default': 'Haz clic mí',\n 'modal.webview.ical.h': 'Abra su browser',\n 'modal.webview.ical.text': 'Lamentablemente, los browsers in-app tienen problemas con la forma en que generamos el archivo del calendario.',\n 'modal.clipboard.text': 'Hemos copiado automáticamente una URL mágica en su portapapeles.',\n 'modal.webview.ical.steps': '
  1. Abre otro browser en tu smartphone, ...
  2. Utilice la función de pegar para continuar.
',\n 'modal.crios.ical.h': 'Abrir Safari',\n 'modal.crios.ical.text': 'Lamentablemente, Chrome en iOS tiene problemas con la forma de generar el archivo de calendario.',\n 'modal.crios.ical.steps': '
  1. Abrir Safari, ...
  2. Utilice la función de pegar para continuar.
',\n 'modal.multidate.h': 'Esta es una serie de fechas',\n 'modal.multidate.text': 'Añada las fechas individuales a su calendario en orden:',\n 'date.status.cancelled': 'Esta fecha fue cancelada.',\n 'date.status.cancelled.cta': 'Actualice su calendario!',\n 'modal.subscribe.yahoo.h': 'Añadir calendario a Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Abra el calendario de Yahoo.
  2. Haga clic en la pestaña \"Acciones\".
  3. Seleccione \"Seguir otros calendarios\".
  4. Elige un nombre y pega la URL de tu portapapeles en el campo URL.
',\n cancel: 'Cancelar',\n },\n pt: {\n 'label.addtocalendar': 'Incluir no Calendário',\n 'label.icalfile': 'Ficheiro iCal',\n close: 'Fechar',\n 'modal.button.default': 'Clicar-me',\n 'modal.webview.ical.h': 'Abra o seu browser',\n 'modal.webview.ical.text': 'Infelizmente, os navegadores em tampas têm problemas com a forma como geramos o ficheiro de calendário.',\n 'modal.clipboard.text': 'Copiámos automaticamente um URL mágico para a sua área de transferência.',\n 'modal.webview.ical.steps': '
  1. Abrir outro browser en tu smartphone, ...
  2. Use a função colar para continuar.
',\n 'modal.crios.ical.h': 'Safari aberto',\n 'modal.crios.ical.text': 'Infelizmente, o cromado no iOS tem problemas com a forma como geramos o ficheiro do calendário.',\n 'modal.crios.ical.steps': '
  1. Safari aberto, ...
  2. Use a função colar para continuar.
',\n 'modal.multidate.h': 'Esta é uma série de datas',\n 'modal.multidate.text': 'Adicione as datas individuais ao seu calendário, por ordem:',\n 'date.status.cancelled': 'Esta data foi cancelada.',\n 'date.status.cancelled.cta': 'Actualize o seu calendário!',\n 'modal.subscribe.yahoo.h': 'Adicionar calendário ao Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Abrir o calendário do Yahoo.
  2. Clique no separador \"Acções\".
  3. Seleccione \"Seguir outros calendários\".
  4. Escolha um nome e cole o URL da sua área de transferência no campo URL.
',\n cancel: 'Cancelar',\n },\n fr: {\n 'label.addtocalendar': \"Ajouter à l'Agenda\",\n 'label.icalfile': 'Fichier iCal',\n close: 'Fermer',\n 'modal.button.default': 'Cliquez-moi',\n 'modal.webview.ical.h': 'Ouvrez votre navigateur',\n 'modal.webview.ical.text': \"Malheureusement, les navigateurs in-app ont des problèmes avec la manière dont nous créons les fichiers d'agenda.\",\n 'modal.clipboard.text': 'Nous avons automatiquement copié une URL magique dans votre presse-papiers.',\n 'modal.webview.ical.steps': '
  1. Ouvrez un autre navigateur sur votre smartphone, ...
  2. Collez le contenu du presser-papier et continuez.
',\n 'modal.crios.ical.h': 'Ouvrir Safari',\n 'modal.crios.ical.text': 'Malheureusement, Chrome sur iOS a des problèmes avec la façon dont nous générons le fichier agenda.',\n 'modal.crios.ical.steps': '
  1. Ouvrez Safari, ...
  2. Collez le contenu du presse-papier et continuez.
',\n 'modal.multidate.h': 'Ceci est un évènement récurrent',\n 'modal.multidate.text': 'Ajouter les différents évènements un par un:',\n 'date.status.cancelled': 'Cette date est annulée.',\n 'date.status.cancelled.cta': 'Actualisez votre agenda!',\n 'modal.subscribe.yahoo.h': 'Ajouter un agenda à Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Ouvrez l\\'Agenda Yahoo.
  2. Cliquez sur l\\'onglet \"Actions\".
  3. Sélectionnez \"Suivre d\\'autres agendas\".
  4. Choisissez un nom et collez le contenu de votre presse-papiers dans le champ URL.
',\n cancel: 'Annuler',\n },\n nl: {\n 'label.addtocalendar': 'Opslaan in Agenda',\n 'label.icalfile': 'iCal File',\n close: 'Sluiten',\n 'modal.button.default': 'Klik me',\n 'modal.webview.ical.h': 'Open uw browser',\n 'modal.webview.ical.text': 'Helaas hebben in-app browsers problemen met de manier waarop wij kalenderbestanden maken.',\n 'modal.clipboard.text': 'We hebben automatisch een magische URL naar je klembord gekopieerd.',\n 'modal.webview.ical.steps': '
  1. Open een andere browser op uw smartphone, ...
  2. Gebruik de insert functie om verder te gaan.
',\n 'modal.crios.ical.h': 'Open Safari',\n 'modal.crios.ical.text': 'Helaas heeft Chrome op iOS problemen met de manier waarop we het kalenderbestand genereren.',\n 'modal.crios.ical.steps': '
  1. Open Safari, ...
  2. Gebruik de insert functie om verder te gaan.
',\n 'modal.multidate.h': 'Dit is een reeks data',\n 'modal.multidate.text': 'Voeg de afzonderlijke delen één voor één toe:',\n 'date.status.cancelled': 'Deze datum is geannuleerd.',\n 'date.status.cancelled.cta': 'Uw agenda bijwerken!',\n 'modal.subscribe.yahoo.h': 'Toevoegen aan Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Open de Yahoo calendar.
  2. Klik op de \"Acties\" tab.
  3. Selecteer \"Volg Andere Agenda\\'s\".
  4. Kies een naam en plak de URL van uw klembord in het URL-veld.
',\n cancel: 'Annuleren',\n },\n tr: {\n 'label.addtocalendar': 'Takvime Ekle',\n 'label.icalfile': 'iCal Dosyası',\n close: 'Kapat',\n 'modal.button.default': 'Beni tıklayın',\n 'modal.webview.ical.h': 'Tarayıcınızı açın',\n 'modal.webview.ical.text': 'Ne yazık ki, uygulama içi tarayıcılar takvim dosyalarını oluşturma şeklimizle ilgili sorunlar yaşıyor.',\n 'modal.clipboard.text': 'Panonuza otomatik olarak sihirli bir URL kopyaladık.',\n 'modal.webview.ical.steps': '
  1. Akıllı telefonunuzda başka bir tarayıcı açın, ...
  2. Devam etmek için insert fonksiyonunu kullanın.
',\n 'modal.crios.ical.h': 'Açık Safari',\n 'modal.crios.ical.text': \"Ne yazık ki iOS'ta Chrome'un takvim dosyası oluşturma yöntemiyle ilgili sorunları var.\",\n 'modal.crios.ical.steps': '
  1. Açık Safari, ...
  2. Devam etmek için insert fonksiyonunu kullanın.
',\n 'modal.multidate.h': 'Bu bir etkinlik serisidir',\n 'modal.multidate.text': 'Parçaları teker teker ekleyin:',\n 'date.status.cancelled': 'Bu tarih iptal edildi.',\n 'date.status.cancelled.cta': 'Lütfen takviminizi güncelleyin!',\n 'modal.subscribe.yahoo.h': \"Yahoo'ya takvim ekleme\",\n 'modal.subscribe.yahoo.text': '
  1. Yahoo takvimini açın.
  2. \"Eylemler\" sekmesine tıklayın.
  3. \"Diğer Takvimleri Takip Et\" öğesini seçin.
  4. Bir ad seçin ve URL\\'yi panonuzdan URL alanına yapıştırın.
',\n cancel: 'İptal',\n },\n zh: {\n 'label.addtocalendar': '添加到日历',\n 'label.icalfile': 'iCal 文件',\n close: '关',\n 'modal.button.default': '点我',\n 'modal.webview.ical.h': '打开浏览器',\n 'modal.webview.ical.text': '不幸的是,应用内浏览器在我们生成日历文件的方式上存在问题。',\n 'modal.clipboard.text': '我们自动将魔术 URL 复制到您的剪贴板。',\n 'modal.webview.ical.steps': '
  1. 打开手机上的任何其他浏览器, ...
  2. 粘贴剪贴板内容并开始。
',\n 'modal.crios.ical.h': '打开 Safari',\n 'modal.crios.ical.text': '不幸的是,iOS 上的 Chrome 在我们生成日历文件的方式上存在问题。',\n 'modal.crios.ical.steps': '
  1. 打开 Safari, ...
  2. 粘贴剪贴板内容并开始。
',\n 'modal.multidate.h': '这是一个活动系列',\n 'modal.multidate.text': '逐个添加各个部分:',\n 'date.status.cancelled': '此日期已取消。',\n 'date.status.cancelled.cta': '请更新您的日历!',\n 'modal.subscribe.yahoo.h': '将日历添加到 Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. 打开 Yahoo 日历。
  2. 点击“操作”标签。
  3. 选择“关注其他日历”。
  4. 选择一个名称并将剪贴板中的 URL 粘贴到 URL 字段中。
',\n cancel: '中止',\n },\n ar: {\n 'label.addtocalendar': 'إضافة إلى التقويم',\n 'label.icalfile': 'ملف iCal',\n close: 'قريب',\n 'modal.button.default': 'انقر فوق لي',\n 'modal.webview.ical.h': 'افتح المستعرض الخاص بك',\n 'modal.webview.ical.text': 'لسوء الحظ ، تواجه المتصفحات داخل التطبيق مشاكل في طريقة إنشاء ملف التقويم.',\n 'modal.clipboard.text': 'قمنا تلقائيًا بنسخ عنوان URL سحري إلى الحافظة الخاصة بك.',\n 'modal.webview.ical.steps': '
  1. افتح أي متصفح آخر على هاتفك الذكي, ...
  2. .الصق محتوى الحافظة واذهب
',\n 'modal.crios.ical.h': 'افتح Safari',\n 'modal.crios.ical.text': 'لسوء الحظ ، يواجه Chrome على iOS مشاكل في طريقة إنشاء ملف التقويم',\n 'modal.crios.ical.steps': '
  1. افتح Safari, ...
  2. الصق محتوى الحافظة واذهب.
',\n 'modal.multidate.h': 'هذه سلسلة أحداث',\n 'modal.multidate.text': 'أضف الأجزاء الفردية واحدة تلو الأخرى:',\n 'date.status.cancelled': 'تم إلغاء هذا التاريخ.',\n 'date.status.cancelled.cta': 'الرجاء تحديث التقويم الخاص بك!',\n 'modal.subscribe.yahoo.h': 'أضف التقويم إلى Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. افتح تقويم Yahoo.
  2. انقر فوق علامة التبويب \"الإجراءات\".
  3. حدد \"متابعة تقويمات أخرى\".
  4. اختر اسمًا والصق عنوان URL من الحافظة الخاصة بك في حقل URL.
',\n cancel: 'إحباط',\n },\n hi: {\n 'label.addtocalendar': 'कैलेंडर में जोड़ें',\n 'label.icalfile': 'iCal फ़ाइल',\n close: 'बंद करना',\n 'modal.button.default': 'मुझे क्लिक करें',\n 'modal.webview.ical.h': 'अपना ब्राउज़र खोलें',\n 'modal.webview.ical.text': 'दुर्भाग्य से, इन-ऐप ब्राउज़र में कैलेंडर फ़ाइल बनाने के तरीके में समस्याएँ हैं।',\n 'modal.clipboard.text': 'हमने आपके क्लिपबोर्ड पर स्वचालित रूप से एक जादुई URL कॉपी कर लिया है।',\n 'modal.webview.ical.steps': '
  1. अपने फ़ोन पर दूसरा ब्राउज़र खोलें, ...
  2. क्लिपबोर्ड सामग्री चिपकाएं और जाएं।
',\n 'modal.crios.ical.h': 'सफारी खोलें',\n 'modal.crios.ical.text': 'दुर्भाग्य से, iOS पर Chrome को कैलेंडर फ़ाइल जेनरेट करने के हमारे तरीके में समस्या है।',\n 'modal.crios.ical.steps': '
  1. सफारी खोलें, ...
  2. क्लिपबोर्ड सामग्री चिपकाएं और जाएं।
',\n 'modal.multidate.h': 'यह एक इवेंट सीरीज़ है',\n 'modal.multidate.text': 'अलग-अलग हिस्सों को एक-एक करके जोड़ें:',\n 'date.status.cancelled': 'यह तिथि रद्द हो गई।',\n 'date.status.cancelled.cta': 'कृपया अपना कैलेंडर अपडेट करें!',\n 'modal.subscribe.yahoo.h': 'Yahoo . में कैलेंडर जोड़ें',\n 'modal.subscribe.yahoo.text': '
  1. Yahoo कैलेंडर खोलें।
  2. \"कृती\" टैब पर क्लिक करें।
  3. \"इतर कॅलेंडर्सचे अनुसरण करा\" चुनें।
  4. एक नाम चुनें और अपने क्लिपबोर्ड से URL को URL फ़ील्ड में पेस्ट करें।
',\n cancel: 'रद्द करना',\n },\n pl: {\n 'label.addtocalendar': 'Dodaj do kalendarza',\n 'label.icalfile': 'Plik iCal',\n close: 'Zamknij',\n 'modal.button.default': 'Kliknij mnie',\n 'modal.webview.ical.h': 'Otwórz przeglądarkę',\n 'modal.webview.ical.text': 'Niestety, przeglądarki in-app mają problemy ze sposobem, w jaki generujemy plik kalendarza.',\n 'modal.clipboard.text': 'Automatycznie skopiowaliśmy magiczny adres URL do schowka.',\n 'modal.webview.ical.steps': '
  1. Otwórz inną przeglądarkę w swoim telefonie, ...
  2. Wklej zawartość schowka i ruszaj.
',\n 'modal.crios.ical.h': 'Otwórz Safari',\n 'modal.crios.ical.text': 'Niestety, Chrome na iOS ma problemy ze sposobem generowania pliku kalendarza.',\n 'modal.crios.ical.steps': '
  1. Otwórz Safari, ...
  2. Wklej zawartość schowka i ruszaj.
',\n 'modal.multidate.h': 'To jest cykl imprez',\n 'modal.multidate.text': 'Dodawać po kolei poszczególne części:',\n 'date.status.cancelled': 'Ta data została odwołana.',\n 'date.status.cancelled.cta': 'Zaktualizuj swój kalendarz!',\n 'modal.subscribe.yahoo.h': 'Dodaj kalendarz do Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Otwórz kalendarz Yahoo.
  2. Kliknij na zakładkę \"Czynności\".
  3. Wybierz \"Obserwuj inne kalendarze\".
  4. Wybierz nazwę i wklej adres URL ze schowka w polu URL.
',\n cancel: 'Anuluj',\n },\n id: {\n 'label.addtocalendar': 'Tambahkan ke Kalender',\n 'label.icalfile': 'File iCal',\n close: 'Tutup',\n 'modal.button.default': 'Klik saya',\n 'modal.webview.ical.h': 'Buka browser Anda',\n 'modal.webview.ical.text': 'Sayangnya, browser dalam aplikasi memiliki masalah dengan cara kami menghasilkan file kalender.',\n 'modal.clipboard.text': 'Kami telah secara otomatis menyalin URL ajaib ke clipboard Anda.',\n 'modal.webview.ical.steps': '
  1. Buka peramban lain pada ponsel Anda, ...
  2. Tempelkan konten clipboard dan pergi.
',\n 'modal.crios.ical.h': 'Buka Safari',\n 'modal.crios.ical.text': 'Sayangnya, Chrome di iOS memiliki masalah dengan cara kami menghasilkan file kalender.',\n 'modal.crios.ical.steps': '
  1. Buka Safari, ...
  2. Tempelkan konten clipboard dan pergi.
',\n 'modal.multidate.h': 'Ini adalah rangkaian acara',\n 'modal.multidate.text': 'Tambahkan masing-masing bagian satu per satu:',\n 'date.status.cancelled': 'Tanggal ini dibatalkan.',\n 'date.status.cancelled.cta': 'Perbarui kalender Anda!',\n 'modal.subscribe.yahoo.h': 'Tambahkan kalender ke Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Buka kalender Yahoo.
  2. Klik pada tab \"Tindakan\".
  3. Pilih \"Ikuti Kalender Lain\".
  4. Pilih nama dan tempelkan URL dari clipboard Anda ke bidang URL.
',\n cancel: 'Batal',\n },\n no: {\n 'label.addtocalendar': 'Legg til i kalenderen',\n 'label.icalfile': 'iCal-fil',\n close: 'Lukk',\n 'modal.button.default': 'Klikk på meg',\n 'modal.webview.ical.h': 'Åpne nettleseren din',\n 'modal.webview.ical.text': 'Dessverre har nettlesere i appen problemer med måten vi genererer kalenderfilen på.',\n 'modal.clipboard.text': 'Vi kopierte automatisk en magisk URL til utklippstavlen din.',\n 'modal.webview.ical.steps': '
  1. Åpne en annen nettleser på telefonen, ...
  2. Lim inn innholdet på utklippstavlen og gå.
',\n 'modal.crios.ical.h': 'Åpne Safari',\n 'modal.crios.ical.text': 'Dessverre har Chrome på iOS problemer med måten vi genererer kalenderfilen på.',\n 'modal.crios.ical.steps': '
  1. Åpne Safari, ...
  2. Lim inn innholdet på utklippstavlen og gå.
',\n 'modal.multidate.h': 'Dette er en avtaleserie',\n 'modal.multidate.text': 'Legg til de enkelte datoene i kalenderen din i rekkefølge:',\n 'date.status.cancelled': 'Denne datoen ble avlyst.',\n 'date.status.cancelled.cta': 'Oppdater kalenderen din!',\n 'modal.subscribe.yahoo.h': 'Legg til kalender til Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Åpne Yahoo-kalenderen.
  2. Klikk på «Handlinger»-fanen.
  3. Velg «Følg andre kalendere».
  4. Velg et navn og lim inn URL-en fra utklippstavlen i URL-feltet.
',\n cancel: 'Avbryt',\n },\n fi: {\n 'label.addtocalendar': 'Lisää kalenteriin',\n 'label.icalfile': 'iCal-tiedosto',\n close: 'Sulje',\n 'modal.button.default': 'Klikkaa minua',\n 'modal.webview.ical.h': 'Avaa selain',\n 'modal.webview.ical.text': 'Valitettavasti sovelluksen sisäisillä selaimilla on ongelmia kalenteritiedoston luomisessa.',\n 'modal.clipboard.text': 'Olemme automaattisesti kopioineet maagisen URL-osoitteen leikepöydällesi.',\n 'modal.webview.ical.steps': '
  1. Avaa toinen selain puhelimessasi., ...
  2. liitä leikepöydän sisältö ja lähde.
',\n 'modal.crios.ical.h': 'Avaa Safari',\n 'modal.crios.ical.text': 'Valitettavasti iOS:n Chromessa on ongelmia kalenteritiedoston luomisessa.',\n 'modal.crios.ical.steps': '
  1. Avaa Safari, ...
  2. liitä leikepöydän sisältö ja lähde.
',\n 'modal.multidate.h': 'Tämä on tapahtumasarja',\n 'modal.multidate.text': 'Lisää yksittäiset osat yksi kerrallaan:',\n 'date.status.cancelled': 'Tämä päivämäärä peruttiin.',\n 'date.status.cancelled.cta': 'Päivitä kalenterisi!',\n 'modal.subscribe.yahoo.h': 'Lisää kalenteri Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Avaa Yahoo-kalenteri.
  2. Napsauta \"Toiminnot\"-välilehteä.
  3. Valitse \"Seuraa muiden kalentereita\".
  4. Valitse nimi ja liitä URL-osoite leikepöydältäsi URL-kenttään.
',\n cancel: 'Peruuta',\n },\n sv: {\n 'label.addtocalendar': 'Lägg till i kalender',\n 'label.icalfile': 'iCal-fil',\n close: 'Stäng',\n 'modal.button.default': 'Klicka på mig',\n 'modal.webview.ical.h': 'Öppna din webbläsare',\n 'modal.webview.ical.text': 'Tyvärr har webbläsare i appen problem med hur vi genererar kalenderfilen.',\n 'modal.clipboard.text': 'Vi har automatiskt kopierat en magisk URL till ditt klippblock.',\n 'modal.webview.ical.steps': '
  1. Öppna en annan webbläsare på telefonen, ...
  2. Insätt innehållet i klippbordet och kör.
',\n 'modal.crios.ical.h': 'Öppna Safari',\n 'modal.crios.ical.text': 'Tyvärr har Chrome på iOS problem med hur vi genererar kalenderfilen.',\n 'modal.crios.ical.steps': '
  1. Öppna Safari, ...
  2. Insätt innehållet i klippbordet och kör.
',\n 'modal.multidate.h': 'Detta är en evenemangsserie',\n 'modal.multidate.text': 'Lägg till de enskilda delarna en efter en:',\n 'date.status.cancelled': 'Detta datum har ställts in.',\n 'date.status.cancelled.cta': 'Uppdatera din kalender!',\n 'modal.subscribe.yahoo.h': 'Lägg till kalender i Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Öppna Yahoo-kalendern.
  2. Klicka på fliken \"Åtgärder\".
  3. Välj \"Följ andra kalendrar\".
  4. Välj ett namn och klistra in URL:en från klippbordet i URL-fältet.
',\n cancel: 'Avbryt',\n },\n cs: {\n 'label.addtocalendar': 'Přidat do kalendáře',\n 'label.icalfile': 'Soubor iCal',\n close: 'Zavřít',\n 'modal.button.default': 'Klikněte na mě',\n 'modal.webview.ical.h': 'Otevřete prohlížeč',\n 'modal.webview.ical.text': 'Prohlížeče v aplikacích mají bohužel problémy se způsobem generování souboru kalendáře.',\n 'modal.clipboard.text': 'Do schránky jsme automaticky zkopírovali kouzelnou adresu URL.',\n 'modal.webview.ical.steps': '
  1. Otevření jiného prohlížeče v telefonu, ...
  2. Vložte obsah schránky a přejděte.
',\n 'modal.crios.ical.h': 'Otevřít Safari',\n 'modal.crios.ical.text': 'Chrome v systému iOS má bohužel problémy se způsobem generování souboru kalendáře.',\n 'modal.crios.ical.steps': '
  1. Otevřít Safari, ...
  2. Vložte obsah schránky a přejděte.
',\n 'modal.multidate.h': 'Jedná se o sérii událostí',\n 'modal.multidate.text': 'Přidávejte jednotlivé díly jeden po druhém:',\n 'date.status.cancelled': 'Toto datum bylo zrušeno.',\n 'date.status.cancelled.cta': 'Aktualizujte svůj kalendář!',\n 'modal.subscribe.yahoo.h': 'Přidat kalendář do Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Otevřete kalendář Yahoo.
  2. Klikněte na kartu \"Akce\".
  3. Vyberte možnost \"Sledovat další kalendáře\".
  4. Vyberte název a vložte adresu URL ze schránky do pole URL.
',\n cancel: 'Storno',\n },\n ja: {\n 'label.addtocalendar': 'カレンダーに追加',\n 'label.icalfile': 'iCalファイル',\n close: '閉じる',\n 'modal.button.default': 'クリックしてください',\n 'modal.webview.ical.h': 'ブラウザを起動する',\n 'modal.webview.ical.text': '残念ながら、アプリ内ブラウザは、カレンダーファイルの生成方法に問題があります。',\n 'modal.clipboard.text': '魔法のURLを自動的にクリップボードにコピーしています。',\n 'modal.webview.ical.steps': '
  1. スマートフォンで別のブラウザを起動する, ...
  2. クリップボードの内容を貼り付けて行く。
',\n 'modal.crios.ical.h': 'オープンSafari',\n 'modal.crios.ical.text': '残念ながら、iOS版Chromeでは、カレンダーファイルの生成方法に問題があります。',\n 'modal.crios.ical.steps': '
  1. オープンSafari, ...
  2. クリップボードの内容を貼り付けて行く。
',\n 'modal.multidate.h': 'イベントシリーズです',\n 'modal.multidate.text': '個々のパーツを一つずつ追加していく:',\n 'date.status.cancelled': 'この日はキャンセルになりました。',\n 'date.status.cancelled.cta': 'カレンダーを更新する!',\n 'modal.subscribe.yahoo.h': 'Yahooにカレンダーを追加する',\n 'modal.subscribe.yahoo.text': '
  1. Yahooカレンダーを開く。
  2. [実行] タブをクリックします。
  3. [その他のカレンダーのフォロー] を選択します。
  4. 名前を決めて、クリップボードにあるURLをURL欄に貼り付けます。
',\n cancel: 'キャンセル',\n },\n it: {\n 'label.addtocalendar': 'Aggiungi al calendario',\n 'label.icalfile': 'File iCal',\n close: 'Chiudere',\n 'modal.button.default': 'Clicca su di me',\n 'modal.webview.ical.h': 'Aprire il browser',\n 'modal.webview.ical.text': 'Purtroppo i browser in-app hanno problemi con il modo in cui generiamo il file del calendario.',\n 'modal.clipboard.text': 'Abbiamo copiato automaticamente un URL magico negli appunti.',\n 'modal.webview.ical.steps': '
  1. Aprire un altro browser sul cellulare, ...
  2. Incollare il contenuto degli appunti e partire.
',\n 'modal.crios.ical.h': 'Aprire Safari',\n 'modal.crios.ical.text': 'Purtroppo, Chrome su iOS ha problemi con il modo in cui generiamo il file del calendario.',\n 'modal.crios.ical.steps': '
  1. Aprire Safari, ...
  2. Incollare il contenuto degli appunti e partire.
',\n 'modal.multidate.h': 'Questa è una serie di eventi',\n 'modal.multidate.text': 'Aggiungere le singole parti una per una:',\n 'date.status.cancelled': 'La data è stata annullata.',\n 'date.status.cancelled.cta': 'Aggiornare il calendario!',\n 'modal.subscribe.yahoo.h': 'Aggiungi il calendario a Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Aprire il calendario di Yahoo.
  2. Fare clic sulla scheda \"Azioni\".
  3. Selezionare \"Segui altri calendari\".
  4. Scegliere un nome e incollare l\\'URL dagli appunti nel campo URL.
',\n cancel: 'Annulla',\n },\n ko: {\n 'label.addtocalendar': '캘린더에 추가',\n 'label.icalfile': 'iCal 파일',\n close: '닫다',\n 'modal.button.default': '클릭 해주세요',\n 'modal.webview.ical.h': '브라우저 열기',\n 'modal.webview.ical.text': '불행히도 인앱 브라우저는 캘린더 파일을 생성하는 방식에 문제가 있습니다.',\n 'modal.clipboard.text': '매직 URL을 클립보드에 자동으로 복사했습니다.',\n 'modal.webview.ical.steps': '
  1. 휴대전화에서 다른 브라우저 열기, ...
  2. 클립보드 내용을 붙여넣고 이동합니다.
',\n 'modal.crios.ical.h': 'Safari 열기',\n 'modal.crios.ical.text': '불행히도 iOS의 Chrome은 캘린더 파일을 생성하는 방식에 문제가 있습니다.',\n 'modal.crios.ical.steps': '
  1. Safari 열기, ...
  2. 클립보드 내용을 붙여넣고 이동합니다.
',\n 'modal.multidate.h': '이벤트 시리즈입니다',\n 'modal.multidate.text': '개별 부품을 하나씩 추가:',\n 'date.status.cancelled': '이 날짜는 취소되었습니다.',\n 'date.status.cancelled.cta': '캘린더를 업데이트하세요!',\n 'modal.subscribe.yahoo.h': 'Yahoo에 캘린더 추가',\n 'modal.subscribe.yahoo.text': '
  1. Yahoo 캘린더를 엽니다.
  2. \"동작\" 탭을 클릭합니다.
  3. \"다른 일정관리 팔로우\"를 선택합니다.
  4. 이름을 선택하고 클립보드의 URL을 URL 필드에 붙여넣습니다.
',\n cancel: '취소',\n },\n vi: {\n 'label.addtocalendar': 'Thêm vào Lịch',\n 'label.icalfile': 'Tệp iCal',\n close: 'Đóng',\n 'modal.button.default': 'Nhấp vào đây',\n 'modal.webview.ical.h': 'Mở trình duyệt của bạn',\n 'modal.webview.ical.text': 'Rất tiếc, các trình duyệt trong ứng dụng gặp sự cố với cách chúng tôi tạo tệp lịch.',\n 'modal.clipboard.text': 'Chúng tôi đã tự động sao chép một URL ma thuật vào khay nhớ tạm của bạn.',\n 'modal.webview.ical.steps': '
  1. Mở trình duyệt khác trên điện thoại của bạn, ...
  2. Dán nội dung khay nhớ tạm và bắt đầu.
',\n 'modal.crios.ical.h': 'Mở Safari',\n 'modal.crios.ical.text': 'Rất tiếc, Chrome trên iOS gặp sự cố với cách chúng tôi tạo tệp lịch.',\n 'modal.crios.ical.steps': '
  1. Mở Safari, ...
  2. Dán nội dung khay nhớ tạm và bắt đầu.
',\n 'modal.multidate.h': 'Đây là một chuỗi sự kiện',\n 'modal.multidate.text': 'Thêm từng phần riêng lẻ một:',\n 'date.status.cancelled': 'Ngày này đã bị hủy.',\n 'date.status.cancelled.cta': 'Cập nhật lịch của bạn!',\n 'modal.subscribe.yahoo.h': 'Thêm lịch vào Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Mở Lịch Yahoo.
  2. Nhấp vào tab \"Hành động\".
  3. Chọn \"Theo dõi các Lịch khác\".
  4. Chọn tên và dán URL từ khay nhớ tạm của bạn vào trường URL.
',\n cancel: 'Hủy bỏ',\n },\n ro: {\n 'label.addtocalendar': 'Adauga In Calendar',\n 'label.icalfile': 'Fisier iCal',\n close: 'Inchide',\n 'modal.button.default': 'Apasa-ma',\n 'modal.webview.ical.h': 'Deschide browserul',\n 'modal.webview.ical.text': 'Din pacate, browserele din aplicatie au probleme cu generarea de fisiere pentru calendar.',\n 'modal.clipboard.text': 'Ti-am copiat automat un URL magic in clipboard',\n 'modal.webview.ical.steps': '
  1. Deschide un alt browser pe telefonul tau, ...
  2. Lipeste continutul din clipboard si continua.
',\n 'modal.crios.ical.h': 'Deschide Safari',\n 'modal.crios.ical.text': 'Din nefericire, Chrome pe iOS are probleme cu modalitatile prin care noi generam fisierele pentru scalendar.',\n 'modal.crios.ical.steps': '
  1. Deschides Safari, ...
  2. Lipeste continutul din clipboard si continua.
',\n 'modal.multidate.h': 'Aceasta este o serie de evenimente',\n 'modal.multidate.text': 'Adauga evenimentele individuale una cate una:',\n 'date.status.cancelled': 'Aceasta data a fost anulata.',\n 'date.status.cancelled.cta': 'Te rugam sa-ti updatezi calendarul!',\n 'modal.subscribe.yahoo.h': 'Adauga Calendar in Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Deschide acum calendarul Yahoo.
  2. Apasa pe tab-ul de \"Actiuni\".
  3. Apasa \"Urmareste alte calendare\".
  4. Seteaza un nume si lipeste continutul din clipboard in casuta cu url.
',\n cancel: 'Anuleaza',\n },\n};\nconst availableLanguages = Object.keys(i18nStrings);\nfunction atcb_translate_hook(identifier, data) {\n const searchKey = identifier.replace(/\\s+/g, '').toLowerCase();\n if (data.customLabels != null && data.customLabels[`${searchKey}`] != null && data.customLabels[`${searchKey}`] != '') {\n return atcb_rewrite_html_elements(data.customLabels[`${searchKey}`]);\n } else {\n return atcb_translate(identifier, data.language);\n }\n}\nfunction atcb_translate(identifier, language) {\n if (!language) {\n language = 'en';\n }\n if (i18nStrings[`${language}`][`${identifier}`]) {\n return i18nStrings[`${language}`][`${identifier}`];\n }\n return identifier;\n}\n\n\nlet atcbInitialGlobalInit = false;\nlet atcbBtnCount = 0;\nconst lightModeMutationObserver = [];\nconst template = `
`;\nif (isBrowser()) {\n class AddToCalendarButton extends HTMLElement {\n constructor() {\n super();\n const elem = document.createElement('template');\n elem.innerHTML = template;\n this.attachShadow({ mode: 'open', delegateFocus: true });\n this.shadowRoot.append(elem.content.cloneNode(true));\n this.initialized = false;\n this.data = {};\n this.error = false;\n }\n connectedCallback() {\n this.debug = this.hasAttribute('debug');\n if (this.getAttribute('proKey') != null && this.getAttribute('proKey') != '') {\n this.data = atcb_get_pro_data(this.getAttribute('proKey'));\n }\n if (this.data.name == null || this.data.name == '') {\n try {\n this.data = atcb_read_attributes(this);\n } catch (e) {\n if (this.debug) {\n atcb_render_debug_msg(this.shadowRoot, e);\n console.error(e);\n return;\n }\n }\n this.data.proKey = '';\n }\n atcbBtnCount = atcbBtnCount + 1;\n if (this.identifier && this.identifier != '') {\n this.data.identifier = this.identifier;\n } else {\n if (this.data.identifier && this.data.identifier != '') {\n if (!/^[\\w\\-_]+$/.test(this.data.identifier)) {\n this.data.identifier = '';\n if (this.debug) {\n console.warn('Add to Calendar Button generation: identifier invalid - using auto numbers instead');\n }\n } else {\n this.data.identifier = 'atcb-btn-' + this.data.identifier;\n }\n }\n if (this.data.identifier == null || this.data.identifier == '') {\n this.data.identifier = 'atcb-btn-' + atcbBtnCount;\n }\n this.identifier = this.data.identifier;\n }\n this.setAttribute('atcb-button-id', this.data.identifier);\n this.initialized = true;\n try {\n atcb_build_button(this.shadowRoot, this.data, this.debug);\n } catch (e) {\n if (this.debug) {\n atcb_render_debug_msg(this.shadowRoot, e);\n console.error(e);\n return;\n }\n }\n }\n disconnectedCallback() {\n atcb_cleanup(this.shadowRoot, this.data);\n if (this.debug) {\n console.log('Add to Calendar Button \"' + this.data.identifier + '\" destroyed');\n }\n if (document.querySelectorAll('add-to-calendar-button').length == 0) {\n atcbBtnCount = 0;\n }\n }\n static get observedAttributes() {\n const observeAdditionally = ['instance'];\n return atcbWcParams\n .map((element) => {\n return element.toLowerCase();\n })\n .concat(observeAdditionally);\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (this.data.proKey != null && this.data.proKey != '') {\n return;\n }\n if (!this.initialized) {\n return;\n }\n if (this.debug) {\n console.log(`${name}'s value has been changed from ${oldValue} to ${newValue}`);\n }\n atcb_cleanup(this.shadowRoot, this.data);\n this.data = {};\n this.shadowRoot.querySelector('.atcb-initialized').remove();\n const elem = document.createElement('template');\n elem.innerHTML = template;\n this.shadowRoot.append(elem.content.cloneNode(true));\n try {\n this.data = atcb_read_attributes(this);\n } catch (e) {\n if (this.debug) {\n atcb_render_debug_msg(this.shadowRoot, e);\n console.error(e);\n return;\n }\n }\n this.data.identifier = this.identifier;\n try {\n atcb_build_button(this.shadowRoot, this.data, this.debug);\n } catch (e) {\n if (this.debug) {\n atcb_render_debug_msg(this.shadowRoot, e);\n console.error(e);\n return;\n }\n }\n }\n }\n if (!customElements.get('add-to-calendar-button')) {\n customElements.define('add-to-calendar-button', AddToCalendarButton);\n }\n}\nfunction atcb_read_attributes(el) {\n let data = {};\n data['hideBranding'] = true;\n for (let i = 0; i < atcbWcParams.length; i++) {\n let attr = atcbWcParams[`${i}`];\n if (el.hasAttribute(`${attr}`)) {\n let inputVal = atcb_secure_content(el.getAttribute(`${attr}`).replace(/(\\r\\n|\\n|\\r)/g, ''), false);\n let val;\n if (atcbWcBooleanParams.includes(attr)) {\n if (inputVal == '') {\n val = true;\n } else {\n val = inputVal === 'true';\n }\n } else if (atcbWcObjectParams.includes(attr)) {\n val = JSON.parse(inputVal);\n } else if (atcbWcArrayParams.includes(attr)) {\n const cleanedInput = (function () {\n let newVal = inputVal;\n if (inputVal.includes('\"') || inputVal.includes(\"'\")) {\n if (inputVal.includes('[')) {\n newVal = inputVal.substring(2, inputVal.length - 2);\n } else {\n newVal = inputVal.substring(1, inputVal.length - 1);\n }\n }\n if (!inputVal.includes('|')) {\n newVal = newVal.replace(/\\s/g, '');\n }\n return newVal;\n })();\n if (cleanedInput.includes(\"','\")) {\n val = cleanedInput.split(\"','\");\n } else {\n val = cleanedInput.split('\",\"');\n }\n } else {\n val = inputVal;\n }\n data[`${attr}`] = val;\n }\n const identifierAttr = el.getAttribute('identifier');\n if (identifierAttr != null && identifierAttr != '') {\n data['identifier'] = atcb_secure_content(identifierAttr.replace(/(\\r\\n|\\n|\\r)/g, ''), false);\n }\n }\n if (!atcb_check_required(data, false)) {\n const slotInput = el.innerHTML;\n const atcbJsonInput = (function () {\n if (slotInput != '') {\n try {\n return JSON.parse(atcb_secure_content(slotInput.replace(/(\\r\\n|\\n|\\r)/g, ''), false));\n } catch (e) {\n throw new Error('Add to Calendar Button generation failed: JSON content provided, but badly formatted (in doubt, try some tool like https://jsonformatter.org/ to validate).\\r\\nError message: ' + e);\n }\n }\n return '';\n })();\n if (atcbJsonInput.length == 0) {\n throw new Error('Add to Calendar Button generation failed: no data provided or missing required fields - see console logs for details');\n }\n data = atcbJsonInput;\n }\n return data;\n}\nfunction atcb_build_button(host, data, debug = false) {\n if (atcb_check_required(data)) {\n data = atcb_decorate_data(data);\n if (atcb_validate(data)) {\n const rootObj = host.querySelector('.atcb-initialized');\n atcb_set_light_mode(host, data);\n rootObj.setAttribute('lang', data.language);\n atcb_load_css(host, rootObj, data.buttonStyle, data.inline, data.buttonsList, data.customCss);\n atcb_setup_state_management(data);\n atcb_set_global_event_listener(host, data);\n atcb_init_log(data.proKey, debug);\n atcb_generate_button(host, rootObj, data, debug);\n if (!data.hideRichData && data.name && data.dates[0].location && data.dates[0].startDate) {\n atcb_generate_rich_data(data, host.host);\n data.schemaEl = host.host.previousSibling;\n }\n atcb_log_event('initialization', data.identifier, data.identifier);\n } else if (debug) {\n atcb_render_debug_msg(host, 'Add to Calendar Button generation failed: invalid data; see console logs for details');\n }\n }\n}\nfunction atcb_cleanup(host, data) {\n atcb_close(host);\n atcb_unset_global_event_listener(data.identifier);\n if (data.schemaEl != null) {\n data.schemaEl.remove();\n }\n Array.from(host.querySelectorAll('.atcb-debug-error-msg'))\n .concat(Array.from(host.querySelectorAll('style')))\n .concat(Array.from(host.querySelectorAll('.atcb-button-wrapper')))\n .forEach((el) => el.remove());\n delete atcbStates[`${data.identifier}`];\n}\nfunction atcb_set_light_mode(shadowRoot, data) {\n shadowRoot.host.classList.remove('atcb-dark', 'atcb-light', 'atcb-bodyScheme');\n const hostLightMode = (function () {\n if (data.lightMode == 'bodyScheme') {\n if (document.body.classList.contains('atcb-dark') || document.documentElement.classList.contains('atcb-dark')) {\n return 'dark';\n } else {\n return 'light';\n }\n }\n return data.lightMode;\n })();\n shadowRoot.host.classList.add('atcb-' + hostLightMode);\n}\nfunction atcb_load_css(host, rootObj = null, style = '', inline = false, buttonsList = false, customCss = '') {\n if (!document.getElementById('atcb-global-style')) {\n const cssGlobalContent = document.createElement('style');\n cssGlobalContent.id = 'atcb-global-style';\n const scrollBarWidth = window.innerWidth - document.documentElement.clientWidth;\n cssGlobalContent.innerText = '.atcb-modal-no-scroll { overflow-y: hidden !important; -webkit-overflow-scrolling: touch; } body.atcb-modal-no-scroll { padding-right: ' + scrollBarWidth + 'px; }';\n document.head.append(cssGlobalContent);\n }\n if (customCss != '' && style == 'custom') {\n const placeholder = document.createElement('div');\n placeholder.style.cssText = 'width: 150px; height: 40px; border-radius: 200px; background-color: #777; opacity: .3;';\n host.prepend(placeholder);\n const cssUrl = customCss;\n const cssFile = document.createElement('link');\n cssFile.setAttribute('rel', 'stylesheet');\n cssFile.setAttribute('type', 'text/css');\n cssFile.setAttribute('href', cssUrl);\n host.prepend(cssFile);\n if (rootObj != null) {\n cssFile.onload = function () {\n placeholder.remove();\n if (inline) {\n rootObj.style.display = 'inline-block';\n } else {\n if (buttonsList) {\n rootObj.style.display = 'flex';\n rootObj.style.flexWrap = 'wrap';\n rootObj.style.justifyContent = 'center';\n } else {\n rootObj.style.display = 'block';\n }\n }\n };\n }\n return;\n }\n if (style != 'none' && atcbCssTemplate[`${style}`] != null) {\n const cssContent = document.createElement('style');\n const overrideDefaultCss = (function () {\n if (host.host.hasAttribute('styleLight')) {\n const output = ':host { ' + atcb_secure_content(host.host.getAttribute('styleLight').replace(/(\\r\\n|\\n|\\r)/g, ''), false) + ' }';\n return output;\n }\n return '';\n })();\n const overrideDarkCss = (function () {\n if (host.host.hasAttribute('styleDark')) {\n const output = ':host(.atcb-dark), :host-context(html.atcb-dark):host(.atcb-bodyScheme), :host-context(body.atcb-dark):host(.atcb-bodyScheme) { ' + atcb_secure_content(host.host.getAttribute('styleDark').replace(/(\\r\\n|\\n|\\r)/g, ''), false) + ' }';\n return output;\n }\n return '';\n })();\n cssContent.innerText = atcbCssTemplate[`${style}`] + overrideDefaultCss + overrideDarkCss;\n host.prepend(cssContent);\n }\n if (rootObj != null) {\n if (inline) {\n rootObj.style.display = 'inline-block';\n } else {\n if (buttonsList) {\n rootObj.style.display = 'flex';\n rootObj.style.flexWrap = 'wrap';\n rootObj.style.justifyContent = 'center';\n } else {\n rootObj.style.display = 'block';\n }\n }\n }\n}\nfunction atcb_render_debug_msg(host, error) {\n if (host.querySelector('.atcb-debug-error-msg')) return;\n const errorBanner = document.createElement('div');\n errorBanner.classList.add('atcb-debug-error-msg');\n errorBanner.style.cssText = 'color: #bf2e2e; font-size: 12px; font-weight: bold; padding: 12px 15px; border: 2px solid #bf2e2e; max-width: 180px; border-radius: 13px;';\n errorBanner.textContent = error;\n host.append(errorBanner);\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction atcb_action(data, triggerElement, keyboardTrigger = false) {\n data = atcb_secure_content(data);\n data.hideBranding = true;\n if (data.proKey != null && data.proKey != '') {\n data = atcb_get_pro_data(data.proKey);\n }\n data.debug = data.debug === 'true';\n if (!atcb_check_required(data)) {\n throw new Error('Add to Calendar Button generation failed: required data missing; see console logs');\n }\n data = atcb_decorate_data(data);\n let root = document.body;\n data.trigger = 'click';\n if (triggerElement) {\n root = triggerElement;\n if (triggerElement.id != null && triggerElement.id != '') {\n data.identifier = triggerElement.id;\n } else {\n if (data.identifier != null && data.identifier != '' && /^[\\w\\-_]+$/.test(data.identifier)) {\n data.identifier = 'atcb-btn-' + data.identifier;\n } else {\n data.identifier = 'atcb-btn-custom';\n }\n triggerElement.id = data.identifier;\n }\n if (data.listStyle == 'dropdown' || data.listStyle == 'dropdown-static') {\n data.listStyle = 'modal';\n }\n } else {\n data.identifier = 'atcb-btn-custom';\n data.listStyle = 'modal';\n }\n if (!atcb_validate(data)) {\n throw new Error('Add to Calendar Button generation (' + data.identifier + ') failed: invalid data; see console logs');\n }\n const oneOption = (function () {\n if (data.options.length === 1) {\n return true;\n }\n return false;\n })();\n const potentialExistingHost = document.getElementById('atcb-customTrigger-' + data.identifier + '-host');\n if (potentialExistingHost) {\n atcb_close(potentialExistingHost.shadowRoot, false);\n if (atcbStates[`${atcbStates['active']}`]) {\n delete atcbStates[`${atcbStates['active']}`];\n }\n potentialExistingHost.remove();\n }\n let host = document.createElement('div');\n host.id = 'atcb-customTrigger-' + data.identifier + '-host';\n if (root == document.body) {\n document.body.append(host);\n } else {\n root.after(host);\n }\n if (triggerElement) {\n const btnDim = triggerElement.getBoundingClientRect();\n host.style.position = 'relative';\n host.style.left = -btnDim.width + 'px';\n host.style.top = btnDim.height + 'px';\n }\n host.setAttribute('atcb-button-id', data.identifier);\n host.attachShadow({ mode: 'open', delegateFocus: true });\n const elem = document.createElement('template');\n elem.innerHTML = template;\n host.shadowRoot.append(elem.content.cloneNode(true));\n const rootObj = host.shadowRoot.querySelector('.atcb-initialized');\n atcb_setup_state_management(data);\n atcb_set_light_mode(host.shadowRoot, data);\n host.shadowRoot.querySelector('.atcb-initialized').setAttribute('lang', data.language);\n atcb_load_css(host.shadowRoot, rootObj, data.buttonStyle, false, false, data.customCss);\n atcb_set_global_event_listener(host.shadowRoot, data);\n atcb_log_event('initialization', data.identifier, data.identifier);\n if (oneOption) {\n atcb_generate_links(host.shadowRoot, data.options[0], data, 'all', keyboardTrigger);\n atcb_log_event('openSingletonLink', data.identifier, data.identifier);\n } else {\n atcb_toggle(host.shadowRoot, 'open', data, triggerElement, keyboardTrigger);\n }\n atcb_init_log(data.proKey, data.debug);\n if (data.debug) {\n console.log('Add to Calendar Button \"' + data.identifier + '\" triggered');\n }\n return data.identifier;\n}\nfunction atcb_setup_state_management(data) {\n const singleDates = [];\n for (let i = 0; i < data.options.length; i++) {\n singleDates[data.options[`${i}`]] = [];\n for (let id = 1; id <= data.dates.length; id++) {\n singleDates[data.options[`${i}`]].push(0);\n }\n }\n atcbStates[data.identifier] = singleDates;\n}\nfunction atcb_init_log(pro = '', debug = false) {\n if (!atcbInitialGlobalInit) {\n const versionOutput = (function () {\n if (debug) {\n return ' (version ' + atcbVersion + ')';\n }\n return '';\n })();\n if (pro != '') {\n console.log('Add to Calendar PRO script initialized' + versionOutput + ' | https://add-to-calendar-pro.com');\n } else {\n console.log('%cAdd to Calendar Button script initialized' + versionOutput, 'font-weight: bold;');\n console.log('see https://add-to-calendar-button.com for details');\n }\n atcbInitialGlobalInit = true;\n }\n}\nfunction atcb_get_pro_data(licenseKey) {\n const data = {};\n if (licenseKey != null && licenseKey != '') {\n data.proKey = licenseKey;\n data.identifier = licenseKey;\n console.error('Add to Calendar Button proKey invalid! Falling back to local data...');\n }\n return data;\n}\nfunction atcb_set_global_event_listener(host, data) {\n if (!isBrowser()) {\n return;\n }\n if (data.lightMode == 'bodyScheme') {\n lightModeMutationObserver[data.identifier] = new MutationObserver(function (mutationsList) {\n mutationsList.forEach((mutation) => {\n if (mutation.attributeName === 'class') {\n atcb_set_light_mode(host, data);\n }\n });\n });\n lightModeMutationObserver[data.identifier].observe(document.documentElement, { attributes: true });\n lightModeMutationObserver[data.identifier].observe(document.body, { attributes: true });\n }\n if (!atcbInitialGlobalInit && !data.blockInteraction) {\n document.addEventListener('keyup', atcb_global_listener_keyup);\n document.addEventListener('keydown', atcb_global_listener_keydown);\n window.addEventListener('resize', atcb_global_listener_resize);\n }\n}\nfunction atcb_global_listener_keyup(event) {\n const host = (function () {\n const root = document.querySelector('[atcb-button-id=\"' + atcbStates['active'] + '\"]');\n if (root) {\n return root.shadowRoot;\n }\n return null;\n })();\n if (host && event.key === 'Escape') {\n atcb_log_event('closeList', 'Ecs Hit', atcbStates['active']);\n atcb_toggle(host, 'close', '', '', true);\n }\n}\nfunction atcb_global_listener_keydown(event) {\n const host = (function () {\n const root = document.querySelector('[atcb-button-id=\"' + atcbStates['active'] + '\"]');\n const rootModal = document.getElementById(atcbStates['active'] + '-modal-host');\n if (rootModal) {\n return rootModal.shadowRoot;\n }\n if (root) {\n return root.shadowRoot;\n }\n return null;\n })();\n if (host && host.querySelector('.atcb-list') && (event.key === 'ArrowDown' || event.key === 'ArrowUp' || event.key === 'Tab')) {\n event.preventDefault();\n let targetFocus = 0;\n let currFocusOption = host.activeElement;\n const optionListCount = host.querySelectorAll('.atcb-list-item').length;\n if (currFocusOption && currFocusOption.classList.contains('atcb-list-item')) {\n if (event.key === 'ArrowDown' && currFocusOption.dataset.optionNumber < optionListCount) {\n targetFocus = parseInt(currFocusOption.dataset.optionNumber) + 1;\n } else if (event.key === 'Tab') {\n if (currFocusOption.dataset.optionNumber < optionListCount) {\n targetFocus = parseInt(currFocusOption.dataset.optionNumber) + 1;\n } else {\n targetFocus = 1;\n }\n } else if (event.key === 'ArrowUp' && currFocusOption.dataset.optionNumber >= 1) {\n targetFocus = parseInt(currFocusOption.dataset.optionNumber) - 1;\n }\n if (targetFocus > 0) {\n host.querySelector('.atcb-list-item[data-option-number=\"' + targetFocus + '\"]').focus();\n }\n } else {\n switch (event.key) {\n default:\n host.querySelector('.atcb-list-item[data-option-number=\"1\"]').focus();\n break;\n case 'ArrowUp':\n host.querySelector('.atcb-list-item[data-option-number=\"' + optionListCount + '\"]').focus();\n break;\n }\n }\n }\n}\nfunction atcb_global_listener_resize() {\n const host = (function () {\n const root = document.querySelector('[atcb-button-id=\"' + atcbStates['active'] + '\"]');\n const rootModal = document.getElementById(atcbStates['active'] + '-modal-host');\n if (rootModal) {\n return rootModal.shadowRoot;\n }\n if (root) {\n return root.shadowRoot;\n }\n return null;\n })();\n if (host) {\n const activeOverlay = host.querySelector('#atcb-bgoverlay');\n if (activeOverlay) {\n atcb_set_fullsize(activeOverlay);\n atcb_manage_body_scroll(host);\n }\n }\n}\nfunction atcb_unset_global_event_listener(identifier) {\n if (typeof lightModeMutationObserver[`${identifier}`] !== 'undefined') {\n lightModeMutationObserver[`${identifier}`].disconnect();\n }\n}\n\nexport { atcb_action };","/*! UIkit 3.15.24 | https://www.getuikit.com | (c) 2014 - 2023 YOOtheme | MIT License */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define('uikit', factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.UIkit = factory());\n})(this, (function () { 'use strict';\n\n const { hasOwnProperty, toString } = Object.prototype;\n\n function hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n }\n\n const hyphenateRe = /\\B([A-Z])/g;\n\n const hyphenate = memoize((str) => str.replace(hyphenateRe, '-$1').toLowerCase());\n\n const camelizeRe = /-(\\w)/g;\n\n const camelize = memoize((str) => str.replace(camelizeRe, toUpper));\n\n const ucfirst = memoize((str) =>\n str.length ? toUpper(null, str.charAt(0)) + str.slice(1) : '');\n\n\n function toUpper(_, c) {\n return c ? c.toUpperCase() : '';\n }\n\n function startsWith(str, search) {\n return str == null ? void 0 : str.startsWith == null ? void 0 : str.startsWith(search);\n }\n\n function endsWith(str, search) {\n return str == null ? void 0 : str.endsWith == null ? void 0 : str.endsWith(search);\n }\n\n function includes(obj, search) {\n return obj == null ? void 0 : obj.includes == null ? void 0 : obj.includes(search);\n }\n\n function findIndex(array, predicate) {\n return array == null ? void 0 : array.findIndex == null ? void 0 : array.findIndex(predicate);\n }\n\n const { isArray, from: toArray } = Array;\n const { assign } = Object;\n\n function isFunction(obj) {\n return typeof obj === 'function';\n }\n\n function isObject(obj) {\n return obj !== null && typeof obj === 'object';\n }\n\n function isPlainObject(obj) {\n return toString.call(obj) === '[object Object]';\n }\n\n function isWindow(obj) {\n return isObject(obj) && obj === obj.window;\n }\n\n function isDocument(obj) {\n return nodeType(obj) === 9;\n }\n\n function isNode(obj) {\n return nodeType(obj) >= 1;\n }\n\n function isElement(obj) {\n return nodeType(obj) === 1;\n }\n\n function nodeType(obj) {\n return !isWindow(obj) && isObject(obj) && obj.nodeType;\n }\n\n function isBoolean(value) {\n return typeof value === 'boolean';\n }\n\n function isString(value) {\n return typeof value === 'string';\n }\n\n function isNumber(value) {\n return typeof value === 'number';\n }\n\n function isNumeric(value) {\n return isNumber(value) || isString(value) && !isNaN(value - parseFloat(value));\n }\n\n function isEmpty(obj) {\n return !(isArray(obj) ? obj.length : isObject(obj) ? Object.keys(obj).length : false);\n }\n\n function isUndefined(value) {\n return value === void 0;\n }\n\n function toBoolean(value) {\n return isBoolean(value) ?\n value :\n value === 'true' || value === '1' || value === '' ?\n true :\n value === 'false' || value === '0' ?\n false :\n value;\n }\n\n function toNumber(value) {\n const number = Number(value);\n return isNaN(number) ? false : number;\n }\n\n function toFloat(value) {\n return parseFloat(value) || 0;\n }\n\n function toNode(element) {\n return toNodes(element)[0];\n }\n\n function toNodes(element) {\n return element && (isNode(element) ? [element] : Array.from(element).filter(isNode)) || [];\n }\n\n function toWindow(element) {var _element;\n if (isWindow(element)) {\n return element;\n }\n\n element = toNode(element);\n const document = isDocument(element) ? element : (_element = element) == null ? void 0 : _element.ownerDocument;\n\n return (document == null ? void 0 : document.defaultView) || window;\n }\n\n function isEqual(value, other) {\n return (\n value === other ||\n isObject(value) &&\n isObject(other) &&\n Object.keys(value).length === Object.keys(other).length &&\n each(value, (val, key) => val === other[key]));\n\n }\n\n function swap(value, a, b) {\n return value.replace(new RegExp(`${a}|${b}`, 'g'), (match) => match === a ? b : a);\n }\n\n function last(array) {\n return array[array.length - 1];\n }\n\n function each(obj, cb) {\n for (const key in obj) {\n if (false === cb(obj[key], key)) {\n return false;\n }\n }\n return true;\n }\n\n function sortBy$1(array, prop) {\n return array.\n slice().\n sort(({ [prop]: propA = 0 }, { [prop]: propB = 0 }) => propA > propB ? 1 : propB > propA ? -1 : 0);\n\n }\n\n function sumBy(array, iteratee) {\n return array.reduce(\n (sum, item) => sum + toFloat(isFunction(iteratee) ? iteratee(item) : item[iteratee]),\n 0);\n\n }\n\n function uniqueBy(array, prop) {\n const seen = new Set();\n return array.filter(({ [prop]: check }) => seen.has(check) ? false : seen.add(check));\n }\n\n function clamp(number, min = 0, max = 1) {\n return Math.min(Math.max(toNumber(number) || 0, min), max);\n }\n\n function noop() {}\n\n function intersectRect(...rects) {\n return [\n ['bottom', 'top'],\n ['right', 'left']].\n every(\n ([minProp, maxProp]) => Math.min(...rects.map(({ [minProp]: min }) => min)) -\n Math.max(...rects.map(({ [maxProp]: max }) => max)) > 0);\n\n }\n\n function pointInRect(point, rect) {\n return (\n point.x <= rect.right &&\n point.x >= rect.left &&\n point.y <= rect.bottom &&\n point.y >= rect.top);\n\n }\n\n function ratio(dimensions, prop, value) {\n const aProp = prop === 'width' ? 'height' : 'width';\n\n return {\n [aProp]: dimensions[prop] ?\n Math.round(value * dimensions[aProp] / dimensions[prop]) :\n dimensions[aProp],\n [prop]: value\n };\n }\n\n function contain(dimensions, maxDimensions) {\n dimensions = { ...dimensions };\n\n for (const prop in dimensions) {\n dimensions =\n dimensions[prop] > maxDimensions[prop] ?\n ratio(dimensions, prop, maxDimensions[prop]) :\n dimensions;\n }\n\n return dimensions;\n }\n\n function cover$1(dimensions, maxDimensions) {\n dimensions = contain(dimensions, maxDimensions);\n\n for (const prop in dimensions) {\n dimensions =\n dimensions[prop] < maxDimensions[prop] ?\n ratio(dimensions, prop, maxDimensions[prop]) :\n dimensions;\n }\n\n return dimensions;\n }\n\n const Dimensions = { ratio, contain, cover: cover$1 };\n\n function getIndex(i, elements, current = 0, finite = false) {\n elements = toNodes(elements);\n\n const { length } = elements;\n\n if (!length) {\n return -1;\n }\n\n i = isNumeric(i) ?\n toNumber(i) :\n i === 'next' ?\n current + 1 :\n i === 'previous' ?\n current - 1 :\n elements.indexOf(toNode(i));\n\n if (finite) {\n return clamp(i, 0, length - 1);\n }\n\n i %= length;\n\n return i < 0 ? i + length : i;\n }\n\n function memoize(fn) {\n const cache = Object.create(null);\n return (key) => cache[key] || (cache[key] = fn(key));\n }\n\n class Deferred {\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.reject = reject;\n this.resolve = resolve;\n });\n }\n }\n\n function attr(element, name, value) {\n if (isObject(name)) {\n for (const key in name) {\n attr(element, key, name[key]);\n }\n return;\n }\n\n if (isUndefined(value)) {var _toNode;\n return (_toNode = toNode(element)) == null ? void 0 : _toNode.getAttribute(name);\n } else {\n for (const el of toNodes(element)) {\n if (isFunction(value)) {\n value = value.call(el, attr(el, name));\n }\n\n if (value === null) {\n removeAttr(el, name);\n } else {\n el.setAttribute(name, value);\n }\n }\n }\n }\n\n function hasAttr(element, name) {\n return toNodes(element).some((element) => element.hasAttribute(name));\n }\n\n function removeAttr(element, name) {\n toNodes(element).forEach((element) => element.removeAttribute(name));\n }\n\n function data(element, attribute) {\n for (const name of [attribute, `data-${attribute}`]) {\n if (hasAttr(element, name)) {\n return attr(element, name);\n }\n }\n }\n\n const voidElements = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true\n };\n function isVoidElement(element) {\n return toNodes(element).some((element) => voidElements[element.tagName.toLowerCase()]);\n }\n\n function isVisible(element) {\n return toNodes(element).some(\n (element) => element.offsetWidth || element.offsetHeight || element.getClientRects().length);\n\n }\n\n const selInput = 'input,select,textarea,button';\n function isInput(element) {\n return toNodes(element).some((element) => matches(element, selInput));\n }\n\n const selFocusable = `${selInput},a[href],[tabindex]`;\n function isFocusable(element) {\n return matches(element, selFocusable);\n }\n\n function parent(element) {var _toNode;\n return (_toNode = toNode(element)) == null ? void 0 : _toNode.parentElement;\n }\n\n function filter(element, selector) {\n return toNodes(element).filter((element) => matches(element, selector));\n }\n\n function matches(element, selector) {\n return toNodes(element).some((element) => element.matches(selector));\n }\n\n function closest(element, selector) {\n return isElement(element) ?\n element.closest(startsWith(selector, '>') ? selector.slice(1) : selector) :\n toNodes(element).\n map((element) => closest(element, selector)).\n filter(Boolean);\n }\n\n function within(element, selector) {\n return isString(selector) ?\n !!closest(element, selector) :\n toNode(selector).contains(toNode(element));\n }\n\n function parents(element, selector) {\n const elements = [];\n\n while (element = parent(element)) {\n if (!selector || matches(element, selector)) {\n elements.push(element);\n }\n }\n\n return elements;\n }\n\n function children(element, selector) {\n element = toNode(element);\n const children = element ? toNodes(element.children) : [];\n return selector ? filter(children, selector) : children;\n }\n\n function index(element, ref) {\n return ref ? toNodes(element).indexOf(toNode(ref)) : children(parent(element)).indexOf(element);\n }\n\n function query(selector, context) {\n return find(selector, getContext(selector, context));\n }\n\n function queryAll(selector, context) {\n return findAll(selector, getContext(selector, context));\n }\n\n function find(selector, context) {\n return toNode(_query(selector, toNode(context), 'querySelector'));\n }\n\n function findAll(selector, context) {\n return toNodes(_query(selector, toNode(context), 'querySelectorAll'));\n }\n\n const contextSelectorRe = /(^|[^\\\\],)\\s*[!>+~-]/;\n const isContextSelector = memoize((selector) => selector.match(contextSelectorRe));\n\n function getContext(selector, context = document) {\n return isString(selector) && isContextSelector(selector) || isDocument(context) ?\n context :\n context.ownerDocument;\n }\n\n const contextSanitizeRe = /([!>+~-])(?=\\s+[!>+~-]|\\s*$)/g;\n const sanatize = memoize((selector) => selector.replace(contextSanitizeRe, '$1 *'));\n\n function _query(selector, context = document, queryFn) {\n if (!selector || !isString(selector)) {\n return selector;\n }\n\n selector = sanatize(selector);\n\n if (isContextSelector(selector)) {\n const split = splitSelector(selector);\n selector = '';\n for (let sel of split) {\n let ctx = context;\n\n if (sel[0] === '!') {\n const selectors = sel.substr(1).trim().split(' ');\n ctx = closest(parent(context), selectors[0]);\n sel = selectors.slice(1).join(' ').trim();\n if (!sel.length && split.length === 1) {\n return ctx;\n }\n }\n\n if (sel[0] === '-') {\n const selectors = sel.substr(1).trim().split(' ');\n const prev = (ctx || context).previousElementSibling;\n ctx = matches(prev, sel.substr(1)) ? prev : null;\n sel = selectors.slice(1).join(' ');\n }\n\n if (ctx) {\n selector += `${selector ? ',' : ''}${domPath(ctx)} ${sel}`;\n }\n }\n\n context = document;\n }\n\n try {\n return context[queryFn](selector);\n } catch (e) {\n return null;\n }\n }\n\n const selectorRe = /.*?[^\\\\](?:,|$)/g;\n\n const splitSelector = memoize((selector) =>\n selector.match(selectorRe).map((selector) => selector.replace(/,$/, '').trim()));\n\n\n function domPath(element) {\n const names = [];\n while (element.parentNode) {\n const id = attr(element, 'id');\n if (id) {\n names.unshift(`#${escape(id)}`);\n break;\n } else {\n let { tagName } = element;\n if (tagName !== 'HTML') {\n tagName += `:nth-child(${index(element) + 1})`;\n }\n names.unshift(tagName);\n element = element.parentNode;\n }\n }\n return names.join(' > ');\n }\n\n function escape(css) {\n return isString(css) ? CSS.escape(css) : '';\n }\n\n function on(...args) {\n let [targets, types, selector, listener, useCapture = false] = getArgs(args);\n\n if (listener.length > 1) {\n listener = detail(listener);\n }\n\n if (useCapture != null && useCapture.self) {\n listener = selfFilter(listener);\n }\n\n if (selector) {\n listener = delegate(selector, listener);\n }\n\n for (const type of types) {\n for (const target of targets) {\n target.addEventListener(type, listener, useCapture);\n }\n }\n\n return () => off(targets, types, listener, useCapture);\n }\n\n function off(...args) {\n let [targets, types,, listener, useCapture = false] = getArgs(args);\n for (const type of types) {\n for (const target of targets) {\n target.removeEventListener(type, listener, useCapture);\n }\n }\n }\n\n function once(...args) {\n const [element, types, selector, listener, useCapture = false, condition] = getArgs(args);\n const off = on(\n element,\n types,\n selector,\n (e) => {\n const result = !condition || condition(e);\n if (result) {\n off();\n listener(e, result);\n }\n },\n useCapture);\n\n\n return off;\n }\n\n function trigger(targets, event, detail) {\n return toEventTargets(targets).every((target) => target.dispatchEvent(createEvent(event, true, true, detail)));\n\n }\n\n function createEvent(e, bubbles = true, cancelable = false, detail) {\n if (isString(e)) {\n e = new CustomEvent(e, { bubbles, cancelable, detail });\n }\n\n return e;\n }\n\n function getArgs(args) {\n // Event targets\n args[0] = toEventTargets(args[0]);\n\n // Event types\n if (isString(args[1])) {\n args[1] = args[1].split(' ');\n }\n\n // Delegate?\n if (isFunction(args[2])) {\n args.splice(2, 0, false);\n }\n\n return args;\n }\n\n function delegate(selector, listener) {\n return (e) => {\n const current =\n selector[0] === '>' ?\n findAll(selector, e.currentTarget).\n reverse().\n filter((element) => within(e.target, element))[0] :\n closest(e.target, selector);\n\n if (current) {\n e.current = current;\n listener.call(this, e);\n }\n };\n }\n\n function detail(listener) {\n return (e) => isArray(e.detail) ? listener(e, ...e.detail) : listener(e);\n }\n\n function selfFilter(listener) {\n return function (e) {\n if (e.target === e.currentTarget || e.target === e.current) {\n return listener.call(null, e);\n }\n };\n }\n\n function isEventTarget(target) {\n return target && 'addEventListener' in target;\n }\n\n function toEventTarget(target) {\n return isEventTarget(target) ? target : toNode(target);\n }\n\n function toEventTargets(target) {\n return isArray(target) ?\n target.map(toEventTarget).filter(Boolean) :\n isString(target) ?\n findAll(target) :\n isEventTarget(target) ?\n [target] :\n toNodes(target);\n }\n\n function isTouch(e) {\n return e.pointerType === 'touch' || !!e.touches;\n }\n\n function getEventPos(e) {var _e$touches, _e$changedTouches;\n const { clientX: x, clientY: y } = ((_e$touches = e.touches) == null ? void 0 : _e$touches[0]) || ((_e$changedTouches = e.changedTouches) == null ? void 0 : _e$changedTouches[0]) || e;\n\n return { x, y };\n }\n\n function ajax(url, options) {\n const env = {\n data: null,\n method: 'GET',\n headers: {},\n xhr: new XMLHttpRequest(),\n beforeSend: noop,\n responseType: '',\n ...options\n };\n return Promise.resolve().\n then(() => env.beforeSend(env)).\n then(() => send(url, env));\n }\n\n function send(url, env) {\n return new Promise((resolve, reject) => {\n const { xhr } = env;\n\n for (const prop in env) {\n if (prop in xhr) {\n try {\n xhr[prop] = env[prop];\n } catch (e) {\n\n // noop\n }}\n }\n\n xhr.open(env.method.toUpperCase(), url);\n\n for (const header in env.headers) {\n xhr.setRequestHeader(header, env.headers[header]);\n }\n\n on(xhr, 'load', () => {\n if (xhr.status === 0 || xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {\n resolve(xhr);\n } else {\n reject(\n assign(Error(xhr.statusText), {\n xhr,\n status: xhr.status\n }));\n\n }\n });\n\n on(xhr, 'error', () => reject(assign(Error('Network Error'), { xhr })));\n on(xhr, 'timeout', () => reject(assign(Error('Network Timeout'), { xhr })));\n\n xhr.send(env.data);\n });\n }\n\n function getImage(src, srcset, sizes) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n\n img.onerror = (e) => {\n reject(e);\n };\n img.onload = () => {\n resolve(img);\n };\n\n sizes && (img.sizes = sizes);\n srcset && (img.srcset = srcset);\n img.src = src;\n });\n }\n\n const cssNumber = {\n 'animation-iteration-count': true,\n 'column-count': true,\n 'fill-opacity': true,\n 'flex-grow': true,\n 'flex-shrink': true,\n 'font-weight': true,\n 'line-height': true,\n opacity: true,\n order: true,\n orphans: true,\n 'stroke-dasharray': true,\n 'stroke-dashoffset': true,\n widows: true,\n 'z-index': true,\n zoom: true\n };\n\n function css(element, property, value, priority = '') {\n const elements = toNodes(element);\n for (const element of elements) {\n if (isString(property)) {\n property = propName(property);\n\n if (isUndefined(value)) {\n return getComputedStyle(element).getPropertyValue(property);\n } else {\n element.style.setProperty(\n property,\n isNumeric(value) && !cssNumber[property] ?\n `${value}px` :\n value || isNumber(value) ?\n value :\n '',\n priority);\n\n }\n } else if (isArray(property)) {\n const props = {};\n for (const prop of property) {\n props[prop] = css(element, prop);\n }\n return props;\n } else if (isObject(property)) {\n priority = value;\n each(property, (value, property) => css(element, property, value, priority));\n }\n }\n return elements[0];\n }\n\n // https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-setproperty\n const propName = memoize((name) => vendorPropName(name));\n\n function vendorPropName(name) {\n if (startsWith(name, '--')) {\n return name;\n }\n\n name = hyphenate(name);\n\n const { style } = document.documentElement;\n\n if (name in style) {\n return name;\n }\n\n for (const prefix of ['webkit', 'moz']) {\n const prefixedName = `-${prefix}-${name}`;\n if (prefixedName in style) {\n return prefixedName;\n }\n }\n }\n\n function addClass(element, ...args) {\n apply$1(element, args, 'add');\n }\n\n function removeClass(element, ...args) {\n apply$1(element, args, 'remove');\n }\n\n function removeClasses(element, cls) {\n attr(element, 'class', (value) => (value || '').replace(new RegExp(`\\\\b${cls}\\\\b\\\\s?`, 'g'), ''));\n\n }\n\n function replaceClass(element, ...args) {\n args[0] && removeClass(element, args[0]);\n args[1] && addClass(element, args[1]);\n }\n\n function hasClass(element, cls) {\n [cls] = getClasses(cls);\n return !!cls && toNodes(element).some((node) => node.classList.contains(cls));\n }\n\n function toggleClass(element, cls, force) {\n const classes = getClasses(cls);\n\n if (!isUndefined(force)) {\n force = !!force;\n }\n\n for (const node of toNodes(element)) {\n for (const cls of classes) {\n node.classList.toggle(cls, force);\n }\n }\n }\n\n function apply$1(element, args, fn) {\n args = args.reduce((args, arg) => args.concat(getClasses(arg)), []);\n\n for (const node of toNodes(element)) {\n node.classList[fn](...args);\n }\n }\n\n function getClasses(str) {\n return String(str).split(/\\s|,/).filter(Boolean);\n }\n\n function transition$1(element, props, duration = 400, timing = 'linear') {\n duration = Math.round(duration);\n return Promise.all(\n toNodes(element).map(\n (element) => new Promise((resolve, reject) => {\n for (const name in props) {\n const value = css(element, name);\n if (value === '') {\n css(element, name, value);\n }\n }\n\n const timer = setTimeout(() => trigger(element, 'transitionend'), duration);\n\n once(\n element,\n 'transitionend transitioncanceled',\n ({ type }) => {\n clearTimeout(timer);\n removeClass(element, 'uk-transition');\n css(element, {\n transitionProperty: '',\n transitionDuration: '',\n transitionTimingFunction: ''\n });\n type === 'transitioncanceled' ? reject() : resolve(element);\n },\n { self: true });\n\n\n addClass(element, 'uk-transition');\n css(element, {\n transitionProperty: Object.keys(props).map(propName).join(','),\n transitionDuration: `${duration}ms`,\n transitionTimingFunction: timing,\n ...props\n });\n })));\n\n\n }\n\n const Transition = {\n start: transition$1,\n\n async stop(element) {\n trigger(element, 'transitionend');\n await Promise.resolve();\n },\n\n async cancel(element) {\n trigger(element, 'transitioncanceled');\n await Promise.resolve();\n },\n\n inProgress(element) {\n return hasClass(element, 'uk-transition');\n }\n };\n\n const animationPrefix = 'uk-animation-';\n\n function animate$2(element, animation, duration = 200, origin, out) {\n return Promise.all(\n toNodes(element).map(\n (element) => new Promise((resolve, reject) => {\n trigger(element, 'animationcanceled');\n const timer = setTimeout(() => trigger(element, 'animationend'), duration);\n\n once(\n element,\n 'animationend animationcanceled',\n ({ type }) => {\n clearTimeout(timer);\n\n type === 'animationcanceled' ? reject() : resolve(element);\n\n css(element, 'animationDuration', '');\n removeClasses(element, `${animationPrefix}\\\\S*`);\n },\n { self: true });\n\n\n css(element, 'animationDuration', `${duration}ms`);\n addClass(element, animation, animationPrefix + (out ? 'leave' : 'enter'));\n\n if (startsWith(animation, animationPrefix)) {\n origin && addClass(element, `uk-transform-origin-${origin}`);\n out && addClass(element, `${animationPrefix}reverse`);\n }\n })));\n\n\n }\n\n const inProgressRe = new RegExp(`${animationPrefix}(enter|leave)`);\n\n const Animation = {\n in: animate$2,\n\n out(element, animation, duration, origin) {\n return animate$2(element, animation, duration, origin, true);\n },\n\n inProgress(element) {\n return inProgressRe.test(attr(element, 'class'));\n },\n\n cancel(element) {\n trigger(element, 'animationcanceled');\n }\n };\n\n function ready(fn) {\n if (document.readyState !== 'loading') {\n fn();\n return;\n }\n\n once(document, 'DOMContentLoaded', fn);\n }\n\n function isTag(element, ...tagNames) {\n return tagNames.some((tagName) => {var _element$tagName;return (element == null ? void 0 : (_element$tagName = element.tagName) == null ? void 0 : _element$tagName.toLowerCase()) === tagName.toLowerCase();});\n }\n\n function empty(element) {\n element = $(element);\n element.innerHTML = '';\n return element;\n }\n\n function html(parent, html) {\n return isUndefined(html) ? $(parent).innerHTML : append(empty(parent), html);\n }\n\n const prepend = applyFn('prepend');\n const append = applyFn('append');\n const before = applyFn('before');\n const after = applyFn('after');\n\n function applyFn(fn) {\n return function (ref, element) {var _$;\n const nodes = toNodes(isString(element) ? fragment(element) : element);\n (_$ = $(ref)) == null ? void 0 : _$[fn](...nodes);\n return unwrapSingle(nodes);\n };\n }\n\n function remove$1(element) {\n toNodes(element).forEach((element) => element.remove());\n }\n\n function wrapAll(element, structure) {\n structure = toNode(before(element, structure));\n\n while (structure.firstChild) {\n structure = structure.firstChild;\n }\n\n append(structure, element);\n\n return structure;\n }\n\n function wrapInner(element, structure) {\n return toNodes(\n toNodes(element).map((element) => element.hasChildNodes() ?\n wrapAll(toNodes(element.childNodes), structure) :\n append(element, structure)));\n\n\n }\n\n function unwrap(element) {\n toNodes(element).\n map(parent).\n filter((value, index, self) => self.indexOf(value) === index).\n forEach((parent) => parent.replaceWith(...parent.childNodes));\n }\n\n const fragmentRe = /^\\s*<(\\w+|!)[^>]*>/;\n const singleTagRe = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/;\n\n function fragment(html) {\n const matches = singleTagRe.exec(html);\n if (matches) {\n return document.createElement(matches[1]);\n }\n\n const container = document.createElement('div');\n if (fragmentRe.test(html)) {\n container.insertAdjacentHTML('beforeend', html.trim());\n } else {\n container.textContent = html;\n }\n\n return unwrapSingle(container.childNodes);\n }\n\n function unwrapSingle(nodes) {\n return nodes.length > 1 ? nodes : nodes[0];\n }\n\n function apply(node, fn) {\n if (!isElement(node)) {\n return;\n }\n\n fn(node);\n node = node.firstElementChild;\n while (node) {\n const next = node.nextElementSibling;\n apply(node, fn);\n node = next;\n }\n }\n\n function $(selector, context) {\n return isHtml(selector) ? toNode(fragment(selector)) : find(selector, context);\n }\n\n function $$(selector, context) {\n return isHtml(selector) ? toNodes(fragment(selector)) : findAll(selector, context);\n }\n\n function isHtml(str) {\n return isString(str) && startsWith(str.trim(), '<');\n }\n\n const dirs$1 = {\n width: ['left', 'right'],\n height: ['top', 'bottom']\n };\n\n function dimensions(element) {\n const rect = isElement(element) ?\n toNode(element).getBoundingClientRect() :\n { height: height(element), width: width(element), top: 0, left: 0 };\n\n return {\n height: rect.height,\n width: rect.width,\n top: rect.top,\n left: rect.left,\n bottom: rect.top + rect.height,\n right: rect.left + rect.width\n };\n }\n\n function offset(element, coordinates) {\n const currentOffset = dimensions(element);\n\n if (element) {\n const { scrollY, scrollX } = toWindow(element);\n const offsetBy = { height: scrollY, width: scrollX };\n\n for (const dir in dirs$1) {\n for (const prop of dirs$1[dir]) {\n currentOffset[prop] += offsetBy[dir];\n }\n }\n }\n\n if (!coordinates) {\n return currentOffset;\n }\n\n const pos = css(element, 'position');\n\n each(css(element, ['left', 'top']), (value, prop) => css(\n element,\n prop,\n coordinates[prop] -\n currentOffset[prop] +\n toFloat(pos === 'absolute' && value === 'auto' ? position(element)[prop] : value)));\n\n\n }\n\n function position(element) {\n let { top, left } = offset(element);\n\n const {\n ownerDocument: { body, documentElement },\n offsetParent\n } = toNode(element);\n let parent = offsetParent || documentElement;\n\n while (\n parent && (\n parent === body || parent === documentElement) &&\n css(parent, 'position') === 'static')\n {\n parent = parent.parentNode;\n }\n\n if (isElement(parent)) {\n const parentOffset = offset(parent);\n top -= parentOffset.top + toFloat(css(parent, 'borderTopWidth'));\n left -= parentOffset.left + toFloat(css(parent, 'borderLeftWidth'));\n }\n\n return {\n top: top - toFloat(css(element, 'marginTop')),\n left: left - toFloat(css(element, 'marginLeft'))\n };\n }\n\n function offsetPosition(element) {\n element = toNode(element);\n\n const offset = [element.offsetTop, element.offsetLeft];\n\n while (element = element.offsetParent) {\n offset[0] += element.offsetTop + toFloat(css(element, `borderTopWidth`));\n offset[1] += element.offsetLeft + toFloat(css(element, `borderLeftWidth`));\n\n if (css(element, 'position') === 'fixed') {\n const win = toWindow(element);\n offset[0] += win.scrollY;\n offset[1] += win.scrollX;\n return offset;\n }\n }\n\n return offset;\n }\n\n const height = dimension('height');\n const width = dimension('width');\n\n function dimension(prop) {\n const propName = ucfirst(prop);\n return (element, value) => {\n if (isUndefined(value)) {\n if (isWindow(element)) {\n return element[`inner${propName}`];\n }\n\n if (isDocument(element)) {\n const doc = element.documentElement;\n return Math.max(doc[`offset${propName}`], doc[`scroll${propName}`]);\n }\n\n element = toNode(element);\n\n value = css(element, prop);\n value = value === 'auto' ? element[`offset${propName}`] : toFloat(value) || 0;\n\n return value - boxModelAdjust(element, prop);\n } else {\n return css(\n element,\n prop,\n !value && value !== 0 ? '' : +value + boxModelAdjust(element, prop) + 'px');\n\n }\n };\n }\n\n function boxModelAdjust(element, prop, sizing = 'border-box') {\n return css(element, 'boxSizing') === sizing ?\n sumBy(\n dirs$1[prop].map(ucfirst),\n (prop) => toFloat(css(element, `padding${prop}`)) +\n toFloat(css(element, `border${prop}Width`))) :\n\n 0;\n }\n\n function flipPosition(pos) {\n for (const dir in dirs$1) {\n for (const i in dirs$1[dir]) {\n if (dirs$1[dir][i] === pos) {\n return dirs$1[dir][1 - i];\n }\n }\n }\n return pos;\n }\n\n function toPx(value, property = 'width', element = window, offsetDim = false) {\n if (!isString(value)) {\n return toFloat(value);\n }\n\n return sumBy(parseCalc(value), (value) => {\n const unit = parseUnit(value);\n\n return unit ?\n percent(\n unit === 'vh' ?\n getViewportHeight() :\n unit === 'vw' ?\n width(toWindow(element)) :\n offsetDim ?\n element[`offset${ucfirst(property)}`] :\n dimensions(element)[property],\n value) :\n\n value;\n });\n }\n\n const calcRe = /-?\\d+(?:\\.\\d+)?(?:v[wh]|%|px)?/g;\n const parseCalc = memoize((calc) => calc.toString().replace(/\\s/g, '').match(calcRe) || []);\n const unitRe = /(?:v[hw]|%)$/;\n const parseUnit = memoize((str) => (str.match(unitRe) || [])[0]);\n\n function percent(base, value) {\n return base * toFloat(value) / 100;\n }\n\n let vh;\n let vhEl;\n\n function getViewportHeight() {\n if (vh) {\n return vh;\n }\n if (!vhEl) {\n vhEl = $('
');\n css(vhEl, {\n height: '100vh',\n position: 'fixed'\n });\n on(window, 'resize', () => vh = null);\n }\n\n append(document.body, vhEl);\n vh = vhEl.clientHeight;\n remove$1(vhEl);\n return vh;\n }\n\n const inBrowser = typeof window !== 'undefined';\n const isRtl = inBrowser && document.dir === 'rtl';\n\n const hasTouch = inBrowser && 'ontouchstart' in window;\n const hasPointerEvents = inBrowser && window.PointerEvent;\n\n const pointerDown = hasPointerEvents ? 'pointerdown' : hasTouch ? 'touchstart' : 'mousedown';\n const pointerMove = hasPointerEvents ? 'pointermove' : hasTouch ? 'touchmove' : 'mousemove';\n const pointerUp = hasPointerEvents ? 'pointerup' : hasTouch ? 'touchend' : 'mouseup';\n const pointerEnter = hasPointerEvents ? 'pointerenter' : hasTouch ? '' : 'mouseenter';\n const pointerLeave = hasPointerEvents ? 'pointerleave' : hasTouch ? '' : 'mouseleave';\n const pointerCancel = hasPointerEvents ? 'pointercancel' : 'touchcancel';\n\n /*\n Based on:\n Copyright (c) 2016 Wilson Page wilsonpage@me.com\n https://github.com/wilsonpage/fastdom\n */\n\n const fastdom = {\n reads: [],\n writes: [],\n\n read(task) {\n this.reads.push(task);\n scheduleFlush();\n return task;\n },\n\n write(task) {\n this.writes.push(task);\n scheduleFlush();\n return task;\n },\n\n clear(task) {\n remove(this.reads, task);\n remove(this.writes, task);\n },\n\n flush\n };\n\n function flush(recursion) {\n runTasks(fastdom.reads);\n runTasks(fastdom.writes.splice(0));\n\n fastdom.scheduled = false;\n\n if (fastdom.reads.length || fastdom.writes.length) {\n scheduleFlush(recursion + 1);\n }\n }\n\n const RECURSION_LIMIT = 4;\n function scheduleFlush(recursion) {\n if (fastdom.scheduled) {\n return;\n }\n\n fastdom.scheduled = true;\n if (recursion && recursion < RECURSION_LIMIT) {\n Promise.resolve().then(() => flush(recursion));\n } else {\n requestAnimationFrame(() => flush(1));\n }\n }\n\n function runTasks(tasks) {\n let task;\n while (task = tasks.shift()) {\n try {\n task();\n } catch (e) {\n console.error(e);\n }\n }\n }\n\n function remove(array, item) {\n const index = array.indexOf(item);\n return ~index && array.splice(index, 1);\n }\n\n function MouseTracker() {}\n\n MouseTracker.prototype = {\n positions: [],\n\n init() {\n this.positions = [];\n\n let position;\n this.unbind = on(document, 'mousemove', (e) => position = getEventPos(e));\n this.interval = setInterval(() => {\n if (!position) {\n return;\n }\n\n this.positions.push(position);\n\n if (this.positions.length > 5) {\n this.positions.shift();\n }\n }, 50);\n },\n\n cancel() {var _this$unbind;\n (_this$unbind = this.unbind) == null ? void 0 : _this$unbind.call(this);\n this.interval && clearInterval(this.interval);\n },\n\n movesTo(target) {\n if (this.positions.length < 2) {\n return false;\n }\n\n const p = target.getBoundingClientRect();\n const { left, right, top, bottom } = p;\n\n const [prevPosition] = this.positions;\n const position = last(this.positions);\n const path = [prevPosition, position];\n\n if (pointInRect(position, p)) {\n return false;\n }\n\n const diagonals = [\n [\n { x: left, y: top },\n { x: right, y: bottom }],\n\n [\n { x: left, y: bottom },\n { x: right, y: top }]];\n\n\n\n return diagonals.some((diagonal) => {\n const intersection = intersect(path, diagonal);\n return intersection && pointInRect(intersection, p);\n });\n }\n };\n\n // Inspired by http://paulbourke.net/geometry/pointlineplane/\n function intersect([{ x: x1, y: y1 }, { x: x2, y: y2 }], [{ x: x3, y: y3 }, { x: x4, y: y4 }]) {\n const denominator = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1);\n\n // Lines are parallel\n if (denominator === 0) {\n return false;\n }\n\n const ua = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)) / denominator;\n\n if (ua < 0) {\n return false;\n }\n\n // Return an object with the x and y coordinates of the intersection\n return { x: x1 + ua * (x2 - x1), y: y1 + ua * (y2 - y1) };\n }\n\n function observeIntersection(targets, cb, options, intersecting = true) {\n const observer = new IntersectionObserver(\n intersecting ?\n (entries, observer) => {\n if (entries.some((entry) => entry.isIntersecting)) {\n cb(entries, observer);\n }\n } :\n cb,\n options);\n\n for (const el of toNodes(targets)) {\n observer.observe(el);\n }\n\n return observer;\n }\n\n const hasResizeObserver = inBrowser && window.ResizeObserver;\n function observeResize(targets, cb, options = { box: 'border-box' }) {\n if (hasResizeObserver) {\n return observe(ResizeObserver, targets, cb, options);\n }\n\n // Fallback Safari < 13.1\n initResizeListener();\n listeners.add(cb);\n\n return {\n disconnect() {\n listeners.delete(cb);\n }\n };\n }\n\n let listeners;\n function initResizeListener() {\n if (listeners) {\n return;\n }\n\n listeners = new Set();\n\n // throttle 'resize'\n let pendingResize;\n const handleResize = () => {\n if (pendingResize) {\n return;\n }\n pendingResize = true;\n requestAnimationFrame(() => pendingResize = false);\n for (const listener of listeners) {\n listener();\n }\n };\n\n on(window, 'load resize', handleResize);\n on(document, 'loadedmetadata load', handleResize, true);\n }\n\n function observeMutation(targets, cb, options) {\n return observe(MutationObserver, targets, cb, options);\n }\n\n function observe(Observer, targets, cb, options) {\n const observer = new Observer(cb);\n for (const el of toNodes(targets)) {\n observer.observe(el, options);\n }\n\n return observer;\n }\n\n const strats = {};\n\n strats.events =\n strats.created =\n strats.beforeConnect =\n strats.connected =\n strats.beforeDisconnect =\n strats.disconnected =\n strats.destroy =\n concatStrat;\n\n // args strategy\n strats.args = function (parentVal, childVal) {\n return childVal !== false && concatStrat(childVal || parentVal);\n };\n\n // update strategy\n strats.update = function (parentVal, childVal) {\n return sortBy$1(\n concatStrat(parentVal, isFunction(childVal) ? { read: childVal } : childVal),\n 'order');\n\n };\n\n // property strategy\n strats.props = function (parentVal, childVal) {\n if (isArray(childVal)) {\n const value = {};\n for (const key of childVal) {\n value[key] = String;\n }\n childVal = value;\n }\n\n return strats.methods(parentVal, childVal);\n };\n\n // extend strategy\n strats.computed = strats.methods = function (parentVal, childVal) {\n return childVal ? parentVal ? { ...parentVal, ...childVal } : childVal : parentVal;\n };\n\n // data strategy\n strats.data = function (parentVal, childVal, vm) {\n if (!vm) {\n if (!childVal) {\n return parentVal;\n }\n\n if (!parentVal) {\n return childVal;\n }\n\n return function (vm) {\n return mergeFnData(parentVal, childVal, vm);\n };\n }\n\n return mergeFnData(parentVal, childVal, vm);\n };\n\n function mergeFnData(parentVal, childVal, vm) {\n return strats.computed(\n isFunction(parentVal) ? parentVal.call(vm, vm) : parentVal,\n isFunction(childVal) ? childVal.call(vm, vm) : childVal);\n\n }\n\n // concat strategy\n function concatStrat(parentVal, childVal) {\n parentVal = parentVal && !isArray(parentVal) ? [parentVal] : parentVal;\n\n return childVal ?\n parentVal ?\n parentVal.concat(childVal) :\n isArray(childVal) ?\n childVal :\n [childVal] :\n parentVal;\n }\n\n // default strategy\n function defaultStrat(parentVal, childVal) {\n return isUndefined(childVal) ? parentVal : childVal;\n }\n\n function mergeOptions(parent, child, vm) {\n const options = {};\n\n if (isFunction(child)) {\n child = child.options;\n }\n\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n\n if (child.mixins) {\n for (const mixin of child.mixins) {\n parent = mergeOptions(parent, mixin, vm);\n }\n }\n\n for (const key in parent) {\n mergeKey(key);\n }\n\n for (const key in child) {\n if (!hasOwn(parent, key)) {\n mergeKey(key);\n }\n }\n\n function mergeKey(key) {\n options[key] = (strats[key] || defaultStrat)(parent[key], child[key], vm);\n }\n\n return options;\n }\n\n function parseOptions(options, args = []) {\n try {\n return options ?\n startsWith(options, '{') ?\n JSON.parse(options) :\n args.length && !includes(options, ':') ?\n { [args[0]]: options } :\n options.split(';').reduce((options, option) => {\n const [key, value] = option.split(/:(.*)/);\n if (key && !isUndefined(value)) {\n options[key.trim()] = value.trim();\n }\n return options;\n }, {}) :\n {};\n } catch (e) {\n return {};\n }\n }\n\n function play(el) {\n if (isIFrame(el)) {\n call(el, { func: 'playVideo', method: 'play' });\n }\n\n if (isHTML5(el)) {\n try {\n el.play().catch(noop);\n } catch (e) {\n\n // noop\n }}\n }\n\n function pause(el) {\n if (isIFrame(el)) {\n call(el, { func: 'pauseVideo', method: 'pause' });\n }\n\n if (isHTML5(el)) {\n el.pause();\n }\n }\n\n function mute(el) {\n if (isIFrame(el)) {\n call(el, { func: 'mute', method: 'setVolume', value: 0 });\n }\n\n if (isHTML5(el)) {\n el.muted = true;\n }\n }\n\n function isVideo(el) {\n return isHTML5(el) || isIFrame(el);\n }\n\n function isHTML5(el) {\n return isTag(el, 'video');\n }\n\n function isIFrame(el) {\n return isTag(el, 'iframe') && (isYoutube(el) || isVimeo(el));\n }\n\n function isYoutube(el) {\n return !!el.src.match(\n /\\/\\/.*?youtube(-nocookie)?\\.[a-z]+\\/(watch\\?v=[^&\\s]+|embed)|youtu\\.be\\/.*/);\n\n }\n\n function isVimeo(el) {\n return !!el.src.match(/vimeo\\.com\\/video\\/.*/);\n }\n\n async function call(el, cmd) {\n await enableApi(el);\n post(el, cmd);\n }\n\n function post(el, cmd) {\n try {\n el.contentWindow.postMessage(JSON.stringify({ event: 'command', ...cmd }), '*');\n } catch (e) {\n\n // noop\n }}\n\n const stateKey = '_ukPlayer';\n let counter = 0;\n function enableApi(el) {\n if (el[stateKey]) {\n return el[stateKey];\n }\n\n const youtube = isYoutube(el);\n const vimeo = isVimeo(el);\n\n const id = ++counter;\n let poller;\n\n return el[stateKey] = new Promise((resolve) => {\n youtube &&\n once(el, 'load', () => {\n const listener = () => post(el, { event: 'listening', id });\n poller = setInterval(listener, 100);\n listener();\n });\n\n once(window, 'message', resolve, false, ({ data }) => {\n try {\n data = JSON.parse(data);\n return (\n data && (\n youtube && data.id === id && data.event === 'onReady' ||\n vimeo && Number(data.player_id) === id));\n\n } catch (e) {\n\n // noop\n }});\n\n el.src = `${el.src}${includes(el.src, '?') ? '&' : '?'}${\n youtube ? 'enablejsapi=1' : `api=1&player_id=${id}`\n }`;\n }).then(() => clearInterval(poller));\n }\n\n function isInView(element, offsetTop = 0, offsetLeft = 0) {\n if (!isVisible(element)) {\n return false;\n }\n\n return intersectRect(\n ...overflowParents(element).\n map((parent) => {\n const { top, left, bottom, right } = offsetViewport(parent);\n\n return {\n top: top - offsetTop,\n left: left - offsetLeft,\n bottom: bottom + offsetTop,\n right: right + offsetLeft\n };\n }).\n concat(offset(element)));\n\n }\n\n function scrollIntoView(element, { offset: offsetBy = 0 } = {}) {\n const parents = isVisible(element) ? scrollParents(element, false, ['hidden']) : [];\n return parents.reduce(\n (fn, scrollElement, i) => {\n const { scrollTop, scrollHeight, offsetHeight } = scrollElement;\n const viewport = offsetViewport(scrollElement);\n const maxScroll = scrollHeight - viewport.height;\n const { height: elHeight, top: elTop } = parents[i - 1] ?\n offsetViewport(parents[i - 1]) :\n offset(element);\n\n let top = Math.ceil(elTop - viewport.top - offsetBy + scrollTop);\n\n if (offsetBy > 0 && offsetHeight < elHeight + offsetBy) {\n top += offsetBy;\n } else {\n offsetBy = 0;\n }\n\n if (top > maxScroll) {\n offsetBy -= top - maxScroll;\n top = maxScroll;\n } else if (top < 0) {\n offsetBy -= top;\n top = 0;\n }\n\n return () => scrollTo(scrollElement, top - scrollTop).then(fn);\n },\n () => Promise.resolve())();\n\n\n function scrollTo(element, top) {\n return new Promise((resolve) => {\n const scroll = element.scrollTop;\n const duration = getDuration(Math.abs(top));\n const start = Date.now();\n\n (function step() {\n const percent = ease(clamp((Date.now() - start) / duration));\n\n element.scrollTop = scroll + top * percent;\n\n // scroll more if we have not reached our destination\n if (percent === 1) {\n resolve();\n } else {\n requestAnimationFrame(step);\n }\n })();\n });\n }\n\n function getDuration(dist) {\n return 40 * Math.pow(dist, 0.375);\n }\n\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n }\n\n function scrolledOver(element, startOffset = 0, endOffset = 0) {\n if (!isVisible(element)) {\n return 0;\n }\n\n const [scrollElement] = scrollParents(element, true);\n const { scrollHeight, scrollTop } = scrollElement;\n const { height: viewportHeight } = offsetViewport(scrollElement);\n const maxScroll = scrollHeight - viewportHeight;\n const elementOffsetTop = offsetPosition(element)[0] - offsetPosition(scrollElement)[0];\n\n const start = Math.max(0, elementOffsetTop - viewportHeight + startOffset);\n const end = Math.min(maxScroll, elementOffsetTop + element.offsetHeight - endOffset);\n\n return clamp((scrollTop - start) / (end - start));\n }\n\n function scrollParents(element, scrollable = false, props = []) {\n const scrollEl = scrollingElement(element);\n\n let ancestors = parents(element).reverse();\n ancestors = ancestors.slice(ancestors.indexOf(scrollEl) + 1);\n\n const fixedIndex = findIndex(ancestors, (el) => css(el, 'position') === 'fixed');\n if (~fixedIndex) {\n ancestors = ancestors.slice(fixedIndex);\n }\n\n return [scrollEl].\n concat(\n ancestors.filter(\n (parent) => css(parent, 'overflow').\n split(' ').\n some((prop) => includes(['auto', 'scroll', ...props], prop)) && (\n !scrollable || parent.scrollHeight > offsetViewport(parent).height))).\n\n\n reverse();\n }\n\n function overflowParents(element) {\n return scrollParents(element, false, ['hidden', 'clip']);\n }\n\n function offsetViewport(scrollElement) {\n const window = toWindow(scrollElement);\n const {\n document: { documentElement }\n } = window;\n let viewportElement =\n scrollElement === scrollingElement(scrollElement) ? window : scrollElement;\n\n const { visualViewport } = window;\n if (isWindow(viewportElement) && visualViewport) {\n let { height, width, scale, pageTop: top, pageLeft: left } = visualViewport;\n height = Math.round(height * scale);\n width = Math.round(width * scale);\n return { height, width, top, left, bottom: top + height, right: left + width };\n }\n\n let rect = offset(viewportElement);\n if (css(viewportElement, 'display') === 'inline') {\n return rect;\n }\n\n for (let [prop, dir, start, end] of [\n ['width', 'x', 'left', 'right'],\n ['height', 'y', 'top', 'bottom']])\n {\n if (isWindow(viewportElement)) {\n // iOS 12 returns as scrollingElement\n viewportElement = documentElement;\n } else {\n rect[start] += toFloat(css(viewportElement, `border-${start}-width`));\n }\n rect[prop] = rect[dir] = viewportElement[`client${ucfirst(prop)}`];\n rect[end] = rect[prop] + rect[start];\n }\n return rect;\n }\n\n function scrollingElement(element) {\n return toWindow(element).document.scrollingElement;\n }\n\n const dirs = [\n ['width', 'x', 'left', 'right'],\n ['height', 'y', 'top', 'bottom']];\n\n\n function positionAt(element, target, options) {\n options = {\n attach: {\n element: ['left', 'top'],\n target: ['left', 'top'],\n ...options.attach\n },\n offset: [0, 0],\n placement: [],\n ...options\n };\n\n if (!isArray(target)) {\n target = [target, target];\n }\n\n offset(element, getPosition(element, target, options));\n }\n\n function getPosition(element, target, options) {\n const position = attachTo(element, target, options);\n const { boundary, viewportOffset = 0, placement } = options;\n\n let offsetPosition = position;\n for (const [i, [prop,, start, end]] of Object.entries(dirs)) {\n const viewport = getViewport$2(element, target[i], viewportOffset, boundary, i);\n\n if (isWithin(position, viewport, i)) {\n continue;\n }\n\n let offsetBy = 0;\n\n // Flip\n if (placement[i] === 'flip') {\n const attach = options.attach.target[i];\n if (\n attach === end && position[end] <= viewport[end] ||\n attach === start && position[start] >= viewport[start])\n {\n continue;\n }\n\n offsetBy = flip(element, target, options, i)[start] - position[start];\n\n const scrollArea = getScrollArea(element, target[i], viewportOffset, i);\n\n if (!isWithin(applyOffset(position, offsetBy, i), scrollArea, i)) {\n if (isWithin(position, scrollArea, i)) {\n continue;\n }\n\n if (options.recursion) {\n return false;\n }\n\n const newPos = flipAxis(element, target, options);\n\n if (newPos && isWithin(newPos, scrollArea, 1 - i)) {\n return newPos;\n }\n\n continue;\n }\n\n // Shift\n } else if (placement[i] === 'shift') {\n const targetDim = offset(target[i]);\n const { offset: elOffset } = options;\n offsetBy =\n clamp(\n clamp(position[start], viewport[start], viewport[end] - position[prop]),\n targetDim[start] - position[prop] + elOffset[i],\n targetDim[end] - elOffset[i]) -\n position[start];\n }\n\n offsetPosition = applyOffset(offsetPosition, offsetBy, i);\n }\n\n return offsetPosition;\n }\n\n function attachTo(element, target, options) {\n let { attach, offset: offsetBy } = {\n attach: {\n element: ['left', 'top'],\n target: ['left', 'top'],\n ...options.attach\n },\n offset: [0, 0],\n ...options\n };\n\n let elOffset = offset(element);\n\n for (const [i, [prop,, start, end]] of Object.entries(dirs)) {\n const targetOffset =\n attach.target[i] === attach.element[i] ? offsetViewport(target[i]) : offset(target[i]);\n\n elOffset = applyOffset(\n elOffset,\n targetOffset[start] -\n elOffset[start] +\n moveBy(attach.target[i], end, targetOffset[prop]) -\n moveBy(attach.element[i], end, elOffset[prop]) +\n +offsetBy[i],\n i);\n\n }\n return elOffset;\n }\n\n function applyOffset(position, offset, i) {\n const [, dir, start, end] = dirs[i];\n const newPos = { ...position };\n newPos[start] = position[dir] = position[start] + offset;\n newPos[end] += offset;\n return newPos;\n }\n\n function moveBy(attach, end, dim) {\n return attach === 'center' ? dim / 2 : attach === end ? dim : 0;\n }\n\n function getViewport$2(element, target, viewportOffset, boundary, i) {\n let viewport = getIntersectionArea(...commonScrollParents(element, target).map(offsetViewport));\n\n if (viewportOffset) {\n viewport[dirs[i][2]] += viewportOffset;\n viewport[dirs[i][3]] -= viewportOffset;\n }\n\n if (boundary) {\n viewport = getIntersectionArea(\n viewport,\n offset(isArray(boundary) ? boundary[i] : boundary));\n\n }\n\n return viewport;\n }\n\n function getScrollArea(element, target, viewportOffset, i) {\n const [prop, axis, start, end] = dirs[i];\n const [scrollElement] = commonScrollParents(element, target);\n const viewport = offsetViewport(scrollElement);\n\n if (['auto', 'scroll'].includes(css(scrollElement, `overflow-${axis}`))) {\n viewport[start] -= scrollElement[`scroll${ucfirst(start)}`];\n viewport[end] = viewport[start] + scrollElement[`scroll${ucfirst(prop)}`];\n }\n\n viewport[start] += viewportOffset;\n viewport[end] -= viewportOffset;\n\n return viewport;\n }\n\n function commonScrollParents(element, target) {\n return overflowParents(target).filter((parent) => within(element, parent));\n }\n\n function getIntersectionArea(...rects) {\n let area = {};\n for (const rect of rects) {\n for (const [,, start, end] of dirs) {\n area[start] = Math.max(area[start] || 0, rect[start]);\n area[end] = Math.min(...[area[end], rect[end]].filter(Boolean));\n }\n }\n return area;\n }\n\n function isWithin(positionA, positionB, i) {\n const [,, start, end] = dirs[i];\n return positionA[start] >= positionB[start] && positionA[end] <= positionB[end];\n }\n\n function flip(element, target, { offset, attach }, i) {\n return attachTo(element, target, {\n attach: {\n element: flipAttach(attach.element, i),\n target: flipAttach(attach.target, i)\n },\n offset: flipOffset(offset, i)\n });\n }\n\n function flipAxis(element, target, options) {\n return getPosition(element, target, {\n ...options,\n attach: {\n element: options.attach.element.map(flipAttachAxis).reverse(),\n target: options.attach.target.map(flipAttachAxis).reverse()\n },\n offset: options.offset.reverse(),\n placement: options.placement.reverse(),\n recursion: true\n });\n }\n\n function flipAttach(attach, i) {\n const newAttach = [...attach];\n const index = dirs[i].indexOf(attach[i]);\n if (~index) {\n newAttach[i] = dirs[i][1 - index % 2 + 2];\n }\n return newAttach;\n }\n\n function flipAttachAxis(prop) {\n for (let i = 0; i < dirs.length; i++) {\n const index = dirs[i].indexOf(prop);\n if (~index) {\n return dirs[1 - i][index % 2 + 2];\n }\n }\n }\n\n function flipOffset(offset, i) {\n offset = [...offset];\n offset[i] *= -1;\n return offset;\n }\n\n var util = /*#__PURE__*/Object.freeze({\n __proto__: null,\n $: $,\n $$: $$,\n Animation: Animation,\n Deferred: Deferred,\n Dimensions: Dimensions,\n MouseTracker: MouseTracker,\n Transition: Transition,\n addClass: addClass,\n after: after,\n ajax: ajax,\n append: append,\n apply: apply,\n assign: assign,\n attr: attr,\n before: before,\n boxModelAdjust: boxModelAdjust,\n camelize: camelize,\n children: children,\n clamp: clamp,\n closest: closest,\n createEvent: createEvent,\n css: css,\n data: data,\n dimensions: dimensions,\n each: each,\n empty: empty,\n endsWith: endsWith,\n escape: escape,\n fastdom: fastdom,\n filter: filter,\n find: find,\n findAll: findAll,\n findIndex: findIndex,\n flipPosition: flipPosition,\n fragment: fragment,\n getEventPos: getEventPos,\n getImage: getImage,\n getIndex: getIndex,\n hasAttr: hasAttr,\n hasClass: hasClass,\n hasOwn: hasOwn,\n hasTouch: hasTouch,\n height: height,\n html: html,\n hyphenate: hyphenate,\n inBrowser: inBrowser,\n includes: includes,\n index: index,\n intersectRect: intersectRect,\n isArray: isArray,\n isBoolean: isBoolean,\n isDocument: isDocument,\n isElement: isElement,\n isEmpty: isEmpty,\n isEqual: isEqual,\n isFocusable: isFocusable,\n isFunction: isFunction,\n isInView: isInView,\n isInput: isInput,\n isNode: isNode,\n isNumber: isNumber,\n isNumeric: isNumeric,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isRtl: isRtl,\n isString: isString,\n isTag: isTag,\n isTouch: isTouch,\n isUndefined: isUndefined,\n isVideo: isVideo,\n isVisible: isVisible,\n isVoidElement: isVoidElement,\n isWindow: isWindow,\n last: last,\n matches: matches,\n memoize: memoize,\n mergeOptions: mergeOptions,\n mute: mute,\n noop: noop,\n observeIntersection: observeIntersection,\n observeMutation: observeMutation,\n observeResize: observeResize,\n off: off,\n offset: offset,\n offsetPosition: offsetPosition,\n offsetViewport: offsetViewport,\n on: on,\n once: once,\n overflowParents: overflowParents,\n parent: parent,\n parents: parents,\n parseOptions: parseOptions,\n pause: pause,\n play: play,\n pointInRect: pointInRect,\n pointerCancel: pointerCancel,\n pointerDown: pointerDown,\n pointerEnter: pointerEnter,\n pointerLeave: pointerLeave,\n pointerMove: pointerMove,\n pointerUp: pointerUp,\n position: position,\n positionAt: positionAt,\n prepend: prepend,\n propName: propName,\n query: query,\n queryAll: queryAll,\n ready: ready,\n remove: remove$1,\n removeAttr: removeAttr,\n removeClass: removeClass,\n removeClasses: removeClasses,\n replaceClass: replaceClass,\n scrollIntoView: scrollIntoView,\n scrollParents: scrollParents,\n scrolledOver: scrolledOver,\n selFocusable: selFocusable,\n selInput: selInput,\n sortBy: sortBy$1,\n startsWith: startsWith,\n sumBy: sumBy,\n swap: swap,\n toArray: toArray,\n toBoolean: toBoolean,\n toEventTargets: toEventTargets,\n toFloat: toFloat,\n toNode: toNode,\n toNodes: toNodes,\n toNumber: toNumber,\n toPx: toPx,\n toWindow: toWindow,\n toggleClass: toggleClass,\n trigger: trigger,\n ucfirst: ucfirst,\n uniqueBy: uniqueBy,\n unwrap: unwrap,\n width: width,\n within: within,\n wrapAll: wrapAll,\n wrapInner: wrapInner\n });\n\n function globalAPI (UIkit) {\n const DATA = UIkit.data;\n\n UIkit.use = function (plugin) {\n if (plugin.installed) {\n return;\n }\n\n plugin.call(null, this);\n plugin.installed = true;\n\n return this;\n };\n\n UIkit.mixin = function (mixin, component) {\n component = (isString(component) ? UIkit.component(component) : component) || this;\n component.options = mergeOptions(component.options, mixin);\n };\n\n UIkit.extend = function (options) {\n options = options || {};\n\n const Super = this;\n const Sub = function UIkitComponent(options) {\n this._init(options);\n };\n\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.options = mergeOptions(Super.options, options);\n\n Sub.super = Super;\n Sub.extend = Super.extend;\n\n return Sub;\n };\n\n UIkit.update = function (element, e) {\n element = element ? toNode(element) : document.body;\n\n for (const parentEl of parents(element).reverse()) {\n update(parentEl[DATA], e);\n }\n\n apply(element, (element) => update(element[DATA], e));\n };\n\n let container;\n Object.defineProperty(UIkit, 'container', {\n get() {\n return container || document.body;\n },\n\n set(element) {\n container = $(element);\n }\n });\n\n function update(data, e) {\n if (!data) {\n return;\n }\n\n for (const name in data) {\n if (data[name]._connected) {\n data[name]._callUpdate(e);\n }\n }\n }\n }\n\n function hooksAPI (UIkit) {\n UIkit.prototype._callHook = function (hook) {var _this$$options$hook;\n (_this$$options$hook = this.$options[hook]) == null ? void 0 : _this$$options$hook.forEach((handler) => handler.call(this));\n };\n\n UIkit.prototype._callConnected = function () {\n if (this._connected) {\n return;\n }\n\n this._data = {};\n this._computed = {};\n\n this._initProps();\n\n this._callHook('beforeConnect');\n this._connected = true;\n\n this._initEvents();\n this._initObservers();\n\n this._callHook('connected');\n this._callUpdate();\n };\n\n UIkit.prototype._callDisconnected = function () {\n if (!this._connected) {\n return;\n }\n\n this._callHook('beforeDisconnect');\n this._disconnectObservers();\n this._unbindEvents();\n this._callHook('disconnected');\n\n this._connected = false;\n delete this._watch;\n };\n\n UIkit.prototype._callUpdate = function (e = 'update') {\n if (!this._connected) {\n return;\n }\n\n if (e === 'update' || e === 'resize') {\n this._callWatches();\n }\n\n if (!this.$options.update) {\n return;\n }\n\n if (!this._updates) {\n this._updates = new Set();\n fastdom.read(() => {\n if (this._connected) {\n runUpdates.call(this, this._updates);\n }\n delete this._updates;\n });\n }\n\n this._updates.add(e.type || e);\n };\n\n UIkit.prototype._callWatches = function () {\n if (this._watch) {\n return;\n }\n\n const initial = !hasOwn(this, '_watch');\n\n this._watch = fastdom.read(() => {\n if (this._connected) {\n runWatches.call(this, initial);\n }\n this._watch = null;\n });\n };\n\n function runUpdates(types) {\n for (const { read, write, events = [] } of this.$options.update) {\n if (!types.has('update') && !events.some((type) => types.has(type))) {\n continue;\n }\n\n let result;\n if (read) {\n result = read.call(this, this._data, types);\n\n if (result && isPlainObject(result)) {\n assign(this._data, result);\n }\n }\n\n if (write && result !== false) {\n fastdom.write(() => {\n if (this._connected) {\n write.call(this, this._data, types);\n }\n });\n }\n }\n }\n\n function runWatches(initial) {\n const {\n $options: { computed }\n } = this;\n const values = { ...this._computed };\n this._computed = {};\n\n for (const key in computed) {\n const { watch, immediate } = computed[key];\n if (\n watch && (\n initial && immediate ||\n hasOwn(values, key) && !isEqual(values[key], this[key])))\n {\n watch.call(this, this[key], values[key]);\n }\n }\n }\n }\n\n function stateAPI (UIkit) {\n let uid = 0;\n\n UIkit.prototype._init = function (options) {\n options = options || {};\n options.data = normalizeData(options, this.constructor.options);\n\n this.$options = mergeOptions(this.constructor.options, options, this);\n this.$el = null;\n this.$props = {};\n\n this._uid = uid++;\n this._initData();\n this._initMethods();\n this._initComputeds();\n this._callHook('created');\n\n if (options.el) {\n this.$mount(options.el);\n }\n };\n\n UIkit.prototype._initData = function () {\n const { data = {} } = this.$options;\n\n for (const key in data) {\n this.$props[key] = this[key] = data[key];\n }\n };\n\n UIkit.prototype._initMethods = function () {\n const { methods } = this.$options;\n\n if (methods) {\n for (const key in methods) {\n this[key] = methods[key].bind(this);\n }\n }\n };\n\n UIkit.prototype._initComputeds = function () {\n const { computed } = this.$options;\n\n this._computed = {};\n\n if (computed) {\n for (const key in computed) {\n registerComputed(this, key, computed[key]);\n }\n }\n };\n\n UIkit.prototype._initProps = function (props) {\n let key;\n\n props = props || getProps(this.$options);\n\n for (key in props) {\n if (!isUndefined(props[key])) {\n this.$props[key] = props[key];\n }\n }\n\n const exclude = [this.$options.computed, this.$options.methods];\n for (key in this.$props) {\n if (key in props && notIn(exclude, key)) {\n this[key] = this.$props[key];\n }\n }\n };\n\n UIkit.prototype._initEvents = function () {\n this._events = [];\n for (const event of this.$options.events || []) {\n if (hasOwn(event, 'handler')) {\n registerEvent(this, event);\n } else {\n for (const key in event) {\n registerEvent(this, event[key], key);\n }\n }\n }\n };\n\n UIkit.prototype._unbindEvents = function () {\n this._events.forEach((unbind) => unbind());\n delete this._events;\n };\n\n UIkit.prototype._initObservers = function () {\n this._observers = [initPropsObserver(this), initChildListObserver(this)];\n };\n\n UIkit.prototype.registerObserver = function (...observer) {\n this._observers.push(...observer);\n };\n\n UIkit.prototype._disconnectObservers = function () {\n this._observers.forEach((observer) => observer == null ? void 0 : observer.disconnect());\n };\n }\n\n function getProps(opts) {\n const data$1 = {};\n const { args = [], props = {}, el, id } = opts;\n\n if (!props) {\n return data$1;\n }\n\n for (const key in props) {\n const prop = hyphenate(key);\n let value = data(el, prop);\n\n if (isUndefined(value)) {\n continue;\n }\n\n value = props[key] === Boolean && value === '' ? true : coerce$1(props[key], value);\n\n if (prop === 'target' && startsWith(value, '_')) {\n continue;\n }\n\n data$1[key] = value;\n }\n\n const options = parseOptions(data(el, id), args);\n\n for (const key in options) {\n const prop = camelize(key);\n if (!isUndefined(props[prop])) {\n data$1[prop] = coerce$1(props[prop], options[key]);\n }\n }\n\n return data$1;\n }\n\n function registerComputed(component, key, cb) {\n Object.defineProperty(component, key, {\n enumerable: true,\n\n get() {\n const { _computed, $props, $el } = component;\n\n if (!hasOwn(_computed, key)) {\n _computed[key] = (cb.get || cb).call(component, $props, $el);\n }\n\n return _computed[key];\n },\n\n set(value) {\n const { _computed } = component;\n\n _computed[key] = cb.set ? cb.set.call(component, value) : value;\n\n if (isUndefined(_computed[key])) {\n delete _computed[key];\n }\n }\n });\n }\n\n function registerEvent(component, event, key) {\n if (!isPlainObject(event)) {\n event = { name: key, handler: event };\n }\n\n let { name, el, handler, capture, passive, delegate, filter, self } = event;\n el = isFunction(el) ? el.call(component) : el || component.$el;\n\n if (isArray(el)) {\n el.forEach((el) => registerEvent(component, { ...event, el }, key));\n return;\n }\n\n if (!el || filter && !filter.call(component)) {\n return;\n }\n\n component._events.push(\n on(\n el,\n name,\n delegate ? isString(delegate) ? delegate : delegate.call(component) : null,\n isString(handler) ? component[handler] : handler.bind(component),\n { passive, capture, self }));\n\n\n }\n\n function notIn(options, key) {\n return options.every((arr) => !arr || !hasOwn(arr, key));\n }\n\n function coerce$1(type, value) {\n if (type === Boolean) {\n return toBoolean(value);\n } else if (type === Number) {\n return toNumber(value);\n } else if (type === 'list') {\n return toList(value);\n }\n\n return type ? type(value) : value;\n }\n\n function toList(value) {\n return isArray(value) ?\n value :\n isString(value) ?\n value.\n split(/,(?![^(]*\\))/).\n map((value) => isNumeric(value) ? toNumber(value) : toBoolean(value.trim())) :\n [value];\n }\n\n function normalizeData({ data = {} }, { args = [], props = {} }) {\n if (isArray(data)) {\n data = data.slice(0, args.length).reduce((data, value, index) => {\n if (isPlainObject(value)) {\n assign(data, value);\n } else {\n data[args[index]] = value;\n }\n return data;\n }, {});\n }\n\n for (const key in data) {\n if (isUndefined(data[key])) {\n delete data[key];\n } else if (props[key]) {\n data[key] = coerce$1(props[key], data[key]);\n }\n }\n\n return data;\n }\n\n function initChildListObserver(component) {\n let { el, computed } = component.$options;\n\n if (!computed) {\n return;\n }\n\n for (const key in computed) {\n if (computed[key].document) {\n el = el.ownerDocument;\n break;\n }\n }\n\n const observer = new MutationObserver(() => component._callWatches());\n observer.observe(el, {\n childList: true,\n subtree: true\n });\n\n return observer;\n }\n\n function initPropsObserver(component) {\n const { $options, $props } = component;\n const { id, attrs, props, el } = $options;\n\n if (!props || attrs === false) {\n return;\n }\n\n const attributes = isArray(attrs) ? attrs : Object.keys(props);\n const filter = attributes.map((key) => hyphenate(key)).concat(id);\n\n const observer = new MutationObserver((records) => {\n const data = getProps($options);\n if (\n records.some(({ attributeName }) => {\n const prop = attributeName.replace('data-', '');\n return (prop === id ? attributes : [camelize(prop), camelize(attributeName)]).some(\n (prop) => !isUndefined(data[prop]) && data[prop] !== $props[prop]);\n\n }))\n {\n component.$reset();\n }\n });\n\n observer.observe(el, {\n attributes: true,\n attributeFilter: filter.concat(filter.map((key) => `data-${key}`))\n });\n\n return observer;\n }\n\n function instanceAPI (UIkit) {\n const DATA = UIkit.data;\n\n UIkit.prototype.$create = function (component, element, data) {\n return UIkit[component](element, data);\n };\n\n UIkit.prototype.$mount = function (el) {\n const { name } = this.$options;\n\n if (!el[DATA]) {\n el[DATA] = {};\n }\n\n if (el[DATA][name]) {\n return;\n }\n\n el[DATA][name] = this;\n\n this.$el = this.$options.el = this.$options.el || el;\n\n if (within(el, document)) {\n this._callConnected();\n }\n };\n\n UIkit.prototype.$reset = function () {\n this._callDisconnected();\n this._callConnected();\n };\n\n UIkit.prototype.$destroy = function (removeEl = false) {\n const { el, name } = this.$options;\n\n if (el) {\n this._callDisconnected();\n }\n\n this._callHook('destroy');\n\n if (!(el != null && el[DATA])) {\n return;\n }\n\n delete el[DATA][name];\n\n if (!isEmpty(el[DATA])) {\n delete el[DATA];\n }\n\n if (removeEl) {\n remove$1(this.$el);\n }\n };\n\n UIkit.prototype.$emit = function (e) {\n this._callUpdate(e);\n };\n\n UIkit.prototype.$update = function (element = this.$el, e) {\n UIkit.update(element, e);\n };\n\n UIkit.prototype.$getComponent = UIkit.getComponent;\n\n Object.defineProperty(\n UIkit.prototype,\n '$container',\n Object.getOwnPropertyDescriptor(UIkit, 'container'));\n\n }\n\n const components$2 = {};\n function componentAPI (UIkit) {\n const { data: DATA, prefix: PREFIX } = UIkit;\n\n UIkit.component = function (name, options) {\n name = hyphenate(name);\n const id = PREFIX + name;\n\n if (!options) {\n if (isPlainObject(components$2[id])) {\n components$2[id] = components$2[`data-${id}`] = UIkit.extend(components$2[id]);\n }\n\n return components$2[id];\n }\n\n name = camelize(name);\n\n UIkit[name] = function (element, data) {\n const component = UIkit.component(name);\n\n return component.options.functional ?\n new component({ data: isPlainObject(element) ? element : [...arguments] }) :\n element ?\n $$(element).map(init)[0] :\n init();\n\n function init(element) {\n const instance = UIkit.getComponent(element, name);\n\n if (instance) {\n if (data) {\n instance.$destroy();\n } else {\n return instance;\n }\n }\n\n return new component({ el: element, data });\n }\n };\n\n const opt = isPlainObject(options) ? { ...options } : options.options;\n\n opt.id = id;\n opt.name = name;\n\n opt.install == null ? void 0 : opt.install(UIkit, opt, name);\n\n if (UIkit._initialized && !opt.functional) {\n requestAnimationFrame(() => UIkit[name](`[${id}],[data-${id}]`));\n }\n\n return components$2[id] = components$2[`data-${id}`] = isPlainObject(options) ? opt : options;\n };\n\n UIkit.getComponents = (element) => (element == null ? void 0 : element[DATA]) || {};\n UIkit.getComponent = (element, name) => UIkit.getComponents(element)[name];\n\n UIkit.connect = (node) => {\n if (node[DATA]) {\n for (const name in node[DATA]) {\n node[DATA][name]._callConnected();\n }\n }\n\n for (const attribute of node.getAttributeNames()) {\n const name = getComponentName(attribute);\n name && UIkit[name](node);\n }\n };\n\n UIkit.disconnect = (node) => {\n for (const name in node[DATA]) {\n node[DATA][name]._callDisconnected();\n }\n };\n }\n\n function getComponentName(attribute) {\n const cmp = components$2[attribute];\n return cmp && (isPlainObject(cmp) ? cmp : cmp.options).name;\n }\n\n const UIkit = function (options) {\n this._init(options);\n };\n\n UIkit.util = util;\n UIkit.data = '__uikit__';\n UIkit.prefix = 'uk-';\n UIkit.options = {};\n UIkit.version = '3.15.24';\n\n globalAPI(UIkit);\n hooksAPI(UIkit);\n stateAPI(UIkit);\n componentAPI(UIkit);\n instanceAPI(UIkit);\n\n function boot (UIkit) {\n const { connect, disconnect } = UIkit;\n\n if (!inBrowser || !window.MutationObserver) {\n return;\n }\n\n requestAnimationFrame(function () {\n trigger(document, 'uikit:init', UIkit);\n\n if (document.body) {\n apply(document.body, connect);\n }\n\n new MutationObserver((records) => records.forEach(applyChildListMutation)).observe(\n document,\n {\n childList: true,\n subtree: true\n });\n\n\n new MutationObserver((records) => records.forEach(applyAttributeMutation)).observe(\n document,\n {\n attributes: true,\n subtree: true\n });\n\n\n UIkit._initialized = true;\n });\n\n function applyChildListMutation({ addedNodes, removedNodes }) {\n for (const node of addedNodes) {\n apply(node, connect);\n }\n\n for (const node of removedNodes) {\n apply(node, disconnect);\n }\n }\n\n function applyAttributeMutation({ target, attributeName }) {\n const name = getComponentName(attributeName);\n\n if (name) {var _UIkit$getComponent;\n if (hasAttr(target, attributeName)) {\n UIkit[name](target);\n return;\n }\n\n (_UIkit$getComponent = UIkit.getComponent(target, name)) == null ? void 0 : _UIkit$getComponent.$destroy();\n }\n }\n }\n\n var Class = {\n connected() {\n addClass(this.$el, this.$options.id);\n }\n };\n\n var Lazyload = {\n data: {\n preload: 5\n },\n\n methods: {\n lazyload(observeTargets = this.$el, targets = this.$el) {\n this.registerObserver(\n observeIntersection(observeTargets, (entries, observer) => {\n for (const el of toNodes(isFunction(targets) ? targets() : targets)) {\n $$('[loading=\"lazy\"]', el).\n slice(0, this.preload - 1).\n forEach((el) => removeAttr(el, 'loading'));\n }\n\n for (const el of entries.\n filter(({ isIntersecting }) => isIntersecting).\n map(({ target }) => target)) {\n observer.unobserve(el);\n }\n }));\n\n }\n }\n };\n\n var Togglable = {\n props: {\n cls: Boolean,\n animation: 'list',\n duration: Number,\n velocity: Number,\n origin: String,\n transition: String\n },\n\n data: {\n cls: false,\n animation: [false],\n duration: 200,\n velocity: 0.2,\n origin: false,\n transition: 'ease',\n clsEnter: 'uk-togglabe-enter',\n clsLeave: 'uk-togglabe-leave'\n },\n\n computed: {\n hasAnimation({ animation }) {\n return !!animation[0];\n },\n\n hasTransition({ animation }) {\n return ['slide', 'reveal'].some((transition) => startsWith(animation[0], transition));\n }\n },\n\n methods: {\n toggleElement(targets, toggle, animate) {\n return new Promise((resolve) => Promise.all(\n toNodes(targets).map((el) => {\n const show = isBoolean(toggle) ? toggle : !this.isToggled(el);\n\n if (!trigger(el, `before${show ? 'show' : 'hide'}`, [this])) {\n return Promise.reject();\n }\n\n const promise = (\n isFunction(animate) ?\n animate :\n animate === false || !this.hasAnimation ?\n toggleInstant :\n this.hasTransition ?\n toggleTransition :\n toggleAnimation)(\n el, show, this);\n\n const cls = show ? this.clsEnter : this.clsLeave;\n\n addClass(el, cls);\n\n trigger(el, show ? 'show' : 'hide', [this]);\n\n const done = () => {\n removeClass(el, cls);\n trigger(el, show ? 'shown' : 'hidden', [this]);\n };\n\n return promise ?\n promise.then(done, () => {\n removeClass(el, cls);\n return Promise.reject();\n }) :\n done();\n })).\n then(resolve, noop));\n\n },\n\n isToggled(el = this.$el) {\n [el] = toNodes(el);\n return hasClass(el, this.clsEnter) ?\n true :\n hasClass(el, this.clsLeave) ?\n false :\n this.cls ?\n hasClass(el, this.cls.split(' ')[0]) :\n isVisible(el);\n },\n\n _toggle(el, toggled) {\n if (!el) {\n return;\n }\n\n toggled = Boolean(toggled);\n\n let changed;\n if (this.cls) {\n changed = includes(this.cls, ' ') || toggled !== hasClass(el, this.cls);\n changed && toggleClass(el, this.cls, includes(this.cls, ' ') ? undefined : toggled);\n } else {\n changed = toggled === el.hidden;\n changed && (el.hidden = !toggled);\n }\n\n $$('[autofocus]', el).some((el) => isVisible(el) ? el.focus() || true : el.blur());\n\n if (changed) {\n trigger(el, 'toggled', [toggled, this]);\n }\n }\n }\n };\n\n function toggleInstant(el, show, { _toggle }) {\n Animation.cancel(el);\n Transition.cancel(el);\n return _toggle(el, show);\n }\n\n async function toggleTransition(\n el,\n show,\n { animation, duration, velocity, transition, _toggle })\n {var _animation$;\n const [mode = 'reveal', startProp = 'top'] = ((_animation$ = animation[0]) == null ? void 0 : _animation$.split('-')) || [];\n\n const dirs = [\n ['left', 'right'],\n ['top', 'bottom']];\n\n const dir = dirs[includes(dirs[0], startProp) ? 0 : 1];\n const end = dir[1] === startProp;\n const props = ['width', 'height'];\n const dimProp = props[dirs.indexOf(dir)];\n const marginProp = `margin-${dir[0]}`;\n const marginStartProp = `margin-${startProp}`;\n\n let currentDim = dimensions(el)[dimProp];\n\n const inProgress = Transition.inProgress(el);\n await Transition.cancel(el);\n\n if (show) {\n _toggle(el, true);\n }\n\n const prevProps = Object.fromEntries(\n [\n 'padding',\n 'border',\n 'width',\n 'height',\n 'minWidth',\n 'minHeight',\n 'overflowY',\n 'overflowX',\n marginProp,\n marginStartProp].\n map((key) => [key, el.style[key]]));\n\n\n const dim = dimensions(el);\n const currentMargin = toFloat(css(el, marginProp));\n const marginStart = toFloat(css(el, marginStartProp));\n const endDim = dim[dimProp] + marginStart;\n\n if (!inProgress && !show) {\n currentDim += marginStart;\n }\n\n const [wrapper] = wrapInner(el, '
');\n css(wrapper, {\n boxSizing: 'border-box',\n height: dim.height,\n width: dim.width,\n ...css(el, [\n 'overflow',\n 'padding',\n 'borderTop',\n 'borderRight',\n 'borderBottom',\n 'borderLeft',\n 'borderImage',\n marginStartProp])\n\n });\n\n css(el, {\n padding: 0,\n border: 0,\n minWidth: 0,\n minHeight: 0,\n [marginStartProp]: 0,\n width: dim.width,\n height: dim.height,\n overflow: 'hidden',\n [dimProp]: currentDim\n });\n\n const percent = currentDim / endDim;\n duration = (velocity * endDim + duration) * (show ? 1 - percent : percent);\n const endProps = { [dimProp]: show ? endDim : 0 };\n\n if (end) {\n css(el, marginProp, endDim - currentDim + currentMargin);\n endProps[marginProp] = show ? currentMargin : endDim + currentMargin;\n }\n\n if (!end ^ mode === 'reveal') {\n css(wrapper, marginProp, -endDim + currentDim);\n Transition.start(wrapper, { [marginProp]: show ? 0 : -endDim }, duration, transition);\n }\n\n try {\n await Transition.start(el, endProps, duration, transition);\n } finally {\n css(el, prevProps);\n unwrap(wrapper.firstChild);\n\n if (!show) {\n _toggle(el, false);\n }\n }\n }\n\n function toggleAnimation(el, show, cmp) {\n Animation.cancel(el);\n\n const { animation, duration, _toggle } = cmp;\n\n if (show) {\n _toggle(el, true);\n return Animation.in(el, animation[0], duration, cmp.origin);\n }\n\n return Animation.out(el, animation[1] || animation[0], duration, cmp.origin).then(() => _toggle(el, false));\n\n }\n\n var Accordion = {\n mixins: [Class, Lazyload, Togglable],\n\n props: {\n animation: Boolean,\n targets: String,\n active: null,\n collapsible: Boolean,\n multiple: Boolean,\n toggle: String,\n content: String,\n offset: Number\n },\n\n data: {\n targets: '> *',\n active: false,\n animation: true,\n collapsible: true,\n multiple: false,\n clsOpen: 'uk-open',\n toggle: '> .uk-accordion-title',\n content: '> .uk-accordion-content',\n offset: 0\n },\n\n computed: {\n items: {\n get({ targets }, $el) {\n return $$(targets, $el);\n },\n\n watch(items, prev) {\n if (prev || hasClass(items, this.clsOpen)) {\n return;\n }\n\n const active =\n this.active !== false && items[Number(this.active)] ||\n !this.collapsible && items[0];\n\n if (active) {\n this.toggle(active, false);\n }\n },\n\n immediate: true\n },\n\n toggles({ toggle }) {\n return this.items.map((item) => $(toggle, item));\n },\n\n contents: {\n get({ content }) {\n return this.items.map((item) => $(content, item));\n },\n\n watch(items) {\n for (const el of items) {\n hide(\n el,\n !hasClass(\n this.items.find((item) => within(el, item)),\n this.clsOpen));\n\n\n }\n },\n\n immediate: true\n }\n },\n\n connected() {\n this.lazyload();\n },\n\n events: [\n {\n name: 'click',\n\n delegate() {\n return `${this.targets} ${this.$props.toggle}`;\n },\n\n async handler(e) {var _this$_off;\n e.preventDefault();\n\n (_this$_off = this._off) == null ? void 0 : _this$_off.call(this);\n this._off = keepScrollPosition(e.target);\n await this.toggle(index(this.toggles, e.current));\n this._off();\n }\n }],\n\n\n methods: {\n async toggle(item, animate) {\n item = this.items[getIndex(item, this.items)];\n let items = [item];\n const activeItems = filter(this.items, `.${this.clsOpen}`);\n\n if (!this.multiple && !includes(activeItems, items[0])) {\n items = items.concat(activeItems);\n }\n\n if (!this.collapsible && activeItems.length < 2 && includes(activeItems, item)) {\n return;\n }\n\n await Promise.all(\n items.map((el) => this.toggleElement(el, !includes(activeItems, el), (el, show) => {\n toggleClass(el, this.clsOpen, show);\n attr($(this.$props.toggle, el), 'aria-expanded', show);\n\n if (animate === false || !this.animation) {\n hide($(this.content, el), !show);\n return;\n }\n\n return transition(el, show, this);\n })));\n\n\n }\n }\n };\n\n function hide(el, hide) {\n el && (el.hidden = hide);\n }\n\n async function transition(el, show, { content, duration, velocity, transition }) {var _el$_wrapper;\n content = ((_el$_wrapper = el._wrapper) == null ? void 0 : _el$_wrapper.firstElementChild) || $(content, el);\n\n if (!el._wrapper) {\n el._wrapper = wrapAll(content, '
');\n }\n\n const wrapper = el._wrapper;\n css(wrapper, 'overflow', 'hidden');\n const currentHeight = toFloat(css(wrapper, 'height'));\n\n await Transition.cancel(wrapper);\n hide(content, false);\n\n const endHeight =\n sumBy(['marginTop', 'marginBottom'], (prop) => css(content, prop)) +\n dimensions(content).height;\n\n const percent = currentHeight / endHeight;\n duration = (velocity * endHeight + duration) * (show ? 1 - percent : percent);\n css(wrapper, 'height', currentHeight);\n\n await Transition.start(wrapper, { height: show ? endHeight : 0 }, duration, transition);\n\n unwrap(content);\n delete el._wrapper;\n\n if (!show) {\n hide(content, true);\n }\n }\n\n function keepScrollPosition(el) {\n const [scrollParent] = scrollParents(el, true);\n let frame;\n (function scroll() {\n frame = requestAnimationFrame(() => {\n const { top } = el.getBoundingClientRect();\n if (top < 0) {\n scrollParent.scrollTop += top;\n }\n scroll();\n });\n })();\n\n return () => requestAnimationFrame(() => cancelAnimationFrame(frame));\n }\n\n var alert = {\n mixins: [Class, Togglable],\n\n args: 'animation',\n\n props: {\n animation: Boolean,\n close: String\n },\n\n data: {\n animation: true,\n selClose: '.uk-alert-close',\n duration: 150\n },\n\n events: {\n name: 'click',\n\n delegate() {\n return this.selClose;\n },\n\n handler(e) {\n e.preventDefault();\n this.close();\n }\n },\n\n methods: {\n async close() {\n await this.toggleElement(this.$el, false, animate$1);\n this.$destroy(true);\n }\n }\n };\n\n function animate$1(el, show, { duration, transition, velocity }) {\n const height = toFloat(css(el, 'height'));\n css(el, 'height', height);\n return Transition.start(\n el,\n {\n height: 0,\n marginTop: 0,\n marginBottom: 0,\n paddingTop: 0,\n paddingBottom: 0,\n borderTop: 0,\n borderBottom: 0,\n opacity: 0\n },\n velocity * height + duration,\n transition);\n\n }\n\n var Video = {\n args: 'autoplay',\n\n props: {\n automute: Boolean,\n autoplay: Boolean\n },\n\n data: {\n automute: false,\n autoplay: true\n },\n\n connected() {\n this.inView = this.autoplay === 'inview';\n\n if (this.inView && !hasAttr(this.$el, 'preload')) {\n this.$el.preload = 'none';\n }\n\n if (isTag(this.$el, 'iframe') && !hasAttr(this.$el, 'allow')) {\n this.$el.allow = 'autoplay';\n }\n\n if (this.automute) {\n mute(this.$el);\n }\n\n this.registerObserver(observeIntersection(this.$el, () => this.$emit(), {}, false));\n },\n\n update: {\n read({ visible }) {\n if (!isVideo(this.$el)) {\n return false;\n }\n\n return {\n prev: visible,\n visible: isVisible(this.$el) && css(this.$el, 'visibility') !== 'hidden',\n inView: this.inView && isInView(this.$el)\n };\n },\n\n write({ prev, visible, inView }) {\n if (!visible || this.inView && !inView) {\n pause(this.$el);\n } else if (this.autoplay === true && !prev || this.inView && inView) {\n play(this.$el);\n }\n }\n }\n };\n\n var Resize = {\n connected() {var _this$$options$resize;\n this.registerObserver(\n observeResize(((_this$$options$resize = this.$options.resizeTargets) == null ? void 0 : _this$$options$resize.call(this)) || this.$el, () => this.$emit('resize')));\n\n\n }\n };\n\n var cover = {\n mixins: [Resize, Video],\n\n props: {\n width: Number,\n height: Number\n },\n\n data: {\n automute: true\n },\n\n events: {\n 'load loadedmetadata'() {\n this.$emit('resize');\n }\n },\n\n resizeTargets() {\n return [this.$el, getPositionedParent(this.$el) || parent(this.$el)];\n },\n\n update: {\n read() {\n const { ratio, cover } = Dimensions;\n const { $el, width, height } = this;\n\n let dim = { width, height };\n\n if (!dim.width || !dim.height) {\n const intrinsic = {\n width: $el.naturalWidth || $el.videoWidth || $el.clientWidth,\n height: $el.naturalHeight || $el.videoHeight || $el.clientHeight\n };\n\n if (dim.width) {\n dim = ratio(intrinsic, 'width', dim.width);\n } else if (height) {\n dim = ratio(intrinsic, 'height', dim.height);\n } else {\n dim = intrinsic;\n }\n }\n\n const { offsetHeight: coverHeight, offsetWidth: coverWidth } =\n getPositionedParent($el) || parent($el);\n const coverDim = cover(dim, {\n width: coverWidth + (coverWidth % 2 ? 1 : 0),\n height: coverHeight + (coverHeight % 2 ? 1 : 0)\n });\n\n if (!coverDim.width || !coverDim.height) {\n return false;\n }\n\n return coverDim;\n },\n\n write({ height, width }) {\n css(this.$el, { height, width });\n },\n\n events: ['resize']\n }\n };\n\n function getPositionedParent(el) {\n while (el = parent(el)) {\n if (css(el, 'position') !== 'static') {\n return el;\n }\n }\n }\n\n var Container = {\n props: {\n container: Boolean\n },\n\n data: {\n container: true\n },\n\n computed: {\n container({ container }) {\n return container === true && this.$container || container && $(container);\n }\n }\n };\n\n var Position = {\n props: {\n pos: String,\n offset: null,\n flip: Boolean,\n shift: Boolean,\n inset: Boolean\n },\n\n data: {\n pos: `bottom-${isRtl ? 'right' : 'left'}`,\n offset: false,\n flip: true,\n shift: true,\n inset: false\n },\n\n connected() {\n this.pos = this.$props.pos.split('-').concat('center').slice(0, 2);\n [this.dir, this.align] = this.pos;\n this.axis = includes(['top', 'bottom'], this.dir) ? 'y' : 'x';\n },\n\n methods: {\n positionAt(element, target, boundary) {\n let offset = [this.getPositionOffset(element), this.getShiftOffset(element)];\n const placement = [this.flip && 'flip', this.shift && 'shift'];\n\n const attach = {\n element: [this.inset ? this.dir : flipPosition(this.dir), this.align],\n target: [this.dir, this.align]\n };\n\n if (this.axis === 'y') {\n for (const prop in attach) {\n attach[prop].reverse();\n }\n offset.reverse();\n placement.reverse();\n }\n\n const [scrollElement] = scrollParents(element);\n const { scrollTop, scrollLeft } = scrollElement;\n\n // Ensure none positioned element does not generate scrollbars\n const elDim = dimensions(element);\n css(element, { top: -elDim.height, left: -elDim.width });\n\n positionAt(element, target, {\n attach,\n offset,\n boundary,\n placement,\n viewportOffset: this.getViewportOffset(element)\n });\n\n // Restore scroll position\n scrollElement.scrollTop = scrollTop;\n scrollElement.scrollLeft = scrollLeft;\n },\n\n getPositionOffset(element) {\n return (\n toPx(\n this.offset === false ? css(element, '--uk-position-offset') : this.offset,\n this.axis === 'x' ? 'width' : 'height',\n element) * (\n\n includes(['left', 'top'], this.dir) ? -1 : 1) * (\n this.inset ? -1 : 1));\n\n },\n\n getShiftOffset(element) {\n return this.align === 'center' ?\n 0 :\n toPx(\n css(element, '--uk-position-shift-offset'),\n this.axis === 'y' ? 'width' : 'height',\n element) * (\n includes(['left', 'top'], this.align) ? 1 : -1);\n },\n\n getViewportOffset(element) {\n return toPx(css(element, '--uk-position-viewport-offset'));\n }\n }\n };\n\n const active$1 = [];\n\n var Modal = {\n mixins: [Class, Container, Togglable],\n\n props: {\n selPanel: String,\n selClose: String,\n escClose: Boolean,\n bgClose: Boolean,\n stack: Boolean\n },\n\n data: {\n cls: 'uk-open',\n escClose: true,\n bgClose: true,\n overlay: true,\n stack: false\n },\n\n computed: {\n panel({ selPanel }, $el) {\n return $(selPanel, $el);\n },\n\n transitionElement() {\n return this.panel;\n },\n\n bgClose({ bgClose }) {\n return bgClose && this.panel;\n }\n },\n\n beforeDisconnect() {\n if (includes(active$1, this)) {\n this.toggleElement(this.$el, false, false);\n }\n },\n\n events: [\n {\n name: 'click',\n\n delegate() {\n return `${this.selClose},a[href*=\"#\"]`;\n },\n\n handler(e) {\n const { current, defaultPrevented } = e;\n const { hash } = current;\n if (\n !defaultPrevented &&\n hash &&\n isSameSiteAnchor(current) &&\n !within(hash, this.$el) &&\n $(hash, document.body))\n {\n this.hide();\n } else if (matches(current, this.selClose)) {\n e.preventDefault();\n this.hide();\n }\n }\n },\n\n {\n name: 'toggle',\n\n self: true,\n\n handler(e) {\n if (e.defaultPrevented) {\n return;\n }\n\n e.preventDefault();\n\n if (this.isToggled() === includes(active$1, this)) {\n this.toggle();\n }\n }\n },\n\n {\n name: 'beforeshow',\n\n self: true,\n\n handler(e) {\n if (includes(active$1, this)) {\n return false;\n }\n\n if (!this.stack && active$1.length) {\n Promise.all(active$1.map((modal) => modal.hide())).then(this.show);\n e.preventDefault();\n } else {\n active$1.push(this);\n }\n }\n },\n\n {\n name: 'show',\n\n self: true,\n\n handler() {\n once(\n this.$el,\n 'hide',\n on(document, 'focusin', (e) => {\n if (last(active$1) === this && !within(e.target, this.$el)) {\n this.$el.focus();\n }\n }));\n\n\n if (this.overlay) {\n once(this.$el, 'hidden', preventBackgroundScroll(this.$el), { self: true });\n }\n\n if (this.stack) {\n css(this.$el, 'zIndex', toFloat(css(this.$el, 'zIndex')) + active$1.length);\n }\n\n addClass(document.documentElement, this.clsPage);\n\n if (this.bgClose) {\n once(\n this.$el,\n 'hide',\n on(document, pointerDown, ({ target }) => {\n if (\n last(active$1) !== this ||\n this.overlay && !within(target, this.$el) ||\n within(target, this.panel))\n {\n return;\n }\n\n once(\n document,\n `${pointerUp} ${pointerCancel} scroll`,\n ({ defaultPrevented, type, target: newTarget }) => {\n if (\n !defaultPrevented &&\n type === pointerUp &&\n target === newTarget)\n {\n this.hide();\n }\n },\n true);\n\n }),\n { self: true });\n\n }\n\n if (this.escClose) {\n once(\n this.$el,\n 'hide',\n on(document, 'keydown', (e) => {\n if (e.keyCode === 27 && last(active$1) === this) {\n this.hide();\n }\n }),\n { self: true });\n\n }\n }\n },\n\n {\n name: 'shown',\n\n self: true,\n\n handler() {\n if (!isFocusable(this.$el)) {\n attr(this.$el, 'tabindex', '-1');\n }\n\n if (!$(':focus', this.$el)) {\n this.$el.focus();\n }\n }\n },\n\n {\n name: 'hidden',\n\n self: true,\n\n handler() {\n if (includes(active$1, this)) {\n active$1.splice(active$1.indexOf(this), 1);\n }\n\n css(this.$el, 'zIndex', '');\n\n if (!active$1.some((modal) => modal.clsPage === this.clsPage)) {\n removeClass(document.documentElement, this.clsPage);\n }\n }\n }],\n\n\n methods: {\n toggle() {\n return this.isToggled() ? this.hide() : this.show();\n },\n\n show() {\n if (this.container && parent(this.$el) !== this.container) {\n append(this.container, this.$el);\n return new Promise((resolve) => requestAnimationFrame(() => this.show().then(resolve)));\n\n }\n\n return this.toggleElement(this.$el, true, animate);\n },\n\n hide() {\n return this.toggleElement(this.$el, false, animate);\n }\n }\n };\n\n function animate(el, show, { transitionElement, _toggle }) {\n return new Promise((resolve, reject) => once(el, 'show hide', () => {\n el._reject == null ? void 0 : el._reject();\n el._reject = reject;\n\n _toggle(el, show);\n\n const off = once(\n transitionElement,\n 'transitionstart',\n () => {\n once(transitionElement, 'transitionend transitioncancel', resolve, {\n self: true\n });\n clearTimeout(timer);\n },\n { self: true });\n\n\n const timer = setTimeout(() => {\n off();\n resolve();\n }, toMs(css(transitionElement, 'transitionDuration')));\n })).\n then(() => delete el._reject);\n }\n\n function toMs(time) {\n return time ? endsWith(time, 'ms') ? toFloat(time) : toFloat(time) * 1000 : 0;\n }\n\n let prevented;\n function preventBackgroundScroll(el) {\n // 'overscroll-behavior: contain' only works consistently if el overflows (Safari)\n const off = on(\n el,\n 'touchmove',\n (e) => {\n if (e.targetTouches.length !== 1) {\n return;\n }\n\n let [{ scrollHeight, clientHeight }] = scrollParents(e.target);\n\n if (clientHeight >= scrollHeight && e.cancelable) {\n e.preventDefault();\n }\n },\n { passive: false });\n\n\n if (prevented) {\n return off;\n }\n prevented = true;\n\n const { scrollingElement } = document;\n css(scrollingElement, {\n overflowY: CSS.supports('overflow', 'clip') ? 'clip' : 'hidden',\n touchAction: 'none',\n paddingRight: width(window) - scrollingElement.clientWidth || ''\n });\n return () => {\n prevented = false;\n off();\n css(scrollingElement, { overflowY: '', touchAction: '', paddingRight: '' });\n };\n }\n\n function isSameSiteAnchor(a) {\n return ['origin', 'pathname', 'search'].every((part) => a[part] === location[part]);\n }\n\n let active;\n\n var drop = {\n mixins: [Container, Lazyload, Position, Togglable],\n\n args: 'pos',\n\n props: {\n mode: 'list',\n toggle: Boolean,\n boundary: Boolean,\n boundaryX: Boolean,\n boundaryY: Boolean,\n target: Boolean,\n targetX: Boolean,\n targetY: Boolean,\n stretch: Boolean,\n delayShow: Number,\n delayHide: Number,\n autoUpdate: Boolean,\n clsDrop: String,\n animateOut: Boolean,\n bgScroll: Boolean\n },\n\n data: {\n mode: ['click', 'hover'],\n toggle: '- *',\n boundary: false,\n boundaryX: false,\n boundaryY: false,\n target: false,\n targetX: false,\n targetY: false,\n stretch: false,\n delayShow: 0,\n delayHide: 800,\n autoUpdate: true,\n clsDrop: false,\n animateOut: false,\n bgScroll: true,\n animation: ['uk-animation-fade'],\n cls: 'uk-open',\n container: false\n },\n\n computed: {\n boundary({ boundary, boundaryX, boundaryY }, $el) {\n return [\n query(boundaryX || boundary, $el) || window,\n query(boundaryY || boundary, $el) || window];\n\n },\n\n target({ target, targetX, targetY }, $el) {\n targetX = targetX || target || this.targetEl;\n targetY = targetY || target || this.targetEl;\n\n return [\n targetX === true ? window : query(targetX, $el),\n targetY === true ? window : query(targetY, $el)];\n\n }\n },\n\n created() {\n this.tracker = new MouseTracker();\n },\n\n beforeConnect() {\n this.clsDrop = this.$props.clsDrop || `uk-${this.$options.name}`;\n },\n\n connected() {\n addClass(this.$el, this.clsDrop);\n\n if (this.toggle && !this.targetEl) {\n this.targetEl = this.$create('toggle', query(this.toggle, this.$el), {\n target: this.$el,\n mode: this.mode\n }).$el;\n attr(this.targetEl, 'aria-haspopup', true);\n this.lazyload(this.targetEl);\n }\n\n this._style = (({ width, height }) => ({ width, height }))(this.$el.style);\n },\n\n disconnected() {\n if (this.isActive()) {\n this.hide(false);\n active = null;\n }\n css(this.$el, this._style);\n },\n\n events: [\n {\n name: 'click',\n\n delegate() {\n return `.${this.clsDrop}-close`;\n },\n\n handler(e) {\n e.preventDefault();\n this.hide(false);\n }\n },\n\n {\n name: 'click',\n\n delegate() {\n return 'a[href*=\"#\"]';\n },\n\n handler({ defaultPrevented, current }) {\n const { hash } = current;\n if (\n !defaultPrevented &&\n hash &&\n isSameSiteAnchor(current) &&\n !within(hash, this.$el))\n {\n this.hide(false);\n }\n }\n },\n\n {\n name: 'beforescroll',\n\n handler() {\n this.hide(false);\n }\n },\n\n {\n name: 'toggle',\n\n self: true,\n\n handler(e, toggle) {\n e.preventDefault();\n\n if (this.isToggled()) {\n this.hide(false);\n } else {\n this.show(toggle == null ? void 0 : toggle.$el, false);\n }\n }\n },\n\n {\n name: 'toggleshow',\n\n self: true,\n\n handler(e, toggle) {\n e.preventDefault();\n this.show(toggle == null ? void 0 : toggle.$el);\n }\n },\n\n {\n name: 'togglehide',\n\n self: true,\n\n handler(e) {\n e.preventDefault();\n if (!matches(this.$el, ':focus,:hover')) {\n this.hide();\n }\n }\n },\n\n {\n name: `${pointerEnter} focusin`,\n\n filter() {\n return includes(this.mode, 'hover');\n },\n\n handler(e) {\n if (!isTouch(e)) {\n this.clearTimers();\n }\n }\n },\n\n {\n name: `${pointerLeave} focusout`,\n\n filter() {\n return includes(this.mode, 'hover');\n },\n\n handler(e) {\n if (!isTouch(e) && e.relatedTarget) {\n this.hide();\n }\n }\n },\n\n {\n name: 'toggled',\n\n self: true,\n\n handler(e, toggled) {\n if (!toggled) {\n return;\n }\n\n this.clearTimers();\n this.position();\n }\n },\n\n {\n name: 'show',\n\n self: true,\n\n handler() {\n active = this;\n\n this.tracker.init();\n\n const update = () => this.$emit();\n const handlers = [\n on(\n document,\n pointerDown,\n ({ target }) => !within(target, this.$el) &&\n once(\n document,\n `${pointerUp} ${pointerCancel} scroll`,\n ({ defaultPrevented, type, target: newTarget }) => {\n if (\n !defaultPrevented &&\n type === pointerUp &&\n target === newTarget &&\n !(this.targetEl && within(target, this.targetEl)))\n {\n this.hide(false);\n }\n },\n true)),\n\n\n\n on(document, 'keydown', (e) => {\n if (e.keyCode === 27) {\n this.hide(false);\n }\n }),\n\n on(window, 'resize', update),\n\n (() => {\n const observer = observeResize(\n overflowParents(this.$el).concat(this.target),\n update);\n\n return () => observer.disconnect();\n })(),\n\n this.autoUpdate &&\n on([document, ...overflowParents(this.$el)], 'scroll', update, {\n passive: true\n }),\n\n !this.bgScroll && preventBackgroundScroll(this.$el)];\n\n\n once(this.$el, 'hide', () => handlers.forEach((handler) => handler && handler()), {\n self: true\n });\n }\n },\n\n {\n name: 'beforehide',\n\n self: true,\n\n handler() {\n this.clearTimers();\n }\n },\n\n {\n name: 'hide',\n\n handler({ target }) {\n if (this.$el !== target) {\n active =\n active === null && within(target, this.$el) && this.isToggled() ?\n this :\n active;\n return;\n }\n\n active = this.isActive() ? null : active;\n this.tracker.cancel();\n }\n }],\n\n\n update: {\n write() {\n if (this.isToggled() && !hasClass(this.$el, this.clsEnter)) {\n this.position();\n }\n }\n },\n\n methods: {\n show(target = this.targetEl, delay = true) {\n if (this.isToggled() && target && this.targetEl && target !== this.targetEl) {\n this.hide(false, false);\n }\n\n this.targetEl = target;\n\n this.clearTimers();\n\n if (this.isActive()) {\n return;\n }\n\n if (active) {\n if (delay && active.isDelaying) {\n this.showTimer = setTimeout(() => matches(target, ':hover') && this.show(), 10);\n return;\n }\n\n let prev;\n while (active && prev !== active && !within(this.$el, active.$el)) {\n prev = active;\n active.hide(false, false);\n }\n }\n\n if (this.container && parent(this.$el) !== this.container) {\n append(this.container, this.$el);\n }\n\n this.showTimer = setTimeout(\n () => this.toggleElement(this.$el, true),\n delay && this.delayShow || 0);\n\n },\n\n hide(delay = true, animate = true) {\n const hide = () => this.toggleElement(this.$el, false, this.animateOut && animate);\n\n this.clearTimers();\n\n this.isDelaying = getPositionedElements(this.$el).some((el) => this.tracker.movesTo(el));\n\n\n if (delay && this.isDelaying) {\n this.hideTimer = setTimeout(this.hide, 50);\n } else if (delay && this.delayHide) {\n this.hideTimer = setTimeout(hide, this.delayHide);\n } else {\n hide();\n }\n },\n\n clearTimers() {\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n this.showTimer = null;\n this.hideTimer = null;\n this.isDelaying = false;\n },\n\n isActive() {\n return active === this;\n },\n\n position() {\n removeClass(this.$el, `${this.clsDrop}-stack`);\n css(this.$el, this._style);\n\n // Ensure none positioned element does not generate scrollbars\n this.$el.hidden = true;\n\n const viewports = this.target.map((target) => getViewport$1(this.$el, target));\n const viewportOffset = this.getViewportOffset(this.$el);\n\n const dirs = [\n [0, ['x', 'width', 'left', 'right']],\n [1, ['y', 'height', 'top', 'bottom']]];\n\n\n for (const [i, [axis, prop]] of dirs) {\n if (this.axis !== axis && includes([axis, true], this.stretch)) {\n css(this.$el, {\n [prop]: Math.min(\n offset(this.boundary[i])[prop],\n viewports[i][prop] - 2 * viewportOffset),\n\n [`overflow-${axis}`]: 'auto'\n });\n }\n }\n\n const maxWidth = viewports[0].width - 2 * viewportOffset;\n\n if (this.$el.offsetWidth > maxWidth) {\n addClass(this.$el, `${this.clsDrop}-stack`);\n }\n\n css(this.$el, 'maxWidth', maxWidth);\n\n this.$el.hidden = false;\n\n this.positionAt(this.$el, this.target, this.boundary);\n\n for (const [i, [axis, prop, start, end]] of dirs) {\n if (this.axis === axis && includes([axis, true], this.stretch)) {\n const positionOffset = Math.abs(this.getPositionOffset(this.$el));\n const targetOffset = offset(this.target[i]);\n const elOffset = offset(this.$el);\n\n css(this.$el, {\n [prop]:\n (targetOffset[start] > elOffset[start] ?\n targetOffset[start] -\n Math.max(\n offset(this.boundary[i])[start],\n viewports[i][start] + viewportOffset) :\n\n Math.min(\n offset(this.boundary[i])[end],\n viewports[i][end] - viewportOffset) -\n targetOffset[end]) - positionOffset,\n [`overflow-${axis}`]: 'auto'\n });\n\n this.positionAt(this.$el, this.target, this.boundary);\n }\n }\n }\n }\n };\n\n function getPositionedElements(el) {\n const result = [];\n apply(el, (el) => css(el, 'position') !== 'static' && result.push(el));\n return result;\n }\n\n function getViewport$1(el, target) {\n return offsetViewport(overflowParents(target).find((parent) => within(el, parent)));\n }\n\n var formCustom = {\n mixins: [Class],\n\n args: 'target',\n\n props: {\n target: Boolean\n },\n\n data: {\n target: false\n },\n\n computed: {\n input(_, $el) {\n return $(selInput, $el);\n },\n\n state() {\n return this.input.nextElementSibling;\n },\n\n target({ target }, $el) {\n return (\n target && (\n target === true && parent(this.input) === $el && this.input.nextElementSibling ||\n $(target, $el)));\n\n }\n },\n\n update() {var _input$files;\n const { target, input } = this;\n\n if (!target) {\n return;\n }\n\n let option;\n const prop = isInput(target) ? 'value' : 'textContent';\n const prev = target[prop];\n const value = (_input$files = input.files) != null && _input$files[0] ?\n input.files[0].name :\n matches(input, 'select') && (\n option = $$('option', input).filter((el) => el.selected)[0]) // eslint-disable-line prefer-destructuring\n ? option.textContent :\n input.value;\n\n if (prev !== value) {\n target[prop] = value;\n }\n },\n\n events: [\n {\n name: 'change',\n\n handler() {\n this.$emit();\n }\n },\n\n {\n name: 'reset',\n\n el() {\n return closest(this.$el, 'form');\n },\n\n handler() {\n this.$emit();\n }\n }]\n\n };\n\n var Margin = {\n mixins: [Resize],\n\n props: {\n margin: String,\n firstColumn: Boolean\n },\n\n data: {\n margin: 'uk-margin-small-top',\n firstColumn: 'uk-first-column'\n },\n\n resizeTargets() {\n return [this.$el, ...toArray(this.$el.children)];\n },\n\n connected() {\n this.registerObserver(\n observeMutation(this.$el, () => this.$reset(), {\n childList: true,\n attributes: true,\n attributeFilter: ['style']\n }));\n\n },\n\n update: {\n read() {\n const rows = getRows(this.$el.children);\n\n return {\n rows,\n columns: getColumns(rows)\n };\n },\n\n write({ columns, rows }) {\n for (const row of rows) {\n for (const column of row) {\n toggleClass(column, this.margin, rows[0] !== row);\n toggleClass(column, this.firstColumn, columns[0].includes(column));\n }\n }\n },\n\n events: ['resize']\n }\n };\n\n function getRows(items) {\n return sortBy(items, 'top', 'bottom');\n }\n\n function getColumns(rows) {\n const columns = [];\n\n for (const row of rows) {\n const sorted = sortBy(row, 'left', 'right');\n for (let j = 0; j < sorted.length; j++) {\n columns[j] = columns[j] ? columns[j].concat(sorted[j]) : sorted[j];\n }\n }\n\n return isRtl ? columns.reverse() : columns;\n }\n\n function sortBy(items, startProp, endProp) {\n const sorted = [[]];\n\n for (const el of items) {\n if (!isVisible(el)) {\n continue;\n }\n\n let dim = getOffset(el);\n\n for (let i = sorted.length - 1; i >= 0; i--) {\n const current = sorted[i];\n\n if (!current[0]) {\n current.push(el);\n break;\n }\n\n let startDim;\n if (current[0].offsetParent === el.offsetParent) {\n startDim = getOffset(current[0]);\n } else {\n dim = getOffset(el, true);\n startDim = getOffset(current[0], true);\n }\n\n if (dim[startProp] >= startDim[endProp] - 1 && dim[startProp] !== startDim[startProp]) {\n sorted.push([el]);\n break;\n }\n\n if (dim[endProp] - 1 > startDim[startProp] || dim[startProp] === startDim[startProp]) {\n current.push(el);\n break;\n }\n\n if (i === 0) {\n sorted.unshift([el]);\n break;\n }\n }\n }\n\n return sorted;\n }\n\n function getOffset(element, offset = false) {\n let { offsetTop, offsetLeft, offsetHeight, offsetWidth } = element;\n\n if (offset) {\n [offsetTop, offsetLeft] = offsetPosition(element);\n }\n\n return {\n top: offsetTop,\n left: offsetLeft,\n bottom: offsetTop + offsetHeight,\n right: offsetLeft + offsetWidth\n };\n }\n\n var Scroll = {\n connected() {\n registerScrollListener(this._uid, () => this.$emit('scroll'));\n },\n\n disconnected() {\n unregisterScrollListener(this._uid);\n }\n };\n\n const scrollListeners = new Map();\n let unbindScrollListener;\n function registerScrollListener(id, listener) {\n unbindScrollListener =\n unbindScrollListener ||\n on(window, 'scroll', () => scrollListeners.forEach((listener) => listener()), {\n passive: true,\n capture: true\n });\n\n scrollListeners.set(id, listener);\n }\n\n function unregisterScrollListener(id) {\n scrollListeners.delete(id);\n if (unbindScrollListener && !scrollListeners.size) {\n unbindScrollListener();\n unbindScrollListener = null;\n }\n }\n\n var grid = {\n extends: Margin,\n\n mixins: [Class],\n\n name: 'grid',\n\n props: {\n masonry: Boolean,\n parallax: Number\n },\n\n data: {\n margin: 'uk-grid-margin',\n clsStack: 'uk-grid-stack',\n masonry: false,\n parallax: 0\n },\n\n connected() {\n this.masonry && addClass(this.$el, 'uk-flex-top uk-flex-wrap-top');\n this.parallax && registerScrollListener(this._uid, () => this.$emit('scroll'));\n },\n\n disconnected() {\n unregisterScrollListener(this._uid);\n },\n\n update: [\n {\n write({ columns }) {\n toggleClass(this.$el, this.clsStack, columns.length < 2);\n },\n\n events: ['resize']\n },\n\n {\n read(data) {\n let { columns, rows } = data;\n\n // Filter component makes elements positioned absolute\n if (\n !columns.length ||\n !this.masonry && !this.parallax ||\n positionedAbsolute(this.$el))\n {\n data.translates = false;\n return false;\n }\n\n let translates = false;\n\n const nodes = children(this.$el);\n const columnHeights = columns.map((column) => sumBy(column, 'offsetHeight'));\n const margin = getMarginTop(nodes, this.margin) * (rows.length - 1);\n const elHeight = Math.max(...columnHeights) + margin;\n\n if (this.masonry) {\n columns = columns.map((column) => sortBy$1(column, 'offsetTop'));\n translates = getTranslates(rows, columns);\n }\n\n let padding = Math.abs(this.parallax);\n if (padding) {\n padding = columnHeights.reduce(\n (newPadding, hgt, i) => Math.max(\n newPadding,\n hgt + margin + (i % 2 ? padding : padding / 8) - elHeight),\n\n 0);\n\n }\n\n return { padding, columns, translates, height: translates ? elHeight : '' };\n },\n\n write({ height, padding }) {\n css(this.$el, 'paddingBottom', padding || '');\n height !== false && css(this.$el, 'height', height);\n },\n\n events: ['resize']\n },\n\n {\n read() {\n if (this.parallax && positionedAbsolute(this.$el)) {\n return false;\n }\n\n return {\n scrolled: this.parallax ?\n scrolledOver(this.$el) * Math.abs(this.parallax) :\n false\n };\n },\n\n write({ columns, scrolled, translates }) {\n if (scrolled === false && !translates) {\n return;\n }\n\n columns.forEach((column, i) => column.forEach((el, j) => css(\n el,\n 'transform',\n !scrolled && !translates ?\n '' :\n `translateY(${\n (translates && -translates[i][j]) + (\n scrolled ? i % 2 ? scrolled : scrolled / 8 : 0)\n }px)`)));\n\n\n\n },\n\n events: ['scroll', 'resize']\n }]\n\n };\n\n function positionedAbsolute(el) {\n return children(el).some((el) => css(el, 'position') === 'absolute');\n }\n\n function getTranslates(rows, columns) {\n const rowHeights = rows.map((row) => Math.max(...row.map((el) => el.offsetHeight)));\n\n return columns.map((elements) => {\n let prev = 0;\n return elements.map(\n (element, row) => prev += row ? rowHeights[row - 1] - elements[row - 1].offsetHeight : 0);\n\n });\n }\n\n function getMarginTop(nodes, cls) {\n const [node] = nodes.filter((el) => hasClass(el, cls));\n\n return toFloat(node ? css(node, 'marginTop') : css(nodes[0], 'paddingLeft'));\n }\n\n var heightMatch = {\n mixins: [Resize],\n\n args: 'target',\n\n props: {\n target: String,\n row: Boolean\n },\n\n data: {\n target: '> *',\n row: true\n },\n\n computed: {\n elements: {\n get({ target }, $el) {\n return $$(target, $el);\n },\n\n watch() {\n this.$reset();\n }\n }\n },\n\n resizeTargets() {\n return [this.$el, ...this.elements];\n },\n\n update: {\n read() {\n return {\n rows: (this.row ? getRows(this.elements) : [this.elements]).map(match)\n };\n },\n\n write({ rows }) {\n for (const { heights, elements } of rows) {\n elements.forEach((el, i) => css(el, 'minHeight', heights[i]));\n }\n },\n\n events: ['resize']\n }\n };\n\n function match(elements) {\n if (elements.length < 2) {\n return { heights: [''], elements };\n }\n\n css(elements, 'minHeight', '');\n let heights = elements.map(getHeight);\n const max = Math.max(...heights);\n\n return {\n heights: elements.map((el, i) => heights[i].toFixed(2) === max.toFixed(2) ? '' : max),\n elements\n };\n }\n\n function getHeight(element) {\n let style = false;\n if (!isVisible(element)) {\n style = element.style.display;\n css(element, 'display', 'block', 'important');\n }\n\n const height = dimensions(element).height - boxModelAdjust(element, 'height', 'content-box');\n\n if (style !== false) {\n css(element, 'display', style);\n }\n\n return height;\n }\n\n var heightViewport = {\n mixins: [Resize],\n\n props: {\n expand: Boolean,\n offsetTop: Boolean,\n offsetBottom: Boolean,\n minHeight: Number\n },\n\n data: {\n expand: false,\n offsetTop: false,\n offsetBottom: false,\n minHeight: 0\n },\n\n resizeTargets() {\n // check for offsetTop change\n return [this.$el, ...scrollParents(this.$el)];\n },\n\n update: {\n read({ minHeight: prev }) {\n if (!isVisible(this.$el)) {\n return false;\n }\n\n let minHeight = '';\n const box = boxModelAdjust(this.$el, 'height', 'content-box');\n\n const { body, scrollingElement } = document;\n const [scrollElement] = scrollParents(this.$el);\n const { height: viewportHeight } = offsetViewport(\n scrollElement === body ? scrollingElement : scrollElement);\n\n\n if (this.expand) {\n minHeight = Math.max(\n viewportHeight - (\n dimensions(scrollElement).height - dimensions(this.$el).height) -\n box,\n 0);\n\n } else {\n const isScrollingElement =\n scrollingElement === scrollElement || body === scrollElement;\n\n // on mobile devices (iOS and Android) window.innerHeight !== 100vh\n minHeight = `calc(${isScrollingElement ? '100vh' : `${viewportHeight}px`}`;\n\n if (this.offsetTop) {\n if (isScrollingElement) {\n const top = offsetPosition(this.$el)[0] - offsetPosition(scrollElement)[0];\n minHeight += top > 0 && top < viewportHeight / 2 ? ` - ${top}px` : '';\n } else {\n minHeight += ` - ${css(scrollElement, 'paddingTop')}`;\n }\n }\n\n if (this.offsetBottom === true) {\n minHeight += ` - ${dimensions(this.$el.nextElementSibling).height}px`;\n } else if (isNumeric(this.offsetBottom)) {\n minHeight += ` - ${this.offsetBottom}vh`;\n } else if (this.offsetBottom && endsWith(this.offsetBottom, 'px')) {\n minHeight += ` - ${toFloat(this.offsetBottom)}px`;\n } else if (isString(this.offsetBottom)) {\n minHeight += ` - ${dimensions(query(this.offsetBottom, this.$el)).height}px`;\n }\n\n minHeight += `${box ? ` - ${box}px` : ''})`;\n }\n\n return { minHeight, prev };\n },\n\n write({ minHeight }) {\n css(this.$el, { minHeight });\n\n if (this.minHeight && toFloat(css(this.$el, 'minHeight')) < this.minHeight) {\n css(this.$el, 'minHeight', this.minHeight);\n }\n },\n\n events: ['resize']\n }\n };\n\n var SVG = {\n args: 'src',\n\n props: {\n id: Boolean,\n icon: String,\n src: String,\n style: String,\n width: Number,\n height: Number,\n ratio: Number,\n class: String,\n strokeAnimation: Boolean,\n attributes: 'list'\n },\n\n data: {\n ratio: 1,\n include: ['style', 'class'],\n class: '',\n strokeAnimation: false\n },\n\n beforeConnect() {\n this.class += ' uk-svg';\n },\n\n connected() {\n if (!this.icon && includes(this.src, '#')) {\n [this.src, this.icon] = this.src.split('#');\n }\n\n this.svg = this.getSvg().then((el) => {\n if (this._connected) {\n const svg = insertSVG(el, this.$el);\n\n if (this.svgEl && svg !== this.svgEl) {\n remove$1(this.svgEl);\n }\n\n this.applyAttributes(svg, el);\n\n return this.svgEl = svg;\n }\n }, noop);\n\n if (this.strokeAnimation) {\n this.svg.then((el) => {\n if (this._connected && el) {\n applyAnimation(el);\n this.registerObserver(\n observeIntersection(el, (records, observer) => {\n applyAnimation(el);\n observer.disconnect();\n }));\n\n }\n });\n }\n },\n\n disconnected() {\n this.svg.then((svg) => {\n if (this._connected) {\n return;\n }\n\n if (isVoidElement(this.$el)) {\n this.$el.hidden = false;\n }\n\n remove$1(svg);\n this.svgEl = null;\n });\n\n this.svg = null;\n },\n\n methods: {\n async getSvg() {\n if (isTag(this.$el, 'img') && !this.$el.complete && this.$el.loading === 'lazy') {\n return new Promise((resolve) => once(this.$el, 'load', () => resolve(this.getSvg())));\n\n }\n\n return parseSVG(await loadSVG(this.src), this.icon) || Promise.reject('SVG not found.');\n },\n\n applyAttributes(el, ref) {\n for (const prop in this.$options.props) {\n if (includes(this.include, prop) && prop in this) {\n attr(el, prop, this[prop]);\n }\n }\n\n for (const attribute in this.attributes) {\n const [prop, value] = this.attributes[attribute].split(':', 2);\n attr(el, prop, value);\n }\n\n if (!this.id) {\n removeAttr(el, 'id');\n }\n\n const props = ['width', 'height'];\n let dimensions = props.map((prop) => this[prop]);\n\n if (!dimensions.some((val) => val)) {\n dimensions = props.map((prop) => attr(ref, prop));\n }\n\n const viewBox = attr(ref, 'viewBox');\n if (viewBox && !dimensions.some((val) => val)) {\n dimensions = viewBox.split(' ').slice(2);\n }\n\n dimensions.forEach((val, i) => attr(el, props[i], toFloat(val) * this.ratio || null));\n }\n }\n };\n\n const loadSVG = memoize(async (src) => {\n if (src) {\n if (startsWith(src, 'data:')) {\n return decodeURIComponent(src.split(',')[1]);\n } else {\n return (await fetch(src)).text();\n }\n } else {\n return Promise.reject();\n }\n });\n\n function parseSVG(svg, icon) {var _svg;\n if (icon && includes(svg, '/g;\n const symbols = {};\n\n function parseSymbols(svg, icon) {\n if (!symbols[svg]) {\n symbols[svg] = {};\n\n symbolRe.lastIndex = 0;\n\n let match;\n while (match = symbolRe.exec(svg)) {\n symbols[svg][match[3]] = ``;\n }\n }\n\n return symbols[svg][icon];\n }\n\n function applyAnimation(el) {\n const length = getMaxPathLength(el);\n\n if (length) {\n el.style.setProperty('--uk-animation-stroke', length);\n }\n }\n\n function getMaxPathLength(el) {\n return Math.ceil(\n Math.max(\n 0,\n ...$$('[stroke]', el).map((stroke) => {\n try {\n return stroke.getTotalLength();\n } catch (e) {\n return 0;\n }\n })));\n\n\n }\n\n function insertSVG(el, root) {\n if (isVoidElement(root) || isTag(root, 'canvas')) {\n root.hidden = true;\n\n const next = root.nextElementSibling;\n return equals(el, next) ? next : after(root, el);\n }\n\n const last = root.lastElementChild;\n return equals(el, last) ? last : append(root, el);\n }\n\n function equals(el, other) {\n return isTag(el, 'svg') && isTag(other, 'svg') && el.innerHTML === other.innerHTML;\n }\n\n var closeIcon = \"\";\n\n var closeLarge = \"\";\n\n var marker = \"\";\n\n var navParentIcon = \"\";\n\n var navParentIconLarge = \"\";\n\n var navbarParentIcon = \"\";\n\n var navbarToggleIcon = \"\";\n\n var overlayIcon = \"\";\n\n var paginationNext = \"\";\n\n var paginationPrevious = \"\";\n\n var searchIcon = \"\";\n\n var searchLarge = \"\";\n\n var searchNavbar = \"\";\n\n var slidenavNext = \"\";\n\n var slidenavNextLarge = \"\";\n\n var slidenavPrevious = \"\";\n\n var slidenavPreviousLarge = \"\";\n\n var spinner = \"\";\n\n var subnavParentIcon = \"\";\n\n var totop = \"\";\n\n const icons = {\n spinner,\n totop,\n marker,\n 'close-icon': closeIcon,\n 'close-large': closeLarge,\n 'nav-parent-icon': navParentIcon,\n 'nav-parent-icon-large': navParentIconLarge,\n 'navbar-parent-icon': navbarParentIcon,\n 'navbar-toggle-icon': navbarToggleIcon,\n 'overlay-icon': overlayIcon,\n 'pagination-next': paginationNext,\n 'pagination-previous': paginationPrevious,\n 'search-icon': searchIcon,\n 'search-large': searchLarge,\n 'search-navbar': searchNavbar,\n 'slidenav-next': slidenavNext,\n 'slidenav-next-large': slidenavNextLarge,\n 'slidenav-previous': slidenavPrevious,\n 'slidenav-previous-large': slidenavPreviousLarge,\n 'subnav-parent-icon': subnavParentIcon\n };\n\n const Icon = {\n install: install$1,\n\n extends: SVG,\n\n args: 'icon',\n\n props: ['icon'],\n\n data: { include: [] },\n\n isIcon: true,\n\n beforeConnect() {\n addClass(this.$el, 'uk-icon');\n },\n\n methods: {\n async getSvg() {\n const icon = getIcon(this.icon);\n\n if (!icon) {\n throw 'Icon not found.';\n }\n\n return icon;\n }\n }\n };\n\n const IconComponent = {\n args: false,\n\n extends: Icon,\n\n data: (vm) => ({\n icon: hyphenate(vm.constructor.options.name)\n }),\n\n beforeConnect() {\n addClass(this.$el, this.$options.id);\n }\n };\n\n const NavParentIcon = {\n extends: IconComponent,\n\n beforeConnect() {\n const icon = this.$props.icon;\n this.icon = closest(this.$el, '.uk-nav-primary') ? `${icon}-large` : icon;\n }\n };\n\n const Slidenav = {\n extends: IconComponent,\n\n beforeConnect() {\n addClass(this.$el, 'uk-slidenav');\n const icon = this.$props.icon;\n this.icon = hasClass(this.$el, 'uk-slidenav-large') ? `${icon}-large` : icon;\n }\n };\n\n const Search = {\n extends: IconComponent,\n\n beforeConnect() {\n this.icon =\n hasClass(this.$el, 'uk-search-icon') && parents(this.$el, '.uk-search-large').length ?\n 'search-large' :\n parents(this.$el, '.uk-search-navbar').length ?\n 'search-navbar' :\n this.$props.icon;\n }\n };\n\n const Close = {\n extends: IconComponent,\n\n beforeConnect() {\n this.icon = `close-${hasClass(this.$el, 'uk-close-large') ? 'large' : 'icon'}`;\n }\n };\n\n const Spinner = {\n extends: IconComponent,\n\n methods: {\n async getSvg() {\n const icon = await Icon.methods.getSvg.call(this);\n\n if (this.ratio !== 1) {\n css($('circle', icon), 'strokeWidth', 1 / this.ratio);\n }\n\n return icon;\n }\n }\n };\n\n const parsed = {};\n function install$1(UIkit) {\n UIkit.icon.add = (name, svg) => {\n const added = isString(name) ? { [name]: svg } : name;\n each(added, (svg, name) => {\n icons[name] = svg;\n delete parsed[name];\n });\n\n if (UIkit._initialized) {\n apply(document.body, (el) => each(UIkit.getComponents(el), (cmp) => {\n cmp.$options.isIcon && cmp.icon in added && cmp.$reset();\n }));\n\n }\n };\n }\n\n function getIcon(icon) {\n if (!icons[icon]) {\n return null;\n }\n\n if (!parsed[icon]) {\n parsed[icon] = $((icons[applyRtl(icon)] || icons[icon]).trim());\n }\n\n return parsed[icon].cloneNode(true);\n }\n\n function applyRtl(icon) {\n return isRtl ? swap(swap(icon, 'left', 'right'), 'previous', 'next') : icon;\n }\n\n const nativeLazyLoad = inBrowser && 'loading' in HTMLImageElement.prototype;\n\n var img = {\n args: 'dataSrc',\n\n props: {\n dataSrc: String,\n sources: String,\n margin: String,\n target: String,\n loading: String\n },\n\n data: {\n dataSrc: '',\n sources: false,\n margin: '50%',\n target: false,\n loading: 'lazy'\n },\n\n connected() {\n if (this.loading !== 'lazy') {\n this.load();\n return;\n }\n\n const target = [this.$el, ...queryAll(this.$props.target, this.$el)];\n\n if (nativeLazyLoad && isImg(this.$el)) {\n this.$el.loading = 'lazy';\n setSrcAttrs(this.$el);\n\n if (target.length === 1) {\n return;\n }\n }\n\n ensureSrcAttribute(this.$el);\n\n this.registerObserver(\n observeIntersection(\n target,\n (entries, observer) => {\n this.load();\n observer.disconnect();\n },\n { rootMargin: this.margin }));\n\n\n },\n\n disconnected() {\n if (this._data.image) {\n this._data.image.onload = '';\n }\n },\n\n methods: {\n load() {\n if (this._data.image) {\n return this._data.image;\n }\n\n const image = isImg(this.$el) ?\n this.$el :\n getImageFromElement(this.$el, this.dataSrc, this.sources);\n\n removeAttr(image, 'loading');\n setSrcAttrs(this.$el, image.currentSrc);\n return this._data.image = image;\n }\n }\n };\n\n function setSrcAttrs(el, src) {\n if (isImg(el)) {\n const parentNode = parent(el);\n const elements = isTag(parentNode, 'picture') ? children(parentNode) : [el];\n elements.forEach((el) => setSourceProps(el, el));\n } else if (src) {\n const change = !includes(el.style.backgroundImage, src);\n if (change) {\n css(el, 'backgroundImage', `url(${escape(src)})`);\n trigger(el, createEvent('load', false));\n }\n }\n }\n\n const srcProps = ['data-src', 'data-srcset', 'sizes'];\n function setSourceProps(sourceEl, targetEl) {\n srcProps.forEach((prop) => {\n const value = data(sourceEl, prop);\n if (value) {\n attr(targetEl, prop.replace(/^(data-)+/, ''), value);\n }\n });\n }\n\n function getImageFromElement(el, src, sources) {\n const img = new Image();\n\n wrapInPicture(img, sources);\n setSourceProps(el, img);\n img.onload = () => {\n setSrcAttrs(el, img.currentSrc);\n };\n attr(img, 'src', src);\n return img;\n }\n\n function wrapInPicture(img, sources) {\n sources = parseSources(sources);\n\n if (sources.length) {\n const picture = fragment('');\n for (const attrs of sources) {\n const source = fragment('');\n attr(source, attrs);\n append(picture, source);\n }\n append(picture, img);\n }\n }\n\n function parseSources(sources) {\n if (!sources) {\n return [];\n }\n\n if (startsWith(sources, '[')) {\n try {\n sources = JSON.parse(sources);\n } catch (e) {\n sources = [];\n }\n } else {\n sources = parseOptions(sources);\n }\n\n if (!isArray(sources)) {\n sources = [sources];\n }\n\n return sources.filter((source) => !isEmpty(source));\n }\n\n function ensureSrcAttribute(el) {\n if (isImg(el) && !hasAttr(el, 'src')) {\n attr(el, 'src', 'data:image/svg+xml;utf8,');\n }\n }\n\n function isImg(el) {\n return isTag(el, 'img');\n }\n\n var Media = {\n props: {\n media: Boolean\n },\n\n data: {\n media: false\n },\n\n connected() {\n const media = toMedia(this.media, this.$el);\n this.matchMedia = true;\n if (media) {\n this.mediaObj = window.matchMedia(media);\n const handler = () => {\n this.matchMedia = this.mediaObj.matches;\n trigger(this.$el, createEvent('mediachange', false, true, [this.mediaObj]));\n };\n this.offMediaObj = on(this.mediaObj, 'change', () => {\n handler();\n this.$emit('resize');\n });\n handler();\n }\n },\n\n disconnected() {var _this$offMediaObj;\n (_this$offMediaObj = this.offMediaObj) == null ? void 0 : _this$offMediaObj.call(this);\n }\n };\n\n function toMedia(value, element) {\n if (isString(value)) {\n if (startsWith(value, '@')) {\n value = toFloat(css(element, `--uk-breakpoint-${value.substr(1)}`));\n } else if (isNaN(value)) {\n return value;\n }\n }\n\n return value && isNumeric(value) ? `(min-width: ${value}px)` : '';\n }\n\n var leader = {\n mixins: [Class, Media, Resize],\n\n props: {\n fill: String\n },\n\n data: {\n fill: '',\n clsWrapper: 'uk-leader-fill',\n clsHide: 'uk-leader-hide',\n attrFill: 'data-fill'\n },\n\n computed: {\n fill({ fill }) {\n return fill || css(this.$el, '--uk-leader-fill-content');\n }\n },\n\n connected() {\n [this.wrapper] = wrapInner(this.$el, ``);\n },\n\n disconnected() {\n unwrap(this.wrapper.childNodes);\n },\n\n update: {\n read() {\n const width = Math.trunc(this.$el.offsetWidth / 2);\n\n return {\n width,\n fill: this.fill,\n hide: !this.matchMedia\n };\n },\n\n write({ width, fill, hide }) {\n toggleClass(this.wrapper, this.clsHide, hide);\n attr(this.wrapper, this.attrFill, new Array(width).join(fill));\n },\n\n events: ['resize']\n }\n };\n\n var modal = {\n install,\n\n mixins: [Modal],\n\n data: {\n clsPage: 'uk-modal-page',\n selPanel: '.uk-modal-dialog',\n selClose:\n '.uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full'\n },\n\n events: [\n {\n name: 'show',\n\n self: true,\n\n handler() {\n if (hasClass(this.panel, 'uk-margin-auto-vertical')) {\n addClass(this.$el, 'uk-flex');\n } else {\n css(this.$el, 'display', 'block');\n }\n\n height(this.$el); // force reflow\n }\n },\n\n {\n name: 'hidden',\n\n self: true,\n\n handler() {\n css(this.$el, 'display', '');\n removeClass(this.$el, 'uk-flex');\n }\n }]\n\n };\n\n function install({ modal }) {\n modal.dialog = function (content, options) {\n const dialog = modal(\n `
${content}
`,\n options);\n\n\n dialog.show();\n\n on(\n dialog.$el,\n 'hidden',\n async () => {\n await Promise.resolve();\n dialog.$destroy(true);\n },\n { self: true });\n\n\n return dialog;\n };\n\n modal.alert = function (message, options) {\n return openDialog(\n ({ labels }) => `
${\n isString(message) ? message : html(message)\n }
`,\n options,\n (deferred) => deferred.resolve());\n\n };\n\n modal.confirm = function (message, options) {\n return openDialog(\n ({ labels }) => `
${isString(message) ? message : html(message)}
`,\n options,\n (deferred) => deferred.reject());\n\n };\n\n modal.prompt = function (message, value, options) {\n return openDialog(\n ({ labels }) => `
`,\n options,\n (deferred) => deferred.resolve(null),\n (dialog) => $('input', dialog.$el).value);\n\n };\n\n modal.labels = {\n ok: 'Ok',\n cancel: 'Cancel'\n };\n\n function openDialog(tmpl, options, hideFn, submitFn) {\n options = { bgClose: false, escClose: true, labels: modal.labels, ...options };\n\n const dialog = modal.dialog(tmpl(options), options);\n const deferred = new Deferred();\n\n let resolved = false;\n\n on(dialog.$el, 'submit', 'form', (e) => {\n e.preventDefault();\n deferred.resolve(submitFn == null ? void 0 : submitFn(dialog));\n resolved = true;\n dialog.hide();\n });\n\n on(dialog.$el, 'hide', () => !resolved && hideFn(deferred));\n\n deferred.promise.dialog = dialog;\n\n return deferred.promise;\n }\n }\n\n var nav = {\n extends: Accordion,\n\n data: {\n targets: '> .uk-parent',\n toggle: '> a',\n content: '> ul'\n }\n };\n\n var navbar = {\n mixins: [Class, Container],\n\n props: {\n dropdown: String,\n align: String,\n clsDrop: String,\n boundary: Boolean,\n dropbar: Boolean,\n dropbarAnchor: Boolean,\n duration: Number,\n mode: Boolean,\n offset: Boolean,\n stretch: Boolean,\n delayShow: Boolean,\n delayHide: Boolean,\n target: Boolean,\n targetX: Boolean,\n targetY: Boolean,\n animation: Boolean,\n animateOut: Boolean\n },\n\n data: {\n dropdown: '.uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle',\n align: isRtl ? 'right' : 'left',\n clsDrop: 'uk-navbar-dropdown',\n boundary: true,\n dropbar: false,\n dropbarAnchor: false,\n duration: 200,\n container: false\n },\n\n computed: {\n dropbarAnchor({ dropbarAnchor }, $el) {\n return query(dropbarAnchor, $el) || $el;\n },\n\n dropbar: {\n get({ dropbar }) {\n if (!dropbar) {\n return null;\n }\n\n dropbar =\n this._dropbar ||\n query(dropbar, this.$el) ||\n $('+ .uk-navbar-dropbar', this.$el);\n\n return dropbar ? dropbar : this._dropbar = $('
');\n },\n\n watch(dropbar) {\n addClass(dropbar, 'uk-dropbar', 'uk-dropbar-top', 'uk-navbar-dropbar');\n },\n\n immediate: true\n },\n\n dropContainer(_, $el) {\n return this.container || $el;\n },\n\n dropdowns: {\n get({ clsDrop }, $el) {\n const dropdowns = $$(`.${clsDrop}`, $el);\n\n if (this.dropContainer !== $el) {\n for (const el of $$(`.${clsDrop}`, this.dropContainer)) {var _this$getDropdown;\n const target = (_this$getDropdown = this.getDropdown(el)) == null ? void 0 : _this$getDropdown.targetEl;\n if (!includes(dropdowns, el) && target && within(target, this.$el)) {\n dropdowns.push(el);\n }\n }\n }\n\n return dropdowns;\n },\n\n watch(dropdowns) {\n this.$create(\n 'drop',\n dropdowns.filter((el) => !this.getDropdown(el)),\n {\n ...this.$props,\n flip: false,\n shift: true,\n pos: `bottom-${this.align}`,\n boundary: this.boundary === true ? this.$el : this.boundary\n });\n\n },\n\n immediate: true\n },\n\n toggles: {\n get({ dropdown }, $el) {\n return $$(dropdown, $el);\n },\n\n watch() {\n const justify = hasClass(this.$el, 'uk-navbar-justify');\n for (const container of $$(\n '.uk-navbar-nav, .uk-navbar-left, .uk-navbar-right',\n this.$el))\n {\n css(container, 'flexGrow', justify ? $$(this.dropdown, container).length : '');\n }\n },\n\n immediate: true\n }\n },\n\n disconnected() {\n this.dropbar && remove$1(this.dropbar);\n delete this._dropbar;\n },\n\n events: [\n {\n name: 'mouseover focusin',\n\n delegate() {\n return this.dropdown;\n },\n\n handler({ current }) {\n const active = this.getActive();\n if (\n active &&\n includes(active.mode, 'hover') &&\n active.targetEl &&\n !within(active.targetEl, current) &&\n !active.isDelaying)\n {\n active.hide(false);\n }\n }\n },\n\n {\n name: 'keydown',\n\n delegate() {\n return this.dropdown;\n },\n\n handler(e) {\n const { current, keyCode } = e;\n const active = this.getActive();\n\n if (keyCode === keyMap.DOWN && hasAttr(current, 'aria-expanded')) {\n e.preventDefault();\n\n if (!active || active.targetEl !== current) {\n current.click();\n once(this.dropContainer, 'show', ({ target }) => focusFirstFocusableElement(target));\n\n } else {\n focusFirstFocusableElement(active.$el);\n }\n }\n\n handleNavItemNavigation(e, this.toggles, active);\n }\n },\n\n {\n name: 'keydown',\n\n el() {\n return this.dropContainer;\n },\n\n delegate() {\n return `.${this.clsDrop}`;\n },\n\n handler(e) {\n const { current, keyCode } = e;\n\n if (!includes(this.dropdowns, current)) {\n return;\n }\n\n const active = this.getActive();\n const elements = $$(selFocusable, current);\n const i = findIndex(elements, (el) => matches(el, ':focus'));\n\n if (keyCode === keyMap.UP) {\n e.preventDefault();\n if (i > 0) {\n elements[i - 1].focus();\n }\n }\n\n if (keyCode === keyMap.DOWN) {\n e.preventDefault();\n if (i < elements.length - 1) {\n elements[i + 1].focus();\n }\n }\n\n if (keyCode === keyMap.ESC) {var _active$targetEl;\n (_active$targetEl = active.targetEl) == null ? void 0 : _active$targetEl.focus();\n }\n\n handleNavItemNavigation(e, this.toggles, active);\n }\n },\n\n {\n name: 'mouseleave',\n\n el() {\n return this.dropbar;\n },\n\n filter() {\n return this.dropbar;\n },\n\n handler() {\n const active = this.getActive();\n\n if (\n active &&\n includes(active.mode, 'hover') &&\n !this.dropdowns.some((el) => matches(el, ':hover')))\n {\n active.hide();\n }\n }\n },\n\n {\n name: 'beforeshow',\n\n el() {\n return this.dropContainer;\n },\n\n filter() {\n return this.dropbar;\n },\n\n handler({ target }) {\n if (!this.isDropbarDrop(target)) {\n return;\n }\n\n if (this.dropbar.previousElementSibling !== this.dropbarAnchor) {\n after(this.dropbarAnchor, this.dropbar);\n }\n\n addClass(target, `${this.clsDrop}-dropbar`);\n }\n },\n\n {\n name: 'show',\n\n el() {\n return this.dropContainer;\n },\n\n filter() {\n return this.dropbar;\n },\n\n handler({ target }) {\n if (!this.isDropbarDrop(target)) {\n return;\n }\n\n const drop = this.getDropdown(target);\n this._observer = observeResize([drop.$el, ...drop.target], () => {\n const targetOffsets = parents(target, `.${this.clsDrop}`).\n concat(target).\n map((el) => offset(el));\n const minTop = Math.min(...targetOffsets.map(({ top }) => top));\n const maxBottom = Math.max(...targetOffsets.map(({ bottom }) => bottom));\n const dropbarOffset = offset(this.dropbar);\n css(this.dropbar, 'top', this.dropbar.offsetTop - (dropbarOffset.top - minTop));\n this.transitionTo(\n maxBottom - minTop + toFloat(css(target, 'marginBottom')),\n target);\n\n });\n }\n },\n\n {\n name: 'beforehide',\n\n el() {\n return this.dropContainer;\n },\n\n filter() {\n return this.dropbar;\n },\n\n handler(e) {\n const active = this.getActive();\n\n if (\n matches(this.dropbar, ':hover') &&\n active.$el === e.target &&\n !this.toggles.some((el) => active.targetEl !== el && matches(el, ':focus')))\n {\n e.preventDefault();\n }\n }\n },\n\n {\n name: 'hide',\n\n el() {\n return this.dropContainer;\n },\n\n filter() {\n return this.dropbar;\n },\n\n handler({ target }) {var _this$_observer;\n if (!this.isDropbarDrop(target)) {\n return;\n }\n\n (_this$_observer = this._observer) == null ? void 0 : _this$_observer.disconnect();\n\n const active = this.getActive();\n\n if (!active || active.$el === target) {\n this.transitionTo(0);\n }\n }\n }],\n\n\n methods: {\n getActive() {\n return includes(this.dropdowns, active == null ? void 0 : active.$el) && active;\n },\n\n transitionTo(newHeight, el) {\n const { dropbar } = this;\n const oldHeight = height(dropbar);\n\n el = oldHeight < newHeight && el;\n\n css(el, 'clipPath', `polygon(0 0,100% 0,100% ${oldHeight}px,0 ${oldHeight}px)`);\n\n height(dropbar, oldHeight);\n\n Transition.cancel([el, dropbar]);\n Promise.all([\n Transition.start(dropbar, { height: newHeight }, this.duration),\n Transition.start(\n el,\n {\n clipPath: `polygon(0 0,100% 0,100% ${newHeight}px,0 ${newHeight}px)`\n },\n this.duration)]).\n\n\n catch(noop).\n then(() => css(el, { clipPath: '' }));\n },\n\n getDropdown(el) {\n return this.$getComponent(el, 'drop') || this.$getComponent(el, 'dropdown');\n },\n\n isDropbarDrop(el) {\n return this.getDropdown(el) && hasClass(el, this.clsDrop);\n }\n }\n };\n\n function handleNavItemNavigation(e, toggles, active) {\n const { current, keyCode } = e;\n const target = active.targetEl || current;\n const i = toggles.indexOf(target);\n\n // Left\n if (keyCode === keyMap.LEFT && i > 0) {\n active.hide == null ? void 0 : active.hide(false);\n toggles[i - 1].focus();\n }\n\n // Right\n if (keyCode === keyMap.RIGHT && i < toggles.length - 1) {\n active.hide == null ? void 0 : active.hide(false);\n toggles[i + 1].focus();\n }\n\n if (keyCode === keyMap.TAB) {\n target.focus();\n active.hide == null ? void 0 : active.hide(false);\n }\n }\n\n function focusFirstFocusableElement(el) {\n if (!$(':focus', el)) {var _$;\n (_$ = $(selFocusable, el)) == null ? void 0 : _$.focus();\n }\n }\n\n const keyMap = {\n TAB: 9,\n ESC: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40\n };\n\n var Swipe = {\n props: {\n swiping: Boolean\n },\n\n data: {\n swiping: true\n },\n\n computed: {\n swipeTarget(props, $el) {\n return $el;\n }\n },\n\n connected() {\n if (!this.swiping) {\n return;\n }\n\n registerEvent(this, {\n el: this.swipeTarget,\n name: pointerDown,\n passive: true,\n handler(e) {\n if (!isTouch(e)) {\n return;\n }\n\n // Handle Swipe Gesture\n const pos = getEventPos(e);\n const target = 'tagName' in e.target ? e.target : parent(e.target);\n once(document, `${pointerUp} ${pointerCancel} scroll`, (e) => {\n const { x, y } = getEventPos(e);\n\n // swipe\n if (\n e.type !== 'scroll' && target && x && Math.abs(pos.x - x) > 100 ||\n y && Math.abs(pos.y - y) > 100)\n {\n setTimeout(() => {\n trigger(target, 'swipe');\n trigger(target, `swipe${swipeDirection(pos.x, pos.y, x, y)}`);\n });\n }\n });\n }\n });\n }\n };\n\n function swipeDirection(x1, y1, x2, y2) {\n return Math.abs(x1 - x2) >= Math.abs(y1 - y2) ?\n x1 - x2 > 0 ?\n 'Left' :\n 'Right' :\n y1 - y2 > 0 ?\n 'Up' :\n 'Down';\n }\n\n var offcanvas = {\n mixins: [Modal, Swipe],\n\n args: 'mode',\n\n props: {\n mode: String,\n flip: Boolean,\n overlay: Boolean\n },\n\n data: {\n mode: 'slide',\n flip: false,\n overlay: false,\n clsPage: 'uk-offcanvas-page',\n clsContainer: 'uk-offcanvas-container',\n selPanel: '.uk-offcanvas-bar',\n clsFlip: 'uk-offcanvas-flip',\n clsContainerAnimation: 'uk-offcanvas-container-animation',\n clsSidebarAnimation: 'uk-offcanvas-bar-animation',\n clsMode: 'uk-offcanvas',\n clsOverlay: 'uk-offcanvas-overlay',\n selClose: '.uk-offcanvas-close',\n container: false\n },\n\n computed: {\n clsFlip({ flip, clsFlip }) {\n return flip ? clsFlip : '';\n },\n\n clsOverlay({ overlay, clsOverlay }) {\n return overlay ? clsOverlay : '';\n },\n\n clsMode({ mode, clsMode }) {\n return `${clsMode}-${mode}`;\n },\n\n clsSidebarAnimation({ mode, clsSidebarAnimation }) {\n return mode === 'none' || mode === 'reveal' ? '' : clsSidebarAnimation;\n },\n\n clsContainerAnimation({ mode, clsContainerAnimation }) {\n return mode !== 'push' && mode !== 'reveal' ? '' : clsContainerAnimation;\n },\n\n transitionElement({ mode }) {\n return mode === 'reveal' ? parent(this.panel) : this.panel;\n }\n },\n\n update: {\n read() {\n if (this.isToggled() && !isVisible(this.$el)) {\n this.hide();\n }\n },\n\n events: ['resize']\n },\n\n events: [\n {\n name: 'touchmove',\n\n self: true,\n passive: false,\n\n filter() {\n return this.overlay;\n },\n\n handler(e) {\n e.cancelable && e.preventDefault();\n }\n },\n\n {\n name: 'show',\n\n self: true,\n\n handler() {\n if (this.mode === 'reveal' && !hasClass(parent(this.panel), this.clsMode)) {\n wrapAll(this.panel, '
');\n addClass(parent(this.panel), this.clsMode);\n }\n\n const { body, scrollingElement } = document;\n\n addClass(body, this.clsContainer, this.clsFlip);\n css(body, 'touch-action', 'pan-y pinch-zoom');\n css(this.$el, 'display', 'block');\n css(this.panel, 'maxWidth', scrollingElement.clientWidth);\n addClass(this.$el, this.clsOverlay);\n addClass(\n this.panel,\n this.clsSidebarAnimation,\n this.mode === 'reveal' ? '' : this.clsMode);\n\n\n height(body); // force reflow\n addClass(body, this.clsContainerAnimation);\n\n this.clsContainerAnimation && suppressUserScale();\n }\n },\n\n {\n name: 'hide',\n\n self: true,\n\n handler() {\n removeClass(document.body, this.clsContainerAnimation);\n css(document.body, 'touch-action', '');\n }\n },\n\n {\n name: 'hidden',\n\n self: true,\n\n handler() {\n this.clsContainerAnimation && resumeUserScale();\n\n if (this.mode === 'reveal') {\n unwrap(this.panel);\n }\n\n removeClass(this.panel, this.clsSidebarAnimation, this.clsMode);\n removeClass(this.$el, this.clsOverlay);\n css(this.$el, 'display', '');\n css(this.panel, 'maxWidth', '');\n removeClass(document.body, this.clsContainer, this.clsFlip);\n }\n },\n\n {\n name: 'swipeLeft swipeRight',\n\n handler(e) {\n if (this.isToggled() && endsWith(e.type, 'Left') ^ this.flip) {\n this.hide();\n }\n }\n }]\n\n };\n\n // Chrome in responsive mode zooms page upon opening offcanvas\n function suppressUserScale() {\n getViewport().content += ',user-scalable=0';\n }\n\n function resumeUserScale() {\n const viewport = getViewport();\n viewport.content = viewport.content.replace(/,user-scalable=0$/, '');\n }\n\n function getViewport() {\n return (\n $('meta[name=\"viewport\"]', document.head) || append(document.head, ''));\n\n }\n\n var overflowAuto = {\n mixins: [Class, Resize],\n\n props: {\n selContainer: String,\n selContent: String,\n minHeight: Number\n },\n\n data: {\n selContainer: '.uk-modal',\n selContent: '.uk-modal-dialog',\n minHeight: 150\n },\n\n computed: {\n container({ selContainer }, $el) {\n return closest($el, selContainer);\n },\n\n content({ selContent }, $el) {\n return closest($el, selContent);\n }\n },\n\n resizeTargets() {\n return [this.container, this.content];\n },\n\n update: {\n read() {\n if (!this.content || !this.container || !isVisible(this.$el)) {\n return false;\n }\n\n return {\n max: Math.max(\n this.minHeight,\n height(this.container) - (dimensions(this.content).height - height(this.$el)))\n\n };\n },\n\n write({ max }) {\n css(this.$el, { minHeight: this.minHeight, maxHeight: max });\n },\n\n events: ['resize']\n }\n };\n\n var responsive = {\n mixins: [Resize],\n\n props: ['width', 'height'],\n\n resizeTargets() {\n return [this.$el, parent(this.$el)];\n },\n\n connected() {\n addClass(this.$el, 'uk-responsive-width');\n },\n\n update: {\n read() {\n return isVisible(this.$el) && this.width && this.height ?\n { width: width(parent(this.$el)), height: this.height } :\n false;\n },\n\n write(dim) {\n height(\n this.$el,\n Dimensions.contain(\n {\n height: this.height,\n width: this.width\n },\n dim).\n height);\n\n },\n\n events: ['resize']\n }\n };\n\n var scroll = {\n props: {\n offset: Number\n },\n\n data: {\n offset: 0\n },\n\n connected() {\n registerClick(this);\n },\n\n disconnected() {\n unregisterClick(this);\n },\n\n methods: {\n async scrollTo(el) {\n el = el && $(el) || document.body;\n\n if (trigger(this.$el, 'beforescroll', [this, el])) {\n await scrollIntoView(el, { offset: this.offset });\n trigger(this.$el, 'scrolled', [this, el]);\n }\n }\n }\n };\n\n const components$1 = new Set();\n function registerClick(cmp) {\n if (!components$1.size) {\n on(document, 'click', clickHandler);\n }\n\n components$1.add(cmp);\n }\n\n function unregisterClick(cmp) {\n components$1.delete(cmp);\n\n if (!components$1.size) {\n off(document, 'click', clickHandler);\n }\n }\n\n function clickHandler(e) {\n if (e.defaultPrevented) {\n return;\n }\n\n for (const component of components$1) {\n if (within(e.target, component.$el) && isSameSiteAnchor(component.$el)) {\n e.preventDefault();\n component.scrollTo(getTargetElement(component.$el));\n }\n }\n }\n\n function getTargetElement(el) {\n if (isSameSiteAnchor(el)) {\n const id = decodeURIComponent(el.hash).substring(1);\n return document.getElementById(id) || document.getElementsByName(id)[0];\n }\n }\n\n var scrollspy = {\n mixins: [Scroll],\n\n args: 'cls',\n\n props: {\n cls: String,\n target: String,\n hidden: Boolean,\n margin: String,\n repeat: Boolean,\n delay: Number\n },\n\n data: () => ({\n cls: '',\n target: false,\n hidden: true,\n margin: '-1px',\n repeat: false,\n delay: 0,\n inViewClass: 'uk-scrollspy-inview'\n }),\n\n computed: {\n elements: {\n get({ target }, $el) {\n return target ? $$(target, $el) : [$el];\n },\n\n watch(elements, prev) {\n if (this.hidden) {\n // use `opacity:0` instead of `visibility:hidden` to make content focusable with keyboard\n css(filter(elements, `:not(.${this.inViewClass})`), 'opacity', 0);\n }\n\n if (!isEqual(elements, prev)) {\n this.$reset();\n }\n },\n\n immediate: true\n }\n },\n\n connected() {\n this._data.elements = new Map();\n this.registerObserver(\n observeIntersection(\n this.elements,\n (records) => {\n const elements = this._data.elements;\n for (const { target: el, isIntersecting } of records) {\n if (!elements.has(el)) {\n elements.set(el, {\n cls: data(el, 'uk-scrollspy-class') || this.cls\n });\n }\n\n const state = elements.get(el);\n if (!this.repeat && state.show) {\n continue;\n }\n\n state.show = isIntersecting;\n }\n\n this.$emit();\n },\n { rootMargin: this.margin },\n false));\n\n\n },\n\n disconnected() {\n for (const [el, state] of this._data.elements.entries()) {\n removeClass(el, this.inViewClass, (state == null ? void 0 : state.cls) || '');\n }\n },\n\n update: [\n {\n write(data) {\n for (const [el, state] of data.elements.entries()) {\n if (state.show && !state.inview && !state.queued) {\n state.queued = true;\n\n data.promise = (data.promise || Promise.resolve()).\n then(() => new Promise((resolve) => setTimeout(resolve, this.delay))).\n then(() => {\n this.toggle(el, true);\n setTimeout(() => {\n state.queued = false;\n this.$emit();\n }, 300);\n });\n } else if (!state.show && state.inview && !state.queued && this.repeat) {\n this.toggle(el, false);\n }\n }\n }\n }],\n\n\n methods: {\n toggle(el, inview) {\n const state = this._data.elements.get(el);\n\n if (!state) {\n return;\n }\n\n state.off == null ? void 0 : state.off();\n\n css(el, 'opacity', !inview && this.hidden ? 0 : '');\n\n toggleClass(el, this.inViewClass, inview);\n toggleClass(el, state.cls);\n\n if (/\\buk-animation-/.test(state.cls)) {\n const removeAnimationClasses = () => removeClasses(el, 'uk-animation-[\\\\w-]+');\n if (inview) {\n state.off = once(el, 'animationcancel animationend', removeAnimationClasses);\n } else {\n removeAnimationClasses();\n }\n }\n\n trigger(el, inview ? 'inview' : 'outview');\n\n state.inview = inview;\n\n // change to `visibility: hidden` does not trigger observers\n this.$update(el);\n }\n }\n };\n\n var scrollspyNav = {\n mixins: [Scroll],\n\n props: {\n cls: String,\n closest: String,\n scroll: Boolean,\n overflow: Boolean,\n offset: Number\n },\n\n data: {\n cls: 'uk-active',\n closest: false,\n scroll: false,\n overflow: true,\n offset: 0\n },\n\n computed: {\n links: {\n get(_, $el) {\n return $$('a[href*=\"#\"]', $el).filter((el) => el.hash && isSameSiteAnchor(el));\n },\n\n watch(links) {\n if (this.scroll) {\n this.$create('scroll', links, { offset: this.offset || 0 });\n }\n },\n\n immediate: true\n },\n\n elements({ closest: selector }) {\n return closest(this.links, selector || '*');\n }\n },\n\n update: [\n {\n read() {\n const targets = this.links.map(getTargetElement).filter(Boolean);\n\n const { length } = targets;\n\n if (!length || !isVisible(this.$el)) {\n return false;\n }\n\n const [scrollElement] = scrollParents(targets, true);\n const { scrollTop, scrollHeight } = scrollElement;\n const viewport = offsetViewport(scrollElement);\n const max = scrollHeight - viewport.height;\n let active = false;\n\n if (scrollTop === max) {\n active = length - 1;\n } else {\n for (let i = 0; i < targets.length; i++) {\n if (offset(targets[i]).top - viewport.top - this.offset > 0) {\n break;\n }\n active = +i;\n }\n\n if (active === false && this.overflow) {\n active = 0;\n }\n }\n\n return { active };\n },\n\n write({ active }) {\n const changed = active !== false && !hasClass(this.elements[active], this.cls);\n\n this.links.forEach((el) => el.blur());\n for (let i = 0; i < this.elements.length; i++) {\n toggleClass(this.elements[i], this.cls, +i === active);\n }\n\n if (changed) {\n trigger(this.$el, 'active', [active, this.elements[active]]);\n }\n },\n\n events: ['scroll', 'resize']\n }]\n\n };\n\n var sticky = {\n mixins: [Class, Media, Resize, Scroll],\n\n props: {\n position: String,\n top: null,\n bottom: null,\n start: null,\n end: null,\n offset: String,\n overflowFlip: Boolean,\n animation: String,\n clsActive: String,\n clsInactive: String,\n clsFixed: String,\n clsBelow: String,\n selTarget: String,\n showOnUp: Boolean,\n targetOffset: Number\n },\n\n data: {\n position: 'top',\n top: false,\n bottom: false,\n start: false,\n end: false,\n offset: 0,\n overflowFlip: false,\n animation: '',\n clsActive: 'uk-active',\n clsInactive: '',\n clsFixed: 'uk-sticky-fixed',\n clsBelow: 'uk-sticky-below',\n selTarget: '',\n showOnUp: false,\n targetOffset: false\n },\n\n computed: {\n selTarget({ selTarget }, $el) {\n return selTarget && $(selTarget, $el) || $el;\n }\n },\n\n resizeTargets() {\n return document.documentElement;\n },\n\n connected() {\n this.start = coerce(this.start || this.top);\n this.end = coerce(this.end || this.bottom);\n\n this.placeholder =\n $('+ .uk-sticky-placeholder', this.$el) ||\n $('
');\n this.isFixed = false;\n this.setActive(false);\n\n this.registerObserver(observeResize(this.$el, () => !this.isFixed && this.$emit('resize')));\n },\n\n disconnected() {\n if (this.isFixed) {\n this.hide();\n removeClass(this.selTarget, this.clsInactive);\n }\n reset(this.$el);\n\n remove$1(this.placeholder);\n this.placeholder = null;\n },\n\n events: [\n {\n name: 'resize',\n\n el() {\n return [window, window.visualViewport];\n },\n\n handler() {\n this.$emit('resizeViewport');\n }\n },\n {\n name: 'load hashchange popstate',\n\n el() {\n return window;\n },\n\n filter() {\n return this.targetOffset !== false;\n },\n\n handler() {\n const { scrollingElement } = document;\n\n if (!location.hash || scrollingElement.scrollTop === 0) {\n return;\n }\n\n setTimeout(() => {\n const targetOffset = offset($(location.hash));\n const elOffset = offset(this.$el);\n\n if (this.isFixed && intersectRect(targetOffset, elOffset)) {\n scrollingElement.scrollTop =\n targetOffset.top -\n elOffset.height -\n toPx(this.targetOffset, 'height', this.placeholder) -\n toPx(this.offset, 'height', this.placeholder);\n }\n });\n }\n }],\n\n\n update: [\n {\n read({ height: height$1, width, margin, sticky }, types) {\n this.inactive = !this.matchMedia || !isVisible(this.$el);\n\n if (this.inactive) {\n return;\n }\n\n const hide = this.isFixed && types.has('resize') && !sticky;\n if (hide) {\n css(this.selTarget, 'transition', '0s');\n this.hide();\n }\n\n if (!this.active) {\n ({ height: height$1, width } = offset(this.$el));\n margin = css(this.$el, 'margin');\n }\n\n if (hide) {\n this.show();\n requestAnimationFrame(() => css(this.selTarget, 'transition', ''));\n }\n\n const viewport = toPx('100vh', 'height');\n const dynamicViewport = height(window);\n const maxScrollHeight = document.scrollingElement.scrollHeight - viewport;\n\n let position = this.position;\n if (this.overflowFlip && height$1 > viewport) {\n position = position === 'top' ? 'bottom' : 'top';\n }\n\n const referenceElement = this.isFixed ? this.placeholder : this.$el;\n let offset$1 = toPx(this.offset, 'height', sticky ? this.$el : referenceElement);\n if (position === 'bottom' && (height$1 < dynamicViewport || this.overflowFlip)) {\n offset$1 += dynamicViewport - height$1;\n }\n\n const overflow = this.overflowFlip ? 0 : Math.max(0, height$1 + offset$1 - viewport);\n const topOffset = offset(referenceElement).top;\n const elHeight = offset(this.$el).height;\n\n const start =\n (this.start === false ?\n topOffset :\n parseProp(this.start, this.$el, topOffset)) - offset$1;\n const end =\n this.end === false ?\n maxScrollHeight :\n Math.min(\n maxScrollHeight,\n parseProp(this.end, this.$el, topOffset + height$1, true) -\n elHeight -\n offset$1 +\n overflow);\n\n\n sticky =\n maxScrollHeight &&\n !this.showOnUp &&\n start + offset$1 === topOffset &&\n end ===\n Math.min(\n maxScrollHeight,\n parseProp('!*', this.$el, 0, true) - elHeight - offset$1 + overflow) &&\n\n css(parent(this.$el), 'overflowY') === 'visible';\n\n return {\n start,\n end,\n offset: offset$1,\n overflow,\n topOffset,\n height: height$1,\n elHeight,\n width,\n margin,\n top: offsetPosition(referenceElement)[0],\n sticky\n };\n },\n\n write({ height, width, margin, offset, sticky }) {\n if (this.inactive || sticky || !this.isFixed) {\n reset(this.$el);\n }\n\n if (this.inactive) {\n return;\n }\n\n if (sticky) {\n height = width = margin = 0;\n css(this.$el, { position: 'sticky', top: offset });\n }\n\n const { placeholder } = this;\n\n css(placeholder, { height, width, margin });\n\n if (!within(placeholder, document)) {\n placeholder.hidden = true;\n }\n (sticky ? before : after)(this.$el, placeholder);\n },\n\n events: ['resize', 'resizeViewport']\n },\n\n {\n read({\n scroll: prevScroll = 0,\n dir: prevDir = 'down',\n overflow,\n overflowScroll = 0,\n start,\n end\n }) {\n const scroll = document.scrollingElement.scrollTop;\n const dir = prevScroll <= scroll ? 'down' : 'up';\n\n return {\n dir,\n prevDir,\n scroll,\n prevScroll,\n offsetParentTop: offset(\n (this.isFixed ? this.placeholder : this.$el).offsetParent).\n top,\n overflowScroll: clamp(\n overflowScroll + clamp(scroll, start, end) - clamp(prevScroll, start, end),\n 0,\n overflow)\n\n };\n },\n\n write(data, types) {\n const isScrollUpdate = types.has('scroll');\n const {\n initTimestamp = 0,\n dir,\n prevDir,\n scroll,\n prevScroll = 0,\n top,\n start,\n topOffset,\n height\n } = data;\n\n if (\n scroll < 0 ||\n scroll === prevScroll && isScrollUpdate ||\n this.showOnUp && !isScrollUpdate && !this.isFixed)\n {\n return;\n }\n\n const now = Date.now();\n if (now - initTimestamp > 300 || dir !== prevDir) {\n data.initScroll = scroll;\n data.initTimestamp = now;\n }\n\n if (\n this.showOnUp &&\n !this.isFixed &&\n Math.abs(data.initScroll - scroll) <= 30 &&\n Math.abs(prevScroll - scroll) <= 10)\n {\n return;\n }\n\n if (\n this.inactive ||\n scroll < start ||\n this.showOnUp && (\n scroll <= start ||\n dir === 'down' && isScrollUpdate ||\n dir === 'up' && !this.isFixed && scroll <= topOffset + height))\n {\n if (!this.isFixed) {\n if (Animation.inProgress(this.$el) && top > scroll) {\n Animation.cancel(this.$el);\n this.hide();\n }\n\n return;\n }\n\n if (this.animation && scroll > topOffset) {\n Animation.cancel(this.$el);\n Animation.out(this.$el, this.animation).then(() => this.hide(), noop);\n } else {\n this.hide();\n }\n } else if (this.isFixed) {\n this.update();\n } else if (this.animation && scroll > topOffset) {\n Animation.cancel(this.$el);\n this.show();\n Animation.in(this.$el, this.animation).catch(noop);\n } else {\n this.show();\n }\n },\n\n events: ['resize', 'resizeViewport', 'scroll']\n }],\n\n\n methods: {\n show() {\n this.isFixed = true;\n this.update();\n this.placeholder.hidden = false;\n },\n\n hide() {\n const { offset, sticky } = this._data;\n this.setActive(false);\n removeClass(this.$el, this.clsFixed, this.clsBelow);\n if (sticky) {\n css(this.$el, 'top', offset);\n } else {\n css(this.$el, {\n position: '',\n top: '',\n width: '',\n marginTop: ''\n });\n }\n this.placeholder.hidden = true;\n this.isFixed = false;\n },\n\n update() {\n let {\n width,\n scroll = 0,\n overflow,\n overflowScroll = 0,\n start,\n end,\n offset,\n topOffset,\n height,\n elHeight,\n offsetParentTop,\n sticky\n } = this._data;\n const active = start !== 0 || scroll > start;\n\n if (!sticky) {\n let position = 'fixed';\n\n if (scroll > end) {\n offset += end - offsetParentTop;\n position = 'absolute';\n }\n\n css(this.$el, { position, width });\n css(this.$el, 'marginTop', 0, 'important');\n }\n\n if (overflow) {\n offset -= overflowScroll;\n }\n\n css(this.$el, 'top', offset);\n\n this.setActive(active);\n toggleClass(\n this.$el,\n this.clsBelow,\n scroll > topOffset + (sticky ? Math.min(height, elHeight) : height));\n\n addClass(this.$el, this.clsFixed);\n },\n\n setActive(active) {\n const prev = this.active;\n this.active = active;\n if (active) {\n replaceClass(this.selTarget, this.clsInactive, this.clsActive);\n prev !== active && trigger(this.$el, 'active');\n } else {\n replaceClass(this.selTarget, this.clsActive, this.clsInactive);\n prev !== active && trigger(this.$el, 'inactive');\n }\n }\n }\n };\n\n function parseProp(value, el, propOffset, padding) {\n if (!value) {\n return 0;\n }\n\n if (isNumeric(value) || isString(value) && value.match(/^-?\\d/)) {\n return propOffset + toPx(value, 'height', el, true);\n } else {\n const refElement = value === true ? parent(el) : query(value, el);\n return (\n offset(refElement).bottom - (\n padding && refElement && within(el, refElement) ?\n toFloat(css(refElement, 'paddingBottom')) :\n 0));\n\n }\n }\n\n function coerce(value) {\n if (value === 'true') {\n return true;\n } else if (value === 'false') {\n return false;\n }\n return value;\n }\n\n function reset(el) {\n css(el, { position: '', top: '', marginTop: '', width: '' });\n }\n\n var Switcher = {\n mixins: [Lazyload, Swipe, Togglable],\n\n args: 'connect',\n\n props: {\n connect: String,\n toggle: String,\n itemNav: String,\n active: Number\n },\n\n data: {\n connect: '~.uk-switcher',\n toggle: '> * > :first-child',\n itemNav: false,\n active: 0,\n cls: 'uk-active',\n attrItem: 'uk-switcher-item'\n },\n\n computed: {\n connects: {\n get({ connect }, $el) {\n return queryAll(connect, $el);\n },\n\n watch(connects) {\n if (this.swiping) {\n css(connects, 'touchAction', 'pan-y pinch-zoom');\n }\n },\n\n document: true,\n immediate: true\n },\n\n connectChildren: {\n get() {\n return this.connects.map((el) => children(el)).flat();\n },\n\n watch() {\n const index = this.index();\n for (const el of this.connects) {\n children(el).forEach((child, i) => toggleClass(child, this.cls, i === index));\n this.lazyload(this.$el, children(el));\n }\n },\n\n immediate: true\n },\n\n toggles: {\n get({ toggle }, $el) {\n return $$(toggle, $el).filter(\n (el) => !matches(el, '.uk-disabled *, .uk-disabled, [disabled]'));\n\n },\n\n watch(toggles) {\n const active = this.index();\n this.show(~active ? active : toggles[this.active] || toggles[0]);\n },\n\n immediate: true\n },\n\n children() {\n return children(this.$el).filter((child) => this.toggles.some((toggle) => within(toggle, child)));\n\n },\n\n swipeTarget() {\n return this.connects;\n }\n },\n\n events: [\n {\n name: 'click',\n\n delegate() {\n return this.toggle;\n },\n\n handler(e) {\n e.preventDefault();\n this.show(e.current);\n }\n },\n\n {\n name: 'click',\n\n el() {\n return this.connects.concat(this.itemNav ? queryAll(this.itemNav, this.$el) : []);\n },\n\n delegate() {\n return `[${this.attrItem}],[data-${this.attrItem}]`;\n },\n\n handler(e) {\n e.preventDefault();\n this.show(data(e.current, this.attrItem));\n }\n },\n\n {\n name: 'swipeRight swipeLeft',\n\n filter() {\n return this.swiping;\n },\n\n el() {\n return this.connects;\n },\n\n handler({ type }) {\n this.show(endsWith(type, 'Left') ? 'next' : 'previous');\n }\n }],\n\n\n methods: {\n index() {\n return findIndex(this.children, (el) => hasClass(el, this.cls));\n },\n\n show(item) {\n const prev = this.index();\n const next = getIndex(item, this.toggles, prev);\n const active = getIndex(this.children[next], children(this.$el));\n children(this.$el).forEach((child, i) => {\n toggleClass(child, this.cls, active === i);\n attr(this.toggles[i], 'aria-expanded', active === i);\n });\n\n const animate = prev >= 0 && prev !== next;\n this.connects.forEach(async ({ children }) => {\n await this.toggleElement(\n toNodes(children).filter((child) => hasClass(child, this.cls)),\n false,\n animate);\n\n await this.toggleElement(children[active], true, animate);\n });\n }\n }\n };\n\n var tab = {\n mixins: [Class],\n\n extends: Switcher,\n\n props: {\n media: Boolean\n },\n\n data: {\n media: 960,\n attrItem: 'uk-tab-item'\n },\n\n connected() {\n const cls = hasClass(this.$el, 'uk-tab-left') ?\n 'uk-tab-left' :\n hasClass(this.$el, 'uk-tab-right') ?\n 'uk-tab-right' :\n false;\n\n if (cls) {\n this.$create('toggle', this.$el, { cls, mode: 'media', media: this.media });\n }\n }\n };\n\n const KEY_SPACE = 32;\n\n var toggle = {\n mixins: [Lazyload, Media, Togglable],\n\n args: 'target',\n\n props: {\n href: String,\n target: null,\n mode: 'list',\n queued: Boolean\n },\n\n data: {\n href: false,\n target: false,\n mode: 'click',\n queued: true\n },\n\n computed: {\n target: {\n get({ href, target }, $el) {\n target = queryAll(target || href, $el);\n return target.length && target || [$el];\n },\n\n watch() {\n this.updateAria();\n this.lazyload(this.$el, this.target);\n },\n\n document: true,\n immediate: true\n }\n },\n\n connected() {\n if (!includes(this.mode, 'media') && !isFocusable(this.$el)) {\n attr(this.$el, 'tabindex', '0');\n }\n },\n\n events: [\n {\n name: pointerDown,\n\n filter() {\n return includes(this.mode, 'hover');\n },\n\n handler(e) {\n this._preventClick = null;\n\n if (!isTouch(e) || this._showState) {\n return;\n }\n\n // Clicking a button does not give it focus on all browsers and platforms\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#clicking_and_focus\n trigger(this.$el, 'focus');\n once(\n document,\n pointerDown,\n () => trigger(this.$el, 'blur'),\n true,\n (e) => !within(e.target, this.$el));\n\n\n // Prevent initial click to prevent double toggle through focus + click\n if (includes(this.mode, 'click')) {\n this._preventClick = true;\n }\n }\n },\n\n {\n name: `${pointerEnter} ${pointerLeave} focus blur`,\n\n filter() {\n return includes(this.mode, 'hover');\n },\n\n handler(e) {\n if (isTouch(e)) {\n return;\n }\n\n const show = includes([pointerEnter, 'focus'], e.type);\n const expanded = attr(this.$el, 'aria-expanded');\n\n // Skip hide if still hovered or focused\n if (\n !show && (\n e.type === pointerLeave && matches(this.$el, ':focus') ||\n e.type === 'blur' && matches(this.$el, ':hover')))\n {\n return;\n }\n\n // Skip if state does not change e.g. hover + focus received\n if (this._showState && show && expanded !== this._showState) {\n // Ensure reset if state has changed through click\n if (!show) {\n this._showState = null;\n }\n return;\n }\n\n this._showState = show ? expanded : null;\n\n this.toggle(`toggle${show ? 'show' : 'hide'}`);\n }\n },\n\n {\n name: 'keydown',\n\n filter() {\n return includes(this.mode, 'click') && !isTag(this.$el, 'input');\n },\n\n handler(e) {\n if (e.keyCode === KEY_SPACE) {\n e.preventDefault();\n this.$el.click();\n }\n }\n },\n\n {\n name: 'click',\n\n filter() {\n return ['click', 'hover'].some((mode) => includes(this.mode, mode));\n },\n\n handler(e) {\n let link;\n if (\n this._preventClick ||\n closest(e.target, 'a[href=\"#\"], a[href=\"\"]') ||\n (link = closest(e.target, 'a[href]')) && (\n attr(this.$el, 'aria-expanded') !== 'true' ||\n link.hash && matches(this.target, link.hash)))\n {\n e.preventDefault();\n }\n\n if (!this._preventClick && includes(this.mode, 'click')) {\n this.toggle();\n }\n }\n },\n\n {\n name: 'hide show',\n\n self: true,\n\n el() {\n return this.target;\n },\n\n handler({ target, type }) {\n this.updateAria(target === this.target[0] && type === 'show');\n }\n },\n\n {\n name: 'mediachange',\n\n filter() {\n return includes(this.mode, 'media');\n },\n\n el() {\n return this.target;\n },\n\n handler(e, mediaObj) {\n if (mediaObj.matches ^ this.isToggled(this.target)) {\n this.toggle();\n }\n }\n }],\n\n\n methods: {\n async toggle(type) {\n if (!trigger(this.target, type || 'toggle', [this])) {\n return;\n }\n\n if (!this.queued) {\n return this.toggleElement(this.target);\n }\n\n const leaving = this.target.filter((el) => hasClass(el, this.clsLeave));\n\n if (leaving.length) {\n for (const el of this.target) {\n const isLeaving = includes(leaving, el);\n this.toggleElement(el, isLeaving, isLeaving);\n }\n return;\n }\n\n const toggled = this.target.filter(this.isToggled);\n await this.toggleElement(toggled, false);\n await this.toggleElement(\n this.target.filter((el) => !includes(toggled, el)),\n true);\n\n },\n\n updateAria(toggled) {\n if (includes(this.mode, 'media')) {\n return;\n }\n\n attr(\n this.$el,\n 'aria-expanded',\n isBoolean(toggled) ? toggled : this.isToggled(this.target));\n\n }\n }\n };\n\n var components = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Accordion: Accordion,\n Alert: alert,\n Close: Close,\n Cover: cover,\n Drop: drop,\n Dropdown: drop,\n FormCustom: formCustom,\n Grid: grid,\n HeightMatch: heightMatch,\n HeightViewport: heightViewport,\n Icon: Icon,\n Img: img,\n Leader: leader,\n Margin: Margin,\n Marker: IconComponent,\n Modal: modal,\n Nav: nav,\n NavParentIcon: NavParentIcon,\n Navbar: navbar,\n NavbarParentIcon: IconComponent,\n NavbarToggleIcon: IconComponent,\n Offcanvas: offcanvas,\n OverflowAuto: overflowAuto,\n OverlayIcon: IconComponent,\n PaginationNext: IconComponent,\n PaginationPrevious: IconComponent,\n Responsive: responsive,\n Scroll: scroll,\n Scrollspy: scrollspy,\n ScrollspyNav: scrollspyNav,\n SearchIcon: Search,\n SlidenavNext: Slidenav,\n SlidenavPrevious: Slidenav,\n Spinner: Spinner,\n Sticky: sticky,\n SubnavParentIcon: IconComponent,\n Svg: SVG,\n Switcher: Switcher,\n Tab: tab,\n Toggle: toggle,\n Totop: IconComponent,\n Video: Video\n });\n\n // register components\n each(components, (component, name) => UIkit.component(name, component));\n\n boot(UIkit);\n\n return UIkit;\n\n}));\n","const { hasOwnProperty, toString } = Object.prototype;\n\nexport function hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n}\n\nconst hyphenateRe = /\\B([A-Z])/g;\n\nexport const hyphenate = memoize((str) => str.replace(hyphenateRe, '-$1').toLowerCase());\n\nconst camelizeRe = /-(\\w)/g;\n\nexport const camelize = memoize((str) => str.replace(camelizeRe, toUpper));\n\nexport const ucfirst = memoize((str) =>\n str.length ? toUpper(null, str.charAt(0)) + str.slice(1) : ''\n);\n\nfunction toUpper(_, c) {\n return c ? c.toUpperCase() : '';\n}\n\nexport function startsWith(str, search) {\n return str?.startsWith?.(search);\n}\n\nexport function endsWith(str, search) {\n return str?.endsWith?.(search);\n}\n\nexport function includes(obj, search) {\n return obj?.includes?.(search);\n}\n\nexport function findIndex(array, predicate) {\n return array?.findIndex?.(predicate);\n}\n\nexport const { isArray, from: toArray } = Array;\nexport const { assign } = Object;\n\nexport function isFunction(obj) {\n return typeof obj === 'function';\n}\n\nexport function isObject(obj) {\n return obj !== null && typeof obj === 'object';\n}\n\nexport function isPlainObject(obj) {\n return toString.call(obj) === '[object Object]';\n}\n\nexport function isWindow(obj) {\n return isObject(obj) && obj === obj.window;\n}\n\nexport function isDocument(obj) {\n return nodeType(obj) === 9;\n}\n\nexport function isNode(obj) {\n return nodeType(obj) >= 1;\n}\n\nexport function isElement(obj) {\n return nodeType(obj) === 1;\n}\n\nfunction nodeType(obj) {\n return !isWindow(obj) && isObject(obj) && obj.nodeType;\n}\n\nexport function isBoolean(value) {\n return typeof value === 'boolean';\n}\n\nexport function isString(value) {\n return typeof value === 'string';\n}\n\nexport function isNumber(value) {\n return typeof value === 'number';\n}\n\nexport function isNumeric(value) {\n return isNumber(value) || (isString(value) && !isNaN(value - parseFloat(value)));\n}\n\nexport function isEmpty(obj) {\n return !(isArray(obj) ? obj.length : isObject(obj) ? Object.keys(obj).length : false);\n}\n\nexport function isUndefined(value) {\n return value === void 0;\n}\n\nexport function toBoolean(value) {\n return isBoolean(value)\n ? value\n : value === 'true' || value === '1' || value === ''\n ? true\n : value === 'false' || value === '0'\n ? false\n : value;\n}\n\nexport function toNumber(value) {\n const number = Number(value);\n return isNaN(number) ? false : number;\n}\n\nexport function toFloat(value) {\n return parseFloat(value) || 0;\n}\n\nexport function toNode(element) {\n return toNodes(element)[0];\n}\n\nexport function toNodes(element) {\n return (element && (isNode(element) ? [element] : Array.from(element).filter(isNode))) || [];\n}\n\nexport function toWindow(element) {\n if (isWindow(element)) {\n return element;\n }\n\n element = toNode(element);\n const document = isDocument(element) ? element : element?.ownerDocument;\n\n return document?.defaultView || window;\n}\n\nexport function isEqual(value, other) {\n return (\n value === other ||\n (isObject(value) &&\n isObject(other) &&\n Object.keys(value).length === Object.keys(other).length &&\n each(value, (val, key) => val === other[key]))\n );\n}\n\nexport function swap(value, a, b) {\n return value.replace(new RegExp(`${a}|${b}`, 'g'), (match) => (match === a ? b : a));\n}\n\nexport function last(array) {\n return array[array.length - 1];\n}\n\nexport function each(obj, cb) {\n for (const key in obj) {\n if (false === cb(obj[key], key)) {\n return false;\n }\n }\n return true;\n}\n\nexport function sortBy(array, prop) {\n return array\n .slice()\n .sort(({ [prop]: propA = 0 }, { [prop]: propB = 0 }) =>\n propA > propB ? 1 : propB > propA ? -1 : 0\n );\n}\n\nexport function sumBy(array, iteratee) {\n return array.reduce(\n (sum, item) => sum + toFloat(isFunction(iteratee) ? iteratee(item) : item[iteratee]),\n 0\n );\n}\n\nexport function uniqueBy(array, prop) {\n const seen = new Set();\n return array.filter(({ [prop]: check }) => (seen.has(check) ? false : seen.add(check)));\n}\n\nexport function clamp(number, min = 0, max = 1) {\n return Math.min(Math.max(toNumber(number) || 0, min), max);\n}\n\nexport function noop() {}\n\nexport function intersectRect(...rects) {\n return [\n ['bottom', 'top'],\n ['right', 'left'],\n ].every(\n ([minProp, maxProp]) =>\n Math.min(...rects.map(({ [minProp]: min }) => min)) -\n Math.max(...rects.map(({ [maxProp]: max }) => max)) >\n 0\n );\n}\n\nexport function pointInRect(point, rect) {\n return (\n point.x <= rect.right &&\n point.x >= rect.left &&\n point.y <= rect.bottom &&\n point.y >= rect.top\n );\n}\n\nfunction ratio(dimensions, prop, value) {\n const aProp = prop === 'width' ? 'height' : 'width';\n\n return {\n [aProp]: dimensions[prop]\n ? Math.round((value * dimensions[aProp]) / dimensions[prop])\n : dimensions[aProp],\n [prop]: value,\n };\n}\n\nfunction contain(dimensions, maxDimensions) {\n dimensions = { ...dimensions };\n\n for (const prop in dimensions) {\n dimensions =\n dimensions[prop] > maxDimensions[prop]\n ? ratio(dimensions, prop, maxDimensions[prop])\n : dimensions;\n }\n\n return dimensions;\n}\n\nfunction cover(dimensions, maxDimensions) {\n dimensions = contain(dimensions, maxDimensions);\n\n for (const prop in dimensions) {\n dimensions =\n dimensions[prop] < maxDimensions[prop]\n ? ratio(dimensions, prop, maxDimensions[prop])\n : dimensions;\n }\n\n return dimensions;\n}\n\nexport const Dimensions = { ratio, contain, cover };\n\nexport function getIndex(i, elements, current = 0, finite = false) {\n elements = toNodes(elements);\n\n const { length } = elements;\n\n if (!length) {\n return -1;\n }\n\n i = isNumeric(i)\n ? toNumber(i)\n : i === 'next'\n ? current + 1\n : i === 'previous'\n ? current - 1\n : elements.indexOf(toNode(i));\n\n if (finite) {\n return clamp(i, 0, length - 1);\n }\n\n i %= length;\n\n return i < 0 ? i + length : i;\n}\n\nexport function memoize(fn) {\n const cache = Object.create(null);\n return (key) => cache[key] || (cache[key] = fn(key));\n}\n\nexport class Deferred {\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.reject = reject;\n this.resolve = resolve;\n });\n }\n}\n","import { isFunction, isObject, isUndefined, toNode, toNodes } from './lang';\n\nexport function attr(element, name, value) {\n if (isObject(name)) {\n for (const key in name) {\n attr(element, key, name[key]);\n }\n return;\n }\n\n if (isUndefined(value)) {\n return toNode(element)?.getAttribute(name);\n } else {\n for (const el of toNodes(element)) {\n if (isFunction(value)) {\n value = value.call(el, attr(el, name));\n }\n\n if (value === null) {\n removeAttr(el, name);\n } else {\n el.setAttribute(name, value);\n }\n }\n }\n}\n\nexport function hasAttr(element, name) {\n return toNodes(element).some((element) => element.hasAttribute(name));\n}\n\nexport function removeAttr(element, name) {\n toNodes(element).forEach((element) => element.removeAttribute(name));\n}\n\nexport function data(element, attribute) {\n for (const name of [attribute, `data-${attribute}`]) {\n if (hasAttr(element, name)) {\n return attr(element, name);\n }\n }\n}\n","import { isElement, isString, startsWith, toNode, toNodes } from './lang';\n\nconst voidElements = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true,\n};\nexport function isVoidElement(element) {\n return toNodes(element).some((element) => voidElements[element.tagName.toLowerCase()]);\n}\n\nexport function isVisible(element) {\n return toNodes(element).some(\n (element) => element.offsetWidth || element.offsetHeight || element.getClientRects().length\n );\n}\n\nexport const selInput = 'input,select,textarea,button';\nexport function isInput(element) {\n return toNodes(element).some((element) => matches(element, selInput));\n}\n\nexport const selFocusable = `${selInput},a[href],[tabindex]`;\nexport function isFocusable(element) {\n return matches(element, selFocusable);\n}\n\nexport function parent(element) {\n return toNode(element)?.parentElement;\n}\n\nexport function filter(element, selector) {\n return toNodes(element).filter((element) => matches(element, selector));\n}\n\nexport function matches(element, selector) {\n return toNodes(element).some((element) => element.matches(selector));\n}\n\nexport function closest(element, selector) {\n return isElement(element)\n ? element.closest(startsWith(selector, '>') ? selector.slice(1) : selector)\n : toNodes(element)\n .map((element) => closest(element, selector))\n .filter(Boolean);\n}\n\nexport function within(element, selector) {\n return isString(selector)\n ? !!closest(element, selector)\n : toNode(selector).contains(toNode(element));\n}\n\nexport function parents(element, selector) {\n const elements = [];\n\n while ((element = parent(element))) {\n if (!selector || matches(element, selector)) {\n elements.push(element);\n }\n }\n\n return elements;\n}\n\nexport function children(element, selector) {\n element = toNode(element);\n const children = element ? toNodes(element.children) : [];\n return selector ? filter(children, selector) : children;\n}\n\nexport function index(element, ref) {\n return ref ? toNodes(element).indexOf(toNode(ref)) : children(parent(element)).indexOf(element);\n}\n","import { attr } from './attr';\nimport { closest, index, matches, parent } from './filter';\nimport { isDocument, isString, memoize, toNode, toNodes } from './lang';\n\nexport function query(selector, context) {\n return find(selector, getContext(selector, context));\n}\n\nexport function queryAll(selector, context) {\n return findAll(selector, getContext(selector, context));\n}\n\nexport function find(selector, context) {\n return toNode(_query(selector, toNode(context), 'querySelector'));\n}\n\nexport function findAll(selector, context) {\n return toNodes(_query(selector, toNode(context), 'querySelectorAll'));\n}\n\nconst contextSelectorRe = /(^|[^\\\\],)\\s*[!>+~-]/;\nconst isContextSelector = memoize((selector) => selector.match(contextSelectorRe));\n\nfunction getContext(selector, context = document) {\n return (isString(selector) && isContextSelector(selector)) || isDocument(context)\n ? context\n : context.ownerDocument;\n}\n\nconst contextSanitizeRe = /([!>+~-])(?=\\s+[!>+~-]|\\s*$)/g;\nconst sanatize = memoize((selector) => selector.replace(contextSanitizeRe, '$1 *'));\n\nfunction _query(selector, context = document, queryFn) {\n if (!selector || !isString(selector)) {\n return selector;\n }\n\n selector = sanatize(selector);\n\n if (isContextSelector(selector)) {\n const split = splitSelector(selector);\n selector = '';\n for (let sel of split) {\n let ctx = context;\n\n if (sel[0] === '!') {\n const selectors = sel.substr(1).trim().split(' ');\n ctx = closest(parent(context), selectors[0]);\n sel = selectors.slice(1).join(' ').trim();\n if (!sel.length && split.length === 1) {\n return ctx;\n }\n }\n\n if (sel[0] === '-') {\n const selectors = sel.substr(1).trim().split(' ');\n const prev = (ctx || context).previousElementSibling;\n ctx = matches(prev, sel.substr(1)) ? prev : null;\n sel = selectors.slice(1).join(' ');\n }\n\n if (ctx) {\n selector += `${selector ? ',' : ''}${domPath(ctx)} ${sel}`;\n }\n }\n\n context = document;\n }\n\n try {\n return context[queryFn](selector);\n } catch (e) {\n return null;\n }\n}\n\nconst selectorRe = /.*?[^\\\\](?:,|$)/g;\n\nconst splitSelector = memoize((selector) =>\n selector.match(selectorRe).map((selector) => selector.replace(/,$/, '').trim())\n);\n\nfunction domPath(element) {\n const names = [];\n while (element.parentNode) {\n const id = attr(element, 'id');\n if (id) {\n names.unshift(`#${escape(id)}`);\n break;\n } else {\n let { tagName } = element;\n if (tagName !== 'HTML') {\n tagName += `:nth-child(${index(element) + 1})`;\n }\n names.unshift(tagName);\n element = element.parentNode;\n }\n }\n return names.join(' > ');\n}\n\nexport function escape(css) {\n return isString(css) ? CSS.escape(css) : '';\n}\n","import { findAll } from './selector';\nimport { closest, within } from './filter';\nimport { isArray, isFunction, isString, toNode, toNodes } from './lang';\n\nexport function on(...args) {\n let [targets, types, selector, listener, useCapture = false] = getArgs(args);\n\n if (listener.length > 1) {\n listener = detail(listener);\n }\n\n if (useCapture?.self) {\n listener = selfFilter(listener);\n }\n\n if (selector) {\n listener = delegate(selector, listener);\n }\n\n for (const type of types) {\n for (const target of targets) {\n target.addEventListener(type, listener, useCapture);\n }\n }\n\n return () => off(targets, types, listener, useCapture);\n}\n\nexport function off(...args) {\n let [targets, types, , listener, useCapture = false] = getArgs(args);\n for (const type of types) {\n for (const target of targets) {\n target.removeEventListener(type, listener, useCapture);\n }\n }\n}\n\nexport function once(...args) {\n const [element, types, selector, listener, useCapture = false, condition] = getArgs(args);\n const off = on(\n element,\n types,\n selector,\n (e) => {\n const result = !condition || condition(e);\n if (result) {\n off();\n listener(e, result);\n }\n },\n useCapture\n );\n\n return off;\n}\n\nexport function trigger(targets, event, detail) {\n return toEventTargets(targets).every((target) =>\n target.dispatchEvent(createEvent(event, true, true, detail))\n );\n}\n\nexport function createEvent(e, bubbles = true, cancelable = false, detail) {\n if (isString(e)) {\n e = new CustomEvent(e, { bubbles, cancelable, detail });\n }\n\n return e;\n}\n\nfunction getArgs(args) {\n // Event targets\n args[0] = toEventTargets(args[0]);\n\n // Event types\n if (isString(args[1])) {\n args[1] = args[1].split(' ');\n }\n\n // Delegate?\n if (isFunction(args[2])) {\n args.splice(2, 0, false);\n }\n\n return args;\n}\n\nfunction delegate(selector, listener) {\n return (e) => {\n const current =\n selector[0] === '>'\n ? findAll(selector, e.currentTarget)\n .reverse()\n .filter((element) => within(e.target, element))[0]\n : closest(e.target, selector);\n\n if (current) {\n e.current = current;\n listener.call(this, e);\n }\n };\n}\n\nfunction detail(listener) {\n return (e) => (isArray(e.detail) ? listener(e, ...e.detail) : listener(e));\n}\n\nfunction selfFilter(listener) {\n return function (e) {\n if (e.target === e.currentTarget || e.target === e.current) {\n return listener.call(null, e);\n }\n };\n}\n\nfunction isEventTarget(target) {\n return target && 'addEventListener' in target;\n}\n\nfunction toEventTarget(target) {\n return isEventTarget(target) ? target : toNode(target);\n}\n\nexport function toEventTargets(target) {\n return isArray(target)\n ? target.map(toEventTarget).filter(Boolean)\n : isString(target)\n ? findAll(target)\n : isEventTarget(target)\n ? [target]\n : toNodes(target);\n}\n\nexport function isTouch(e) {\n return e.pointerType === 'touch' || !!e.touches;\n}\n\nexport function getEventPos(e) {\n const { clientX: x, clientY: y } = e.touches?.[0] || e.changedTouches?.[0] || e;\n\n return { x, y };\n}\n","import {\n each,\n hyphenate,\n isArray,\n isNumber,\n isNumeric,\n isObject,\n isString,\n isUndefined,\n memoize,\n startsWith,\n toNodes,\n} from './lang';\n\nconst cssNumber = {\n 'animation-iteration-count': true,\n 'column-count': true,\n 'fill-opacity': true,\n 'flex-grow': true,\n 'flex-shrink': true,\n 'font-weight': true,\n 'line-height': true,\n opacity: true,\n order: true,\n orphans: true,\n 'stroke-dasharray': true,\n 'stroke-dashoffset': true,\n widows: true,\n 'z-index': true,\n zoom: true,\n};\n\nexport function css(element, property, value, priority = '') {\n const elements = toNodes(element);\n for (const element of elements) {\n if (isString(property)) {\n property = propName(property);\n\n if (isUndefined(value)) {\n return getComputedStyle(element).getPropertyValue(property);\n } else {\n element.style.setProperty(\n property,\n isNumeric(value) && !cssNumber[property]\n ? `${value}px`\n : value || isNumber(value)\n ? value\n : '',\n priority\n );\n }\n } else if (isArray(property)) {\n const props = {};\n for (const prop of property) {\n props[prop] = css(element, prop);\n }\n return props;\n } else if (isObject(property)) {\n priority = value;\n each(property, (value, property) => css(element, property, value, priority));\n }\n }\n return elements[0];\n}\n\n// https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-setproperty\nexport const propName = memoize((name) => vendorPropName(name));\n\nfunction vendorPropName(name) {\n if (startsWith(name, '--')) {\n return name;\n }\n\n name = hyphenate(name);\n\n const { style } = document.documentElement;\n\n if (name in style) {\n return name;\n }\n\n for (const prefix of ['webkit', 'moz']) {\n const prefixedName = `-${prefix}-${name}`;\n if (prefixedName in style) {\n return prefixedName;\n }\n }\n}\n","import { attr } from './attr';\nimport { isUndefined, toNodes } from './lang';\n\nexport function addClass(element, ...args) {\n apply(element, args, 'add');\n}\n\nexport function removeClass(element, ...args) {\n apply(element, args, 'remove');\n}\n\nexport function removeClasses(element, cls) {\n attr(element, 'class', (value) =>\n (value || '').replace(new RegExp(`\\\\b${cls}\\\\b\\\\s?`, 'g'), '')\n );\n}\n\nexport function replaceClass(element, ...args) {\n args[0] && removeClass(element, args[0]);\n args[1] && addClass(element, args[1]);\n}\n\nexport function hasClass(element, cls) {\n [cls] = getClasses(cls);\n return !!cls && toNodes(element).some((node) => node.classList.contains(cls));\n}\n\nexport function toggleClass(element, cls, force) {\n const classes = getClasses(cls);\n\n if (!isUndefined(force)) {\n force = !!force;\n }\n\n for (const node of toNodes(element)) {\n for (const cls of classes) {\n node.classList.toggle(cls, force);\n }\n }\n}\n\nfunction apply(element, args, fn) {\n args = args.reduce((args, arg) => args.concat(getClasses(arg)), []);\n\n for (const node of toNodes(element)) {\n node.classList[fn](...args);\n }\n}\n\nfunction getClasses(str) {\n return String(str).split(/\\s|,/).filter(Boolean);\n}\n","import { attr } from './attr';\nimport { once, trigger } from './event';\nimport { css, propName } from './style';\nimport { startsWith, toNodes } from './lang';\nimport { addClass, hasClass, removeClass, removeClasses } from './class';\n\nfunction transition(element, props, duration = 400, timing = 'linear') {\n duration = Math.round(duration);\n return Promise.all(\n toNodes(element).map(\n (element) =>\n new Promise((resolve, reject) => {\n for (const name in props) {\n const value = css(element, name);\n if (value === '') {\n css(element, name, value);\n }\n }\n\n const timer = setTimeout(() => trigger(element, 'transitionend'), duration);\n\n once(\n element,\n 'transitionend transitioncanceled',\n ({ type }) => {\n clearTimeout(timer);\n removeClass(element, 'uk-transition');\n css(element, {\n transitionProperty: '',\n transitionDuration: '',\n transitionTimingFunction: '',\n });\n type === 'transitioncanceled' ? reject() : resolve(element);\n },\n { self: true }\n );\n\n addClass(element, 'uk-transition');\n css(element, {\n transitionProperty: Object.keys(props).map(propName).join(','),\n transitionDuration: `${duration}ms`,\n transitionTimingFunction: timing,\n ...props,\n });\n })\n )\n );\n}\n\nexport const Transition = {\n start: transition,\n\n async stop(element) {\n trigger(element, 'transitionend');\n await Promise.resolve();\n },\n\n async cancel(element) {\n trigger(element, 'transitioncanceled');\n await Promise.resolve();\n },\n\n inProgress(element) {\n return hasClass(element, 'uk-transition');\n },\n};\n\nconst animationPrefix = 'uk-animation-';\n\nfunction animate(element, animation, duration = 200, origin, out) {\n return Promise.all(\n toNodes(element).map(\n (element) =>\n new Promise((resolve, reject) => {\n trigger(element, 'animationcanceled');\n const timer = setTimeout(() => trigger(element, 'animationend'), duration);\n\n once(\n element,\n 'animationend animationcanceled',\n ({ type }) => {\n clearTimeout(timer);\n\n type === 'animationcanceled' ? reject() : resolve(element);\n\n css(element, 'animationDuration', '');\n removeClasses(element, `${animationPrefix}\\\\S*`);\n },\n { self: true }\n );\n\n css(element, 'animationDuration', `${duration}ms`);\n addClass(element, animation, animationPrefix + (out ? 'leave' : 'enter'));\n\n if (startsWith(animation, animationPrefix)) {\n origin && addClass(element, `uk-transform-origin-${origin}`);\n out && addClass(element, `${animationPrefix}reverse`);\n }\n })\n )\n );\n}\n\nconst inProgressRe = new RegExp(`${animationPrefix}(enter|leave)`);\n\nexport const Animation = {\n in: animate,\n\n out(element, animation, duration, origin) {\n return animate(element, animation, duration, origin, true);\n },\n\n inProgress(element) {\n return inProgressRe.test(attr(element, 'class'));\n },\n\n cancel(element) {\n trigger(element, 'animationcanceled');\n },\n};\n","import { once } from './event';\nimport { parent } from './filter';\nimport { find, findAll } from './selector';\nimport { isElement, isString, isUndefined, startsWith, toNode, toNodes } from './lang';\n\nexport function ready(fn) {\n if (document.readyState !== 'loading') {\n fn();\n return;\n }\n\n once(document, 'DOMContentLoaded', fn);\n}\n\nexport function isTag(element, ...tagNames) {\n return tagNames.some((tagName) => element?.tagName?.toLowerCase() === tagName.toLowerCase());\n}\n\nexport function empty(element) {\n element = $(element);\n element.innerHTML = '';\n return element;\n}\n\nexport function html(parent, html) {\n return isUndefined(html) ? $(parent).innerHTML : append(empty(parent), html);\n}\n\nexport const prepend = applyFn('prepend');\nexport const append = applyFn('append');\nexport const before = applyFn('before');\nexport const after = applyFn('after');\n\nfunction applyFn(fn) {\n return function (ref, element) {\n const nodes = toNodes(isString(element) ? fragment(element) : element);\n $(ref)?.[fn](...nodes);\n return unwrapSingle(nodes);\n };\n}\n\nexport function remove(element) {\n toNodes(element).forEach((element) => element.remove());\n}\n\nexport function wrapAll(element, structure) {\n structure = toNode(before(element, structure));\n\n while (structure.firstChild) {\n structure = structure.firstChild;\n }\n\n append(structure, element);\n\n return structure;\n}\n\nexport function wrapInner(element, structure) {\n return toNodes(\n toNodes(element).map((element) =>\n element.hasChildNodes()\n ? wrapAll(toNodes(element.childNodes), structure)\n : append(element, structure)\n )\n );\n}\n\nexport function unwrap(element) {\n toNodes(element)\n .map(parent)\n .filter((value, index, self) => self.indexOf(value) === index)\n .forEach((parent) => parent.replaceWith(...parent.childNodes));\n}\n\nconst fragmentRe = /^\\s*<(\\w+|!)[^>]*>/;\nconst singleTagRe = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/;\n\nexport function fragment(html) {\n const matches = singleTagRe.exec(html);\n if (matches) {\n return document.createElement(matches[1]);\n }\n\n const container = document.createElement('div');\n if (fragmentRe.test(html)) {\n container.insertAdjacentHTML('beforeend', html.trim());\n } else {\n container.textContent = html;\n }\n\n return unwrapSingle(container.childNodes);\n}\n\nfunction unwrapSingle(nodes) {\n return nodes.length > 1 ? nodes : nodes[0];\n}\n\nexport function apply(node, fn) {\n if (!isElement(node)) {\n return;\n }\n\n fn(node);\n node = node.firstElementChild;\n while (node) {\n const next = node.nextElementSibling;\n apply(node, fn);\n node = next;\n }\n}\n\nexport function $(selector, context) {\n return isHtml(selector) ? toNode(fragment(selector)) : find(selector, context);\n}\n\nexport function $$(selector, context) {\n return isHtml(selector) ? toNodes(fragment(selector)) : findAll(selector, context);\n}\n\nfunction isHtml(str) {\n return isString(str) && startsWith(str.trim(), '<');\n}\n","import { on } from './event';\nimport { css } from './style';\nimport { $, append, remove } from './dom';\nimport {\n each,\n isDocument,\n isElement,\n isString,\n isUndefined,\n isWindow,\n memoize,\n sumBy,\n toFloat,\n toNode,\n toWindow,\n ucfirst,\n} from './lang';\n\nconst dirs = {\n width: ['left', 'right'],\n height: ['top', 'bottom'],\n};\n\nexport function dimensions(element) {\n const rect = isElement(element)\n ? toNode(element).getBoundingClientRect()\n : { height: height(element), width: width(element), top: 0, left: 0 };\n\n return {\n height: rect.height,\n width: rect.width,\n top: rect.top,\n left: rect.left,\n bottom: rect.top + rect.height,\n right: rect.left + rect.width,\n };\n}\n\nexport function offset(element, coordinates) {\n const currentOffset = dimensions(element);\n\n if (element) {\n const { scrollY, scrollX } = toWindow(element);\n const offsetBy = { height: scrollY, width: scrollX };\n\n for (const dir in dirs) {\n for (const prop of dirs[dir]) {\n currentOffset[prop] += offsetBy[dir];\n }\n }\n }\n\n if (!coordinates) {\n return currentOffset;\n }\n\n const pos = css(element, 'position');\n\n each(css(element, ['left', 'top']), (value, prop) =>\n css(\n element,\n prop,\n coordinates[prop] -\n currentOffset[prop] +\n toFloat(pos === 'absolute' && value === 'auto' ? position(element)[prop] : value)\n )\n );\n}\n\nexport function position(element) {\n let { top, left } = offset(element);\n\n const {\n ownerDocument: { body, documentElement },\n offsetParent,\n } = toNode(element);\n let parent = offsetParent || documentElement;\n\n while (\n parent &&\n (parent === body || parent === documentElement) &&\n css(parent, 'position') === 'static'\n ) {\n parent = parent.parentNode;\n }\n\n if (isElement(parent)) {\n const parentOffset = offset(parent);\n top -= parentOffset.top + toFloat(css(parent, 'borderTopWidth'));\n left -= parentOffset.left + toFloat(css(parent, 'borderLeftWidth'));\n }\n\n return {\n top: top - toFloat(css(element, 'marginTop')),\n left: left - toFloat(css(element, 'marginLeft')),\n };\n}\n\nexport function offsetPosition(element) {\n element = toNode(element);\n\n const offset = [element.offsetTop, element.offsetLeft];\n\n while ((element = element.offsetParent)) {\n offset[0] += element.offsetTop + toFloat(css(element, `borderTopWidth`));\n offset[1] += element.offsetLeft + toFloat(css(element, `borderLeftWidth`));\n\n if (css(element, 'position') === 'fixed') {\n const win = toWindow(element);\n offset[0] += win.scrollY;\n offset[1] += win.scrollX;\n return offset;\n }\n }\n\n return offset;\n}\n\nexport const height = dimension('height');\nexport const width = dimension('width');\n\nfunction dimension(prop) {\n const propName = ucfirst(prop);\n return (element, value) => {\n if (isUndefined(value)) {\n if (isWindow(element)) {\n return element[`inner${propName}`];\n }\n\n if (isDocument(element)) {\n const doc = element.documentElement;\n return Math.max(doc[`offset${propName}`], doc[`scroll${propName}`]);\n }\n\n element = toNode(element);\n\n value = css(element, prop);\n value = value === 'auto' ? element[`offset${propName}`] : toFloat(value) || 0;\n\n return value - boxModelAdjust(element, prop);\n } else {\n return css(\n element,\n prop,\n !value && value !== 0 ? '' : +value + boxModelAdjust(element, prop) + 'px'\n );\n }\n };\n}\n\nexport function boxModelAdjust(element, prop, sizing = 'border-box') {\n return css(element, 'boxSizing') === sizing\n ? sumBy(\n dirs[prop].map(ucfirst),\n (prop) =>\n toFloat(css(element, `padding${prop}`)) +\n toFloat(css(element, `border${prop}Width`))\n )\n : 0;\n}\n\nexport function flipPosition(pos) {\n for (const dir in dirs) {\n for (const i in dirs[dir]) {\n if (dirs[dir][i] === pos) {\n return dirs[dir][1 - i];\n }\n }\n }\n return pos;\n}\n\nexport function toPx(value, property = 'width', element = window, offsetDim = false) {\n if (!isString(value)) {\n return toFloat(value);\n }\n\n return sumBy(parseCalc(value), (value) => {\n const unit = parseUnit(value);\n\n return unit\n ? percent(\n unit === 'vh'\n ? getViewportHeight()\n : unit === 'vw'\n ? width(toWindow(element))\n : offsetDim\n ? element[`offset${ucfirst(property)}`]\n : dimensions(element)[property],\n value\n )\n : value;\n });\n}\n\nconst calcRe = /-?\\d+(?:\\.\\d+)?(?:v[wh]|%|px)?/g;\nconst parseCalc = memoize((calc) => calc.toString().replace(/\\s/g, '').match(calcRe) || []);\nconst unitRe = /(?:v[hw]|%)$/;\nconst parseUnit = memoize((str) => (str.match(unitRe) || [])[0]);\n\nfunction percent(base, value) {\n return (base * toFloat(value)) / 100;\n}\n\nlet vh;\nlet vhEl;\n\nfunction getViewportHeight() {\n if (vh) {\n return vh;\n }\n if (!vhEl) {\n vhEl = $('
');\n css(vhEl, {\n height: '100vh',\n position: 'fixed',\n });\n on(window, 'resize', () => (vh = null));\n }\n\n append(document.body, vhEl);\n vh = vhEl.clientHeight;\n remove(vhEl);\n return vh;\n}\n","export const inBrowser = typeof window !== 'undefined';\nexport const isRtl = inBrowser && document.dir === 'rtl';\n\nexport const hasTouch = inBrowser && 'ontouchstart' in window;\nconst hasPointerEvents = inBrowser && window.PointerEvent;\n\nexport const pointerDown = hasPointerEvents ? 'pointerdown' : hasTouch ? 'touchstart' : 'mousedown';\nexport const pointerMove = hasPointerEvents ? 'pointermove' : hasTouch ? 'touchmove' : 'mousemove';\nexport const pointerUp = hasPointerEvents ? 'pointerup' : hasTouch ? 'touchend' : 'mouseup';\nexport const pointerEnter = hasPointerEvents ? 'pointerenter' : hasTouch ? '' : 'mouseenter';\nexport const pointerLeave = hasPointerEvents ? 'pointerleave' : hasTouch ? '' : 'mouseleave';\nexport const pointerCancel = hasPointerEvents ? 'pointercancel' : 'touchcancel';\n","/*\n Based on:\n Copyright (c) 2016 Wilson Page wilsonpage@me.com\n https://github.com/wilsonpage/fastdom\n*/\n\nexport const fastdom = {\n reads: [],\n writes: [],\n\n read(task) {\n this.reads.push(task);\n scheduleFlush();\n return task;\n },\n\n write(task) {\n this.writes.push(task);\n scheduleFlush();\n return task;\n },\n\n clear(task) {\n remove(this.reads, task);\n remove(this.writes, task);\n },\n\n flush,\n};\n\nfunction flush(recursion) {\n runTasks(fastdom.reads);\n runTasks(fastdom.writes.splice(0));\n\n fastdom.scheduled = false;\n\n if (fastdom.reads.length || fastdom.writes.length) {\n scheduleFlush(recursion + 1);\n }\n}\n\nconst RECURSION_LIMIT = 4;\nfunction scheduleFlush(recursion) {\n if (fastdom.scheduled) {\n return;\n }\n\n fastdom.scheduled = true;\n if (recursion && recursion < RECURSION_LIMIT) {\n Promise.resolve().then(() => flush(recursion));\n } else {\n requestAnimationFrame(() => flush(1));\n }\n}\n\nfunction runTasks(tasks) {\n let task;\n while ((task = tasks.shift())) {\n try {\n task();\n } catch (e) {\n console.error(e);\n }\n }\n}\n\nfunction remove(array, item) {\n const index = array.indexOf(item);\n return ~index && array.splice(index, 1);\n}\n","import { on } from './event';\nimport { toNodes } from './lang';\nimport { inBrowser } from './env';\n\nexport function observeIntersection(targets, cb, options, intersecting = true) {\n const observer = new IntersectionObserver(\n intersecting\n ? (entries, observer) => {\n if (entries.some((entry) => entry.isIntersecting)) {\n cb(entries, observer);\n }\n }\n : cb,\n options\n );\n for (const el of toNodes(targets)) {\n observer.observe(el);\n }\n\n return observer;\n}\n\nconst hasResizeObserver = inBrowser && window.ResizeObserver;\nexport function observeResize(targets, cb, options = { box: 'border-box' }) {\n if (hasResizeObserver) {\n return observe(ResizeObserver, targets, cb, options);\n }\n\n // Fallback Safari < 13.1\n initResizeListener();\n listeners.add(cb);\n\n return {\n disconnect() {\n listeners.delete(cb);\n },\n };\n}\n\nlet listeners;\nfunction initResizeListener() {\n if (listeners) {\n return;\n }\n\n listeners = new Set();\n\n // throttle 'resize'\n let pendingResize;\n const handleResize = () => {\n if (pendingResize) {\n return;\n }\n pendingResize = true;\n requestAnimationFrame(() => (pendingResize = false));\n for (const listener of listeners) {\n listener();\n }\n };\n\n on(window, 'load resize', handleResize);\n on(document, 'loadedmetadata load', handleResize, true);\n}\n\nexport function observeMutation(targets, cb, options) {\n return observe(MutationObserver, targets, cb, options);\n}\n\nfunction observe(Observer, targets, cb, options) {\n const observer = new Observer(cb);\n for (const el of toNodes(targets)) {\n observer.observe(el, options);\n }\n\n return observer;\n}\n","import { css } from './style';\nimport { isVisible, parents } from './filter';\nimport { offset, offsetPosition } from './dimensions';\nimport {\n clamp,\n findIndex,\n includes,\n intersectRect,\n isWindow,\n toFloat,\n toWindow,\n ucfirst,\n} from './lang';\n\nexport function isInView(element, offsetTop = 0, offsetLeft = 0) {\n if (!isVisible(element)) {\n return false;\n }\n\n return intersectRect(\n ...overflowParents(element)\n .map((parent) => {\n const { top, left, bottom, right } = offsetViewport(parent);\n\n return {\n top: top - offsetTop,\n left: left - offsetLeft,\n bottom: bottom + offsetTop,\n right: right + offsetLeft,\n };\n })\n .concat(offset(element))\n );\n}\n\nexport function scrollIntoView(element, { offset: offsetBy = 0 } = {}) {\n const parents = isVisible(element) ? scrollParents(element, false, ['hidden']) : [];\n return parents.reduce(\n (fn, scrollElement, i) => {\n const { scrollTop, scrollHeight, offsetHeight } = scrollElement;\n const viewport = offsetViewport(scrollElement);\n const maxScroll = scrollHeight - viewport.height;\n const { height: elHeight, top: elTop } = parents[i - 1]\n ? offsetViewport(parents[i - 1])\n : offset(element);\n\n let top = Math.ceil(elTop - viewport.top - offsetBy + scrollTop);\n\n if (offsetBy > 0 && offsetHeight < elHeight + offsetBy) {\n top += offsetBy;\n } else {\n offsetBy = 0;\n }\n\n if (top > maxScroll) {\n offsetBy -= top - maxScroll;\n top = maxScroll;\n } else if (top < 0) {\n offsetBy -= top;\n top = 0;\n }\n\n return () => scrollTo(scrollElement, top - scrollTop).then(fn);\n },\n () => Promise.resolve()\n )();\n\n function scrollTo(element, top) {\n return new Promise((resolve) => {\n const scroll = element.scrollTop;\n const duration = getDuration(Math.abs(top));\n const start = Date.now();\n\n (function step() {\n const percent = ease(clamp((Date.now() - start) / duration));\n\n element.scrollTop = scroll + top * percent;\n\n // scroll more if we have not reached our destination\n if (percent === 1) {\n resolve();\n } else {\n requestAnimationFrame(step);\n }\n })();\n });\n }\n\n function getDuration(dist) {\n return 40 * Math.pow(dist, 0.375);\n }\n\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n}\n\nexport function scrolledOver(element, startOffset = 0, endOffset = 0) {\n if (!isVisible(element)) {\n return 0;\n }\n\n const [scrollElement] = scrollParents(element, true);\n const { scrollHeight, scrollTop } = scrollElement;\n const { height: viewportHeight } = offsetViewport(scrollElement);\n const maxScroll = scrollHeight - viewportHeight;\n const elementOffsetTop = offsetPosition(element)[0] - offsetPosition(scrollElement)[0];\n\n const start = Math.max(0, elementOffsetTop - viewportHeight + startOffset);\n const end = Math.min(maxScroll, elementOffsetTop + element.offsetHeight - endOffset);\n\n return clamp((scrollTop - start) / (end - start));\n}\n\nexport function scrollParents(element, scrollable = false, props = []) {\n const scrollEl = scrollingElement(element);\n\n let ancestors = parents(element).reverse();\n ancestors = ancestors.slice(ancestors.indexOf(scrollEl) + 1);\n\n const fixedIndex = findIndex(ancestors, (el) => css(el, 'position') === 'fixed');\n if (~fixedIndex) {\n ancestors = ancestors.slice(fixedIndex);\n }\n\n return [scrollEl]\n .concat(\n ancestors.filter(\n (parent) =>\n css(parent, 'overflow')\n .split(' ')\n .some((prop) => includes(['auto', 'scroll', ...props], prop)) &&\n (!scrollable || parent.scrollHeight > offsetViewport(parent).height)\n )\n )\n .reverse();\n}\n\nexport function overflowParents(element) {\n return scrollParents(element, false, ['hidden', 'clip']);\n}\n\nexport function offsetViewport(scrollElement) {\n const window = toWindow(scrollElement);\n const {\n document: { documentElement },\n } = window;\n let viewportElement =\n scrollElement === scrollingElement(scrollElement) ? window : scrollElement;\n\n const { visualViewport } = window;\n if (isWindow(viewportElement) && visualViewport) {\n let { height, width, scale, pageTop: top, pageLeft: left } = visualViewport;\n height = Math.round(height * scale);\n width = Math.round(width * scale);\n return { height, width, top, left, bottom: top + height, right: left + width };\n }\n\n let rect = offset(viewportElement);\n if (css(viewportElement, 'display') === 'inline') {\n return rect;\n }\n\n for (let [prop, dir, start, end] of [\n ['width', 'x', 'left', 'right'],\n ['height', 'y', 'top', 'bottom'],\n ]) {\n if (isWindow(viewportElement)) {\n // iOS 12 returns as scrollingElement\n viewportElement = documentElement;\n } else {\n rect[start] += toFloat(css(viewportElement, `border-${start}-width`));\n }\n rect[prop] = rect[dir] = viewportElement[`client${ucfirst(prop)}`];\n rect[end] = rect[prop] + rect[start];\n }\n return rect;\n}\n\nfunction scrollingElement(element) {\n return toWindow(element).document.scrollingElement;\n}\n","import { observeResize } from 'uikit-util';\n\nexport default {\n connected() {\n this.registerObserver(\n observeResize(this.$options.resizeTargets?.call(this) || this.$el, () =>\n this.$emit('resize')\n )\n );\n },\n};\n","import { on } from 'uikit-util';\n\nexport default {\n connected() {\n registerScrollListener(this._uid, () => this.$emit('scroll'));\n },\n\n disconnected() {\n unregisterScrollListener(this._uid);\n },\n};\n\nconst scrollListeners = new Map();\nlet unbindScrollListener;\nexport function registerScrollListener(id, listener) {\n unbindScrollListener =\n unbindScrollListener ||\n on(window, 'scroll', () => scrollListeners.forEach((listener) => listener()), {\n passive: true,\n capture: true,\n });\n\n scrollListeners.set(id, listener);\n}\n\nexport function unregisterScrollListener(id) {\n scrollListeners.delete(id);\n if (unbindScrollListener && !scrollListeners.size) {\n unbindScrollListener();\n unbindScrollListener = null;\n }\n}\n","import {\n createEvent,\n css,\n isNumeric,\n isString,\n on,\n startsWith,\n toFloat,\n trigger,\n} from 'uikit-util';\n\nexport default {\n props: {\n media: Boolean,\n },\n\n data: {\n media: false,\n },\n\n connected() {\n const media = toMedia(this.media, this.$el);\n this.matchMedia = true;\n if (media) {\n this.mediaObj = window.matchMedia(media);\n const handler = () => {\n this.matchMedia = this.mediaObj.matches;\n trigger(this.$el, createEvent('mediachange', false, true, [this.mediaObj]));\n };\n this.offMediaObj = on(this.mediaObj, 'change', () => {\n handler();\n this.$emit('resize');\n });\n handler();\n }\n },\n\n disconnected() {\n this.offMediaObj?.();\n },\n};\n\nfunction toMedia(value, element) {\n if (isString(value)) {\n if (startsWith(value, '@')) {\n value = toFloat(css(element, `--uk-breakpoint-${value.substr(1)}`));\n } else if (isNaN(value)) {\n return value;\n }\n }\n\n return value && isNumeric(value) ? `(min-width: ${value}px)` : '';\n}\n","import {\n $,\n $$,\n after,\n append,\n attr,\n includes,\n isTag,\n isVoidElement,\n memoize,\n noop,\n observeIntersection,\n once,\n remove,\n removeAttr,\n startsWith,\n toFloat,\n} from 'uikit-util';\n\nexport default {\n args: 'src',\n\n props: {\n id: Boolean,\n icon: String,\n src: String,\n style: String,\n width: Number,\n height: Number,\n ratio: Number,\n class: String,\n strokeAnimation: Boolean,\n attributes: 'list',\n },\n\n data: {\n ratio: 1,\n include: ['style', 'class'],\n class: '',\n strokeAnimation: false,\n },\n\n beforeConnect() {\n this.class += ' uk-svg';\n },\n\n connected() {\n if (!this.icon && includes(this.src, '#')) {\n [this.src, this.icon] = this.src.split('#');\n }\n\n this.svg = this.getSvg().then((el) => {\n if (this._connected) {\n const svg = insertSVG(el, this.$el);\n\n if (this.svgEl && svg !== this.svgEl) {\n remove(this.svgEl);\n }\n\n this.applyAttributes(svg, el);\n\n return (this.svgEl = svg);\n }\n }, noop);\n\n if (this.strokeAnimation) {\n this.svg.then((el) => {\n if (this._connected && el) {\n applyAnimation(el);\n this.registerObserver(\n observeIntersection(el, (records, observer) => {\n applyAnimation(el);\n observer.disconnect();\n })\n );\n }\n });\n }\n },\n\n disconnected() {\n this.svg.then((svg) => {\n if (this._connected) {\n return;\n }\n\n if (isVoidElement(this.$el)) {\n this.$el.hidden = false;\n }\n\n remove(svg);\n this.svgEl = null;\n });\n\n this.svg = null;\n },\n\n methods: {\n async getSvg() {\n if (isTag(this.$el, 'img') && !this.$el.complete && this.$el.loading === 'lazy') {\n return new Promise((resolve) =>\n once(this.$el, 'load', () => resolve(this.getSvg()))\n );\n }\n\n return parseSVG(await loadSVG(this.src), this.icon) || Promise.reject('SVG not found.');\n },\n\n applyAttributes(el, ref) {\n for (const prop in this.$options.props) {\n if (includes(this.include, prop) && prop in this) {\n attr(el, prop, this[prop]);\n }\n }\n\n for (const attribute in this.attributes) {\n const [prop, value] = this.attributes[attribute].split(':', 2);\n attr(el, prop, value);\n }\n\n if (!this.id) {\n removeAttr(el, 'id');\n }\n\n const props = ['width', 'height'];\n let dimensions = props.map((prop) => this[prop]);\n\n if (!dimensions.some((val) => val)) {\n dimensions = props.map((prop) => attr(ref, prop));\n }\n\n const viewBox = attr(ref, 'viewBox');\n if (viewBox && !dimensions.some((val) => val)) {\n dimensions = viewBox.split(' ').slice(2);\n }\n\n dimensions.forEach((val, i) => attr(el, props[i], toFloat(val) * this.ratio || null));\n },\n },\n};\n\nconst loadSVG = memoize(async (src) => {\n if (src) {\n if (startsWith(src, 'data:')) {\n return decodeURIComponent(src.split(',')[1]);\n } else {\n return (await fetch(src)).text();\n }\n } else {\n return Promise.reject();\n }\n});\n\nfunction parseSVG(svg, icon) {\n if (icon && includes(svg, '/g;\nconst symbols = {};\n\nfunction parseSymbols(svg, icon) {\n if (!symbols[svg]) {\n symbols[svg] = {};\n\n symbolRe.lastIndex = 0;\n\n let match;\n while ((match = symbolRe.exec(svg))) {\n symbols[svg][match[3]] = ``;\n }\n }\n\n return symbols[svg][icon];\n}\n\nfunction applyAnimation(el) {\n const length = getMaxPathLength(el);\n\n if (length) {\n el.style.setProperty('--uk-animation-stroke', length);\n }\n}\n\nexport function getMaxPathLength(el) {\n return Math.ceil(\n Math.max(\n 0,\n ...$$('[stroke]', el).map((stroke) => {\n try {\n return stroke.getTotalLength();\n } catch (e) {\n return 0;\n }\n })\n )\n );\n}\n\nfunction insertSVG(el, root) {\n if (isVoidElement(root) || isTag(root, 'canvas')) {\n root.hidden = true;\n\n const next = root.nextElementSibling;\n return equals(el, next) ? next : after(root, el);\n }\n\n const last = root.lastElementChild;\n return equals(el, last) ? last : append(root, el);\n}\n\nfunction equals(el, other) {\n return isTag(el, 'svg') && isTag(other, 'svg') && el.innerHTML === other.innerHTML;\n}\n","import Media from '../mixin/media';\nimport { getMaxPathLength } from '../core/svg';\nimport {\n createEvent,\n css,\n Dimensions,\n findIndex,\n isNumber,\n isString,\n isUndefined,\n noop,\n toFloat,\n toPx,\n trigger,\n ucfirst,\n} from 'uikit-util';\n\nconst props = {\n x: transformFn,\n y: transformFn,\n rotate: transformFn,\n scale: transformFn,\n color: colorFn,\n backgroundColor: colorFn,\n borderColor: colorFn,\n blur: filterFn,\n hue: filterFn,\n fopacity: filterFn,\n grayscale: filterFn,\n invert: filterFn,\n saturate: filterFn,\n sepia: filterFn,\n opacity: cssPropFn,\n stroke: strokeFn,\n bgx: backgroundFn,\n bgy: backgroundFn,\n};\n\nconst { keys } = Object;\n\nexport default {\n mixins: [Media],\n\n props: fillObject(keys(props), 'list'),\n\n data: fillObject(keys(props), undefined),\n\n computed: {\n props(properties, $el) {\n const stops = {};\n for (const prop in properties) {\n if (prop in props && !isUndefined(properties[prop])) {\n stops[prop] = properties[prop].slice();\n }\n }\n const result = {};\n for (const prop in stops) {\n result[prop] = props[prop](prop, $el, stops[prop], stops);\n }\n return result;\n },\n },\n\n events: {\n load() {\n this.$emit();\n },\n },\n\n methods: {\n reset() {\n for (const prop in this.getCss(0)) {\n css(this.$el, prop, '');\n }\n },\n\n getCss(percent) {\n const css = { transform: '', filter: '' };\n for (const prop in this.props) {\n this.props[prop](css, percent);\n }\n css.willChange = Object.keys(css)\n .filter((key) => css[key] !== '')\n .join(',');\n return css;\n },\n },\n};\n\nfunction transformFn(prop, el, stops) {\n let unit = getUnit(stops) || { x: 'px', y: 'px', rotate: 'deg' }[prop] || '';\n let transformFn;\n\n if (prop === 'x' || prop === 'y') {\n prop = `translate${ucfirst(prop)}`;\n transformFn = (stop) => toFloat(toFloat(stop).toFixed(unit === 'px' ? 0 : 6));\n } else if (prop === 'scale') {\n unit = '';\n transformFn = (stop) =>\n getUnit([stop]) ? toPx(stop, 'width', el, true) / el.offsetWidth : stop;\n }\n\n if (stops.length === 1) {\n stops.unshift(prop === 'scale' ? 1 : 0);\n }\n\n stops = parseStops(stops, transformFn);\n\n return (css, percent) => {\n css.transform += ` ${prop}(${getValue(stops, percent)}${unit})`;\n };\n}\n\nfunction colorFn(prop, el, stops) {\n if (stops.length === 1) {\n stops.unshift(getCssValue(el, prop, ''));\n }\n\n stops = parseStops(stops, (stop) => parseColor(el, stop));\n\n return (css, percent) => {\n const [start, end, p] = getStop(stops, percent);\n const value = start\n .map((value, i) => {\n value += p * (end[i] - value);\n return i === 3 ? toFloat(value) : parseInt(value, 10);\n })\n .join(',');\n css[prop] = `rgba(${value})`;\n };\n}\n\nfunction parseColor(el, color) {\n return getCssValue(el, 'color', color)\n .split(/[(),]/g)\n .slice(1, -1)\n .concat(1)\n .slice(0, 4)\n .map(toFloat);\n}\n\nfunction filterFn(prop, el, stops) {\n if (stops.length === 1) {\n stops.unshift(0);\n }\n\n const unit = getUnit(stops) || { blur: 'px', hue: 'deg' }[prop] || '%';\n prop = { fopacity: 'opacity', hue: 'hue-rotate' }[prop] || prop;\n stops = parseStops(stops);\n\n return (css, percent) => {\n const value = getValue(stops, percent);\n css.filter += ` ${prop}(${value + unit})`;\n };\n}\n\nfunction cssPropFn(prop, el, stops) {\n if (stops.length === 1) {\n stops.unshift(getCssValue(el, prop, ''));\n }\n\n stops = parseStops(stops);\n\n return (css, percent) => {\n css[prop] = getValue(stops, percent);\n };\n}\n\nfunction strokeFn(prop, el, stops) {\n if (stops.length === 1) {\n stops.unshift(0);\n }\n\n const unit = getUnit(stops);\n const length = getMaxPathLength(el);\n stops = parseStops(stops.reverse(), (stop) => {\n stop = toFloat(stop);\n return unit === '%' ? (stop * length) / 100 : stop;\n });\n\n if (!stops.some(([value]) => value)) {\n return noop;\n }\n\n css(el, 'strokeDasharray', length);\n\n return (css, percent) => {\n css.strokeDashoffset = getValue(stops, percent);\n };\n}\n\nfunction backgroundFn(prop, el, stops, props) {\n if (stops.length === 1) {\n stops.unshift(0);\n }\n\n const attr = prop === 'bgy' ? 'height' : 'width';\n props[prop] = parseStops(stops, (stop) => toPx(stop, attr, el));\n\n const bgProps = ['bgx', 'bgy'].filter((prop) => prop in props);\n if (bgProps.length === 2 && prop === 'bgx') {\n return noop;\n }\n\n if (getCssValue(el, 'backgroundSize', '') === 'cover') {\n return backgroundCoverFn(prop, el, stops, props);\n }\n\n const positions = {};\n for (const prop of bgProps) {\n positions[prop] = getBackgroundPos(el, prop);\n }\n\n return setBackgroundPosFn(bgProps, positions, props);\n}\n\nfunction backgroundCoverFn(prop, el, stops, props) {\n const dimImage = getBackgroundImageDimensions(el);\n\n if (!dimImage.width) {\n return noop;\n }\n\n const dimEl = {\n width: el.offsetWidth,\n height: el.offsetHeight,\n };\n\n const bgProps = ['bgx', 'bgy'].filter((prop) => prop in props);\n\n const positions = {};\n for (const prop of bgProps) {\n const values = props[prop].map(([value]) => value);\n const min = Math.min(...values);\n const max = Math.max(...values);\n const down = values.indexOf(min) < values.indexOf(max);\n const diff = max - min;\n\n positions[prop] = `${(down ? -diff : 0) - (down ? min : max)}px`;\n dimEl[prop === 'bgy' ? 'height' : 'width'] += diff;\n }\n\n const dim = Dimensions.cover(dimImage, dimEl);\n\n for (const prop of bgProps) {\n const attr = prop === 'bgy' ? 'height' : 'width';\n const overflow = dim[attr] - dimEl[attr];\n positions[prop] = `max(${getBackgroundPos(el, prop)},-${overflow}px) + ${positions[prop]}`;\n }\n\n const fn = setBackgroundPosFn(bgProps, positions, props);\n return (css, percent) => {\n fn(css, percent);\n css.backgroundSize = `${dim.width}px ${dim.height}px`;\n css.backgroundRepeat = 'no-repeat';\n };\n}\n\nfunction getBackgroundPos(el, prop) {\n return getCssValue(el, `background-position-${prop.substr(-1)}`, '');\n}\n\nfunction setBackgroundPosFn(bgProps, positions, props) {\n return function (css, percent) {\n for (const prop of bgProps) {\n const value = getValue(props[prop], percent);\n css[`background-position-${prop.substr(-1)}`] = `calc(${positions[prop]} + ${value}px)`;\n }\n };\n}\n\nconst dimensions = {};\nfunction getBackgroundImageDimensions(el) {\n const src = css(el, 'backgroundImage').replace(/^none|url\\([\"']?(.+?)[\"']?\\)$/, '$1');\n\n if (dimensions[src]) {\n return dimensions[src];\n }\n\n const image = new Image();\n if (src) {\n image.src = src;\n\n if (!image.naturalWidth) {\n image.onload = () => {\n dimensions[src] = toDimensions(image);\n trigger(el, createEvent('load', false));\n };\n return toDimensions(image);\n }\n }\n\n return (dimensions[src] = toDimensions(image));\n}\n\nfunction toDimensions(image) {\n return {\n width: image.naturalWidth,\n height: image.naturalHeight,\n };\n}\n\nfunction parseStops(stops, fn = toFloat) {\n const result = [];\n const { length } = stops;\n let nullIndex = 0;\n for (let i = 0; i < length; i++) {\n let [value, percent] = isString(stops[i]) ? stops[i].trim().split(' ') : [stops[i]];\n value = fn(value);\n percent = percent ? toFloat(percent) / 100 : null;\n\n if (i === 0) {\n if (percent === null) {\n percent = 0;\n } else if (percent) {\n result.push([value, 0]);\n }\n } else if (i === length - 1) {\n if (percent === null) {\n percent = 1;\n } else if (percent !== 1) {\n result.push([value, percent]);\n percent = 1;\n }\n }\n\n result.push([value, percent]);\n\n if (percent === null) {\n nullIndex++;\n } else if (nullIndex) {\n const leftPercent = result[i - nullIndex - 1][1];\n const p = (percent - leftPercent) / (nullIndex + 1);\n for (let j = nullIndex; j > 0; j--) {\n result[i - j][1] = leftPercent + p * (nullIndex - j + 1);\n }\n\n nullIndex = 0;\n }\n }\n\n return result;\n}\n\nfunction getStop(stops, percent) {\n const index = findIndex(stops.slice(1), ([, targetPercent]) => percent <= targetPercent) + 1;\n return [\n stops[index - 1][0],\n stops[index][0],\n (percent - stops[index - 1][1]) / (stops[index][1] - stops[index - 1][1]),\n ];\n}\n\nfunction getValue(stops, percent) {\n const [start, end, p] = getStop(stops, percent);\n return isNumber(start) ? start + Math.abs(start - end) * p * (start < end ? 1 : -1) : +end;\n}\n\nconst unitRe = /^-?\\d+(\\S+)?/;\nfunction getUnit(stops, defaultUnit) {\n for (const stop of stops) {\n const match = stop.match?.(unitRe);\n if (match) {\n return match[1];\n }\n }\n return defaultUnit;\n}\n\nfunction getCssValue(el, prop, value) {\n const prev = el.style[prop];\n const val = css(css(el, prop, value), prop);\n el.style[prop] = prev;\n return val;\n}\n\nfunction fillObject(keys, value) {\n return keys.reduce((data, prop) => {\n data[prop] = value;\n return data;\n }, {});\n}\n","import Resize from '../mixin/resize';\nimport Scroll from '../mixin/scroll';\nimport Parallax from '../mixin/parallax';\nimport { css, isVisible, parent, query, scrolledOver, toPx } from 'uikit-util';\n\nexport default {\n mixins: [Parallax, Resize, Scroll],\n\n props: {\n target: String,\n viewport: Number, // Deprecated\n easing: Number,\n start: String,\n end: String,\n },\n\n data: {\n target: false,\n viewport: 1,\n easing: 1,\n start: 0,\n end: 0,\n },\n\n computed: {\n target({ target }, $el) {\n return getOffsetElement((target && query(target, $el)) || $el);\n },\n\n start({ start }) {\n return toPx(start, 'height', this.target, true);\n },\n\n end({ end, viewport }) {\n return toPx(\n end || ((viewport = (1 - viewport) * 100) && `${viewport}vh+${viewport}%`),\n 'height',\n this.target,\n true\n );\n },\n },\n\n resizeTargets() {\n return [this.$el, this.target];\n },\n\n update: {\n read({ percent }, types) {\n if (!types.has('scroll')) {\n percent = false;\n }\n\n if (!isVisible(this.$el)) {\n return false;\n }\n\n if (!this.matchMedia) {\n return;\n }\n\n const prev = percent;\n percent = ease(scrolledOver(this.target, this.start, this.end), this.easing);\n\n return {\n percent,\n style: prev === percent ? false : this.getCss(percent),\n };\n },\n\n write({ style }) {\n if (!this.matchMedia) {\n this.reset();\n return;\n }\n\n style && css(this.$el, style);\n },\n\n events: ['scroll', 'resize'],\n },\n};\n\n/*\n * Inspired by https://gist.github.com/gre/1650294?permalink_comment_id=3477425#gistcomment-3477425\n *\n * linear: 0\n * easeInSine: 0.5\n * easeOutSine: -0.5\n * easeInQuad: 1\n * easeOutQuad: -1\n * easeInCubic: 2\n * easeOutCubic: -2\n * easeInQuart: 3\n * easeOutQuart: -3\n * easeInQuint: 4\n * easeOutQuint: -4\n */\nfunction ease(percent, easing) {\n return easing >= 0 ? Math.pow(percent, easing + 1) : 1 - Math.pow(1 - percent, 1 - easing);\n}\n\n// SVG elements do not inherit from HTMLElement\nfunction getOffsetElement(el) {\n return el ? ('offsetTop' in el ? el : getOffsetElement(parent(el))) : document.documentElement;\n}\n","import { addClass } from 'uikit-util';\n\nexport default {\n connected() {\n addClass(this.$el, this.$options.id);\n },\n};\n","import { $, attr, matches } from 'uikit-util';\n\nexport default {\n props: {\n autoplay: Boolean,\n autoplayInterval: Number,\n pauseOnHover: Boolean,\n },\n\n data: {\n autoplay: false,\n autoplayInterval: 7000,\n pauseOnHover: true,\n },\n\n connected() {\n this.autoplay && this.startAutoplay();\n },\n\n disconnected() {\n this.stopAutoplay();\n },\n\n update() {\n attr(this.slides, 'tabindex', '-1');\n },\n\n events: [\n {\n name: 'visibilitychange',\n\n el() {\n return document;\n },\n\n filter() {\n return this.autoplay;\n },\n\n handler() {\n if (document.hidden) {\n this.stopAutoplay();\n } else {\n this.startAutoplay();\n }\n },\n },\n ],\n\n methods: {\n startAutoplay() {\n this.stopAutoplay();\n\n this.interval = setInterval(\n () =>\n (!this.draggable || !$(':focus', this.$el)) &&\n (!this.pauseOnHover || !matches(this.$el, ':hover')) &&\n !this.stack.length &&\n this.show('next'),\n this.autoplayInterval\n );\n },\n\n stopAutoplay() {\n this.interval && clearInterval(this.interval);\n },\n },\n};\n","import {\n closest,\n css,\n getEventPos,\n includes,\n isRtl,\n isTouch,\n noop,\n off,\n on,\n selInput,\n toNodes,\n trigger,\n} from 'uikit-util';\n\nconst pointerOptions = { passive: false, capture: true };\nconst pointerUpOptions = { passive: true, capture: true };\nconst pointerDown = 'touchstart mousedown';\nconst pointerMove = 'touchmove mousemove';\nconst pointerUp = 'touchend touchcancel mouseup click input scroll';\n\nexport default {\n props: {\n draggable: Boolean,\n },\n\n data: {\n draggable: true,\n threshold: 10,\n },\n\n created() {\n for (const key of ['start', 'move', 'end']) {\n const fn = this[key];\n this[key] = (e) => {\n const pos = getEventPos(e).x * (isRtl ? -1 : 1);\n\n this.prevPos = pos === this.pos ? this.prevPos : this.pos;\n this.pos = pos;\n\n fn(e);\n };\n }\n },\n\n events: [\n {\n name: pointerDown,\n\n passive: true,\n\n delegate() {\n return `${this.selList} > *`;\n },\n\n handler(e) {\n if (\n !this.draggable ||\n (!isTouch(e) && hasSelectableText(e.target)) ||\n closest(e.target, selInput) ||\n e.button > 0 ||\n this.length < 2\n ) {\n return;\n }\n\n this.start(e);\n },\n },\n\n {\n name: 'dragstart',\n\n handler(e) {\n e.preventDefault();\n },\n },\n\n {\n // iOS workaround for slider stopping if swiping fast\n name: pointerMove,\n el() {\n return this.list;\n },\n handler: noop,\n ...pointerOptions,\n },\n ],\n\n methods: {\n start() {\n this.drag = this.pos;\n\n if (this._transitioner) {\n this.percent = this._transitioner.percent();\n this.drag += this._transitioner.getDistance() * this.percent * this.dir;\n\n this._transitioner.cancel();\n this._transitioner.translate(this.percent);\n\n this.dragging = true;\n\n this.stack = [];\n } else {\n this.prevIndex = this.index;\n }\n\n on(document, pointerMove, this.move, pointerOptions);\n\n // 'input' event is triggered by video controls\n on(document, pointerUp, this.end, pointerUpOptions);\n\n css(this.list, 'userSelect', 'none');\n },\n\n move(e) {\n const distance = this.pos - this.drag;\n\n if (\n distance === 0 ||\n this.prevPos === this.pos ||\n (!this.dragging && Math.abs(distance) < this.threshold)\n ) {\n return;\n }\n\n // prevent click event\n css(this.list, 'pointerEvents', 'none');\n\n e.cancelable && e.preventDefault();\n\n this.dragging = true;\n this.dir = distance < 0 ? 1 : -1;\n\n const { slides } = this;\n let { prevIndex } = this;\n let dis = Math.abs(distance);\n let nextIndex = this.getIndex(prevIndex + this.dir, prevIndex);\n let width = this._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth;\n\n while (nextIndex !== prevIndex && dis > width) {\n this.drag -= width * this.dir;\n\n prevIndex = nextIndex;\n dis -= width;\n nextIndex = this.getIndex(prevIndex + this.dir, prevIndex);\n width = this._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth;\n }\n\n this.percent = dis / width;\n\n const prev = slides[prevIndex];\n const next = slides[nextIndex];\n const changed = this.index !== nextIndex;\n const edge = prevIndex === nextIndex;\n\n let itemShown;\n\n [this.index, this.prevIndex]\n .filter((i) => !includes([nextIndex, prevIndex], i))\n .forEach((i) => {\n trigger(slides[i], 'itemhidden', [this]);\n\n if (edge) {\n itemShown = true;\n this.prevIndex = prevIndex;\n }\n });\n\n if ((this.index === prevIndex && this.prevIndex !== prevIndex) || itemShown) {\n trigger(slides[this.index], 'itemshown', [this]);\n }\n\n if (changed) {\n this.prevIndex = prevIndex;\n this.index = nextIndex;\n\n !edge && trigger(prev, 'beforeitemhide', [this]);\n trigger(next, 'beforeitemshow', [this]);\n }\n\n this._transitioner = this._translate(Math.abs(this.percent), prev, !edge && next);\n\n if (changed) {\n !edge && trigger(prev, 'itemhide', [this]);\n trigger(next, 'itemshow', [this]);\n }\n },\n\n end() {\n off(document, pointerMove, this.move, pointerOptions);\n off(document, pointerUp, this.end, pointerUpOptions);\n\n if (this.dragging) {\n this.dragging = null;\n\n if (this.index === this.prevIndex) {\n this.percent = 1 - this.percent;\n this.dir *= -1;\n this._show(false, this.index, true);\n this._transitioner = null;\n } else {\n const dirChange =\n (isRtl ? this.dir * (isRtl ? 1 : -1) : this.dir) < 0 ===\n this.prevPos > this.pos;\n this.index = dirChange ? this.index : this.prevIndex;\n\n if (dirChange) {\n this.percent = 1 - this.percent;\n }\n\n this.show(\n (this.dir > 0 && !dirChange) || (this.dir < 0 && dirChange)\n ? 'next'\n : 'previous',\n true\n );\n }\n }\n\n css(this.list, { userSelect: '', pointerEvents: '' });\n\n this.drag = this.percent = null;\n },\n },\n};\n\nfunction hasSelectableText(el) {\n return (\n css(el, 'userSelect') !== 'none' &&\n toNodes(el.childNodes).some((el) => el.nodeType === 3 && el.textContent.trim())\n );\n}\n","import { $, $$, data, html, toggleClass, toNumber } from 'uikit-util';\n\nexport default {\n data: {\n selNav: false,\n },\n\n computed: {\n nav({ selNav }, $el) {\n return $(selNav, $el);\n },\n\n selNavItem({ attrItem }) {\n return `[${attrItem}],[data-${attrItem}]`;\n },\n\n navItems(_, $el) {\n return $$(this.selNavItem, $el);\n },\n },\n\n update: {\n write() {\n if (this.nav && this.length !== this.nav.children.length) {\n html(\n this.nav,\n this.slides\n .map((_, i) => `
  • `)\n .join('')\n );\n }\n\n this.navItems.concat(this.nav).forEach((el) => el && (el.hidden = !this.maxIndex));\n\n this.updateNav();\n },\n\n events: ['resize'],\n },\n\n events: [\n {\n name: 'click',\n\n delegate() {\n return this.selNavItem;\n },\n\n handler(e) {\n e.preventDefault();\n this.show(data(e.current, this.attrItem));\n },\n },\n\n {\n name: 'itemshow',\n handler: 'updateNav',\n },\n ],\n\n methods: {\n updateNav() {\n const i = this.getValidIndex();\n for (const el of this.navItems) {\n const cmd = data(el, this.attrItem);\n\n toggleClass(el, this.clsActive, toNumber(cmd) === i);\n toggleClass(\n el,\n 'uk-invisible',\n this.finite &&\n ((cmd === 'previous' && i === 0) || (cmd === 'next' && i >= this.maxIndex))\n );\n }\n },\n },\n};\n","import Resize from './resize';\nimport SliderAutoplay from './slider-autoplay';\nimport SliderDrag from './slider-drag';\nimport SliderNav from './slider-nav';\nimport {\n $,\n children,\n clamp,\n getIndex,\n hasClass,\n isNumber,\n isRtl,\n removeClass,\n trigger,\n} from 'uikit-util';\n\nexport default {\n mixins: [SliderAutoplay, SliderDrag, SliderNav, Resize],\n\n props: {\n clsActivated: Boolean,\n easing: String,\n index: Number,\n finite: Boolean,\n velocity: Number,\n },\n\n data: () => ({\n easing: 'ease',\n finite: false,\n velocity: 1,\n index: 0,\n prevIndex: -1,\n stack: [],\n percent: 0,\n clsActive: 'uk-active',\n clsActivated: false,\n Transitioner: false,\n transitionOptions: {},\n }),\n\n connected() {\n this.prevIndex = -1;\n this.index = this.getValidIndex(this.$props.index);\n this.stack = [];\n },\n\n disconnected() {\n removeClass(this.slides, this.clsActive);\n },\n\n computed: {\n duration({ velocity }, $el) {\n return speedUp($el.offsetWidth / velocity);\n },\n\n list({ selList }, $el) {\n return $(selList, $el);\n },\n\n maxIndex() {\n return this.length - 1;\n },\n\n slides: {\n get() {\n return children(this.list);\n },\n\n watch() {\n this.$emit('resize');\n },\n },\n\n length() {\n return this.slides.length;\n },\n },\n\n methods: {\n show(index, force = false) {\n if (this.dragging || !this.length) {\n return;\n }\n\n const { stack } = this;\n const queueIndex = force ? 0 : stack.length;\n const reset = () => {\n stack.splice(queueIndex, 1);\n\n if (stack.length) {\n this.show(stack.shift(), true);\n }\n };\n\n stack[force ? 'unshift' : 'push'](index);\n\n if (!force && stack.length > 1) {\n if (stack.length === 2) {\n this._transitioner?.forward(Math.min(this.duration, 200));\n }\n\n return;\n }\n\n const prevIndex = this.getIndex(this.index);\n const prev = hasClass(this.slides, this.clsActive) && this.slides[prevIndex];\n const nextIndex = this.getIndex(index, this.index);\n const next = this.slides[nextIndex];\n\n if (prev === next) {\n reset();\n return;\n }\n\n this.dir = getDirection(index, prevIndex);\n this.prevIndex = prevIndex;\n this.index = nextIndex;\n\n if (\n (prev && !trigger(prev, 'beforeitemhide', [this])) ||\n !trigger(next, 'beforeitemshow', [this, prev])\n ) {\n this.index = this.prevIndex;\n reset();\n return;\n }\n\n const promise = this._show(prev, next, force).then(() => {\n prev && trigger(prev, 'itemhidden', [this]);\n trigger(next, 'itemshown', [this]);\n\n stack.shift();\n this._transitioner = null;\n\n requestAnimationFrame(() => stack.length && this.show(stack.shift(), true));\n });\n\n prev && trigger(prev, 'itemhide', [this]);\n trigger(next, 'itemshow', [this]);\n\n return promise;\n },\n\n getIndex(index = this.index, prev = this.index) {\n return clamp(getIndex(index, this.slides, prev, this.finite), 0, this.maxIndex);\n },\n\n getValidIndex(index = this.index, prevIndex = this.prevIndex) {\n return this.getIndex(index, prevIndex);\n },\n\n _show(prev, next, force) {\n this._transitioner = this._getTransitioner(prev, next, this.dir, {\n easing: force\n ? next.offsetWidth < 600\n ? 'cubic-bezier(0.25, 0.46, 0.45, 0.94)' /* easeOutQuad */\n : 'cubic-bezier(0.165, 0.84, 0.44, 1)' /* easeOutQuart */\n : this.easing,\n ...this.transitionOptions,\n });\n\n if (!force && !prev) {\n this._translate(1);\n return Promise.resolve();\n }\n\n const { length } = this.stack;\n return this._transitioner[length > 1 ? 'forward' : 'show'](\n length > 1 ? Math.min(this.duration, 75 + 75 / (length - 1)) : this.duration,\n this.percent\n );\n },\n\n _getDistance(prev, next) {\n return this._getTransitioner(prev, prev !== next && next).getDistance();\n },\n\n _translate(percent, prev = this.prevIndex, next = this.index) {\n const transitioner = this._getTransitioner(prev !== next ? prev : false, next);\n transitioner.translate(percent);\n return transitioner;\n },\n\n _getTransitioner(\n prev = this.prevIndex,\n next = this.index,\n dir = this.dir || 1,\n options = this.transitionOptions\n ) {\n return new this.Transitioner(\n isNumber(prev) ? this.slides[prev] : prev,\n isNumber(next) ? this.slides[next] : next,\n dir * (isRtl ? -1 : 1),\n options\n );\n },\n },\n};\n\nfunction getDirection(index, prevIndex) {\n return index === 'next' ? 1 : index === 'previous' ? -1 : index < prevIndex ? -1 : 1;\n}\n\nexport function speedUp(x) {\n return 0.5 * x + 300; // parabola through (400,500; 600,600; 1800,1200)\n}\n","export default {\n update: {\n write() {\n if (this.stack.length || this.dragging) {\n return;\n }\n\n const index = this.getValidIndex(this.index);\n\n if (!~this.prevIndex || this.index !== index) {\n this.show(index);\n } else {\n this._translate(1, this.prevIndex, this.index);\n }\n },\n\n events: ['resize'],\n },\n};\n","import { $$, isFunction, observeIntersection, removeAttr, toNodes } from 'uikit-util';\n\nexport default {\n data: {\n preload: 5,\n },\n\n methods: {\n lazyload(observeTargets = this.$el, targets = this.$el) {\n this.registerObserver(\n observeIntersection(observeTargets, (entries, observer) => {\n for (const el of toNodes(isFunction(targets) ? targets() : targets)) {\n $$('[loading=\"lazy\"]', el)\n .slice(0, this.preload - 1)\n .forEach((el) => removeAttr(el, 'loading'));\n }\n\n for (const el of entries\n .filter(({ isIntersecting }) => isIntersecting)\n .map(({ target }) => target)) {\n observer.unobserve(el);\n }\n })\n );\n },\n },\n};\n","import { css } from 'uikit-util';\n\nexport default {\n slide: {\n show(dir) {\n return [{ transform: translate(dir * -100) }, { transform: translate() }];\n },\n\n percent(current) {\n return translated(current);\n },\n\n translate(percent, dir) {\n return [\n { transform: translate(dir * -100 * percent) },\n { transform: translate(dir * 100 * (1 - percent)) },\n ];\n },\n },\n};\n\nexport function translated(el) {\n return Math.abs(css(el, 'transform').split(',')[4] / el.offsetWidth) || 0;\n}\n\nexport function translate(value = 0, unit = '%') {\n value += value ? unit : '';\n return `translate3d(${value}, 0, 0)`;\n}\n\nexport function scale3d(value) {\n return `scale3d(${value}, ${value}, 1)`;\n}\n","import Lazyload from '../../mixin/lazyload';\n\nexport default {\n mixins: [Lazyload],\n\n connected() {\n this.lazyload(this.slides, this.getAdjacentSlides);\n },\n};\n","import { translate } from '../../mixin/internal/slideshow-animations';\nimport {\n children,\n clamp,\n createEvent,\n css,\n Deferred,\n dimensions,\n findIndex,\n includes,\n isRtl,\n noop,\n position,\n sumBy,\n Transition,\n trigger,\n} from 'uikit-util';\n\nexport default function (prev, next, dir, { center, easing, list }) {\n const deferred = new Deferred();\n\n const from = prev\n ? getLeft(prev, list, center)\n : getLeft(next, list, center) + dimensions(next).width * dir;\n const to = next\n ? getLeft(next, list, center)\n : from + dimensions(prev).width * dir * (isRtl ? -1 : 1);\n\n return {\n dir,\n\n show(duration, percent = 0, linear) {\n const timing = linear ? 'linear' : easing;\n duration -= Math.round(duration * clamp(percent, -1, 1));\n\n this.translate(percent);\n\n percent = prev ? percent : clamp(percent, 0, 1);\n triggerUpdate(this.getItemIn(), 'itemin', { percent, duration, timing, dir });\n prev &&\n triggerUpdate(this.getItemIn(true), 'itemout', {\n percent: 1 - percent,\n duration,\n timing,\n dir,\n });\n\n Transition.start(\n list,\n { transform: translate(-to * (isRtl ? -1 : 1), 'px') },\n duration,\n timing\n ).then(deferred.resolve, noop);\n\n return deferred.promise;\n },\n\n cancel() {\n Transition.cancel(list);\n },\n\n reset() {\n css(list, 'transform', '');\n },\n\n forward(duration, percent = this.percent()) {\n Transition.cancel(list);\n return this.show(duration, percent, true);\n },\n\n translate(percent) {\n const distance = this.getDistance() * dir * (isRtl ? -1 : 1);\n\n css(\n list,\n 'transform',\n translate(\n clamp(\n -to + (distance - distance * percent),\n -getWidth(list),\n dimensions(list).width\n ) * (isRtl ? -1 : 1),\n 'px'\n )\n );\n\n const actives = this.getActives();\n const itemIn = this.getItemIn();\n const itemOut = this.getItemIn(true);\n\n percent = prev ? clamp(percent, -1, 1) : 0;\n\n for (const slide of children(list)) {\n const isActive = includes(actives, slide);\n const isIn = slide === itemIn;\n const isOut = slide === itemOut;\n const translateIn =\n isIn ||\n (!isOut &&\n (isActive ||\n (dir * (isRtl ? -1 : 1) === -1) ^\n (getElLeft(slide, list) > getElLeft(prev || next))));\n\n triggerUpdate(slide, `itemtranslate${translateIn ? 'in' : 'out'}`, {\n dir,\n percent: isOut ? 1 - percent : isIn ? percent : isActive ? 1 : 0,\n });\n }\n },\n\n percent() {\n return Math.abs(\n (css(list, 'transform').split(',')[4] * (isRtl ? -1 : 1) + from) / (to - from)\n );\n },\n\n getDistance() {\n return Math.abs(to - from);\n },\n\n getItemIn(out = false) {\n let actives = this.getActives();\n let nextActives = inView(list, getLeft(next || prev, list, center));\n\n if (out) {\n const temp = actives;\n actives = nextActives;\n nextActives = temp;\n }\n\n return nextActives[findIndex(nextActives, (el) => !includes(actives, el))];\n },\n\n getActives() {\n return inView(list, getLeft(prev || next, list, center));\n },\n };\n}\n\nfunction getLeft(el, list, center) {\n const left = getElLeft(el, list);\n\n return center ? left - centerEl(el, list) : Math.min(left, getMax(list));\n}\n\nexport function getMax(list) {\n return Math.max(0, getWidth(list) - dimensions(list).width);\n}\n\nexport function getWidth(list) {\n return sumBy(children(list), (el) => dimensions(el).width);\n}\n\nfunction centerEl(el, list) {\n return dimensions(list).width / 2 - dimensions(el).width / 2;\n}\n\nexport function getElLeft(el, list) {\n return (\n (el &&\n (position(el).left + (isRtl ? dimensions(el).width - dimensions(list).width : 0)) *\n (isRtl ? -1 : 1)) ||\n 0\n );\n}\n\nfunction inView(list, listLeft) {\n listLeft -= 1;\n const listWidth = dimensions(list).width;\n const listRight = listLeft + listWidth + 2;\n\n return children(list).filter((slide) => {\n const slideLeft = getElLeft(slide, list);\n const slideRight = slideLeft + Math.min(dimensions(slide).width, listWidth);\n\n return slideLeft >= listLeft && slideRight <= listRight;\n });\n}\n\nfunction triggerUpdate(el, type, data) {\n trigger(el, createEvent(type, false, false, data));\n}\n","import Class from '../mixin/class';\nimport Slider, { speedUp } from '../mixin/slider';\nimport SliderReactive from '../mixin/slider-reactive';\nimport SliderPreload from './internal/slider-preload';\nimport Transitioner, { getMax, getWidth } from './internal/slider-transitioner';\nimport {\n $,\n addClass,\n children,\n css,\n data,\n dimensions,\n findIndex,\n getIndex,\n includes,\n last,\n sumBy,\n toFloat,\n toggleClass,\n toNumber,\n} from 'uikit-util';\n\nexport default {\n mixins: [Class, Slider, SliderReactive, SliderPreload],\n\n props: {\n center: Boolean,\n sets: Boolean,\n },\n\n data: {\n center: false,\n sets: false,\n attrItem: 'uk-slider-item',\n selList: '.uk-slider-items',\n selNav: '.uk-slider-nav',\n clsContainer: 'uk-slider-container',\n Transitioner,\n },\n\n computed: {\n avgWidth() {\n return getWidth(this.list) / this.length;\n },\n\n finite({ finite }) {\n return finite || isFinite(this.list, this.center);\n },\n\n maxIndex() {\n if (!this.finite || (this.center && !this.sets)) {\n return this.length - 1;\n }\n\n if (this.center) {\n return last(this.sets);\n }\n\n let lft = 0;\n const max = getMax(this.list);\n const index = findIndex(this.slides, (el) => {\n if (lft >= max) {\n return true;\n }\n\n lft += dimensions(el).width;\n });\n\n return ~index ? index : this.length - 1;\n },\n\n sets({ sets: enabled }) {\n if (!enabled) {\n return;\n }\n\n let left = 0;\n const sets = [];\n const width = dimensions(this.list).width;\n for (let i = 0; i < this.length; i++) {\n const slideWidth = dimensions(this.slides[i]).width;\n\n if (left + slideWidth > width) {\n left = 0;\n }\n\n if (this.center) {\n if (\n left < width / 2 &&\n left + slideWidth + dimensions(this.slides[+i + 1]).width / 2 > width / 2\n ) {\n sets.push(+i);\n left = width / 2 - slideWidth / 2;\n }\n } else if (left === 0) {\n sets.push(Math.min(+i, this.maxIndex));\n }\n\n left += slideWidth;\n }\n\n if (sets.length) {\n return sets;\n }\n },\n\n transitionOptions() {\n return {\n center: this.center,\n list: this.list,\n };\n },\n },\n\n connected() {\n toggleClass(this.$el, this.clsContainer, !$(`.${this.clsContainer}`, this.$el));\n },\n\n update: {\n write() {\n for (const el of this.navItems) {\n const index = toNumber(data(el, this.attrItem));\n if (index !== false) {\n el.hidden =\n !this.maxIndex ||\n index > this.maxIndex ||\n (this.sets && !includes(this.sets, index));\n }\n }\n\n if (this.length && !this.dragging && !this.stack.length) {\n this.reorder();\n this._translate(1);\n }\n\n this.updateActiveClasses();\n },\n\n events: ['resize'],\n },\n\n events: {\n beforeitemshow(e) {\n if (\n !this.dragging &&\n this.sets &&\n this.stack.length < 2 &&\n !includes(this.sets, this.index)\n ) {\n this.index = this.getValidIndex();\n }\n\n const diff = Math.abs(\n this.index -\n this.prevIndex +\n ((this.dir > 0 && this.index < this.prevIndex) ||\n (this.dir < 0 && this.index > this.prevIndex)\n ? (this.maxIndex + 1) * this.dir\n : 0)\n );\n\n if (!this.dragging && diff > 1) {\n for (let i = 0; i < diff; i++) {\n this.stack.splice(1, 0, this.dir > 0 ? 'next' : 'previous');\n }\n\n e.preventDefault();\n return;\n }\n\n const index =\n this.dir < 0 || !this.slides[this.prevIndex] ? this.index : this.prevIndex;\n this.duration =\n speedUp(this.avgWidth / this.velocity) *\n (dimensions(this.slides[index]).width / this.avgWidth);\n\n this.reorder();\n },\n\n itemshow() {\n if (~this.prevIndex) {\n addClass(this._getTransitioner().getItemIn(), this.clsActive);\n }\n },\n\n itemshown() {\n this.updateActiveClasses();\n },\n },\n\n methods: {\n reorder() {\n if (this.finite) {\n css(this.slides, 'order', '');\n return;\n }\n\n const index = this.dir > 0 && this.slides[this.prevIndex] ? this.prevIndex : this.index;\n\n this.slides.forEach((slide, i) =>\n css(\n slide,\n 'order',\n this.dir > 0 && i < index ? 1 : this.dir < 0 && i >= this.index ? -1 : ''\n )\n );\n\n if (!this.center) {\n return;\n }\n\n const next = this.slides[index];\n let width = dimensions(this.list).width / 2 - dimensions(next).width / 2;\n let j = 0;\n\n while (width > 0) {\n const slideIndex = this.getIndex(--j + index, index);\n const slide = this.slides[slideIndex];\n\n css(slide, 'order', slideIndex > index ? -2 : -1);\n width -= dimensions(slide).width;\n }\n },\n\n updateActiveClasses() {\n const actives = this._getTransitioner(this.index).getActives();\n const activeClasses = [\n this.clsActive,\n ((!this.sets || includes(this.sets, toFloat(this.index))) && this.clsActivated) ||\n '',\n ];\n for (const slide of this.slides) {\n toggleClass(slide, activeClasses, includes(actives, slide));\n }\n },\n\n getValidIndex(index = this.index, prevIndex = this.prevIndex) {\n index = this.getIndex(index, prevIndex);\n\n if (!this.sets) {\n return index;\n }\n\n let prev;\n\n do {\n if (includes(this.sets, index)) {\n return index;\n }\n\n prev = index;\n index = this.getIndex(index + this.dir, prevIndex);\n } while (index !== prev);\n\n return index;\n },\n\n getAdjacentSlides() {\n const { width } = dimensions(this.list);\n const left = -width;\n const right = width * 2;\n const slideWidth = dimensions(this.slides[this.index]).width;\n const slideLeft = this.center ? width / 2 - slideWidth / 2 : 0;\n const slides = new Set();\n for (const i of [-1, 1]) {\n let currentLeft = slideLeft + (i > 0 ? slideWidth : 0);\n let j = 0;\n do {\n const slide = this.slides[this.getIndex(this.index + i + j++ * i)];\n currentLeft += dimensions(slide).width * i;\n slides.add(slide);\n } while (this.length > j && currentLeft > left && currentLeft < right);\n }\n return Array.from(slides);\n },\n },\n};\n\nfunction isFinite(list, center) {\n if (!list || list.length < 2) {\n return true;\n }\n\n const { width: listWidth } = dimensions(list);\n if (!center) {\n return Math.ceil(getWidth(list)) < Math.trunc(listWidth + getMaxElWidth(list));\n }\n\n const slides = children(list);\n const listHalf = Math.trunc(listWidth / 2);\n for (const index in slides) {\n const slide = slides[index];\n const slideWidth = dimensions(slide).width;\n const slidesInView = new Set([slide]);\n\n let diff = 0;\n for (const i of [-1, 1]) {\n let left = slideWidth / 2;\n\n let j = 0;\n\n while (left < listHalf) {\n const nextSlide = slides[getIndex(+index + i + j++ * i, slides)];\n\n if (slidesInView.has(nextSlide)) {\n return true;\n }\n\n left += dimensions(nextSlide).width;\n slidesInView.add(nextSlide);\n }\n diff = Math.max(\n diff,\n slideWidth / 2 +\n dimensions(slides[getIndex(+index + i, slides)]).width / 2 -\n (left - listHalf)\n );\n }\n\n if (\n diff >\n sumBy(\n slides.filter((slide) => !slidesInView.has(slide)),\n (slide) => dimensions(slide).width\n )\n ) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getMaxElWidth(list) {\n return Math.max(0, ...children(list).map((el) => dimensions(el).width));\n}\n","import Parallax from '../mixin/parallax';\nimport { css, endsWith, fastdom, noop, query, Transition } from 'uikit-util';\n\nexport default {\n mixins: [Parallax],\n\n data: {\n selItem: '!li',\n },\n\n beforeConnect() {\n this.item = query(this.selItem, this.$el);\n },\n\n disconnected() {\n this.item = null;\n },\n\n events: [\n {\n name: 'itemin itemout',\n\n self: true,\n\n el() {\n return this.item;\n },\n\n handler({ type, detail: { percent, duration, timing, dir } }) {\n fastdom.read(() => {\n if (!this.matchMedia) {\n return;\n }\n\n const propsFrom = this.getCss(getCurrentPercent(type, dir, percent));\n const propsTo = this.getCss(isIn(type) ? 0.5 : dir > 0 ? 1 : 0);\n fastdom.write(() => {\n css(this.$el, propsFrom);\n Transition.start(this.$el, propsTo, duration, timing).catch(noop);\n });\n });\n },\n },\n\n {\n name: 'transitioncanceled transitionend',\n\n self: true,\n\n el() {\n return this.item;\n },\n\n handler() {\n Transition.cancel(this.$el);\n },\n },\n\n {\n name: 'itemtranslatein itemtranslateout',\n\n self: true,\n\n el() {\n return this.item;\n },\n\n handler({ type, detail: { percent, dir } }) {\n fastdom.read(() => {\n if (!this.matchMedia) {\n this.reset();\n return;\n }\n\n const props = this.getCss(getCurrentPercent(type, dir, percent));\n fastdom.write(() => css(this.$el, props));\n });\n },\n },\n ],\n};\n\nfunction isIn(type) {\n return endsWith(type, 'in');\n}\n\nfunction getCurrentPercent(type, dir, percent) {\n percent /= 2;\n\n return isIn(type) ^ (dir < 0) ? percent : 1 - percent;\n}\n","import { clamp, createEvent, css, Deferred, noop, Transition, trigger } from 'uikit-util';\n\nexport default function Transitioner(prev, next, dir, { animation, easing }) {\n const { percent, translate, show = noop } = animation;\n const props = show(dir);\n const deferred = new Deferred();\n\n return {\n dir,\n\n show(duration, percent = 0, linear) {\n const timing = linear ? 'linear' : easing;\n duration -= Math.round(duration * clamp(percent, -1, 1));\n\n this.translate(percent);\n\n triggerUpdate(next, 'itemin', { percent, duration, timing, dir });\n triggerUpdate(prev, 'itemout', { percent: 1 - percent, duration, timing, dir });\n\n Promise.all([\n Transition.start(next, props[1], duration, timing),\n Transition.start(prev, props[0], duration, timing),\n ]).then(() => {\n this.reset();\n deferred.resolve();\n }, noop);\n\n return deferred.promise;\n },\n\n cancel() {\n Transition.cancel([next, prev]);\n },\n\n reset() {\n for (const prop in props[0]) {\n css([next, prev], prop, '');\n }\n },\n\n forward(duration, percent = this.percent()) {\n Transition.cancel([next, prev]);\n return this.show(duration, percent, true);\n },\n\n translate(percent) {\n this.reset();\n\n const props = translate(percent, dir);\n css(next, props[1]);\n css(prev, props[0]);\n triggerUpdate(next, 'itemtranslatein', { percent, dir });\n triggerUpdate(prev, 'itemtranslateout', { percent: 1 - percent, dir });\n },\n\n percent() {\n return percent(prev || next, next, dir);\n },\n\n getDistance() {\n return prev?.offsetWidth;\n },\n };\n}\n\nfunction triggerUpdate(el, type, data) {\n trigger(el, createEvent(type, false, false, data));\n}\n","import Animations from './internal/slideshow-animations';\nimport Transitioner from './internal/slideshow-transitioner';\nimport Slider from './slider.js';\nimport { addClass, removeClass } from 'uikit-util';\n\nexport default {\n mixins: [Slider],\n\n props: {\n animation: String,\n },\n\n data: {\n animation: 'slide',\n clsActivated: 'uk-transition-active',\n Animations,\n Transitioner,\n },\n\n computed: {\n animation({ animation, Animations }) {\n return { ...(Animations[animation] || Animations.slide), name: animation };\n },\n\n transitionOptions() {\n return { animation: this.animation };\n },\n },\n\n events: {\n beforeitemshow({ target }) {\n addClass(target, this.clsActive);\n },\n\n itemshown({ target }) {\n addClass(target, this.clsActivated);\n },\n\n itemhidden({ target }) {\n removeClass(target, this.clsActive, this.clsActivated);\n },\n },\n};\n","import Animations, {\n scale3d,\n translate,\n translated,\n} from '../../mixin/internal/slideshow-animations';\nimport { css } from 'uikit-util';\n\nexport default {\n ...Animations,\n fade: {\n show() {\n return [{ opacity: 0, zIndex: 0 }, { zIndex: -1 }];\n },\n\n percent(current) {\n return 1 - css(current, 'opacity');\n },\n\n translate(percent) {\n return [{ opacity: 1 - percent, zIndex: 0 }, { zIndex: -1 }];\n },\n },\n\n scale: {\n show() {\n return [{ opacity: 0, transform: scale3d(1 + 0.5), zIndex: 0 }, { zIndex: -1 }];\n },\n\n percent(current) {\n return 1 - css(current, 'opacity');\n },\n\n translate(percent) {\n return [\n { opacity: 1 - percent, transform: scale3d(1 + 0.5 * percent), zIndex: 0 },\n { zIndex: -1 },\n ];\n },\n },\n\n pull: {\n show(dir) {\n return dir < 0\n ? [\n { transform: translate(30), zIndex: -1 },\n { transform: translate(), zIndex: 0 },\n ]\n : [\n { transform: translate(-100), zIndex: 0 },\n { transform: translate(), zIndex: -1 },\n ];\n },\n\n percent(current, next, dir) {\n return dir < 0 ? 1 - translated(next) : translated(current);\n },\n\n translate(percent, dir) {\n return dir < 0\n ? [\n { transform: translate(30 * percent), zIndex: -1 },\n { transform: translate(-100 * (1 - percent)), zIndex: 0 },\n ]\n : [\n { transform: translate(-percent * 100), zIndex: 0 },\n { transform: translate(30 * (1 - percent)), zIndex: -1 },\n ];\n },\n },\n\n push: {\n show(dir) {\n return dir < 0\n ? [\n { transform: translate(100), zIndex: 0 },\n { transform: translate(), zIndex: -1 },\n ]\n : [\n { transform: translate(-30), zIndex: -1 },\n { transform: translate(), zIndex: 0 },\n ];\n },\n\n percent(current, next, dir) {\n return dir > 0 ? 1 - translated(next) : translated(current);\n },\n\n translate(percent, dir) {\n return dir < 0\n ? [\n { transform: translate(percent * 100), zIndex: 0 },\n { transform: translate(-30 * (1 - percent)), zIndex: -1 },\n ]\n : [\n { transform: translate(-30 * percent), zIndex: -1 },\n { transform: translate(100 * (1 - percent)), zIndex: 0 },\n ];\n },\n },\n};\n","import Class from '../mixin/class';\nimport Slideshow from '../mixin/slideshow';\nimport Animations from './internal/slideshow-animations';\nimport SliderReactive from '../mixin/slider-reactive';\nimport SliderPreload from './internal/slider-preload';\nimport { boxModelAdjust, css } from 'uikit-util';\n\nexport default {\n mixins: [Class, Slideshow, SliderReactive, SliderPreload],\n\n props: {\n ratio: String,\n minHeight: Number,\n maxHeight: Number,\n },\n\n data: {\n ratio: '16:9',\n minHeight: false,\n maxHeight: false,\n selList: '.uk-slideshow-items',\n attrItem: 'uk-slideshow-item',\n selNav: '.uk-slideshow-nav',\n Animations,\n },\n\n update: {\n read() {\n if (!this.list) {\n return false;\n }\n\n let [width, height] = this.ratio.split(':').map(Number);\n\n height = (height * this.list.offsetWidth) / width || 0;\n\n if (this.minHeight) {\n height = Math.max(this.minHeight, height);\n }\n\n if (this.maxHeight) {\n height = Math.min(this.maxHeight, height);\n }\n\n return { height: height - boxModelAdjust(this.list, 'height', 'content-box') };\n },\n\n write({ height }) {\n height > 0 && css(this.list, 'minHeight', height);\n },\n\n events: ['resize'],\n },\n\n methods: {\n getAdjacentSlides() {\n return [1, -1].map((i) => this.slides[this.getIndex(this.index + i)]);\n },\n },\n};\n","import UIkit from 'uikit/dist/js/uikit-core';\nimport Parallax from 'uikit/src/js/components/parallax';\nimport Slider from 'uikit/src/js/components/slider';\nimport SliderParallax from 'uikit/src/js/components/slider-parallax';\nimport Slideshow from 'uikit/src/js/components/slideshow';\nimport SlideshowParallax from 'uikit/src/js/components/slideshow-parallax';\n\n// Add individual components imported from UIKit below\nconst components = [\n { name: 'parallax', component: Parallax },\n { name: 'slider', component: Slider },\n { name: 'slider-parallax', component: SliderParallax },\n { name: 'slideshow', component: Slideshow },\n { name: 'slideshow-parallax', component: SlideshowParallax },\n];\n\ncomponents.forEach(({ name, component }) => {\n UIkit.component(name, component);\n});\n\nexport default UIkit;\n","import UIkit from './UIKit';\n\nconst initSlideshow = () => {\n UIkit.util.on('.uk-slideshow', 'beforeitemshow', function (e) {\n // Show current slide number in ## format\n const index = parseInt(e.target.dataset.slideIndex) + 1;\n const currentSlideDigit = this.querySelector('.current');\n currentSlideDigit.innerHTML = index.toString().padStart(2, '0');\n });\n};\n\nexport default initSlideshow;\n","/* eslint-env jquery */\nconst $ = jQuery;\n\nconst initOffcanvasToggle = () => {\n if (typeof $ === 'undefined') {\n console.log('jQuery is not loaded.');\n return false;\n }\n\n $('#offcanvas-toggler').on('click', function (e) {\n if ($(this).hasClass('active')) {\n $(this).toggleClass('active not-active');\n setTimeout(function () {\n $('#offcanvas-toggler').removeClass('not-active');\n }, 350);\n } else if ($(this).hasClass('not-active')) {\n $(this).toggleClass('active not-active');\n } else {\n $(this).addClass('active');\n }\n });\n};\n\nexport default initOffcanvasToggle;\n","/* eslint-env jquery */\nconst $ = jQuery;\n\nconst initFooter = () => {\n if (typeof $ === 'undefined') {\n console.log('jQuery is not loaded.');\n return false;\n }\n\n const newsletterToggle = '.footer__newsletter-content-toggle';\n const newsletterPanel = '.footer__newsletter-panel';\n\n $(newsletterToggle).on('click', function () {\n $(newsletterPanel).toggleClass('show-forms');\n $(newsletterToggle).toggleClass('active');\n });\n};\n\nexport default initFooter;\n","import UIkit from './UIKit';\n\nconst iframeCloseMessage = JSON.stringify({\n event: 'command',\n func: 'pauseVideo',\n args: '',\n});\n\nconst initFeaturedVideo = () => {\n UIkit.util.on('.video-modal', 'beforehide', function (modalEl) {\n // Pause video in iframe when modal is closed\n const iframe = modalEl.target.querySelector('iframe');\n iframe.contentWindow.postMessage(iframeCloseMessage, '*');\n });\n};\n\nexport default initFeaturedVideo;\n","/* eslint-env jquery */\nconst $ = jQuery;\n\nconst initMenuIcon = () => {\n const icons = $('.menu-item-has-children');\n const mobile = $('.navbar__mobile-button');\n const navlink = $('.nav-link');\n\n icons.each(function (i, el) {\n $(el).append(\n `\n \n `,\n );\n });\n\n $(mobile).on('click', function () {\n if ($(this).hasClass('active')) {\n $('ul#menu-primary').addClass('nav-active');\n } else {\n $('ul#menu-primary').removeClass('nav-active');\n }\n });\n\n navlink.each(function (i, el) {\n var title = $(this).text();\n $(el).attr('title', title);\n });\n\n if ($(window).outerWidth() < 960) {\n $(icons).on('click', function () {\n if ($(this).hasClass('dropdown-active')) {\n $(this).removeClass('dropdown-active');\n } else {\n $(this).addClass('dropdown-active');\n }\n });\n }\n};\n\nexport default initMenuIcon;\n","/* eslint-env jquery */\nconst $ = jQuery;\n\nconst initHeaderSearch = () => {\n const search = $('.search-icon');\n const close = $('.close-search');\n\n $(search).on('click', function () {\n if ($('header').hasClass('shadow-active')) {\n $('.search-form-header').slideUp(300);\n $('header').removeClass('shadow-active');\n } else {\n $('.search-form-header').slideDown(300);\n $('header').addClass('shadow-active');\n }\n });\n\n $(close).on('click', function () {\n $('.search-form-header').slideUp(300);\n $('header').removeClass('shadow-active');\n });\n};\n\nexport default initHeaderSearch;\n","/* eslint-env jquery */\nconst $ = jQuery;\n\nconst initMaps = () => {\n if (typeof $ === 'undefined') {\n console.log('jQuery is not loaded.');\n return false;\n }\n\n const map_filter = '.map-filter';\n\n $(map_filter).on('click', function () {\n var map_type = $(this).attr('data-id');\n $('.maps__map-block').removeClass('map-active');\n $('.maps__map-block.' + map_type).addClass('map-active');\n $(map_filter).removeClass('filter-active');\n $(this).addClass('filter-active');\n });\n};\n\nexport default initMaps;\n","import { ACTIVE_CLASS, POSTS_PER_PAGE } from './constants';\n\nclass SearchFilter {\n #nonce;\n #page = 1;\n #foundPosts = 0;\n #restEndpoint;\n #availability;\n\n /**\n * Class constructor\n *\n * @param {Object} {\n * moduleEl: Element - module html element\n * bodyOptions: Object - base fetch body options\n * filters: array - array of strings representing taxonomy/filters\n * }\n */\n constructor({ moduleEl, bodyOptions, filters }) {\n this.moduleEl = moduleEl;\n\n this.#foundPosts = this.moduleEl.dataset.foundPosts;\n if (this.#foundPosts <= 1) {\n console.log('No found posts');\n return false;\n }\n\n this.bodyOptions = { ...bodyOptions, posts_per_page: POSTS_PER_PAGE };\n this.filters = filters;\n\n this.#nonce = this.moduleEl.querySelector('[name=\"nonce\"]').value;\n this.#restEndpoint = this.moduleEl.dataset.rest;\n this.#availability = this.moduleEl.dataset.availability;\n if (this.#availability) {\n this.bodyOptions.availability = this.#availability;\n }\n\n // Form elements\n this.formEl = this.moduleEl.querySelector('.post-filters');\n this.searchInputEl = this.formEl.querySelector('.uk-search-input');\n this.filterEls = this.formEl.querySelectorAll('.category-container');\n this.filterItemEls = this.formEl.querySelectorAll('.filter-item');\n this.clearSearchButtonEl = this.formEl.querySelector('.clear-search');\n\n // Results elements\n this.featuredResultEl = this.moduleEl.querySelector('.filter__featured');\n this.filterResultsEl = this.moduleEl.querySelector('.filter__results');\n this.noResultsEl = this.moduleEl.querySelector('.filter__no-results');\n\n // Load More\n this.loadMoreEl = this.moduleEl.querySelector('.load-more');\n\n // Setup listeners\n this.setupFormSubmitAction();\n this.setupClearSearchButtonAction();\n this.setupPostFilterActions();\n this.setupLoadMoreButtonAction();\n }\n\n /**\n * Clears all filters\n *\n * @returns void\n */\n clearFilters() {\n this.filterEls.forEach((el) => {\n el.querySelector('.selected-items-label').innerHTML = '';\n });\n this.filterItemEls.forEach((el) => {\n el.classList.remove(ACTIVE_CLASS);\n });\n\n this.#page = 1;\n if (this.loadMoreEl) {\n this.loadMoreEl.dataset.page = 2;\n this.loadMoreEl.removeAttribute('hidden');\n }\n }\n\n /**\n * Gets the active terms for a given taxonomy\n *\n * @param {string} term\n *\n * @returns {Array} Array of term ids\n */\n getActiveTerms(term) {\n const termElement = document.querySelector(\n `.category-container[data-taxonomy=\"${term}\"]`,\n );\n const activeOnes = termElement.querySelectorAll(`.${ACTIVE_CLASS}`);\n const terms = [];\n\n activeOnes.forEach((item) => {\n terms.push(item.dataset.id);\n });\n\n return terms;\n }\n\n /**\n * Handles the response from a filter change\n *\n * @param {string} response\n *\n * @returns void\n */\n outputFilteredPosts(response) {\n const { posts, post_count, found_posts } = response;\n\n if (posts === '') {\n this.filterResultsEl.setAttribute('hidden', '');\n this.noResultsEl.removeAttribute('hidden');\n } else {\n this.noResultsEl.setAttribute('hidden', '');\n this.filterResultsEl.innerHTML = '';\n this.filterResultsEl.removeAttribute('hidden');\n this.filterResultsEl.insertAdjacentHTML('afterbegin', posts);\n }\n\n if (this.loadMoreEl) {\n if (post_count >= found_posts) {\n this.loadMoreEl.setAttribute('hidden', '');\n } else {\n this.loadMoreEl.removeAttribute('hidden');\n }\n }\n }\n\n /**\n * Queries endpoint for filtered data\n *\n * @param {Object} data\n *\n * @returns Promise\n */\n queryFilteredData(data) {\n const body = {\n ...data,\n ...this.bodyOptions,\n };\n\n const options = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-WP-Nonce': this.#nonce,\n },\n credentials: 'same-origin',\n body: JSON.stringify(body),\n };\n\n return fetch(`${this.#restEndpoint}`, options)\n .then((response) => {\n if (!response.ok) {\n console.log('Error getting Search from API', response);\n }\n return response.json();\n })\n .then((response) => {\n this.outputFilteredPosts(response);\n this.#foundPosts = response.found_posts;\n })\n .catch((response) => {\n console.log(response);\n });\n }\n\n /**\n * Handles the response from a load more action\n *\n * @param {string} response\n */\n appendMorePosts(response) {\n const { posts } = response;\n this.filterResultsEl.insertAdjacentHTML('beforeend', posts);\n }\n\n /**\n * Gets the active form options\n *\n * @returns {Object} formData\n */\n getActiveFormOptions() {\n const formData = {\n search_term: this.searchInputEl.value,\n };\n this.filters.forEach((filter) => {\n formData[filter] = this.getActiveTerms(filter);\n });\n\n return formData;\n }\n\n /**\n * Queries endpoint for paged data and persists any filters\n *\n * @returns Promise\n */\n queryPagedData() {\n const formData = this.getActiveFormOptions();\n\n const body = {\n ...formData,\n ...this.bodyOptions,\n page: this.#page,\n };\n\n const options = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-WP-Nonce': this.#nonce,\n },\n credentials: 'same-origin',\n body: JSON.stringify(body),\n };\n\n return fetch(`${this.#restEndpoint}`, options)\n .then((response) => {\n if (!response.ok) {\n console.log('Error getting paged data from API', response);\n }\n return response.json();\n })\n .catch((response) => {\n console.log(response);\n });\n }\n\n async formSubmitAction() {\n const formData = this.getActiveFormOptions();\n\n await this.queryFilteredData(formData);\n\n if (formData.search_term.trim() === '') {\n this.clearSearchButtonEl.setAttribute('hidden', '');\n return;\n }\n\n this.clearSearchButtonEl.removeAttribute('hidden');\n }\n\n setupFormSubmitAction() {\n this.formEl.addEventListener('submit', (e) => {\n e.preventDefault();\n this.formSubmitAction();\n });\n this.formEl.addEventListener('keydown', (e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n this.formSubmitAction();\n }\n });\n }\n\n setupPostFilterActions() {\n this.filterEls.forEach((filterEl) => {\n filterEl.querySelectorAll('.filter-item').forEach((itemEl) => {\n itemEl.addEventListener('click', async () => {\n if (itemEl.classList.contains(ACTIVE_CLASS)) {\n itemEl.classList.remove(ACTIVE_CLASS);\n } else {\n // Only allow one date filter to be active at a time\n if (!('multiSelect' in filterEl.dataset)) {\n filterEl.querySelectorAll('.filter-item').forEach((el) => {\n el.classList.remove(ACTIVE_CLASS);\n });\n }\n\n itemEl.classList.add(ACTIVE_CLASS);\n }\n\n const termListEl = filterEl.querySelector('.selected-items-label');\n const thisTax = filterEl.dataset.taxonomy;\n const formData = this.getActiveFormOptions();\n\n await this.queryFilteredData(formData);\n\n termListEl.innerHTML = formData[thisTax]\n .map((item) => {\n const matchedEl = filterEl.querySelector(`[data-id='${item}']`);\n return matchedEl.innerHTML;\n })\n .join(', ');\n this.clearSearchButtonEl.removeAttribute('hidden');\n });\n });\n });\n }\n\n setupClearSearchButtonAction() {\n this.clearSearchButtonEl.addEventListener('click', async (e) => {\n e.preventDefault();\n this.searchInputEl.value = '';\n this.clearFilters();\n\n await this.queryFilteredData();\n\n this.clearSearchButtonEl.setAttribute('hidden', '');\n });\n }\n\n setupLoadMoreButtonAction() {\n if (!this.loadMoreEl) {\n return;\n }\n\n this.loadMoreEl.addEventListener('click', async (e) => {\n this.#page = Number(this.loadMoreEl.dataset.page);\n\n const formData = this.getActiveFormOptions();\n\n const response = await this.queryPagedData(formData);\n this.appendMorePosts(response);\n\n const shownCount = this.#page * POSTS_PER_PAGE;\n if (this.loadMoreEl) {\n if (shownCount >= this.#foundPosts) {\n this.loadMoreEl.setAttribute('hidden', '');\n }\n\n this.loadMoreEl.dataset.page = this.#page + 1;\n }\n });\n }\n}\n\nexport default SearchFilter;\n","import SearchFilter from './SearchFilter';\n\nconst filterModuleEl = document.querySelector('.module.calendar');\n\nconst initCalendarFilter = () => {\n if (!filterModuleEl) {\n return false;\n }\n\n const bodyOptions = {};\n\n new SearchFilter({\n moduleEl: filterModuleEl,\n bodyOptions,\n filters: ['congregations', 'date'],\n });\n};\n\nexport default initCalendarFilter;\n","import SearchFilter from './SearchFilter';\n\nconst filterModuleEl = document.querySelector('.module.resource-library');\n\nconst initResourcesFilter = () => {\n if (!filterModuleEl) {\n return false;\n }\n\n new SearchFilter({\n moduleEl: filterModuleEl,\n bodyOptions: {},\n filters: ['families', 'topics'],\n });\n};\n\nexport default initResourcesFilter;\n","import { ACTIVE_CLASS } from './constants';\n\nconst bioModuleEl = document.querySelector('.module.staff-bios');\n\nconst initBiosFilter = () => {\n if (!bioModuleEl) {\n return false;\n }\n\n // Form filter elements\n const formEl = bioModuleEl.querySelector('.post-filters');\n const searchInputEl = formEl.querySelector('.uk-search-input');\n const filterEls = formEl.querySelectorAll('.category-container');\n const filterItemEls = formEl.querySelectorAll('.filter-item');\n const clearSearchButtonEl = formEl.querySelector('.clear-search');\n\n // Bio section elements\n const allBioCardEls = bioModuleEl.querySelectorAll('.card');\n const bioBlockEls = bioModuleEl.querySelectorAll('.staff-bios__container');\n const noResultsEl = bioModuleEl.querySelector('.filter__no-results');\n\n initializeCards();\n\n /**\n * Setup initial state\n */\n function initializeCards() {\n allBioCardEls.forEach((card) => card.setAttribute('hidden', ''));\n bioBlockEls.forEach((block) => {\n const cards = block.querySelectorAll('.card');\n Array.from(cards).forEach((card) => card.removeAttribute('hidden'));\n });\n clearSearchButtonEl.setAttribute('hidden', '');\n }\n\n /**\n * Searches dom for matching active terms then returns an array of them\n *\n * @param {string} term\n * @returns array\n */\n function getActiveTerms(term) {\n const termElement = document.querySelector(\n `.category-container[data-taxonomy=\"${term}\"]`,\n );\n const activeOnes = termElement.querySelectorAll(`.${ACTIVE_CLASS}`);\n const terms = Array.from(activeOnes).map((item) => item.innerHTML);\n\n return terms;\n }\n\n /**\n * Hide blocks with no visible cards\n */\n function filterBlocks() {\n bioBlockEls.forEach((block) => {\n const cards = block.querySelectorAll('.card');\n const hiddenCards = Array.from(cards).filter((card) => {\n return card.hasAttribute('hidden');\n });\n\n if (hiddenCards.length === cards.length) {\n block.setAttribute('hidden', '');\n } else {\n block.removeAttribute('hidden');\n }\n });\n }\n\n /**\n * Filter the cards based on selected filters and search input\n *\n * @return {Set} all the matched cards\n */\n function filterCards() {\n const [selectedCategory] = getActiveTerms('bio-categories');\n const [selectedCongregation] = getActiveTerms('congregations');\n let allMatchedCards = new Set();\n\n bioBlockEls.forEach((block) => {\n const cards = block.querySelectorAll('.card');\n const matchedCards = new Set();\n\n cards.forEach((card) => {\n card.setAttribute('hidden', '');\n\n const cardText = ['h3', 'p']\n .map((tag) => {\n const content = card.querySelector(tag);\n return content.textContent.trim().toLowerCase();\n })\n .join(' ');\n\n const cardCats = card.dataset.categories.split(',');\n const matchCategory = cardCats.includes(selectedCategory);\n\n const cardCons = card.dataset.congregations.split(',');\n const matchCongregation = cardCons.includes(selectedCongregation);\n\n const matchSearch =\n searchInputEl.value.trim().length > 0 &&\n cardText.includes(searchInputEl.value.trim());\n\n if (matchSearch || matchCategory || matchCongregation) {\n matchedCards.add(card);\n }\n });\n\n matchedCards.forEach((card) => card.removeAttribute('hidden'));\n allMatchedCards = new Set([...allMatchedCards, ...matchedCards]);\n });\n\n // Determine if form has no values\n if (\n !searchInputEl.value.trim().length &&\n !selectedCategory &&\n !selectedCongregation\n ) {\n initializeCards();\n }\n\n if (allMatchedCards.size === 0) {\n noResultsEl.removeAttribute('hidden');\n } else {\n noResultsEl.setAttribute('hidden', '');\n }\n\n return allMatchedCards;\n }\n\n formEl.addEventListener('submit', (e) => {\n e.preventDefault();\n\n clearSearchButtonEl.removeAttribute('hidden');\n filterCards();\n filterBlocks();\n });\n\n // Setup category term selection dropdowns\n filterEls.forEach((filterEl) => {\n const filterItemEls = filterEl.querySelectorAll('.filter-item');\n\n filterEl.querySelectorAll('.filter-item').forEach((itemEl) => {\n itemEl.addEventListener('click', () => {\n filterItemEls.forEach((el) => {\n if (el === itemEl && !el.classList.contains(ACTIVE_CLASS)) {\n el.classList.add(ACTIVE_CLASS);\n } else {\n el.classList.remove(ACTIVE_CLASS);\n }\n });\n\n clearSearchButtonEl.removeAttribute('hidden');\n filterCards();\n filterBlocks();\n\n // Update select box with selected value\n const thisTax = filterEl.dataset.taxonomy;\n const [activeTerm] = getActiveTerms(thisTax);\n\n filterEl.querySelector('button span').innerHTML = activeTerm ?? '';\n });\n });\n });\n\n clearSearchButtonEl.addEventListener('click', (e) => {\n e.preventDefault();\n\n searchInputEl.value = '';\n filterEls.forEach((el) => (el.querySelector('button span').innerHTML = ''));\n filterItemEls.forEach((el) => el.classList.remove(ACTIVE_CLASS));\n bioBlockEls.forEach((el) => el.removeAttribute('hidden'));\n clearSearchButtonEl.setAttribute('hidden', '');\n\n initializeCards();\n });\n};\n\nexport default initBiosFilter;\n","import SearchFilter from './SearchFilter';\n\nconst filterModuleEl = document.querySelector('.module.posts-filter');\n\nconst initPostsFilter = () => {\n if (!filterModuleEl) {\n return false;\n }\n\n const postTypes = filterModuleEl.dataset.postTypes.split(',');\n const bodyOptions = {\n post_types: postTypes,\n };\n\n new SearchFilter({\n moduleEl: filterModuleEl,\n bodyOptions,\n filters: ['congregations'],\n });\n};\n\nexport default initPostsFilter;\n","import SearchFilter from './SearchFilter';\n\nconst filterModuleEl = document.querySelector(\n '.module.sermons-and-services-filter',\n);\n\nconst initSermonsAndServicesFilter = () => {\n if (!filterModuleEl) {\n return false;\n }\n\n const urlSearchParams = new URLSearchParams(document.location.search);\n const postType = urlSearchParams.get('type');\n\n if (!postType) {\n urlSearchParams.set('type', 'sermons');\n window.history.replaceState(\n {},\n '',\n `${location.pathname}?${urlSearchParams}`,\n );\n\n window.history.go(0);\n }\n\n const speakerEl = document.querySelector('[data-taxonomy=\"speaker\"]');\n if (speakerEl && postType !== 'sermons') {\n speakerEl.setAttribute('hidden', '');\n }\n\n const toggleTypeEl = document.querySelector('[data-toggle=\"type\"]');\n const toggleButtonEls = toggleTypeEl.querySelectorAll('[data-type]');\n toggleButtonEls.forEach((buttonEl) => {\n buttonEl.addEventListener('click', (event) => {\n event.preventDefault();\n const postType = buttonEl.dataset.type;\n\n urlSearchParams.set('type', postType);\n window.history.replaceState(\n {},\n '',\n `${location.pathname}?${urlSearchParams}`,\n );\n window.location.reload();\n });\n });\n\n const bodyOptions = {\n post_types: [postType],\n };\n\n new SearchFilter({\n moduleEl: filterModuleEl,\n bodyOptions,\n filters: ['speaker', 'date'],\n });\n};\n\nexport default initSermonsAndServicesFilter;\n","import 'add-to-calendar-button';\n\nimport UIkit from './theme/UIKit';\nimport initSlideshow from './theme/slideshow';\nimport initOffcanvasToggle from './theme/offCanvasToggle';\nimport initFooter from './theme/footer';\nimport initFeaturedVideo from './theme/featuredVideo';\nimport initMenuIcon from './theme/menuIcon';\nimport initHeaderSearch from './theme/headerSearch';\nimport initMaps from './theme/maps';\nimport initCalendarFilter from './theme/calendarFilter';\nimport initResourcesFilter from './theme/resourcesFilter';\nimport initBiosFilter from './theme/staffBiosFilter';\nimport initPostsFilter from './theme/postsFilter';\nimport initSermonsAndServicesFilter from './theme/sermonsAndServicesFilter';\n\ninitSlideshow();\ninitOffcanvasToggle();\ninitFooter();\ninitFeaturedVideo();\ninitMenuIcon();\ninitHeaderSearch();\ninitMaps();\ninitCalendarFilter();\ninitResourcesFilter();\ninitBiosFilter();\ninitPostsFilter();\ninitSermonsAndServicesFilter();\n","export const ACTIVE_CLASS = 'uk-active';\nexport const POSTS_PER_PAGE = 12;\n"],"names":["tzlibZonesDB","Africa","Abidjan","Accra","Addis_Ababa","Algiers","Asmara","Asmera","Bamako","Bangui","Banjul","Bissau","Blantyre","Brazzaville","Bujumbura","Cairo","Casablanca","Ceuta","Conakry","Dakar","Dar_es_Salaam","Djibouti","Douala","El_Aaiun","Freetown","Gaborone","Harare","Johannesburg","Juba","Kampala","Khartoum","Kigali","Kinshasa","Lagos","Libreville","Lome","Luanda","Lubumbashi","Lusaka","Malabo","Maputo","Maseru","Mbabane","Mogadishu","Monrovia","Nairobi","Ndjamena","Niamey","Nouakchott","Ouagadougou","Sao_Tome","Timbuktu","Tripoli","Tunis","Windhoek","America","Adak","Anchorage","Anguilla","Antigua","Araguaina","Argentina","Buenos_Aires","Catamarca","ComodRivadavia","Cordoba","Jujuy","La_Rioja","Mendoza","Rio_Gallegos","Salta","San_Juan","San_Luis","Tucuman","Ushuaia","Aruba","Asuncion","Atikokan","Atka","Bahia_Banderas","Bahia","Barbados","Belem","Belize","Boa_Vista","Bogota","Boise","Cambridge_Bay","Campo_Grande","Cancun","Caracas","Cayenne","Cayman","Chicago","Chihuahua","Ciudad_Juarez","Coral_Harbour","Costa_Rica","Creston","Cuiaba","Curacao","Danmarkshavn","Dawson_Creek","Dawson","Denver","Detroit","Dominica","Edmonton","Eirunepe","El_Salvador","Ensenada","Fort_Nelson","Fort_Wayne","Fortaleza","Glace_Bay","Godthab","Goose_Bay","Grand_Turk","Grenada","Guadeloupe","Guatemala","Guayaquil","Guyana","Halifax","Havana","Hermosillo","Indiana","Indianapolis","Knox","Marengo","Petersburg","Tell_City","Vevay","Vincennes","Winamac","Inuvik","Iqaluit","Jamaica","Juneau","Kentucky","Louisville","Monticello","Knox_IN","Kralendijk","La_Paz","Lima","Los_Angeles","Lower_Princes","Maceio","Managua","Manaus","Marigot","Martinique","Matamoros","Mazatlan","Menominee","Merida","Metlakatla","Mexico_City","Miquelon","Moncton","Monterrey","Montevideo","Montreal","Montserrat","Nassau","New_York","Nipigon","Nome","Noronha","North_Dakota","Beulah","Center","New_Salem","Nuuk","Ojinaga","Panama","Pangnirtung","Paramaribo","Phoenix","Port_of_Spain","Porto_Acre","Porto_Velho","Puerto_Rico","Punta_Arenas","Rainy_River","Rankin_Inlet","Recife","Regina","Resolute","Rio_Branco","Rosario","Santa_Isabel","Santarem","Santiago","Santo_Domingo","Sao_Paulo","Scoresbysund","Shiprock","Sitka","St_Barthelemy","St_Johns","St_Kitts","St_Lucia","St_Thomas","St_Vincent","Swift_Current","Tegucigalpa","Thule","Thunder_Bay","Tijuana","Toronto","Tortola","Vancouver","Virgin","Whitehorse","Winnipeg","Yakutat","Yellowknife","Antarctica","Casey","Davis","DumontDUrville","Macquarie","Mawson","McMurdo","Palmer","Rothera","South_Pole","Syowa","Troll","Vostok","Arctic","Longyearbyen","Asia","Aden","Almaty","Amman","Anadyr","Aqtau","Aqtobe","Ashgabat","Ashkhabad","Atyrau","Baghdad","Bahrain","Baku","Bangkok","Barnaul","Beirut","Bishkek","Brunei","Calcutta","Chita","Choibalsan","Chongqing","Chungking","Colombo","Dacca","Damascus","Dhaka","Dili","Dubai","Dushanbe","Famagusta","Gaza","Harbin","Hebron","Ho_Chi_Minh","Hong_Kong","Hovd","Irkutsk","Istanbul","Jakarta","Jayapura","Jerusalem","Kabul","Kamchatka","Karachi","Kashgar","Kathmandu","Katmandu","Khandyga","Kolkata","Krasnoyarsk","Kuala_Lumpur","Kuching","Kuwait","Macao","Macau","Magadan","Makassar","Manila","Muscat","Nicosia","Novokuznetsk","Novosibirsk","Omsk","Oral","Phnom_Penh","Pontianak","Pyongyang","Qatar","Qostanay","Qyzylorda","Rangoon","Riyadh","Saigon","Sakhalin","Samarkand","Seoul","Shanghai","Singapore","Srednekolymsk","Taipei","Tashkent","Tbilisi","Tehran","Tel_Aviv","Thimbu","Thimphu","Tokyo","Tomsk","Ujung_Pandang","Ulaanbaatar","Ulan_Bator","Urumqi","Vientiane","Vladivostok","Yakutsk","Yangon","Yekaterinburg","Yerevan","Atlantic","Azores","Bermuda","Canary","Cape_Verde","Faeroe","Faroe","Jan_Mayen","Madeira","Reykjavik","South_Georgia","St_Helena","Stanley","Australia","ACT","Adelaide","Brisbane","Broken_Hill","Canberra","Currie","Darwin","Eucla","Hobart","LHI","Lindeman","Lord_Howe","Melbourne","North","NSW","Perth","Queensland","South","Sydney","Tasmania","Victoria","West","Yancowinna","Brazil","Acre","DeNoronha","East","Canada","Central","Eastern","Mountain","Newfoundland","Pacific","Saskatchewan","Yukon","CET","Chile","Continental","EasterIsland","CST6CDT","Cuba","EET","Egypt","Eire","EST","EST5EDT","Etc","GMT","GMT0","Greenwich","UCT","Universal","UTC","Zulu","Europe","Amsterdam","Andorra","Astrakhan","Athens","Belfast","Belgrade","Berlin","Bratislava","Brussels","Bucharest","Budapest","Busingen","Chisinau","Copenhagen","Dublin","Gibraltar","Guernsey","Helsinki","Isle_of_Man","Jersey","Kaliningrad","Kiev","Kirov","Kyiv","Lisbon","Ljubljana","London","Luxembourg","Madrid","Malta","Mariehamn","Minsk","Monaco","Moscow","Oslo","Paris","Podgorica","Prague","Riga","Rome","Samara","San_Marino","Sarajevo","Saratov","Simferopol","Skopje","Sofia","Stockholm","Tallinn","Tirane","Tiraspol","Ulyanovsk","Uzhgorod","Vaduz","Vatican","Vienna","Vilnius","Volgograd","Warsaw","Zagreb","Zaporozhye","Zurich","GB","Hongkong","HST","Iceland","Indian","Antananarivo","Chagos","Christmas","Cocos","Comoro","Kerguelen","Mahe","Maldives","Mauritius","Mayotte","Reunion","Iran","Israel","Japan","Kwajalein","Libya","MET","Mexico","BajaNorte","BajaSur","General","MST","MST7MDT","Navajo","NZ","Apia","Auckland","Bougainville","Chatham","Chuuk","Easter","Efate","Enderbury","Fakaofo","Fiji","Funafuti","Galapagos","Gambier","Guadalcanal","Guam","Honolulu","Johnston","Kanton","Kiritimati","Kosrae","Majuro","Marquesas","Midway","Nauru","Niue","Norfolk","Noumea","Pago_Pago","Palau","Pitcairn","Pohnpei","Ponape","Port_Moresby","Rarotonga","Saipan","Samoa","Tahiti","Tarawa","Tongatapu","Truk","Wake","Wallis","Yap","Poland","Portugal","PRC","PST8PDT","ROC","ROK","Turkey","US","Alaska","Aleutian","Arizona","Hawaii","Michigan","WET","tzlibZonesDetailsDB","tzlib_get_content","tzName","nameParts","split","length","tzlib_enrich_data","console","error","string","shortenerMap","key","value","Object","entries","replaceAll","tzlib_get_ical_block","jsonType","tzBlock","location","tzidLine","output","replace","JSON","stringify","tzlib_get_offset","isoDate","isoTime","match","date","Date","dateYear","getFullYear","dateMonth","getMonth","dateDay","getDate","dateHour","getHours","timezoneData","tzBreakpoints","breakpointCount","i","startsWith","offset","hour","parseInt","substr","rruleParts","rruleMonth","month","day","theCase","keys","find","helperArrayWeekdays","numberDays","weekdayCount","getDay","weekdays","SU","MO","TU","WE","TH","FR","SA","d","occurence","actualDay","breakpointWeekday","dayIndex","tzlibZoneNames","atcbVersion","atcbCssTemplate","default","flat","text","isBrowser","window","isiOS","test","navigator","userAgent","vendor","opera","MSStream","platform","maxTouchPoints","isAndroid","isChrome","isMobile","isWebView","isProblematicWebView","atcbDefaultTarget","atcbOptions","atcbValidRecurrOptions","atcbInvalidSubscribeOptions","atcbiOSInvalidOptions","atcbStates","atcbWcParams","atcbWcBooleanParams","atcbWcObjectParams","atcbWcArrayParams","atcbIcon","trigger","apple","google","ical","msteams","ms365","outlookcom","yahoo","atcb","close","warning","checkmark","atcb_decorate_data","data","attr","atcb_decorate_data_boolean","listStyle","buttonStyle","hideTextLabelList","hideTextLabelButton","atcb_decorate_data_style","newOptions","optionLabels","iCalGiven","options","cleanOption","optionName","toLowerCase","optionLabel","appleGiven","recurrence","includes","recurrence_until","subscribe","push","atcb_decorate_data_options","toUpperCase","recurrence_simplyfied","rruleObj","forEach","rule","UNTIL","recurrence_count","COUNT","recurrence_byDay","BYDAY","BYMONTH","recurrence_byMonthDay","BYMONTHDAY","recurrence_interval","INTERVAL","recurrence_frequency","FREQ","recurrence_weekstart","endTime","slice","recurrence_byMonth","atcb_decorate_data_rrule","sizes","size","sizeParts","atcb_decorate_sizes","lightMode","matchMedia","matches","atcb_decorate_light_mode","dates","atcb_decorate_data_description","name","status","sequence","organizer","availability","uid","atcb_generate_uuid","sort","a","b","timestamp","atcb_decorate_data_extend","atcb_decorate_data_meta","timeZone","cleanedUpDates","startTime","startTimestamp","startDate","atcb_date_calculation","endDate","atcb_date_cleanup","now","created","updated","atcb_format_datetime","atcb_decorate_data_dates","language","availableLanguages","rtl","atcb_decorate_data_i18n","description","descriptionHtmlFree","atcb_rewrite_html_elements","dateTimeData","point","tmpSplitStartDate","timeStr","substring","tmpDate","Intl","DateTimeFormat","resolvedOptions","getTime","dateString","today","todayString","getUTCFullYear","getUTCMonth","getUTCDate","dateParts","dateStringParts","newDate","setDate","toISOString","throwError","Error","requiredMultiFieldFlex","every","field","atcb_validate","msgPrefix","identifier","atcb_validate_icsFile","customCss","atcb_secure_url","debug","atcb_validate_buttonStyle","icsFile","atcb_validate_subscribe","atcb_validate_created","atcb_validate_updated","option","atcb_validate_options","msgSuffix","atcb_validate_status","atcb_validate_availability","atcb_validate_uid","atcb_validate_sequence","atcb_validate_timezone","atcb_validate_datetime","atcb_validate_rrule","atcb_validate_rrule_simplyfied","icsFileStr","atcb_validate_organizer","organizerParts","email","mx","log","atcb_validEmail","warn","namesArr","Array","isArray","key2","value2","key3","tzlib_get_timezones","time","timeParts","atcb_toggle","host","action","button","keyboardTrigger","generatedButton","atcb_open","classList","contains","querySelector","atcb_close","atcb_log_event","list","optionsList","document","createElement","role","add","listCount","optionItem","tabIndex","dataset","optionNumber","append","atcb_generate_label","hideIconList","atcb_generate_dropdown_list","listWrapper","bgOverlay","atcb_generate_bg_overlay","hideBackground","modalHost","atcb_generate_modal_host","atcb_set_sizes","atcb_manage_body_scroll","atcb_set_fullsize","hideBranding","atcb_create_atcbl","style","display","setTimeout","atcb_position_list","focusEl","hostEl","getElementById","shadowRoot","focus","preventScroll","getAttribute","allModals","existingModalHost","querySelectorAll","remove","nextModal","availableButtons","getElementsByTagName","blur","newFocusEl","from","modal","body","documentElement","concat","el","parent","type","icon","oneOption","id","blockInteraction","addEventListener","event","preventDefault","atcb_debounce_leading","atcb_generate_links","atcb_debounce","defaultTriggerText","atcb_translate_hook","labelText","iconEl","innerHTML","textEl","textContent","setAttribute","atcb_generate_label_content","darken","e","target","currentTarget","fingerMoved","passive","atList","atcbL","cssText","innerHeight","innerWidth","atcb_create_modal","headline","content","buttons","subEvents","newOverlay","modalWrapper","modalCount","modalNr","parentButton","hideIconModal","modalIcon","modalHeadline","modalContent","modalsubEventsContent","modalSubEventButton","atcb_generate_date_button","modalButtons","modalButton","href","primary","label","index","atcb_subscribe_yahoo_modal_switch","atcb_set_fully_successful","subEvent","fullTimeInfo","startDateInfo","endDateInfo","timeZoneInfoStart","timeZoneInfoEnd","formattedTimeStart","formattedTimeEnd","atcb_generate_time","start","end","allday","undefined","timeZoneInfoStringEnd","timeZoneInfoStringStart","formatOptionsStart","get_format_options","formatOptionsEnd","toLocaleDateString","DateLong","timeString","DateShort","toLocaleString","DateTimeShort","toLocaleTimeString","Time","DateTimeLong","hoverText","cancelledInfo","btnLeft","btnDay","btnMonth","btnRight","btnDetails","btnHeadline","btnLocation","fontWeight","color","btnLocationIcon","btnLocationText","btnDateTime","btnDateTimeIcon","btnDateTimeText","recurSign","btnHover","btnCheck","timeZoneInfo","year","minute","hourCycle","reset","newModalHost","hasAttribute","attachShadow","mode","delegateFocus","elem","cloneNode","atcb_set_light_mode","atcb_load_css","atcb_generate_rich_data_recurrence","formattedDate","schemaRecurrenceContent","repeatFrequency","byDayString","byDays","helperMap","join","byMonthString","byMonthDayString","duration","multiDateModal","atcb_open_cal_url","adjustedFileUrl","fileUrl","baseUrl","newFileUrl","encodeURIComponent","atcb_subscribe_google","atcb_subscribe_microsoft","atcb_copy_to_clipboard","atcb_generate_subscribe_links","theSubEvent","atcb_generate_ical","individualButtons","atcb_generate_multidate_links","urlParts","tmpDataDescription","availabilityPart","atcb_generate_google","locationString","atcb_generate_msteams","atcb_generate_microsoft","atcb_generate_yahoo","subEventButton","filter","proKey","atcb_saved_hook","calName","basePath","url","open","filename","filenameSuffix","iCalFileName","filenamePart","pop","atcb_determine_ical_filename","givenIcsFile","bypassWebViewCheck","atcb_save_file","ics_lines","usedTimeZones","loopStart","loopEnd","timeZoneBlock","timeAddon","transpVal","dataUrl","atcb_ical_copy_note","file","save","createElementNS","rel","download","MouseEvent","view","bubbles","cancelable","evt","URL","webkitURL","addTimeZoneOffset","newStartDate","newEndDate","durationMS","durationHours","Math","floor","durationMinutes","durationString","targetCal","offsetStart","offsetEnd","formattedOffsetStart","formattedOffsetEnd","calcOffsetStart","calcOffsetEnd","setTime","includeTime","removeZ","regex","datetime","atcb_secure_content","isJSON","cleanedUp","parse","clear","p1","urlText","resize","originalTrigger","anchorSet","position","triggerDim","getBoundingClientRect","btnDim","btnParentDim","parentNode","viewportHeight","minWidth","width","listDim","round","margin","height","sideMargin","blockUpwards","top","bottom","left","after","modalObj","setProperty","c","crypto","getRandomValues","Uint8Array","toString","dataString","editable","tmpInput","contentEditable","readOnly","range","createRange","selectNodeContents","selection","removeAllRanges","addRange","setSelectionRange","clipboard","writeText","select","execCommand","timer","args","clearTimeout","func","apply","this","timeout","parentEl","customTrigger","dataLayer","eventCategory","eventAction","eventLabel","atcb_push_to_data_layer","rtlLanguages","i18nStrings","en","cancel","de","es","pt","fr","nl","tr","zh","ar","hi","pl","no","fi","sv","cs","ja","it","ko","vi","ro","searchKey","customLabels","atcb_translate","atcbInitialGlobalInit","atcbBtnCount","lightModeMutationObserver","template","AddToCalendarButton","HTMLElement","constructor","initialized","connectedCallback","licenseKey","atcb_get_pro_data","atcb_read_attributes","atcb_render_debug_msg","disconnectedCallback","atcb_cleanup","observedAttributes","map","element","attributeChangedCallback","oldValue","newValue","atcb_build_button","customElements","get","define","val","inputVal","cleanedInput","newVal","identifierAttr","atcb_check_required","slotInput","atcbJsonInput","rootObj","inline","buttonsList","singleDates","atcb_setup_state_management","MutationObserver","mutationsList","mutation","attributeName","observe","attributes","atcb_global_listener_keyup","atcb_global_listener_keydown","atcb_global_listener_resize","atcb_set_global_event_listener","pro","versionOutput","atcb_init_log","buttonTriggerWrapper","buttonTrigger","hideIconButton","buttonDropdownAnchor","hideCheckmark","atcb_generate_button","hideRichData","schemaEl","schemaContentMulti","parts","schemaContent","imageData","images","schemaContentFull","insertBefore","atcb_generate_rich_data","previousSibling","hostLightMode","cssGlobalContent","scrollBarWidth","clientWidth","innerText","head","placeholder","prepend","cssUrl","cssFile","onload","flexWrap","justifyContent","cssContent","overrideDefaultCss","overrideDarkCss","errorBanner","root","rootModal","targetFocus","currFocusOption","activeElement","optionListCount","activeOverlay","globalThis","global","self","uikitCore","exports","hasOwnProperty","prototype","hasOwn","obj","call","hyphenateRe","hyphenate","memoize","str","camelizeRe","camelize","toUpper","ucfirst","charAt","_","search","endsWith","findIndex","array","predicate","toArray","assign","isFunction","isObject","isPlainObject","isWindow","isDocument","nodeType","isNode","isElement","isBoolean","isString","isNumber","isNumeric","isNaN","parseFloat","isEmpty","isUndefined","toBoolean","toNumber","number","Number","toFloat","toNode","toNodes","toWindow","_element","ownerDocument","defaultView","isEqual","other","each","swap","RegExp","last","cb","sortBy$1","prop","propA","propB","sumBy","iteratee","reduce","sum","item","uniqueBy","seen","Set","check","has","clamp","min","max","noop","intersectRect","rects","minProp","maxProp","pointInRect","rect","x","right","y","ratio","dimensions","aProp","contain","maxDimensions","cover$1","Dimensions","cover","getIndex","elements","current","finite","indexOf","fn","cache","create","Deferred","promise","resolve","reject","_toNode","hasAttr","some","removeAttr","removeAttribute","attribute","voidElements","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr","isVoidElement","tagName","isVisible","offsetHeight","getClientRects","selInput","isInput","isFocusable","selFocusable","parentElement","selector","closest","Boolean","within","parents","children","ref","query","context","getContext","queryAll","findAll","_query","contextSelectorRe","isContextSelector","contextSanitizeRe","sanatize","queryFn","splitSelector","sel","ctx","selectors","trim","prev","previousElementSibling","domPath","selectorRe","names","unshift","escape","css","CSS","on","targets","types","listener","useCapture","getArgs","detail","selfFilter","delegate","off","removeEventListener","once","condition","result","toEventTargets","dispatchEvent","createEvent","CustomEvent","splice","reverse","isEventTarget","toEventTarget","isTouch","pointerType","touches","getEventPos","_e$touches","_e$changedTouches","clientX","clientY","changedTouches","ajax","env","method","headers","xhr","XMLHttpRequest","responseType","Promise","then","beforeSend","send","header","setRequestHeader","statusText","getImage","src","srcset","onerror","cssNumber","opacity","order","orphans","widows","zoom","property","priority","propName","getComputedStyle","getPropertyValue","props","vendorPropName","prefix","prefixedName","addClass","apply$1","removeClass","removeClasses","cls","replaceClass","hasClass","getClasses","node","toggleClass","force","classes","toggle","arg","String","transition$1","timing","all","transitionDuration","transitionProperty","transitionTimingFunction","async","inProgress","animationPrefix","animate$2","animation","origin","out","inProgressRe","Animation","in","ready","isTag","tagNames","_element$tagName","empty","$","html","applyFn","before","_$","nodes","fragment","unwrapSingle","remove$1","wrapAll","structure","firstChild","wrapInner","hasChildNodes","childNodes","unwrap","replaceWith","fragmentRe","singleTagRe","container","insertAdjacentHTML","next","nextElementSibling","isHtml","$$","dirs$1","coordinates","currentOffset","scrollY","scrollX","offsetBy","dir","pos","offsetParent","parentOffset","offsetLeft","offsetTop","win","dimension","doc","boxModelAdjust","sizing","flipPosition","toPx","offsetDim","parseCalc","unit","parseUnit","percent","getViewportHeight","calcRe","calc","unitRe","vh","vhEl","inBrowser","isRtl","hasTouch","hasPointerEvents","PointerEvent","pointerDown","pointerMove","pointerUp","pointerEnter","pointerLeave","pointerCancel","fastdom","reads","writes","read","task","scheduleFlush","write","flush","recursion","runTasks","scheduled","RECURSION_LIMIT","requestAnimationFrame","tasks","shift","MouseTracker","intersect","x1","y1","x2","y2","x3","y3","x4","y4","denominator","ua","observeIntersection","intersecting","observer","IntersectionObserver","entry","isIntersecting","positions","init","interval","setInterval","_this$unbind","unbind","clearInterval","movesTo","p","prevPosition","path","diagonal","intersection","hasResizeObserver","ResizeObserver","observeResize","box","initResizeListener","listeners","disconnect","delete","pendingResize","handleResize","observeMutation","Observer","mergeFnData","parentVal","childVal","vm","strats","computed","defaultStrat","mergeOptions","child","extends","mixins","mixin","mergeKey","parseOptions","play","isIFrame","isHTML5","catch","pause","mute","isVideo","isYoutube","isVimeo","cmd","enableApi","post","contentWindow","postMessage","events","beforeConnect","connected","beforeDisconnect","disconnected","destroy","concatStrat","update","methods","stateKey","counter","vimeo","poller","youtube","player_id","isInView","overflowParents","offsetViewport","scrollIntoView","scrollParents","scrollElement","scrollTop","scrollHeight","viewport","maxScroll","elHeight","elTop","ceil","scrollTo","scroll","getDuration","abs","step","ease","dist","pow","k","cos","PI","scrolledOver","endOffset","elementOffsetTop","offsetPosition","startOffset","scrollable","scrollEl","scrollingElement","ancestors","fixedIndex","viewportElement","visualViewport","scale","pageTop","pageLeft","dirs","positionAt","attach","placement","getPosition","attachTo","boundary","viewportOffset","getViewport$2","isWithin","flip","scrollArea","getScrollArea","applyOffset","newPos","flipAxis","targetDim","elOffset","targetOffset","moveBy","dim","getIntersectionArea","commonScrollParents","axis","positionA","positionB","flipAttach","flipOffset","flipAttachAxis","newAttach","util","freeze","__proto__","Transition","sortBy","globalAPI","UIkit","DATA","_connected","_callUpdate","use","plugin","installed","component","extend","Super","Sub","_init","super","defineProperty","set","hooksAPI","runUpdates","$options","_data","runWatches","initial","values","_computed","watch","immediate","hook","_this$$options$hook","handler","_callConnected","_initProps","_callHook","_initEvents","_initObservers","_callDisconnected","_disconnectObservers","_unbindEvents","_watch","_callWatches","_updates","stateAPI","normalizeData","$el","$props","_uid","_initData","_initMethods","_initComputeds","$mount","bind","registerComputed","getProps","exclude","notIn","_events","registerEvent","_observers","initPropsObserver","initChildListObserver","registerObserver","data$1","opts","coerce$1","enumerable","capture","arr","toList","childList","subtree","attrs","records","attributeFilter","instanceAPI","$create","$reset","$destroy","removeEl","$emit","$update","$getComponent","getComponent","getOwnPropertyDescriptor","components$2","componentAPI","PREFIX","functional","arguments","instance","opt","install","_initialized","getComponents","connect","getAttributeNames","getComponentName","cmp","boot","applyChildListMutation","addedNodes","removedNodes","_UIkit$getComponent","applyAttributeMutation","version","Class","Lazyload","preload","lazyload","observeTargets","unobserve","Togglable","velocity","transition","clsEnter","clsLeave","hasTransition","toggleElement","animate","isToggled","show","hasAnimation","toggleTransition","toggleAnimation","toggleInstant","done","_toggle","changed","toggled","hidden","_animation$","startProp","marginStartProp","currentDim","dimProp","prevProps","fromEntries","marginProp","currentMargin","marginStart","endDim","wrapper","boxSizing","padding","border","overflow","endProps","Accordion","active","collapsible","multiple","clsOpen","items","toggles","contents","hide","_this$_off","_off","keepScrollPosition","activeItems","_el$_wrapper","_wrapper","firstElementChild","currentHeight","endHeight","scrollParent","frame","cancelAnimationFrame","alert","selClose","animate$1","marginTop","marginBottom","paddingTop","paddingBottom","borderTop","borderBottom","Video","autoplay","automute","inView","allow","visible","Resize","_this$$options$resize","resizeTargets","getPositionedParent","intrinsic","naturalWidth","videoWidth","naturalHeight","videoHeight","clientHeight","coverHeight","offsetWidth","coverWidth","coverDim","$container","inset","align","getPositionOffset","getShiftOffset","scrollLeft","elDim","getViewportOffset","active$1","Modal","Container","selPanel","escClose","bgClose","stack","overlay","panel","defaultPrevented","hash","isSameSiteAnchor","preventBackgroundScroll","clsPage","newTarget","keyCode","transitionElement","_reject","toMs","prevented","targetTouches","overflowY","supports","touchAction","paddingRight","part","drop","Position","boundaryX","boundaryY","targetX","targetY","delayShow","delayHide","autoUpdate","clsDrop","animateOut","bgScroll","stretch","targetEl","tracker","_style","isActive","clearTimers","relatedTarget","handlers","delay","isDelaying","showTimer","getPositionedElements","hideTimer","viewports","maxWidth","positionOffset","getViewport$1","state","_input$files","files","selected","Margin","firstColumn","rows","getRows","columns","getColumns","row","column","j","sorted","endProp","getOffset","startDim","Scroll","registerScrollListener","unregisterScrollListener","scrollListeners","Map","unbindScrollListener","grid","masonry","parallax","clsStack","positionedAbsolute","translates","columnHeights","getMarginTop","getTranslates","newPadding","hgt","scrolled","rowHeights","heightMatch","heights","getHeight","toFixed","heightViewport","expand","offsetBottom","minHeight","isScrollingElement","SVG","class","strokeAnimation","svg","getSvg","insertSVG","svgEl","applyAttributes","applyAnimation","complete","loading","parseSVG","loadSVG","include","viewBox","decodeURIComponent","fetch","_svg","parseSymbols","symbolRe","symbols","lastIndex","getMaxPathLength","stroke","getTotalLength","equals","lastElementChild","icons","spinner","totop","marker","Icon","install$1","isIcon","getIcon","NavParentIcon","IconComponent","Slidenav","Search","Close","Spinner","parsed","added","applyRtl","nativeLazyLoad","HTMLImageElement","dataSrc","sources","load","isImg","setSrcAttrs","ensureSrcAttribute","rootMargin","image","currentSrc","setSourceProps","srcProps","sourceEl","getImageFromElement","Image","wrapInPicture","parseSources","picture","media","toMedia","mediaObj","offMediaObj","_this$offMediaObj","leader","Media","fill","clsWrapper","clsHide","trunc","attrFill","openDialog","tmpl","hideFn","submitFn","labels","dialog","deferred","resolved","message","ok","confirm","prompt","nav","navbar","dropdown","dropbar","dropbarAnchor","_dropbar","dropContainer","dropdowns","_this$getDropdown","getDropdown","justify","getActive","keyMap","DOWN","focusFirstFocusableElement","click","handleNavItemNavigation","_active$targetEl","UP","ESC","isDropbarDrop","_observer","targetOffsets","minTop","maxBottom","dropbarOffset","transitionTo","_this$_observer","newHeight","oldHeight","clipPath","LEFT","RIGHT","TAB","swiping","swipeTarget","swipeDirection","offcanvas","Swipe","clsContainer","clsContainerAnimation","clsSidebarAnimation","clsMode","clsOverlay","clsFlip","suppressUserScale","resumeUserScale","getViewport","selContainer","selContent","maxHeight","registerClick","unregisterClick","components$1","clickHandler","getTargetElement","getElementsByName","scrollspy","repeat","inViewClass","inview","queued","removeAnimationClasses","scrollspyNav","links","sticky","overflowFlip","clsInactive","clsFixed","clsBelow","selTarget","showOnUp","coerce","isFixed","setActive","height$1","inactive","dynamicViewport","maxScrollHeight","referenceElement","offset$1","topOffset","parseProp","prevScroll","prevDir","overflowScroll","offsetParentTop","isScrollUpdate","initTimestamp","initScroll","clsActive","propOffset","refElement","Switcher","itemNav","attrItem","connects","connectChildren","KEY_SPACE","updateAria","_preventClick","_showState","expanded","leaving","isLeaving","components","Alert","Cover","Drop","Dropdown","FormCustom","formCustom","Grid","HeightMatch","HeightViewport","Img","Leader","Marker","Nav","Navbar","NavbarParentIcon","NavbarToggleIcon","Offcanvas","OverflowAuto","overflowAuto","OverlayIcon","PaginationNext","PaginationPrevious","Responsive","responsive","Scrollspy","ScrollspyNav","SearchIcon","SlidenavNext","SlidenavPrevious","Sticky","SubnavParentIcon","Svg","Tab","tab","Toggle","Totop","factory","$$5","exec","dimensions$1","unitRe$1","transformFn","rotate","colorFn","backgroundColor","borderColor","filterFn","hue","fopacity","grayscale","invert","saturate","sepia","stops","getCssValue","getUnit","parseStops","stop","strokeDashoffset","getValue","bgx","backgroundFn","bgy","Parallax$1","fillObject","properties","getCss","transform","willChange","parseColor","getStop","bgProps","dimImage","toDimensions","getBackgroundImageDimensions","down","diff","dimEl","getBackgroundPos","backgroundRepeat","backgroundCoverFn","setBackgroundPosFn","nullIndex","leftPercent","targetPercent","defaultUnit","Parallax","easing","getOffsetElement","SliderAutoplay","autoplayInterval","pauseOnHover","startAutoplay","stopAutoplay","slides","draggable","pointerOptions","pointerUpOptions","SliderDrag","threshold","prevPos","selList","drag","_transitioner","getDistance","translate","dragging","prevIndex","move","distance","dis","nextIndex","_getDistance","edge","itemShown","_translate","_show","dirChange","userSelect","pointerEvents","Slider$1","selNav","navItems","selNavItem","maxIndex","updateNav","getValidIndex","clsActivated","Transitioner","speedUp","queueIndex","forward","getDirection","_getTransitioner","transitionOptions","transitioner","SliderReactive","SliderPreload","getAdjacentSlides","Animations$1","slide","translated","scale3d","getLeft","center","getElLeft","centerEl","getMax","getWidth","listLeft","listWidth","listRight","slideLeft","slideRight","triggerUpdate$1","Slider","sets","to","triggerUpdate","linear","getItemIn","getActives","itemOut","actives","isIn","itemIn","isOut","nextActives","temp","avgWidth","getMaxElWidth","listHalf","slideWidth","slidesInView","nextSlide","lft","enabled","reorder","updateActiveClasses","beforeitemshow","itemshow","itemshown","slideIndex","activeClasses","currentLeft","SlideshowParallax","selItem","propsFrom","getCurrentPercent","propsTo","Slideshow$1","Animations","itemhidden","fade","zIndex","pull","Slideshow","initSlideshow","jQuery","iframe","$$2","SearchFilter","nonce","page","foundPosts","restEndpoint","moduleEl","bodyOptions","filters","formEl","searchInputEl","filterEls","rest","filterItemEls","noResultsEl","loadMoreEl","setupClearSearchButtonAction","setupPostFilterActions","setupLoadMoreButtonAction","setupFormSubmitAction","clearFilters","ACTIVE_CLASS","getActiveTerms","activeOnes","term","terms","outputFilteredPosts","response","posts","filterResultsEl","post_count","found_posts","queryFilteredData","credentials","json","appendMorePosts","search_term","formData","getActiveFormOptions","clearSearchButtonEl","filterEl","itemEl","termListEl","thisTax","taxonomy","queryPagedData","shownCount","filterModuleEl","initCalendarFilter","filterModuleEl$2","bioModuleEl","padStart","$$4","initFooter","initPostsFilter","$$3","newsletterToggle","initFeaturedVideo","initSermonsAndServicesFilter","initMenuIcon","modalEl","iframeCloseMessage","navlink","title","outerWidth","$$1","slideUp","initMaps","POSTS_PER_PAGE","map_type","filterModuleEl$3","initResourcesFilter","initializeCards","allBioCardEls","card","bioBlockEls","block","cards","cardText","selectedCategory","selectedCongregation","allMatchedCards","cardCats","cardCons","tag","matchCategory","categories","congregations","matchedCards","filterCards","filterBlocks","activeTerm","postTypes","filterModuleEl$1","urlSearchParams","speakerEl","postType","toggleTypeEl","history","replaceState","pathname","buttonEl","post_types","reload","initHeaderSearch"],"mappings":"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"}